Jpp test-rotations-new
the software that should make you happy
Loading...
Searching...
No Matches
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"
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
33namespace {
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
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 */
68int 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;
78 JTriggerParameters parameters;
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);
89 zap['@'] = make_field(parameters) = JPARSER::initialised();
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
100
101 try {
102 load(detectorFile, detector);
103 }
104 catch(const JException& error) {
105 FATAL(error);
106 }
107
108 const JModuleRouter router(detector);
109
110
111 TFile out(outputFile.c_str(), "recreate");
112
113 const Int_t N = 5000;
114
115 TH1D h0("L0", NULL, N, -0.5, (Double_t) N - 0.5);
116 TH1D h1("L1", NULL, N, -0.5, (Double_t) N - 0.5);
117 TH1D h2("L2", NULL, N, -0.5, (Double_t) N - 0.5);
118
119 // test compilation for various template specialisations
120
121 {
122 JBuildL0<double> buildL0;
123 JBuildL1<double> buildL1(parameters);
124 JBuildL2<double> buildL2(parameters.L2);
125 }
126 {
127 JBuildL0<JHitL0> buildL0;
128 JBuildL1<JHitL1> buildL1(parameters);
129 JBuildL2<JHitL2> buildL2(parameters.L2);
130 }
131 {
132 JBuildL0<JHitR0> buildL0;
133 JBuildL1<JHitR1> buildL1(parameters);
134 JBuildL2<JHitR2> buildL2(parameters.L2);
135 }
136
137 // primitive data types correspond to hit times [ns]
138
139 JBuildL0<double> buildL0;
140 JBuildL1<double> buildL1(parameters);
141 JBuildL2<double> buildL2(parameters.L2);
142
143
144 while (inputFile.hasNext()) {
145
146 STATUS("event: " << setw(10) << inputFile.getCounter() << '\r'); DEBUG(endl);
147
148 const JDAQEvent* tev = inputFile.next();
149
150 process(buildL0, router, *tev, h0);
151 process(buildL1, router, *tev, h1);
152 process(buildL2, router, *tev, h2);
153 }
154 NOTICE(endl);
155
156 out.Write();
157 out.Close();
158}
int main(int argc, char **argv)
Definition JBuild.cc:68
string outputFile
Data structure for detector geometry and calibration.
Basic data structure for L0 hit.
Basic data structure for L1 hit.
Basic data structure for L2 hit.
Reduced data structure for L1 hit.
Basic data structure for R2 hit.
General purpose messaging.
#define DEBUG(A)
Message macros.
Definition JMessage.hh:62
#define STATUS(A)
Definition JMessage.hh:63
#define NOTICE(A)
Definition JMessage.hh:64
#define FATAL(A)
Definition JMessage.hh:67
int debug
debug level
Definition JSirene.cc:72
Direct access to module in detector data structure.
Scanning of objects from multiple files according a format that follows from the extension of each fi...
Utility class to parse command line options.
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
Definition JParser.hh:2142
ROOT TTree parameter settings of various packages.
Basic data structure for time and time over threshold information of hit.
Detector data structure.
Definition JDetector.hh:96
Router for direct addressing of module data in detector data structure.
General exception.
Definition JException.hh:24
Utility class to parse command line options.
Definition JParser.hh:1698
General purpose class for object reading from a list of file names.
virtual bool hasNext() override
Check availability of next element.
counter_type getCounter() const
Get counter.
virtual const pointer_type & next() override
Get next element.
Template L0 hit builder.
Definition JBuildL0.hh:38
Template L1 hit builder.
Definition JBuildL1.hh:90
Template L2 builder.
Definition JBuildL2.hh:49
void load(const std::string &file_name, JDetector &detector)
Load detector from input file.
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
KM3NeT DAQ data structures and auxiliaries.
Definition DataQueue.cc:39
Detector file.
Definition JHead.hh:227
Empty structure for specification of parser element that is initialised (i.e. does not require input)...
Definition JParser.hh:68
Auxiliary class for defining the range of iterations of objects.
Definition JLimit.hh:45
static counter_type max()
Get maximum counter value.
Definition JLimit.hh:128