Jpp test-rotations-old
the software that should make you happy
Loading...
Searching...
No Matches
JShowerFit.cc
Go to the documentation of this file.
1#include <string>
2#include <limits>
3
7
8#include "JDAQ/JDAQEventIO.hh"
11
14
16
18#include "JSupport/JSupport.hh"
20#include "JSupport/JMeta.hh"
23
24#include "Jeep/JParser.hh"
25#include "Jeep/JMessage.hh"
26
33
35
36/**
37 * \file
38 *
39 * Program to perform EM Shower Fit for ORCA with I/O of JFIT::JEvt data.
40 * The reconstruction is made at the PMT level.
41 * \author adomi
42 */
43
44int main(int argc, char** argv){
45
46 using namespace std;
47 using namespace JPP;
48 using namespace KM3NETDAQ;
49
51 typedef JParallelFileScanner< JTypeList<JDAQEvent, JFIT::JEvt> > JParallelFileScanner_t;
52 typedef JParallelFileScanner_t::multi_pointer_type multi_pointer_type;
54 JACOUSTICS::JEvt>::typelist calibration_types;
55 typedef JMultipleFileScanner<calibration_types> JCalibration_t;
56
57
58 JParallelFileScanner_t inputFile;
60 JShowerFitParameters_t parameters;
61 JLimit_t& numberOfEvents = inputFile.getLimit();
62 string detectorFile;
63 JCalibration_t calibrationFile;
64 double Tmax_s;
65 string pdfFile;
67 size_t threads; // number of parallel threads
68 int debug;
69
70 try {
71
72 JParser<> zap;
73
74 zap['f'] = make_field(inputFile) ;
75 zap['o'] = make_field(outputFile) = "JORCAShowerFit_Output.root";
76 zap['a'] = make_field(detectorFile) ;
77 zap['+'] = make_field(calibrationFile) = JPARSER::initialised();
78 zap['T'] = make_field(Tmax_s) = 100.0;
79 zap['P'] = make_field(pdfFile) ;
80 zap['E'] = make_field(correct) = JShowerEnergyCorrection(); // off
81 zap['@'] = make_field(parameters) = JPARSER::initialised();
82 zap['n'] = make_field(numberOfEvents) = JLimit::max();
83 zap['N'] = make_field(threads) = 0;
84 zap['d'] = make_field(debug) = 2;
85
86 zap(argc, argv);
87 }
88 catch(const exception& error) {
89 FATAL(error.what() << endl);
90 }
91
92
94
96
97 try {
98 load(detectorFile, detector);
99 }
100 catch(const JException& error) {
101 FATAL(error);
102 }
103
104 unique_ptr<JDynamics> dynamics;
105
106 if (!calibrationFile.empty()) {
107
108 try {
109
110 dynamics.reset(new JDynamics(detector, Tmax_s));
111
112 dynamics->load(calibrationFile);
113 }
114 catch(const exception& error) {
115 FATAL(error.what());
116 }
117 }
118
119 const JModuleRouter router(dynamics ? dynamics->getDetector() : detector);
120
121 JSummaryFileRouter summary(inputFile);
122
123 outputFile.open();
124 outputFile.put(JMeta(argc, argv));
125
126 {
127
128 const JShowerFit::storage_type storage(pdfFile);
129 JShowerFit fit(parameters, storage, correct, debug);
130
131 JMultiThreadedReconstruction<JShowerFit> fits(fit, outputFile, threads, 2 * threads);
132
133 while (inputFile.hasNext()) {
134
135 STATUS("event: " << setw(10) << inputFile.getCounter() << '\r'); DEBUG(endl);
136
137 multi_pointer_type ps = inputFile.next();
138
139 JDAQEvent* tev = ps;
140 JFIT::JEvt* in = ps;
141
142 summary.update(*tev);
143
144 if (dynamics) {
145 dynamics->update(*tev);
146 }
147
148 auto input = fit.getInput(router, summary, *tev, *in, dynamics ? dynamics->getCoverage() : coverage_type());
149
150 if (threads > 0)
151 fits.enqueue(input);
152 else
153 outputFile.put(fit(input));
154 }
155 STATUS(endl);
156 }
157
159
160 io >> outputFile;
161
162 outputFile.close();
163}
string outputFile
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.
Parallel scanning of objects from a single file or multiple files according a format that follows fro...
Utility class to parse command line options.
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
Definition JParser.hh:2142
int main(int argc, char **argv)
Definition JShowerFit.cc:44
ROOT TTree parameter settings of various packages.
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.
class to handle the direction fit of the shower reconstruction, mainly dedicated for ORCA
Definition JShowerFit.hh:81
input_type getInput(const JModuleRouter &router, const JSummaryRouter &summary, const JDAQEvent &event, const JEvt &in, const coverage_type &coverage) const
Get input data.
void setSplitLevel(int value)
Set split level.
Object writing to file.
General purpose class for object reading from a list of file names.
General purpose class for parallel reading of objects from a single file or multiple files.
Object reading from a list of files.
File router for fast addressing of summary data.
void update(const JDAQHeader &header)
Update router.
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
Type list.
Definition JTypeList.hh:23
Empty structure for specification of parser element that is initialised (i.e. does not require input)...
Definition JParser.hh:68
Data structure for fit parameters.
Auxiliary class for defining the range of iterations of objects.
Definition JLimit.hh:45
const JLimit & getLimit() const
Get limit.
Definition JLimit.hh:84
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