Jpp
Functions
JPreprocessor.cc File Reference
#include <string>
#include <iostream>
#include <iomanip>
#include <vector>
#include "JDAQ/JDAQHit.hh"
#include "JDAQ/JDAQSuperFrame.hh"
#include "JDetector/JDetector.hh"
#include "JDetector/JModuleRouter.hh"
#include "JTrigger/JSuperFrame2D.hh"
#include "JTrigger/JHitR0.hh"
#include "JTrigger/JHitR1.hh"
#include "JTrigger/JHitR2.hh"
#include "JTrigger/JMatchL0.hh"
#include "JTrigger/JBuildL0.hh"
#include "JTrigger/JBuildL1.hh"
#include "JTrigger/JBuildL2.hh"
#include "JTrigger/JPreprocessor.hh"
#include "Jeep/JParser.hh"
#include "Jeep/JMessage.hh"

Go to the source code of this file.

Functions

template<class T >
void print (std::ostream &out, const char *const title, T __begin, T __end)
 Print data. More...
 
int main (int argc, char **argv)
 

Detailed Description

Example program to test JTRIGGER::JPreprocessor.

Author
mdejong

Definition in file JPreprocessor.cc.

Function Documentation

◆ print()

template<class T >
void print ( std::ostream &  out,
const char *const  title,
__begin,
__end 
)
inline

Print data.

Parameters
outoutput stream
titletitle
__beginbegin of data
__endend of data

Definition at line 36 of file JPreprocessor.cc.

37 {
38  using namespace std;
39 
40  out << title;
41 
42  for (T i = __begin; i != __end; ++i) {
43  out << ' ' << setw(4) << (int) i->getT();
44  }
45 
46  out << endl;
47 }

◆ main()

int main ( int  argc,
char **  argv 
)

Definition at line 56 of file JPreprocessor.cc.

57 {
58  using namespace std;
59  using namespace KM3NETDAQ;
60  using namespace JPP;
61 
62  vector<JDAQHit> data;
63  double Tmax_ns;
64  JPreprocessor option;
65  int debug;
66 
67  try {
68 
69  JParser<> zap("Example program to test hit pre-processing with user data."\
70  "\nformat: -u \"(<PMT> <time> <time-over-threshold>)+\"");
71 
72  zap['u'] = make_field(data);
73  zap['T'] = make_field(Tmax_ns);
74  zap['O'] = make_field(option) = JPreprocessor::getOptions();
75  zap['d'] = make_field(debug) = 0;
76 
77  zap(argc, argv);
78  }
79  catch(const exception &error) {
80  FATAL(error.what() << endl);
81  }
82 
83  using namespace KM3NETDAQ;
84 
85  cout.tie(&cerr);
86 
88 
89  JDetector detector;
90 
91  JModule module = JModule::getInstance();
92 
93  module.setID(1001);
94 
95  detector.push_back(module);
96 
97  const JModuleRouter router(detector);
98 
99  JHit::setSlewing(false);
100 
101  JDAQTimeslice timeslice;
102 
103  JDAQSuperFrame frame(JDAQSuperFrameHeader(timeslice.getDAQChronometer(), module.getID()));
104 
105  frame.add(data.size(), data.data());
106 
107  timeslice.push_back(frame);
108 
109  DEBUG(timeslice);
110 
111  {
112  typedef JSuperFrame2D<JHit> JSuperFrame2D_t;
113 
114  JSuperFrame2D_t& buffer = JSuperFrame2D_t::demultiplex(timeslice[0], module);
115 
116  buffer.preprocess(option, JMatchL0<JHit>(Tmax_ns));
117 
118  JBuildL0<JHitR0> buildL0;
119  vector <JHitR0> output;
120 
121  buildL0(buffer, back_inserter(output));
122 
123  print(cout, "L0:", output.begin(), output.end());
124  }
125 
126  {
127  JBuildL0<JHitL0> buildL0;
128  vector <JHitL0> output;
129 
130  buildL0.setPreprocessor(option, JMatchL0<JHit>(Tmax_ns));
131 
132  buildL0(timeslice, router, back_inserter(output));
133 
134  print(cout, "L0:", output.begin(), output.end());
135  }
136  {
137  JBuildL1<JHitR1> buildL1(JBuildL1Parameters(Tmax_ns, true));
138  vector <JHitR1> output;
139 
140  buildL1.setPreprocessor(option, JMatchL0<JHit>(Tmax_ns));
141 
142  buildL1(timeslice, router, back_inserter(output));
143 
144  print(cout, "L1:", output.begin(), output.end());
145  }
146  {
147  JBuildL2<JHitR2> buildL2(JL2Parameters(2, Tmax_ns, -1.0));
148  vector <JHitR2> output;
149 
150  buildL2.setPreprocessor(option, JMatchL0<JHit>(Tmax_ns));
151 
152  buildL2(timeslice, router, back_inserter(output));
153 
154  print(cout, "L2:", output.begin(), output.end());
155  }
156 
157  return 0;
158 }
JLANG::getInstance
T & getInstance(const T &object)
Get static instance from temporary object.
Definition: JObject.hh:73
std::vector
Definition: JSTDTypes.hh:12
KM3NETDAQ::JDAQTimeslice
Data time slice.
Definition: JDAQTimeslice.hh:36
JPARSER::JParser
Utility class to parse command line options.
Definition: JParser.hh:1493
JPP
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
Definition: JAAnetToolkit.hh:37
debug
int debug
debug level
Definition: JSirene.cc:59
KM3NETDAQ::JDAQSuperFrameHeader
DAQ super frame header.
Definition: JDAQSuperFrameHeader.hh:25
print
void print(std::ostream &out, const char *const title, T __begin, T __end)
Print data.
Definition: JPreprocessor.cc:36
make_field
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
Definition: JParser.hh:1954
KM3NETDAQ::JDAQChronometer::getDAQChronometer
const JDAQChronometer & getDAQChronometer() const
Get DAQ chronometer.
Definition: JDAQChronometer.hh:88
DEBUG
#define DEBUG(A)
Message macros.
Definition: JMessage.hh:62
std
Definition: jaanetDictionary.h:36
KM3NETDAQ
KM3NeT DAQ data structures and auxiliaries.
Definition: DataQueue.cc:39
KM3NETDAQ::JDAQSuperFrame
Data frame of one optical module.
Definition: JDAQSuperFrame.hh:27
KM3NETDAQ::setDAQLongprint
void setDAQLongprint(const bool option)
Set DAQ print option.
Definition: JDAQPrint.hh:28
FATAL
#define FATAL(A)
Definition: JMessage.hh:67
JEEP::debug_t
debug
Definition: JMessage.hh:29