Jpp 19.3.0
the software that should make you happy
Loading...
Searching...
No Matches
JTriggerEfficiency.cc File Reference

Auxiliary program to trigger Monte Carlo events. More...

#include <string>
#include <iostream>
#include <iomanip>
#include <vector>
#include <set>
#include "TH1D.h"
#include "TRandom3.h"
#include "km3net-dataformat/offline/Head.hh"
#include "km3net-dataformat/offline/MultiHead.hh"
#include "km3net-dataformat/offline/Evt.hh"
#include "km3net-dataformat/offline/Hit.hh"
#include "km3net-dataformat/definitions/pmt_status.hh"
#include "JDAQ/JDAQTimesliceIO.hh"
#include "JDAQ/JDAQEventIO.hh"
#include "JDAQ/JDAQSummarysliceIO.hh"
#include "JDAQ/JDAQToolkit.hh"
#include "JTimeslice/JEventTimeslice.hh"
#include "JSummaryslice/JSummaryslice.hh"
#include "JAAnet/JHead.hh"
#include "JAAnet/JHeadToolkit.hh"
#include "JAAnet/JAAnetToolkit.hh"
#include "JPhysics/JK40Rates.hh"
#include "JDetector/JDetector.hh"
#include "JDetector/JDetectorToolkit.hh"
#include "JDetector/JDetectorSimulator.hh"
#include "JDetector/JModuleMapper.hh"
#include "JDetector/JPMTRouter.hh"
#include "JDetector/JTimeRange.hh"
#include "JDetector/JPMTParametersMap.hh"
#include "JDetector/JK40DefaultSimulator.hh"
#include "JDetector/JPMTDefaultSimulator.hh"
#include "JDetector/JCLBDefaultSimulator.hh"
#include "JTrigger/JHit.hh"
#include "JTrigger/JHitToolkit.hh"
#include "JTrigger/JTimeslice.hh"
#include "JTrigger/JSuperFrame1D.hh"
#include "JTrigger/JSuperFrame2D.hh"
#include "JTrigger/JHitL0.hh"
#include "JTrigger/JHitL1.hh"
#include "JTrigger/JBuildL1.hh"
#include "JTrigger/JBuildL2.hh"
#include "JTrigger/JTrigger3DShower.hh"
#include "JTrigger/JTriggerMXShower.hh"
#include "JTrigger/JTrigger3DMuon.hh"
#include "JTrigger/JTriggerBits.hh"
#include "JTrigger/JEventOverlap.hh"
#include "JTrigger/JTimesliceRouter.hh"
#include "JTrigger/JTriggeredEvent.hh"
#include "JTrigger/JTimesliceL1.hh"
#include "JTrigger/JTriggerParameters.hh"
#include "JTrigger/JEventToolkit.hh"
#include "JTrigger/JSummaryRouter.hh"
#include "JTrigger/JTriggerToolkit.hh"
#include "JTrigger/JK40RunByRunSimulator.hh"
#include "JTrigger/JPMTRunByRunSimulator.hh"
#include "JTrigger/JCLBRunByRunSimulator.hh"
#include "JSupport/JMultipleFileScanner.hh"
#include "JSupport/JFileRecorder.hh"
#include "JSupport/JMonteCarloFileSupportkit.hh"
#include "JSupport/JTriggerParametersSupportkit.hh"
#include "JSupport/JSupportToolkit.hh"
#include "JSupport/JSupport.hh"
#include "JSupport/JRunByRun.hh"
#include "JSupport/JMeta.hh"
#include "JROOT/JRandom.hh"
#include "Jeep/JPrint.hh"
#include "Jeep/JParser.hh"
#include "Jeep/JMessage.hh"

Go to the source code of this file.

Functions

int main (int argc, char **argv)
 

Detailed Description

Auxiliary program to trigger Monte Carlo events.

The options

  • -a refers to the detector configuration that is used to convert Monte Carlo true information to raw data; and
  • -b refers to the detector configuration that is used to convert raw data to calibrated data.

The event counter of the triggered events, as returned by KM3NETDAQ::JDAQEvent::getCounter(), is set to the corresponding index of the Monte Carlo event in the output.
This allows for correlating the DAQ event to the Monte Carlo event.
The time of the DAQ hits can be correlated to the time of the Monte Carlo hits using the frame index and the time of the Monte Carlo event (Evt::mc_t), respectively (see also time_converter).
The universal time of the DAQ event is set to the universal time of the Monte Carlo event with a correction for the time of the event (read hits) within the time slice.
In run-by-run mode, the trigger parameters as well as the singles rates and status of the PMTs are read from the given raw data file.
The two-fold (and higher) coincidence rates should still be provided on the command line.

