Jpp test-rotations-old
the software that should make you happy
Loading...
Searching...
No Matches
JORCAShowerReconstruction.cc
Go to the documentation of this file.
1#include <string>
2#include <iostream>
3#include <iomanip>
4#include <memory>
5
9
10#include "JDAQ/JDAQEventIO.hh"
13#include "JDAQ/JDAQEvaluator.hh"
14
16
20
22
23#include "JSupport/JSupport.hh"
28#include "JSupport/JMeta.hh"
29
32
33#include "JPhysics/JK40Rates.hh"
34#include "JPhysics/KM3NeT.hh"
35
36#include "Jeep/JProperties.hh"
37#include "Jeep/JParser.hh"
38#include "Jeep/JMessage.hh"
39
40
41/**
42 * \file
43 * Program to perform reconstruction of shower for ORCA detector.
44 *
45 * \author mdejong
46 */
47int main(int argc, char **argv)
48{
49 using namespace std;
50 using namespace JPP;
51 using namespace KM3NETDAQ;
52
56 JACOUSTICS::JEvt>::typelist calibration_types;
57 typedef JMultipleFileScanner<calibration_types> JCalibration_t;
58 typedef JORCAShowerReconstruction JReconstruction_t;
59 typedef JReconstruction_t::JParameters_t JParameters_t;
60 typedef JReconstruction_t::JStorage_t JStorage_t;
61
62 JSingleFileScanner_t inputFile;
64 JLimit_t& numberOfEvents = inputFile.getLimit();
65 string detectorFile;
66 JCalibration_t calibrationFile;
67 double Tmax_s;
69 JParameters_t parameters;
70 string pdfFile;
71 size_t threads; // number of parallel threads
72 int debug;
73
74 try {
75
76 JParser<> zap("Program to perform reconstruction of shower for ORCA detector.");
77
78 zap['f'] = make_field(inputFile);
79 zap['o'] = make_field(outputFile) = "jshower.root";
80 zap['a'] = make_field(detectorFile);
81 zap['+'] = make_field(calibrationFile) = JPARSER::initialised();
82 zap['T'] = make_field(Tmax_s) = 100.0;
83 zap['n'] = make_field(numberOfEvents) = JLimit::max();
84 zap['P'] = make_field(pdfFile);
85 zap['E'] = make_field(correct) = JShowerEnergyCorrection(); // off
86 zap['@'] = make_field(parameters.properties) = JPARSER::initialised();
87 zap['N'] = make_field(threads, "number of threads") = 0;
88 zap['d'] = make_field(debug) = 1;
89
90 zap(argc, argv);
91 }
92 catch(const exception& error) {
93 FATAL(error.what() << endl);
94 }
95
96
98
100
101 try {
102 load(detectorFile, detector);
103 }
104 catch(const JException& error) {
105 FATAL(error);
106 }
107
108 unique_ptr<JDynamics> dynamics;
109
110 if (!calibrationFile.empty()) {
111
112 try {
113
114 dynamics.reset(new JDynamics(detector, Tmax_s));
115
116 dynamics->load(calibrationFile);
117 }
118 catch(const exception& error) {
119 FATAL(error.what());
120 }
121 }
122
123 outputFile.open();
124 outputFile.put(JMeta(argc, argv));
125
126 JTreeScanner<JDAQEvent, JDAQEvaluator> in(inputFile, inputFile.getLimit());
127
128 {
129 const JModuleRouter router(dynamics ? dynamics->getDetector() : detector);
130
131 JSummaryFileRouter summary(inputFile);
132
133 const JStorage_t storage(pdfFile, parameters);
134
135 JReconstruction_t fit(parameters, storage, correct, debug);
136
137 JMultiThreadedReconstruction<JReconstruction_t> fits(fit, outputFile, threads, 2 * threads);
138
139 while (in.hasNext()) {
140
141 STATUS("event: " << setw(10) << in.getCounter() << '\r'); DEBUG(endl);
142
143 const JDAQEvent* tev = in.next();
144
145 summary.update(*tev);
146
147 if (dynamics) {
148 dynamics->update(*tev);
149 }
150
151 auto input = fit.getInput(router, summary, *tev, dynamics ? dynamics->getCoverage() : coverage_type());
152
153 if (threads > 0)
154 fits.enqueue(input);
155 else
156 outputFile.put(fit(input));
157
158 outputFile.put(*tev);
159 }
160 STATUS(endl);
161 }
162
164
165 io >> outputFile;
166
167 outputFile.close();
168}
string outputFile
Data structure for detector geometry and calibration.
Dynamic detector calibration.
Recording of objects on file according a format that follows from the file name extension.
General purpose messaging.
#define DEBUG(A)
Message macros.
Definition JMessage.hh:62
#define STATUS(A)
Definition JMessage.hh:63
#define FATAL(A)
Definition JMessage.hh:67
int debug
debug level
Definition JSirene.cc:72
ROOT I/O of application specific meta data.
Direct access to module in detector data structure.
int main(int argc, char **argv)
Utility class to parse command line options.
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
Definition JParser.hh:2142
Utility class to parse parameter values.
Scanning of objects from a single file according a format that follows from the extension of each fil...
ROOT TTree parameter settings of various packages.
Properties of KM3NeT PMT and deep-sea water.
Detector data structure.
Definition JDetector.hh:96
Router for direct addressing of module data in detector data structure.
Data structure for set of track fit results.
Auxiliary class for correction of energy determined by JShowerEnergy.cc.
General exception.
Definition JException.hh:24
Utility class to parse command line options.
Definition JParser.hh:1698
Thread pool for event-by-event reconstruction.
void setSplitLevel(int value)
Set split level.
Object writing to file.
General purpose class for object reading from a list of file names.
Object reading from a list of files.
File router for fast addressing of summary data.
void update(const JDAQHeader &header)
Update router.
Template definition for direct access of elements in ROOT TChain.
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).
JTreeParameters & getTreeParameters()
Template definition for method returning TTree parameters.
KM3NeT DAQ data structures and auxiliaries.
Definition DataQueue.cc:39
Detector file.
Definition JHead.hh:227
Acoustic event fit.
Orientation of module.
Dynamic detector calibration.
Definition JDynamics.hh:86
Data structure for coverage of detector by dynamical calibrations.
Definition JCoverage.hh:19
Auxiliary class for recursive type list generation.
Definition JTypeList.hh:351
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
Auxiliary class for ROOT I/O of application specific meta data.
Definition JMeta.hh:72
Auxiliary base class for file name.