Jpp  18.2.1-ARCA-DF-PATCH
the software that should make you happy
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Functions
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 "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 "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

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

int main ( int  argc,
char **  argv 
)

Definition at line 100 of file JTriggerEfficiency.cc.

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  const JPosition3D center = get<JPosition3D>(header);
289 
290  NOTICE("Apply detector offset from Monte Carlo run header (" << center << ")" << endl);
291 
292  detectorA -= center;
293  detectorB -= center;
294 
295  TH1D h1("Trigger bits", NULL, NUMBER_OF_TRIGGER_BITS, -0.5, NUMBER_OF_TRIGGER_BITS - 0.5);
296 
297 
298  outputFile.open();
299 
300  if (!outputFile.is_open()) {
301  FATAL("Error opening file " << outputFile << endl);
302  }
303 
304  outputFile.put(*gRandom);
305  outputFile.put(JMeta(argc, argv));
306  outputFile.put(header);
307  outputFile.put(parameters);
308 
309  JLimit_t limit = inputFile.getLimit();
310  counter_type number_of_events = 0;
311  int trigger_counter = 0;
312 
313  for (JMultipleFileScanner<>::const_iterator file = inputFile.begin(); file != inputFile.end(); ++file) {
314 
315  int mc_run_id = 0;
316 
317  try {
318 
319  const JHead head(getHeader(*file));
320 
321  mc_run_id = head.start_run.run_id;
322  }
323  catch(const JException& error) {
324  FATAL(error);
325  }
326 
328 
329  limit.setLowerLimit(limit.getLowerLimit() - in.skip(limit.getLowerLimit()));
330 
331  for ( ; in.hasNext() && number_of_events != limit; ++number_of_events) {
332 
333  STATUS("event: " << setw(10) << number_of_events << '\r'); DEBUG(endl);
334 
335  Evt* event = in.next();
336 
337  event->mc_run_id = mc_run_id;
338 
339  DEBUG(*event << endl);
340 
341  bool trigger = false;
342 
343  if (!event->mc_hits.empty()) {
344 
345  int frame_index = (int) in.getCounter() + 1; // 1 event / slice
346 
347  if (runbyrun.is_valid() && runbyrun.hasNext()) {
348 
349  summaryRouter.update(runbyrun.next());
350 
351  summaryRouter.correct(dynamic_cast<const JPMTDefaultSimulatorInterface&>(simbad.getPMTSimulator()));
352 
353  frame_index = summaryRouter.getFrameIndex();
354  run = summaryRouter.getRunNumber();
355  }
356 
357  // set the event time!
358 
359  JTimeRange timeRange = getTimeRange(*event, period);
360 
361  if (!timeRange.is_valid()) {
362  timeRange.setRange(0.0,0.0);
363  }
364 
365  const double t0 = 0.5 * (timeRange.getLowerLimit() + timeRange.getUpperLimit());
366  const double t1 = gRandom->Rndm() * getFrameTime();
367 
368  event->mc_t = getTimeOfFrame(frame_index) + t1 - t0; // time since start of data taking run
369 
370  timeRange.add(event->mc_t);
371  timeRange.add(period);
372 
373  JDAQUTCExtended utc(getTimeOfFrame(trigger_counter + 1)); // ensure incremental UTC times (e.g. for JDAQSplit.cc)
374 
375  if (event->mc_event_time != TTimeStamp(0)) {
376  utc = getDAQUTCExtended(event->mc_event_time, t1); // set UTC time according Monte Carlo event
377  }
378 
379  const JDAQChronometer chronometer(detectorB.getID(), (run != -1 ? run : mc_run_id), frame_index, utc);
380 
381  const JEventTimeslice timeslice(chronometer, simbad, *event, period);
382 
383  DEBUG(timeslice << endl);
384 
385 
386  timesliceRouter.configure(timeslice);
387 
388  JTimeslice_t timesliceL0(timeslice.getDAQChronometer());
389  JTimeslice_t timesliceL1(timeslice.getDAQChronometer());
390  JTimeslice_t timesliceL2(timeslice.getDAQChronometer());
391  JTimeslice_t timesliceSN(timeslice.getDAQChronometer());
392 
393  for (JDAQTimeslice::const_iterator super_frame = timeslice.begin(); super_frame != timeslice.end(); ++super_frame) {
394 
395  if (moduleRouter.hasModule(super_frame->getModuleID())) {
396 
397  // calibration
398 
399  const JModule& module = moduleRouter.getModule(super_frame->getModuleID());
400  const JSuperFrame2D_t& buffer = JSuperFrame2D_t::demultiplex(*super_frame, module);
401 
402  // L0
403 
404  timesliceL0.push_back(JSuperFrame1D_t(buffer));
405 
406  // L1
407 
408  timesliceL1.push_back(JSuperFrame1D_t(super_frame->getDAQChronometer(),
409  super_frame->getModuleIdentifier(),
410  module.getPosition()));
411 
412  buildL1(*timesliceL0.rbegin(), back_inserter(*timesliceL1.rbegin()));
413 
414  // L2
415 
416  timesliceL2.push_back(JSuperFrame1D_t(super_frame->getDAQChronometer(),
417  super_frame->getModuleIdentifier(),
418  module.getPosition()));
419 
420  buildL2(buffer, *timesliceL1.rbegin(), back_inserter(*timesliceL2.rbegin()));
421 
422  // SN
423 
424  timesliceSN.push_back(JSuperFrame1D_t(super_frame->getDAQChronometer(),
425  super_frame->getModuleIdentifier(),
426  module.getPosition()));
427 
428  buildSN(buffer, *timesliceL1.rbegin(), back_inserter(*timesliceSN.rbegin()));
429 
430  DEBUG("L0 " << setw(8) << timesliceL0.rbegin()->getModuleID() << ' ' << setw(8) << timesliceL0.rbegin()->size() << endl);
431  DEBUG("L1 " << setw(8) << timesliceL1.rbegin()->getModuleID() << ' ' << setw(8) << timesliceL1.rbegin()->size() << endl);
432  DEBUG("L2 " << setw(8) << timesliceL2.rbegin()->getModuleID() << ' ' << setw(8) << timesliceL2.rbegin()->size() << endl);
433  DEBUG("SN " << setw(8) << timesliceSN.rbegin()->getModuleID() << ' ' << setw(8) << timesliceSN.rbegin()->size() << endl);
434  }
435  }
436 
437 
438  // Trigger
439 
440  JTriggerInput trigger_input(timesliceL2);
441  JTriggerOutput trigger_output;
442 
443  trigger3DMuon (trigger_input, back_inserter(trigger_output));
444  trigger3DShower(trigger_input, back_inserter(trigger_output));
445  triggerMXShower(trigger_input, timesliceL0, back_inserter(trigger_output));
446 
447  trigger_output.merge(JEventOverlap(parameters.TMaxEvent_ns));
448 
449  for (JTriggerOutput::const_iterator to = trigger_output.begin(); to != trigger_output.end(); ++to) {
450 
451  for (int i = 0; i != h1.GetNbinsX(); ++i) {
452  if (to->hasTriggerBit(i)) {
453  h1.Fill((double) i);
454  }
455  }
456 
457  JTimeRange eventTime = getTimeRange(*to).add(getTimeOfRTS(*to));
458 
459  DEBUG("Event time: "
460  << to->getFrameIndex() << ' '
461  << eventTime << ' '
462  << timeRange << endl);
463 
464  if (timeRange.overlap(eventTime)) {
465 
466  JTriggeredEvent tev(*to,
467  timesliceRouter,
468  moduleRouter,
469  parameters.TMaxLocal_ns,
471 
472  // Set the event counter to the index of the Monte Carlo event in the output.
473 
474  tev.setCounter(trigger_counter);
475 
476  outputFile.put(tev);
477 
478  trigger = true;
479  }
480  }
481 
482 
483  if (!triggeredEventsOnly || trigger) {
484 
485  if (parameters.writeL0()) {
486  outputFile.put(timeslice);
487  }
488 
489  if (parameters.writeL1()) {
490  outputFile.put(JTimesliceL1<JDAQTimesliceL1>(timesliceL1, timesliceRouter, moduleRouter, parameters.TMaxLocal_ns));
491  }
492 
493  if (parameters.writeL2()) {
494  outputFile.put(JTimesliceL1<JDAQTimesliceL2>(timesliceL2, timesliceRouter, moduleRouter, parameters.L2.TMaxLocal_ns));
495  }
496 
497  if (parameters.writeSN()) {
498  outputFile.put(JTimesliceL1<JDAQTimesliceSN>(timesliceSN, timesliceRouter, moduleRouter, parameters.SN.TMaxLocal_ns));
499  }
500 
501  if (parameters.writeSummary()) {
502  outputFile.put(JSummaryslice(chronometer,simbad));
503  }
504  }
505  }
506 
507  if (!triggeredEventsOnly || trigger) {
508 
509  outputFile.put(*event);
510 
511  ++trigger_counter;
512  }
513  }
514  }
515  STATUS(endl);
516 
517 
519 
520  io >> outputFile;
521 
522  outputFile.put(h1);
523  outputFile.put(*gRandom);
524  outputFile.close();
525 }
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:1514
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
static const unsigned int NUMBER_OF_TRIGGER_BITS
Number of trigger bits.
Default implementation of the simulation of K40 background.
Data structure for a composite optical module.
Definition: JModule.hh:68
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
double getSigma(vector< double > &v)
get standard deviation of vector content
Router for direct addressing of module data in detector data structure.
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:83
Long64_t counter_type
Type definition for counter.
double getTimeOfRTS(const JDAQChronometer &chronometer)
Get time of last RTS in ns since start of run for a given chronometer.
string outputFile
Data structure for UTC time.
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.
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
Monte Carlo run header.
Definition: JHead.hh:1234
void merge(const JMatch_t &match)
Merge events.
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
Definition: JParser.hh:1989
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
T getUpperLimit() const
Get upper limit.
Definition: JRange.hh:213
#define NOTICE(A)
Definition: JMessage.hh:64
Auxiliary class to create summary data.
Auxiliary class to build JDAQEvent for a triggered event.
Q DAQ
Definition: JDataQuality.sh:59
Auxiliary class for map of PMT parameters.
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...
The Head class reflects the header of Monte-Carlo event files, which consists of keys (also referred ...
Definition: Head.hh:65
Template L1 hit builder.
Definition: JBuildL1.hh:85
#define FATAL(A)
Definition: JMessage.hh:67
PMT simulation based on run-by-run information.
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.
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.
Data structure for position in three dimensions.
Definition: JPosition3D.hh:36
const JLimit & getLimit() const
Get limit.
Definition: JLimit.hh:84
then fatal Wrong number of arguments fi set_variable DETECTOR $argv[1] set_variable INPUT_FILE $argv[2] 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:46
JDAQUTCExtended getDAQUTCExtended(const TTimeStamp &t0, const double t1=0.0)
Get DAQ UTC time.
Definition: JDAQToolkit.hh:26
Match of two events considering overlap in time.
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.
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
Time slice with calibrated data.
Definition: JTimeslice.hh:26
#define DEBUG(A)
Message macros.
Definition: JMessage.hh:62