Jpp  15.0.2
the software that should make you happy
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
JBuild.cc
Go to the documentation of this file.
1 
2 #include <string>
3 #include <iostream>
4 #include <iomanip>
5 #include <vector>
6 
7 #include "TROOT.h"
8 #include "TFile.h"
9 #include "TH1D.h"
10 
11 #include "JDAQ/JDAQEventIO.hh"
12 #include "JDetector/JDetector.hh"
16 #include "JTrigger/JHit.hh"
17 #include "JTrigger/JHitL0.hh"
18 #include "JTrigger/JHitL1.hh"
19 #include "JTrigger/JHitL2.hh"
20 #include "JTrigger/JHitR1.hh"
21 #include "JTrigger/JHitR2.hh"
22 #include "JTrigger/JBuildL0.hh"
23 #include "JTrigger/JBuildL1.hh"
24 #include "JTrigger/JBuildL2.hh"
25 
27 #include "JSupport/JSupport.hh"
28 
29 #include "Jeep/JParser.hh"
30 #include "Jeep/JMessage.hh"
31 
32 
33 namespace {
34 
35  /**
36  * Process event.
37  *
38  * \param build hit builder
39  * \param router module router
40  * \param event event
41  * \param h1 histogram
42  */
43  template<class JBuild_t>
44  inline void process(const JBuild_t& build,
45  const JDETECTOR::JModuleRouter& router,
46  const KM3NETDAQ::JDAQEvent& event,
47  TH1& h1)
48  {
49  using namespace std;
50 
51  typedef typename JBuild_t::value_type value_type;
52 
53  vector<value_type> data;
54 
55  build(event, router, back_inserter(data));
56 
57  h1.Fill((double) data.size());
58  }
59 }
60 
61 
62 /**
63  * \file
64  *
65  * Example program to test JTRIGGER::JBuildL0, JTRIGGER::JBuildL1 and JTRIGGER::JBuildL2 hit building with DAQ events.
66  * \author mdejong
67  */
68 int main(int argc, char **argv)
69 {
70  using namespace std;
71  using namespace JPP;
72  using namespace KM3NETDAQ;
73 
75  JLimit_t& numberOfEvents = inputFile.getLimit();
76  string outputFile;
77  string detectorFile;
79  int debug;
80 
81  try {
82 
83  JParser<> zap("Example program to test hit building with DAQ events.");
84 
85  zap['f'] = make_field(inputFile);
86  zap['o'] = make_field(outputFile) = "build.root";
87  zap['n'] = make_field(numberOfEvents) = JLimit::max();
88  zap['a'] = make_field(detectorFile);
90  zap['d'] = make_field(debug) = 0;
91 
92  zap(argc, argv);
93  }
94  catch(const exception &error) {
95  FATAL(error.what() << endl);
96  }
97 
98  cout.tie(&cerr);
99 
100 
102 
103  try {
104  load(detectorFile, detector);
105  }
106  catch(const JException& error) {
107  FATAL(error);
108  }
109 
110  const JModuleRouter router(detector);
111 
112 
113  TFile out(outputFile.c_str(), "recreate");
114 
115  const Int_t N = 5000;
116 
117  TH1D h0("L0", NULL, N, -0.5, (Double_t) N - 0.5);
118  TH1D h1("L1", NULL, N, -0.5, (Double_t) N - 0.5);
119  TH1D h2("L2", NULL, N, -0.5, (Double_t) N - 0.5);
120 
121  // test compilation for various template specialisations
122 
123  {
124  JBuildL0<double> buildL0;
125  JBuildL1<double> buildL1(parameters);
126  JBuildL2<double> buildL2(parameters.L2);
127  }
128  {
129  JBuildL0<JHitL0> buildL0;
130  JBuildL1<JHitL1> buildL1(parameters);
131  JBuildL2<JHitL2> buildL2(parameters.L2);
132  }
133  {
134  JBuildL0<JHitR0> buildL0;
135  JBuildL1<JHitR1> buildL1(parameters);
136  JBuildL2<JHitR2> buildL2(parameters.L2);
137  }
138 
139  // primitive data types correspond to hit times [ns]
140 
141  JBuildL0<double> buildL0;
142  JBuildL1<double> buildL1(parameters);
143  JBuildL2<double> buildL2(parameters.L2);
144 
145 
146  while (inputFile.hasNext()) {
147 
148  STATUS("event: " << setw(10) << inputFile.getCounter() << '\r'); DEBUG(endl);
149 
150  const JDAQEvent* tev = inputFile.next();
151 
152  process(buildL0, router, *tev, h0);
153  process(buildL1, router, *tev, h1);
154  process(buildL2, router, *tev, h2);
155  }
156  NOTICE(endl);
157 
158  out.Write();
159  out.Close();
160 }
Utility class to parse command line options.
Definition: JParser.hh:1500
General exception.
Definition: JException.hh:23
int main(int argc, char *argv[])
Definition: Main.cc:15
ROOT TTree parameter settings of various packages.
Template specialisation of L0 builder for JHitL0 data type.
Definition: JBuildL0.hh:102
#define STATUS(A)
Definition: JMessage.hh:63
Detector data structure.
Definition: JDetector.hh:89
Router for direct addressing of module data in detector data structure.
then JShowerPostfit f $INPUT_FILE o $OUTPUT_FILE N
*fatal Wrong number of arguments esac JCookie sh typeset Z DETECTOR typeset Z SOURCE_RUN typeset Z TARGET_RUN set_variable PARAMETERS_FILE $WORKDIR parameters
Definition: diff-Tuna.sh:38
then for HISTOGRAM in h0 h1
Definition: JMatrixNZ.sh:71
Empty structure for specification of parser element that is initialised (i.e. does not require input)...
Definition: JParser.hh:66
Basic data structure for R2 hit.
Template specialisation of L1 builder for JHitL1 data type.
Definition: JBuildL1.hh:197
Basic data structure for time and time over threshold information of hit.
string outputFile
Data structure for detector geometry and calibration.
Basic data structure for L0 hit.
Auxiliary class for defining the range of iterations of objects.
Definition: JLimit.hh:41
Template L2 builder.
Definition: JBuildL2.hh:45
Template specialisation of L0 builder for JHitR0 data type.
Definition: JBuildL0.hh:174
Detector file.
Definition: JHead.hh:196
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
Definition: JParser.hh:1961
Template specialisation of L2 builder for JHitL2 data type.
Definition: JBuildL2.hh:219
#define NOTICE(A)
Definition: JMessage.hh:64
Basic data structure for L2 hit.
Template specialisation of L1 builder for JHitR1 data type.
Definition: JBuildL1.hh:284
int debug
debug level
Definition: JSirene.cc:63
General purpose messaging.
Template L1 hit builder.
Definition: JBuildL1.hh:85
#define FATAL(A)
Definition: JMessage.hh:67
Scanning of objects from multiple files according a format that follows from the extension of each fi...
Direct access to module in detector data structure.
Reduced data structure for L1 hit.
void load(const std::string &file_name, JDetector &detector)
Load detector from input file.
General purpose class for object reading from a list of file names.
Utility class to parse command line options.
then usage $script< input_file >< detector_file > fi set_variable OUTPUT_DIR set_variable SELECTOR JDAQTimesliceL1 set_variable DEBUG case set_variable DEBUG
Template specialisation of L2 builder for JHitR2 data type.
Definition: JBuildL2.hh:332
const JLimit & getLimit() const
Get limit.
Definition: JLimit.hh:73
Template L0 hit builder.
Definition: JBuildL0.hh:35
do set_variable DETECTOR_TXT $WORKDIR detector
Basic data structure for L1 hit.
JTriggerCounter_t next()
Increment trigger counter.