Author
mdejong

Definition in file JTriggerEfficiency.cc.

Function Documentation

◆ main()

int main ( int argc,
char ** argv )

Definition at line 134 of file JTriggerEfficiency.cc.

135{
136 using namespace std;
137 using namespace JPP;
138 using namespace KM3NETDAQ;
139
141
142 JMultipleFileScanner<> inputFile;
144 JLimit_t& numberOfEvents = inputFile.getLimit();
145 string detectorFileA;
146 string detectorFileB;
147 int run;
148 JTriggerParameters parameters;
149 bool triggeredEventsOnly;
150 JPMTParametersMap pmtParameters;
151 JK40Rates rates_Hz;
152 JRunByRun runbyrun;
153 double sigma_ns;
154 JRandom seed;
155 int debug;
156
157 try {
158
159 JParser<> zap("Auxiliary program to trigger Monte Carlo events.");
160
161 zap['f'] = make_field(inputFile, "input file (output of detector simulation)");
162 zap['o'] = make_field(outputFile, "output file") = "trigger_efficieny.root";
163 zap['n'] = make_field(numberOfEvents) = JLimit::max();
164 zap['a'] = make_field(detectorFileA, "detector used for conversion from Monte Carlo truth to raw data.");
165 zap['b'] = make_field(detectorFileB, "detector used for conversion of raw data to calibrated data.") = "";
166 zap['R'] = make_field(run, "run number") = -1;
167 zap['r'] = make_field(runbyrun, "option for run-by-run mode") = JPARSER::initialised();
168 zap['@'] = make_field(parameters, "Trigger parameters (or corresponding file name)") = JPARSER::initialised();
169 zap['O'] = make_field(triggeredEventsOnly, "optionally write only triggered events.");
170 zap['P'] = make_field(pmtParameters, "PMT simulation data (or corresponding file name)") = JPARSER::initialised();
171 zap['B'] = make_field(rates_Hz, "background rates [Hz]") = JPARSER::initialised();
172 zap['s'] = make_field(sigma_ns, "intrinsic time smearing of K40 coincidences [ns]") = JK40DefaultSimulatorInterface::getSigma();
173 zap['S'] = make_field(seed, "seed") = 0;
174 zap['d'] = make_field(debug, "debug") = 0;
175
176 zap(argc, argv);
177 }
178 catch(const exception &error) {
179 FATAL(error.what() << endl);
180 }
181
182 seed.set(gRandom);
183
185
187
188 if (detectorFileB == "") {
189 detectorFileB = detectorFileA;
190 }
191
192
193 JDetector detectorA;
194 JDetector detectorB;
195
196 try {
197 load(detectorFileA, detectorA);
198 load(detectorFileB, detectorB);
199 }
200 catch(const JException& error) {
201 FATAL(error);
202 }
203
204 const double TA_ns = getT0(detectorA);
205 const double TB_ns = getT0(detectorB);
206
208
209 if (!pmtParameters.is_valid()) {
210 FATAL("Invalid PMT parameters " << pmtParameters << endl);
211 }
212
213 if (pmtParameters.getQE() != 1.0) {
214
215 WARNING("Correct background rates with global efficiency " << pmtParameters.getQE() << endl);
216
217 rates_Hz.correct(pmtParameters.getQE());
218 }
219
220 Head header;
221
222 try {
223 header = getHeader(inputFile);
224 }
225 catch(const JException& error) {
226 FATAL(error);
227 }
228
229 const JModuleRouter moduleRouter(detectorB);
230 JDetectorSimulator simbad (detectorA);
231 JSummaryRouter summaryRouter;
232
233 if (runbyrun.is_valid()) {
234
235 NOTICE("Using run-by-run:" << endl << runbyrun << endl);
236
237 if (!runbyrun.hasNext()) {
238 FATAL("Run-by-run simulation yields no input." << endl);
239 }
240
241 if (rates_Hz.getSinglesRate() != 0.0) {
242 WARNING("Run-by-run simulation discards singles rate [Hz] " << rates_Hz.getSinglesRate() << endl);
243 }
244
245 try {
246 simbad.reset(new JK40RunByRunSimulator(summaryRouter, rates_Hz));
247 simbad.reset(new JPMTRunByRunSimulator(summaryRouter, pmtParameters, detectorA));
248 simbad.reset(new JCLBRunByRunSimulator(summaryRouter));
249 }
250 catch(const JException& error) {
251 FATAL(error.what() << endl);
252 }
253
254 try {
255
256 parameters = getTriggerParameters(runbyrun->getFilelist());
257
258 NOTICE("Set trigger parameters from run-by-run input." << endl);
259 }
260 catch(const JException& error) {
261 WARNING("No trigger parameters from run-by-run input;\nrun with default/user input." << endl);
262 }
263
264 // set live time
265
266 JHead buffer(header);
267
268 buffer.DAQ.livetime_s = getLivetime(runbyrun->getFilelist());
269 buffer.push(&JHead::DAQ);
270
271 copy(buffer, header);
272
273 } else {
274
275 NOTICE("Using fixed rates [Hz]: " << rates_Hz << endl);
276
277 try {
278 simbad.reset(new JK40DefaultSimulator(rates_Hz));
279 simbad.reset(new JPMTDefaultSimulator(pmtParameters, detectorA));
280 simbad.reset(new JCLBDefaultSimulator());
281 }
282 catch(const JException& error) {
283 FATAL(error.what() << endl);
284 }
285 }
286
287 // detector
288
289 if (parameters.disableHighRateVeto) {
290
291 NOTICE("Disabling high-rate veto of all PMTs." << endl);
292
294 }
295
296 parameters.set(getMaximalDistance(detectorB));
297
298 DEBUG("Trigger:" << endl << parameters << endl);
299 DEBUG("PMT parameters:" << endl << pmtParameters << endl);
300
301 const double Tmax = max(getMaximalTime(detectorA),
302 getMaximalTime(detectorB));
303
304 const JTimeRange period(-(Tmax + parameters.TMaxLocal_ns),
305 +(Tmax + parameters.TMaxLocal_ns));
306
307 typedef double hit_type;
308
309 typedef JSuperFrame1D<hit_type> JSuperFrame1D_t;
310 typedef JSuperFrame2D<hit_type> JSuperFrame2D_t;
311 typedef JTimeslice <hit_type> JTimeslice_t;
312 typedef JBuildL1 <hit_type> JBuildL1_t;
313 typedef JBuildL2 <hit_type> JBuildL2_t;
314
315 const JBuildL1_t buildL1(parameters);
316 const JBuildL2_t buildL2(parameters.L2);
317 const JBuildL2_t buildSN(parameters.SN);
318
319 JTimesliceRouter timesliceRouter(parameters.numberOfBins);
320
321 const JTrigger3DMuon trigger3DMuon (parameters);
322 const JTrigger3DShower trigger3DShower(parameters);
323 const JTriggerMXShower triggerMXShower(parameters, detectorB);
324
325
326 TH1D h1("Trigger bits", NULL, NUMBER_OF_TRIGGER_BITS, -0.5, NUMBER_OF_TRIGGER_BITS - 0.5);
327
328
329 outputFile.open();
330
331 if (!outputFile.is_open()) {
332 FATAL("Error opening file " << outputFile << endl);
333 }
334
335 outputFile.put(*gRandom);
336 outputFile.put(JMeta(argc, argv));
337 outputFile.put(header);
338 outputFile.put(parameters);
339
340 JLimit_t limit = inputFile.getLimit();
341 counter_type number_of_events = 0;
342 int trigger_counter = 0;
343
344 for (JMultipleFileScanner<>::const_iterator file = inputFile.begin(); file != inputFile.end(); ++file) {
345
346 int mc_run_id = 0;
347
348 try {
349
350 const JHead head(getHeader(*file));
351
352 mc_run_id = head.start_run.run_id;
353 }
354 catch(const JException& error) {
355 FATAL(error);
356 }
357
359
360 limit.setLowerLimit(limit.getLowerLimit() - in.skip(limit.getLowerLimit()));
361
362 for ( ; in.hasNext() && number_of_events != limit; ++number_of_events) {
363
364 STATUS("event: " << setw(10) << number_of_events << '\r'); DEBUG(endl);
365
366 Evt* event = in.next();
367
368 event->mc_run_id = mc_run_id;
369
370 DEBUG(*event << endl);
371
372 bool trigger = false;
373
374 if (!event->mc_hits.empty()) {
375
376 int frame_index = (int) in.getCounter() + 1; // 1 event / slice
377
378 if (runbyrun.is_valid() && runbyrun.hasNext()) {
379
380 summaryRouter.update(runbyrun.next());
381
382 summaryRouter.correct(dynamic_cast<const JPMTDefaultSimulatorInterface&>(simbad.getPMTSimulator()));
383
384 frame_index = summaryRouter.getFrameIndex();
385 run = summaryRouter.getRunNumber();
386 }
387
388 // set the event time!
389
390 JTimeRange timeRange = getTimeRange(*event, period);
391
392 if (!timeRange.is_valid()) {
393 timeRange.setRange(0.0,0.0);
394 }
395
396 const double t0 = 0.5 * (timeRange.getLowerLimit() + timeRange.getUpperLimit());
397 const double t1 = gRandom->Rndm() * getFrameTime() + TA_ns;
398
399 DEBUG("Start time: " << FIXED(12,2) << t0 << ' ' << FIXED(12,2) << t1 << ' ' << FIXED(9,2) << TA_ns << endl);
400
401 event->mc_t = getTimeOfFrame(frame_index) + t1 - t0; // time since start of data taking run
402
403 timeRange.add(event->mc_t);
404 timeRange.add(period);
405
406 JDAQUTCExtended utc(JDAQUTCExtended::getInstance().getTimeNanoSecond() +
407 getTimeOfFrame(trigger_counter + 1)); // ensure incremental UTC times (e.g. for JDAQSplit.cc)
408
409 if (event->mc_event_time != TTimeStamp(0)) {
410 utc = getDAQUTCExtended(event->mc_event_time, t1); // set UTC time according Monte Carlo event
411 }
412
413 const JDAQChronometer chronometer(detectorB.getID(), (run != -1 ? run : mc_run_id), frame_index, utc);
414
415 const JEventTimeslice timeslice(chronometer, simbad, *event, period);
416
417 DEBUG(timeslice << endl);
418
419
420 timesliceRouter.configure(timeslice);
421
422 JTimeslice_t timesliceL0(timeslice.getDAQChronometer());
423 JTimeslice_t timesliceL1(timeslice.getDAQChronometer());
424 JTimeslice_t timesliceL2(timeslice.getDAQChronometer());
425 JTimeslice_t timesliceSN(timeslice.getDAQChronometer());
426
427 for (JDAQTimeslice::const_iterator super_frame = timeslice.begin(); super_frame != timeslice.end(); ++super_frame) {
428
429 if (moduleRouter.hasModule(super_frame->getModuleID())) {
430
431 // calibration
432
433 const JModule& module = moduleRouter.getModule(super_frame->getModuleID());
434 const JSuperFrame2D_t& buffer = JSuperFrame2D_t::demultiplex(*super_frame, module);
435
436 // L0
437
438 timesliceL0.push_back(JSuperFrame1D_t(buffer));
439
440 // L1
441
442 timesliceL1.push_back(JSuperFrame1D_t(super_frame->getDAQChronometer(),
443 super_frame->getModuleIdentifier(),
444 module.getPosition()));
445
446 buildL1(*timesliceL0.rbegin(), back_inserter(*timesliceL1.rbegin()));
447
448 // L2
449
450 timesliceL2.push_back(JSuperFrame1D_t(super_frame->getDAQChronometer(),
451 super_frame->getModuleIdentifier(),
452 module.getPosition()));
453
454 buildL2(buffer, *timesliceL1.rbegin(), back_inserter(*timesliceL2.rbegin()));
455
456 // SN
457
458 timesliceSN.push_back(JSuperFrame1D_t(super_frame->getDAQChronometer(),
459 super_frame->getModuleIdentifier(),
460 module.getPosition()));
461
462 buildSN(buffer, *timesliceL1.rbegin(), back_inserter(*timesliceSN.rbegin()));
463
464 DEBUG("L0 " << setw(8) << timesliceL0.rbegin()->getModuleID() << ' ' << setw(8) << timesliceL0.rbegin()->size() << endl);
465 DEBUG("L1 " << setw(8) << timesliceL1.rbegin()->getModuleID() << ' ' << setw(8) << timesliceL1.rbegin()->size() << endl);
466 DEBUG("L2 " << setw(8) << timesliceL2.rbegin()->getModuleID() << ' ' << setw(8) << timesliceL2.rbegin()->size() << endl);
467 DEBUG("SN " << setw(8) << timesliceSN.rbegin()->getModuleID() << ' ' << setw(8) << timesliceSN.rbegin()->size() << endl);
468 }
469 }
470
471
472 // Trigger
473
474 JTriggerInput trigger_input(timesliceL2);
475 JTriggerOutput trigger_output;
476
477 trigger3DMuon (trigger_input, back_inserter(trigger_output));
478 trigger3DShower(trigger_input, back_inserter(trigger_output));
479 triggerMXShower(trigger_input, timesliceL0, back_inserter(trigger_output));
480
481 trigger_output.merge(JEventOverlap(parameters.TMaxEvent_ns));
482
483 for (JTriggerOutput::const_iterator to = trigger_output.begin(); to != trigger_output.end(); ++to) {
484
485 for (int i = 0; i != h1.GetNbinsX(); ++i) {
486 if (to->hasTriggerBit(i)) {
487 h1.Fill((double) i);
488 }
489 }
490
491 JTimeRange eventTime = getTimeRange(*to).add(getTimeOfRTS(*to));
492
493 eventTime.add(TA_ns);
494 eventTime.sub(TB_ns);
495
496 DEBUG("Event time: "
497 << to->getFrameIndex() << ' '
498 << eventTime << ' '
499 << timeRange << ' '
500 << (timeRange.overlap(eventTime) ? "Y" : "N") << endl);
501
502 if (timeRange.overlap(eventTime)) {
503
504 JTriggeredEvent tev(*to,
505 timesliceRouter,
506 moduleRouter,
507 parameters.TMaxLocal_ns,
508 getTimeRange(parameters));
509
510 // Set the event counter to the index of the Monte Carlo event in the output.
511
512 tev.setCounter(trigger_counter);
513
514 outputFile.put(tev);
515
516 trigger = true;
517 }
518 }
519
520
521 if (!triggeredEventsOnly || trigger) {
522
523 if (parameters.writeL0()) {
524 outputFile.put(timeslice);
525 }
526
527 if (parameters.writeL1()) {
528 outputFile.put(JTimesliceL1<JDAQTimesliceL1>(timesliceL1, timesliceRouter, moduleRouter, parameters.TMaxLocal_ns));
529 }
530
531 if (parameters.writeL2()) {
532 outputFile.put(JTimesliceL1<JDAQTimesliceL2>(timesliceL2, timesliceRouter, moduleRouter, parameters.L2.TMaxLocal_ns));
533 }
534
535 if (parameters.writeSN()) {
536 outputFile.put(JTimesliceL1<JDAQTimesliceSN>(timesliceSN, timesliceRouter, moduleRouter, parameters.SN.TMaxLocal_ns));
537 }
538
539 if (parameters.writeSummary()) {
540 outputFile.put(JSummaryslice(chronometer,simbad));
541 }
542 }
543 }
544
545 if (!triggeredEventsOnly || trigger) {
546
547 outputFile.put(*event);
548
549 ++trigger_counter;
550 }
551 }
552 }
553 STATUS(endl);
554
555
557
558 io >> outputFile;
559
560 outputFile.put(h1);
561 outputFile.put(*gRandom);
562 outputFile.close();
563}
string outputFile
#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
#define WARNING(A)
Definition JMessage.hh:65
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
Definition JParser.hh:2142
Monte Carlo run header.
Definition JHead.hh:1236
JAANET::DAQ DAQ
Definition JHead.hh:1607
void merge(const JMatch_t &match)
Merge events.
Detector data structure.
Definition JDetector.hh:96
void setPMTStatus(const int bit)
Set status of all PMTs.
Definition JDetector.hh:207
static double getSigma()
Get intrinsic time smearing of K40 coincidences.
static void setSigma(const double sigma)
Set intrinsic time smearing of K40 coincidences.
Default implementation of the simulation of K40 background.
Router for direct addressing of module data in detector data structure.
Data structure for a composite optical module.
Definition JModule.hh:75
Auxiliary class for map of PMT parameters.
double getQE(const JPMTIdentifier &id) const
Get QE of given PMT.
bool is_valid() const
Check validity of PMT parameters.
const JPosition3D & getPosition() const
Get position.
General exception.
Definition JException.hh:24
virtual const char * what() const override
Get error message.
Definition JException.hh:64
int getID() const
Get identifier.
Definition JObjectID.hh:50
virtual bool hasNext() override
Check availability of next element.
virtual const pointer_type & next() override
Get next element.
static void Throw(const bool option)
Enable/disable throw option.
Definition JThrow.hh:37
Utility class to parse command line options.
Definition JParser.hh:1698
Object writing to file.
Router for fast addressing of summary data in KM3NETDAQ::JDAQSummaryslice data structure as a functio...
void update(const JDAQSummaryslice *ps)
Update router.
void setRange(const range_type &range)
Set range.
Definition JRange.hh:146
bool is_valid() const
Check validity of range.
Definition JRange.hh:311
bool overlap(const range_type &range) const
Test overlap with given range.
Definition JRange.hh:382
T getLowerLimit() const
Get lower limit.
Definition JRange.hh:202
range_type & sub(argument_type x)
Subtract offset.
Definition JRange.hh:460
void setLowerLimit(argument_type x)
Set lower limit.
Definition JRange.hh:224
range_type & add(argument_type x)
Add offset.
Definition JRange.hh:446
T getUpperLimit() const
Get upper limit.
Definition JRange.hh:213
CLB simulation based on run-by-run information.
K40 simulation based on run-by-run information.
PMT simulation based on run-by-run information.
1-dimensional frame with time calibrated data from one optical module.
2-dimensional frame with time calibrated data from one optical module.
Auxiliary class to build JDAQTimeslice for L1 timeslice.
Data structure for input to trigger algorithm.
Auxiliary class to build JDAQEvent for a triggered event.
Data structure for UTC time.
static const JDAQUTCExtended & getInstance()
Get arbitrary offset (e.g.
JTimeRange getTimeRange(const Evt &event)
Get time range (i.e. time between earliest and latest hit) of Monte Carlo event.
void copy(const Head &from, JHead &to)
Copy header from from to to.
Definition JHead.cc:163
void load(const std::string &file_name, JDetector &detector)
Load detector from input file.
double getMaximalDistance(const JDetector &detector, const bool option=false)
Get maximal distance between modules in detector.
@ debug_t
debug
Definition JMessage.hh:29
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
Long64_t counter_type
Type definition for counter.
double getLivetime(const std::string &file_name)
Get data taking live time.
JTriggerParameters getTriggerParameters(const JMultipleFileScanner_t &file_list)
Get trigger parameters.
Head getHeader(const JMultipleFileScanner_t &file_list)
Get Monte Carlo header.
KM3NeT DAQ data structures and auxiliaries.
Definition DataQueue.cc:39
double getFrameTime()
Get frame time duration.
Definition JDAQClock.hh:162
void setDAQLongprint(const bool option)
Set DAQ print option.
Definition JDAQPrint.hh:28
double getTimeOfFrame(const int frame_index)
Get start time of frame in ns since start of run for a given frame index.
Definition JDAQClock.hh:185
double getMaximalTime(const double R_Hz)
Get maximal time for given rate.
JDAQUTCExtended getDAQUTCExtended(const TTimeStamp &t0, const double t1=0.0)
Get DAQ UTC time.
static const int HIGH_RATE_VETO_DISABLE
Enable (disable) use of high-rate veto test if this status bit is 0 (1);.
Definition pmt_status.hh:13
The Evt class respresent a Monte Carlo (MC) event as well as an offline event.
Definition Evt.hh:21
int mc_run_id
MC run identifier.
Definition Evt.hh:27
Auxiliary data structure for floating point format specification.
Definition JManip.hh:448
The Head class reflects the header of Monte-Carlo event files, which consists of keys (also referred ...
Definition Head.hh:65
Match of two events considering overlap in time and position.
Acoustic hit.
Definition JBillabong.cc:70
Type list.
Definition JTypeList.hh:23
Template definition of random value generator.
Empty structure for specification of parser element that is initialised (i.e. does not require input)...
Definition JParser.hh:68
Auxiliary class for K40 rates.
Definition JK40Rates.hh:41
double getSinglesRate() const
Get singles rate.
Definition JK40Rates.hh:71
void correct(const double QE)
Correct rates for global efficiency,.
Definition JK40Rates.hh:130
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 class to select summary data (KM3NETDAQ::JDAQSummaryslice) from the specified raw data file...
Definition JRunByRun.hh:34
bool is_valid() const
Check validity of run by run options.
Definition JRunByRun.hh:48
Router for fast addressing of hits in KM3NETDAQ::JDAQTimeslice data structure as a function of the op...
Timeslice with Monte Carlo event.
Auxiliary class to create summary data.