Jpp test-rotations-old
the software that should make you happy
Loading...
Searching...
No Matches
JShowerPositionFit.cc File Reference

Program to perform EM Shower Second Position Fit for ORCA with I/O of JFIT::JEvt data. More...

Go to the source code of this file.

Functions

int main (int argc, char **argv)
 

Detailed Description

Program to perform EM Shower Second Position Fit for ORCA with I/O of JFIT::JEvt data.

The reconstruction is made at the HIT level.

Author
adomi

Definition in file JShowerPositionFit.cc.

Function Documentation

◆ main()

int main ( int argc,
char ** argv )

Definition at line 43 of file JShowerPositionFit.cc.

43 {
44
45 using namespace std;
46 using namespace JPP;
47
49 typedef JParallelFileScanner< JTypeList<JDAQEvent, JFIT::JEvt> > JParallelFileScanner_t;
50 typedef JParallelFileScanner_t::multi_pointer_type multi_pointer_type;
52 JACOUSTICS::JEvt>::typelist calibration_types;
53 typedef JMultipleFileScanner<calibration_types> JCalibration_t;
54
55
56 JParallelFileScanner_t inputFile;
59 JLimit_t& numberOfEvents = inputFile.getLimit();
60 string detectorFile;
61 string pdfFile;
62 JCalibration_t calibrationFile;
63 double Tmax_s;
64 int debug;
65 size_t threads; // number of parallel threads
66 try {
67
68 JParser<> zap;
69
70 zap['f'] = make_field(inputFile) ;
71 zap['o'] = make_field(outputFile) = "JShowerPositionFit.root";
72 zap['a'] = make_field(detectorFile) ;
73 zap['+'] = make_field(calibrationFile) = JPARSER::initialised();
74 zap['T'] = make_field(Tmax_s) = 100.0;
75 zap['P'] = make_field(pdfFile) ;
76 zap['@'] = make_field(parameters) = JPARSER::initialised();
77 zap['n'] = make_field(numberOfEvents) = JLimit::max();
78 zap['d'] = make_field(debug) = 2;
79 zap['N'] = make_field(threads) = 0;
80
81 zap(argc, argv);
82 }
83 catch(const exception& error) {
84 FATAL(error.what() << endl);
85 }
86
87
89
91
92 try {
93 load(detectorFile, detector);
94 }
95 catch(const JException& error) {
96 FATAL(error);
97 }
98
99 unique_ptr<JDynamics> dynamics;
100
101 if (!calibrationFile.empty()) {
102 try {
103
104 dynamics.reset(new JDynamics(detector, Tmax_s));
105
106 dynamics->load(calibrationFile);
107 }
108 catch(const exception& error) {
109 FATAL(error.what());
110 }
111 }
112
113 const JModuleRouter router(dynamics ? dynamics->getDetector() : detector);
114
115 outputFile.open();
116 outputFile.put(JMeta(argc, argv));
117
118 JSummaryFileRouter summary(inputFile);
119
120 {
121 const JShowerPositionFit::storage_type storage(pdfFile, parameters.TTS_ns);
122 JShowerPositionFit fit(parameters, storage, debug);
123 JMultiThreadedReconstruction<JShowerPositionFit> fits(fit, outputFile, threads, 2 * threads);
124
125 while (inputFile.hasNext()) {
126
127 STATUS("event: " << setw(10) << inputFile.getCounter() << '\r'); DEBUG(endl);
128
129 multi_pointer_type ps = inputFile.next();
130
131 JDAQEvent* tev = ps;
132 JFIT::JEvt* in = ps;
133
134 summary.update(*tev);
135
136 if (dynamics) {
137 dynamics->update(*tev);
138 }
139
140 auto input = fit.getInput(router, summary, *tev, *in, dynamics ? dynamics->getCoverage() : coverage_type());
141
142 if (threads > 0)
143 fits.enqueue(input);
144 else
145 outputFile.put(fit(input));
146
147 }
148 STATUS(endl);
149 }
150
152
153 io >> outputFile;
154
155 outputFile.close();
156}
string outputFile
#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
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
Definition JParser.hh:2142
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.
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 second position fit of the shower reconstruction, mainly dedicated for ORCA
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 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.
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
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