Jpp  18.6.0-rc.1
the software that should make you happy
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
JTriggerEfficiency.cc
Go to the documentation of this file.
1 
2 #include <string>
3 #include <iostream>
4 #include <iomanip>
5 #include <vector>
6 #include <set>
7 
8 #include "TH1D.h"
9 #include "TRandom3.h"
10 
15 
16 #include "JDAQ/JDAQTimesliceIO.hh"
17 #include "JDAQ/JDAQEventIO.hh"
19 #include "JDAQ/JDAQToolkit.hh"
22 
23 #include "JAAnet/JHead.hh"
24 #include "JAAnet/JHeadToolkit.hh"
25 #include "JAAnet/JAAnetToolkit.hh"
26 
27 #include "JPhysics/JK40Rates.hh"
28 
29 #include "JDetector/JDetector.hh"
33 #include "JDetector/JPMTRouter.hh"
34 #include "JDetector/JTimeRange.hh"
39 
40 #include "JTrigger/JHit.hh"
41 #include "JTrigger/JHitToolkit.hh"
42 #include "JTrigger/JTimeslice.hh"
45 #include "JTrigger/JHitL0.hh"
46 #include "JTrigger/JHitL1.hh"
47 #include "JTrigger/JBuildL1.hh"
48 #include "JTrigger/JBuildL2.hh"
52 #include "JTrigger/JTriggerBits.hh"
56 #include "JTrigger/JTimesliceL1.hh"
64 
70 #include "JSupport/JSupport.hh"
71 #include "JSupport/JRunByRun.hh"
72 #include "JSupport/JMeta.hh"
73 
74 #include "Jeep/JPrint.hh"
75 #include "Jeep/JParser.hh"
76 #include "Jeep/JMessage.hh"
77 
78 
79 /**
80  * \file
81  * Auxiliary program to trigger Monte Carlo events.
82  *
83  * The options
84  * - <tt>-a</tt> refers to the detector configuration that is used to convert Monte Carlo true information to raw data; and
85  * - <tt>-b</tt> refers to the detector configuration that is used to convert raw data to calibrated data.
86  *
87  * The event counter of the triggered events, as returned by KM3NETDAQ::JDAQEvent::getCounter(),
88  * is set to the corresponding index of the Monte Carlo event in the output.\n
89  * This allows for correlating the DAQ event to the Monte Carlo event.\n
90  * The time of the DAQ hits can be correlated to the time of the Monte Carlo hits using the frame index
91  * and the time of the Monte Carlo event (Evt::mc_t), respectively (see also time_converter).\n
92  * The universal time of the DAQ event is set to the universal time of the Monte Carlo event
93  * with a correction for the time of the event (read hits) within the time slice.\n
94  * In run-by-run mode, the trigger parameters as well as the singles rates and status of the PMTs
95  * are read from the given raw data file.\n
96  * The two-fold (and higher) coincidence rates should still be provided on the command line.
97  *
98  * \author mdejong
99  */
100 int main(int argc, char **argv)
101 {
102  using namespace std;
103  using namespace JPP;
104  using namespace KM3NETDAQ;
105 
107 
108  JMultipleFileScanner<> inputFile;
110  JLimit_t& numberOfEvents = inputFile.getLimit();
111  string detectorFileA;
112  string detectorFileB;
113  int run;
115  bool triggeredEventsOnly;
116  JPMTParametersMap pmtParameters;
117  JK40Rates rates_Hz;
118  JRunByRun runbyrun;
119  double sigma_ns;
120  UInt_t seed;
121  int debug;
122 
123  try {
124 
125  JParser<> zap("Auxiliary program to trigger Monte Carlo events.");
126 
127  zap['f'] = make_field(inputFile, "input file (output of detector simulation)");
128  zap['o'] = make_field(outputFile, "output file") = "trigger_efficieny.root";
129  zap['n'] = make_field(numberOfEvents) = JLimit::max();
130  zap['a'] = make_field(detectorFileA, "detector used for conversion from Monte Carlo truth to raw data.");
131  zap['b'] = make_field(detectorFileB, "detector used for conversion of raw data to calibrated data.") = "";
132  zap['R'] = make_field(run, "run number") = -1;
133  zap['r'] = make_field(runbyrun, "option for run-by-run mode") = JPARSER::initialised();
134  zap['@'] = make_field(parameters, "Trigger parameters (or corresponding file name)") = JPARSER::initialised();
135  zap['O'] = make_field(triggeredEventsOnly, "optionally write only triggered events.");
136  zap['P'] = make_field(pmtParameters, "PMT simulation data (or corresponding file name)") = JPARSER::initialised();
137  zap['B'] = make_field(rates_Hz, "background rates [Hz]") = JPARSER::initialised();
138  zap['s'] = make_field(sigma_ns, "intrinsic time smearing of K40 coincidences [ns]") = JK40DefaultSimulatorInterface::getSigma();
139  zap['S'] = make_field(seed, "seed") = 0;
140  zap['d'] = make_field(debug, "debug") = 0;
141 
142  zap(argc, argv);
143  }
144  catch(const exception &error) {
145  FATAL(error.what() << endl);
146  }
147 
148  gRandom->SetSeed(seed);
149 
150  JK40DefaultSimulatorInterface::setSigma(sigma_ns);
151 
153 
154  if (detectorFileB == "") {
155  detectorFileB = detectorFileA;
156  }
157 
158 
159  JDetector detectorA;
160  JDetector detectorB;
161 
162  try {
163  load(detectorFileA, detectorA);
164  load(detectorFileB, detectorB);
165  }
166  catch(const JException& error) {
167  FATAL(error);
168  }
169 
170  JPMTParametersMap::Throw(true);
171 
172  if (!pmtParameters.is_valid()) {
173  FATAL("Invalid PMT parameters " << pmtParameters << endl);
174  }
175 
176  if (pmtParameters.getQE() != 1.0) {
177 
178  WARNING("Correct background rates with global efficiency " << pmtParameters.getQE() << endl);
179 
180  rates_Hz.correct(pmtParameters.getQE());
181  }
182 
183  Head header;
184 
185  try {
186  header = getHeader(inputFile);
187  }
188  catch(const JException& error) {
189  FATAL(error);
190  }
191 
192  const JModuleRouter moduleRouter(detectorB);
193  JDetectorSimulator simbad (detectorA);
194  JSummaryRouter summaryRouter;
195 
196  if (runbyrun.is_valid()) {
197 
198  NOTICE("Using run-by-run:" << endl << runbyrun << endl);
199 
200  if (!runbyrun.hasNext()) {
201  FATAL("Run-by-run simulation yields no input." << endl);
202  }
203 
204  if (rates_Hz.getSinglesRate() != 0.0) {
205  WARNING("Run-by-run simulation discards singles rate [Hz] " << rates_Hz.getSinglesRate() << endl);
206  }
207 
208  try {
209  simbad.reset(new JK40RunByRunSimulator(summaryRouter, rates_Hz));
210  simbad.reset(new JPMTRunByRunSimulator(summaryRouter, pmtParameters, detectorA));
211  simbad.reset(new JCLBRunByRunSimulator(summaryRouter));
212  }
213  catch(const JException& error) {
214  FATAL(error.what() << endl);
215  }
216 
217  try {
218 
219  parameters = getTriggerParameters(runbyrun->getFilelist());
220 
221  NOTICE("Set trigger parameters from run-by-run input." << endl);
222  }
223  catch(const JException& error) {
224  WARNING("No trigger parameters from run-by-run input;\nrun with default/user input." << endl);
225  }
226 
227  // set live time
228 
229  JHead buffer(header);
230 
231  buffer.DAQ.livetime_s = getLivetime(runbyrun->getFilelist());
232  buffer.push(&JHead::DAQ);
233 
234  copy(buffer, header);
235 
236  } else {
237 
238  NOTICE("Using fixed rates [Hz]: " << rates_Hz << endl);
239 
240  try {
241  simbad.reset(new JK40DefaultSimulator(rates_Hz));
242  simbad.reset(new JPMTDefaultSimulator(pmtParameters, detectorA));
243  simbad.reset(new JCLBDefaultSimulator());
244  }
245  catch(const JException& error) {
246  FATAL(error.what() << endl);
247  }
248  }
249 
250  // detector
251 
252  if (parameters.disableHighRateVeto) {
253 
254  NOTICE("Disabling high-rate veto of all PMTs." << endl);
255 
256  detectorB.setPMTStatus(HIGH_RATE_VETO_DISABLE);
257  }
258 
259  parameters.set(getMaximalDistance(detectorB));
260 
261  DEBUG("Trigger:" << endl << parameters << endl);
262  DEBUG("PMT parameters:" << endl << pmtParameters << endl);
263 
264  const double Tmax = max(getMaximalTime(detectorA),
265  getMaximalTime(detectorB));
266 
267  const JTimeRange period(-(Tmax + parameters.TMaxLocal_ns),
268  +(Tmax + parameters.TMaxLocal_ns));
269 
270  typedef double hit_type;
271 
272  typedef JSuperFrame1D<hit_type> JSuperFrame1D_t;
273  typedef JSuperFrame2D<hit_type> JSuperFrame2D_t;
274  typedef JTimeslice <hit_type> JTimeslice_t;
275  typedef JBuildL1 <hit_type> JBuildL1_t;
276  typedef JBuildL2 <hit_type> JBuildL2_t;
277 
278  const JBuildL1_t buildL1(parameters);
279  const JBuildL2_t buildL2(parameters.L2);
280  const JBuildL2_t buildSN(parameters.SN);
281 
282  JTimesliceRouter timesliceRouter(parameters.numberOfBins);
283 
284  const JTrigger3DMuon trigger3DMuon (parameters);
285  const JTrigger3DShower trigger3DShower(parameters);
286  const JTriggerMXShower triggerMXShower(parameters, detectorB);
287 
288 
289  TH1D h1("Trigger bits", NULL, NUMBER_OF_TRIGGER_BITS, -0.5, NUMBER_OF_TRIGGER_BITS - 0.5);
290 
291 
292  outputFile.open();
293 
294  if (!outputFile.is_open()) {
295  FATAL("Error opening file " << outputFile << endl);
296  }
297 
298  outputFile.put(*gRandom);
299  outputFile.put(JMeta(argc, argv));
300  outputFile.put(header);
301  outputFile.put(parameters);
302 
303  JLimit_t limit = inputFile.getLimit();
304  counter_type number_of_events = 0;
305  int trigger_counter = 0;
306 
307  for (JMultipleFileScanner<>::const_iterator file = inputFile.begin(); file != inputFile.end(); ++file) {
308 
309  int mc_run_id = 0;
310 
311  try {
312 
313  const JHead head(getHeader(*file));
314 
315  mc_run_id = head.start_run.run_id;
316  }
317  catch(const JException& error) {
318  FATAL(error);
319  }
320 
322 
323  limit.setLowerLimit(limit.getLowerLimit() - in.skip(limit.getLowerLimit()));
324 
325  for ( ; in.hasNext() && number_of_events != limit; ++number_of_events) {
326 
327  STATUS("event: " << setw(10) << number_of_events << '\r'); DEBUG(endl);
328 
329  Evt* event = in.next();
330 
331  event->mc_run_id = mc_run_id;
332 
333  DEBUG(*event << endl);
334 
335  bool trigger = false;
336 
337  if (!event->mc_hits.empty()) {
338 
339  int frame_index = (int) in.getCounter() + 1; // 1 event / slice
340 
341  if (runbyrun.is_valid() && runbyrun.hasNext()) {
342 
343  summaryRouter.update(runbyrun.next());
344 
345  summaryRouter.correct(dynamic_cast<const JPMTDefaultSimulatorInterface&>(simbad.getPMTSimulator()));
346 
347  frame_index = summaryRouter.getFrameIndex();
348  run = summaryRouter.getRunNumber();
349  }
350 
351  // set the event time!
352 
353  JTimeRange timeRange = getTimeRange(*event, period);
354 
355  if (!timeRange.is_valid()) {
356  timeRange.setRange(0.0,0.0);
357  }
358 
359  const double t0 = 0.5 * (timeRange.getLowerLimit() + timeRange.getUpperLimit());
360  const double t1 = gRandom->Rndm() * getFrameTime();
361 
362  event->mc_t = getTimeOfFrame(frame_index) + t1 - t0; // time since start of data taking run
363 
364  timeRange.add(event->mc_t);
365  timeRange.add(period);
366 
367  JDAQUTCExtended utc(JDAQUTCExtended::getInstance().getTimeNanoSecond() +
368  getTimeOfFrame(trigger_counter + 1)); // ensure incremental UTC times (e.g. for JDAQSplit.cc)
369 
370  if (event->mc_event_time != TTimeStamp(0)) {
371  utc = getDAQUTCExtended(event->mc_event_time, t1); // set UTC time according Monte Carlo event
372  }
373 
374  const JDAQChronometer chronometer(detectorB.getID(), (run != -1 ? run : mc_run_id), frame_index, utc);
375 
376  const JEventTimeslice timeslice(chronometer, simbad, *event, period);
377 
378  DEBUG(timeslice << endl);
379 
380 
381  timesliceRouter.configure(timeslice);
382 
383  JTimeslice_t timesliceL0(timeslice.getDAQChronometer());
384  JTimeslice_t timesliceL1(timeslice.getDAQChronometer());
385  JTimeslice_t timesliceL2(timeslice.getDAQChronometer());
386  JTimeslice_t timesliceSN(timeslice.getDAQChronometer());
387 
388  for (JDAQTimeslice::const_iterator super_frame = timeslice.begin(); super_frame != timeslice.end(); ++super_frame) {
389 
390  if (moduleRouter.hasModule(super_frame->getModuleID())) {
391 
392  // calibration
393 
394  const JModule& module = moduleRouter.getModule(super_frame->getModuleID());
395  const JSuperFrame2D_t& buffer = JSuperFrame2D_t::demultiplex(*super_frame, module);
396 
397  // L0
398 
399  timesliceL0.push_back(JSuperFrame1D_t(buffer));
400 
401  // L1
402 
403  timesliceL1.push_back(JSuperFrame1D_t(super_frame->getDAQChronometer(),
404  super_frame->getModuleIdentifier(),
405  module.getPosition()));
406 
407  buildL1(*timesliceL0.rbegin(), back_inserter(*timesliceL1.rbegin()));
408 
409  // L2
410 
411  timesliceL2.push_back(JSuperFrame1D_t(super_frame->getDAQChronometer(),
412  super_frame->getModuleIdentifier(),
413  module.getPosition()));
414 
415  buildL2(buffer, *timesliceL1.rbegin(), back_inserter(*timesliceL2.rbegin()));
416 
417  // SN
418 
419  timesliceSN.push_back(JSuperFrame1D_t(super_frame->getDAQChronometer(),
420  super_frame->getModuleIdentifier(),
421  module.getPosition()));
422 
423  buildSN(buffer, *timesliceL1.rbegin(), back_inserter(*timesliceSN.rbegin()));
424 
425  DEBUG("L0 " << setw(8) << timesliceL0.rbegin()->getModuleID() << ' ' << setw(8) << timesliceL0.rbegin()->size() << endl);
426  DEBUG("L1 " << setw(8) << timesliceL1.rbegin()->getModuleID() << ' ' << setw(8) << timesliceL1.rbegin()->size() << endl);
427  DEBUG("L2 " << setw(8) << timesliceL2.rbegin()->getModuleID() << ' ' << setw(8) << timesliceL2.rbegin()->size() << endl);
428  DEBUG("SN " << setw(8) << timesliceSN.rbegin()->getModuleID() << ' ' << setw(8) << timesliceSN.rbegin()->size() << endl);
429  }
430  }
431 
432 
433  // Trigger
434 
435  JTriggerInput trigger_input(timesliceL2);
436  JTriggerOutput trigger_output;
437 
438  trigger3DMuon (trigger_input, back_inserter(trigger_output));
439  trigger3DShower(trigger_input, back_inserter(trigger_output));
440  triggerMXShower(trigger_input, timesliceL0, back_inserter(trigger_output));
441 
442  trigger_output.merge(JEventOverlap(parameters.TMaxEvent_ns));
443 
444  for (JTriggerOutput::const_iterator to = trigger_output.begin(); to != trigger_output.end(); ++to) {
445 
446  for (int i = 0; i != h1.GetNbinsX(); ++i) {
447  if (to->hasTriggerBit(i)) {
448  h1.Fill((double) i);
449  }
450  }
451 
452  JTimeRange eventTime = getTimeRange(*to).add(getTimeOfRTS(*to));
453 
454  DEBUG("Event time: "
455  << to->getFrameIndex() << ' '
456  << eventTime << ' '
457  << timeRange << endl);
458 
459  if (timeRange.overlap(eventTime)) {
460 
461  JTriggeredEvent tev(*to,
462  timesliceRouter,
463  moduleRouter,
464  parameters.TMaxLocal_ns,
466 
467  // Set the event counter to the index of the Monte Carlo event in the output.
468 
469  tev.setCounter(trigger_counter);
470 
471  outputFile.put(tev);
472 
473  trigger = true;
474  }
475  }
476 
477 
478  if (!triggeredEventsOnly || trigger) {
479 
480  if (parameters.writeL0()) {
481  outputFile.put(timeslice);
482  }
483 
484  if (parameters.writeL1()) {
485  outputFile.put(JTimesliceL1<JDAQTimesliceL1>(timesliceL1, timesliceRouter, moduleRouter, parameters.TMaxLocal_ns));
486  }
487 
488  if (parameters.writeL2()) {
489  outputFile.put(JTimesliceL1<JDAQTimesliceL2>(timesliceL2, timesliceRouter, moduleRouter, parameters.L2.TMaxLocal_ns));
490  }
491 
492  if (parameters.writeSN()) {
493  outputFile.put(JTimesliceL1<JDAQTimesliceSN>(timesliceSN, timesliceRouter, moduleRouter, parameters.SN.TMaxLocal_ns));
494  }
495 
496  if (parameters.writeSummary()) {
497  outputFile.put(JSummaryslice(chronometer,simbad));
498  }
499  }
500  }
501 
502  if (!triggeredEventsOnly || trigger) {
503 
504  outputFile.put(*event);
505 
506  ++trigger_counter;
507  }
508  }
509  }
510  STATUS(endl);
511 
512 
514 
515  io >> outputFile;
516 
517  outputFile.put(h1);
518  outputFile.put(*gRandom);
519  outputFile.close();
520 }
Auxiliary class for ROOT I/O of application specific meta data.
Definition: JMeta.hh:70
Auxiliary class to select summary data (KM3NETDAQ::JDAQSummaryslice) from the specified raw data file...
Definition: JRunByRun.hh:32
Object writing to file.
Utility class to parse command line options.
Definition: JParser.hh:1711
General exception.
Definition: JException.hh:24
#define WARNING(A)
Definition: JMessage.hh:65
debug
Definition: JMessage.hh:29
T getLowerLimit() const
Get lower limit.
Definition: JRange.hh:202
int main(int argc, char *argv[])
Definition: Main.cc:15
ROOT TTree parameter settings of various packages.
static const unsigned int NUMBER_OF_TRIGGER_BITS
Number of trigger bits.
Default implementation of the simulation of K40 background.
const JModule & getModule(const JObjectID &id) const
Get module parameters.
Data structure for a composite optical module.
Definition: JModule.hh:67
Router for fast addressing of hits in KM3NETDAQ::JDAQTimeslice data structure as a function of the op...
then usage $script[< detector identifier >< run range >]< QA/QCfile > nExample script to produce data quality plots nWhen a detector identifier and run range are data are downloaded from the database nand subsequently stored in the given QA QC file
Definition: JDataQuality.sh:19
#define STATUS(A)
Definition: JMessage.hh:63
Detector data structure.
Definition: JDetector.hh:89
Match of two events considering overlap in time.
double getSigma(vector< double > &v)
get standard deviation of vector content
void configure(const JDAQTimeslice &timeslice)
Configure.
Recording of objects on file according a format that follows from the file name extension.
Router for direct addressing of module data in detector data structure.
JAANET::start_run start_run
Definition: JHead.hh:1582
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
*fatal Wrong number of arguments esac JCookie sh typeset Z DETECTOR typeset Z SOURCE_RUN typeset Z TARGET_RUN set_variable PARAMETERS_FILE $WORKDIR parameters
Definition: diff-Tuna.sh:38
Empty structure for specification of parser element that is initialised (i.e. does not require input)...
Definition: JParser.hh:84
Long64_t counter_type
Type definition for counter.
double livetime_s
Live time [s].
Definition: JHead.hh:1053
const JPMTSimulator & getPMTSimulator() const
Get PMT simulator.
double getTimeOfRTS(const JDAQChronometer &chronometer)
Get time of last RTS in ns since start of run for a given chronometer.
Basic data structure for time and time over threshold information of hit.
string outputFile
Data structure for UTC time.
Data structure for detector geometry and calibration.
Tools for handling different hit types.
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
1-dimensional frame with time calibrated data from one optical module.
JTimeRange getTimeRange(const Evt &event)
Get time range (i.e. time between earliest and latest hit) of Monte Carlo event.
K40 simulation based on run-by-run information.
Head getHeader(const JMultipleFileScanner_t &file_list)
Get Monte Carlo header.
Basic data structure for L0 hit.
Type list.
Definition: JTypeList.hh:22
void setDAQLongprint(const bool option)
Set DAQ print option.
Definition: JDAQPrint.hh:28
Auxiliary class for defining the range of iterations of objects.
Definition: JLimit.hh:41
Template L2 builder.
Definition: JBuildL2.hh:45
I/O formatting auxiliaries.
Auxiliaries for creation of summary data.
Monte Carlo run header.
Definition: JHead.hh:1234
virtual bool hasNext() override
Check availability of next element.
void merge(const JMatch_t &match)
Merge events.
T & getInstance(const T &object)
Get static instance from temporary object.
Definition: JObject.hh:75
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
Definition: JParser.hh:2158
CLB simulation based on run-by-run information.
range_type & add(argument_type x)
Add offset.
Definition: JRange.hh:446
double getFrameTime()
Get frame time duration.
Definition: JDAQClock.hh:162
void setRange(const range_type &range)
Set range.
Definition: JRange.hh:146
ROOT I/O of application specific meta data.
T getUpperLimit() const
Get upper limit.
Definition: JRange.hh:213
Definition of hit and track types and auxiliary methods for handling Monte Carlo data.
#define NOTICE(A)
Definition: JMessage.hh:64
Auxiliary class to create summary data.
const JDAQChronometer & getDAQChronometer() const
Get DAQ chronometer.
Support methods.
Auxiliary class to build JDAQEvent for a triggered event.
Q DAQ
Definition: JDataQuality.sh:59
Auxiliary class for map of PMT parameters.
Direct access to PMT in detector data structure.
const JPosition3D & getPosition() const
Get position.
Definition: JPosition3D.hh:130
double getMaximalTime(const double R_Hz)
Get maximal time for given rate.
Router for fast addressing of summary data in KM3NETDAQ::JDAQSummaryslice data structure as a functio...
General purpose messaging.
int run_id
MC run number.
Definition: JHead.hh:143
The Head class reflects the header of Monte-Carlo event files, which consists of keys (also referred ...
Definition: Head.hh:65
void push(T JHead::*pd)
Push given data member to Head.
Definition: JHead.hh:1374
Template L1 hit builder.
Definition: JBuildL1.hh:85
#define FATAL(A)
Definition: JMessage.hh:67
Scanning of objects from multiple files according a format that follows from the extension of each fi...
void reset(JK40Simulator *k40Simulator)
Reset K40 simulator.
PMT simulation based on run-by-run information.
void setCounter(const JTriggerCounter_t counter)
Set trigger counter.
bool is_valid() const
Check validity of range.
Definition: JRange.hh:311
virtual const char * what() const override
Get error message.
Definition: JException.hh:64
void load(const std::string &file_name, JDetector &detector)
Load detector from input file.
Auxiliary class to build JDAQTimeslice for L1 timeslice.
Definition: JTimesliceL1.hh:36
double getLivetime(const std::string &file_name)
Get data taking live time.
then fatal The output file must have the wildcard in the e g root fi eval JPrintDetector a $DETECTOR O IDENTIFIER eval JPrintDetector a $DETECTOR O SUMMARY JAcoustics sh $DETECTOR_ID source JAcousticsToolkit sh CHECK_EXIT_CODE typeset A EMITTERS get_tripods $WORKDIR tripod txt EMITTERS get_transmitters $WORKDIR transmitter txt EMITTERS for EMITTER in
Definition: JCanberra.sh:48
Utility class to parse command line options.
Map of associated modules in detector.
virtual const pointer_type & next() override
Get next element.
bool hasModule(const JObjectID &id) const
Has module.
void copy(const Head &from, JHead &to)
Copy header from from to to.
Definition: JHead.cc:162
double getMaximalDistance(const JDetector &detector, const bool option=false)
Get maximal distance between modules in detector.
2-dimensional frame with time calibrated data from one optical module.
Data structure for input to trigger algorithm.
counter_type getCounter() const
Get counter.
const JLimit & getLimit() const
Get limit.
Definition: JLimit.hh:84
Setting of trigger bits.
JDAQUTCExtended getDAQUTCExtended(const TTimeStamp &t0, const double t1=0.0)
Get DAQ UTC time.
Definition: JDAQToolkit.hh:26
JAANET::DAQ DAQ
Definition: JHead.hh:1606
bool overlap(const range_type &range) const
Test overlap with given range.
Definition: JRange.hh:382
Timeslice with Monte Carlo event.
JTriggerParameters getTriggerParameters(const JMultipleFileScanner_t &file_list)
Get trigger parameters.
Basic data structure for L1 hit.
int debug
debug level
Auxiliary class for K40 rates.
Definition: JK40Rates.hh:41
The Evt class respresent a Monte Carlo (MC) event as well as an offline event.
Definition: Evt.hh:20
virtual skip_type skip(const skip_type ns) override
Skip items.
Time slice with calibrated data.
Definition: JTimeslice.hh:26
#define DEBUG(A)
Message macros.
Definition: JMessage.hh:62