67 using namespace KM3NETDAQ;
83 JParser<> zap(
"Auxiliary program to trigger time slice data.");
85 zap[
'f'] =
make_field(inputFile,
"input file.");
87 zap[
'n'] =
make_field(numberOfEvents) = JLimit::max();
88 zap[
'a'] =
make_field(detectorFile,
"detector file.");
91 zap[
'C'] =
make_field(selector,
"timeslice selector, e.g. JDAQTimesliceL1.") = getROOTClassSelection<JDAQTimesliceTypes_t>();
96 catch(
const exception &error) {
97 FATAL(error.what() << endl);
107 DEBUG(
"Reset time [ms] " <<
getRTS() * 1e-6 << endl);
123 NOTICE(
"Disabling high-rate veto of all PMTs." << endl);
147 JTimer timerCC(
"Calibration");
152 JTimer timerRX(
"Timeslice router");
153 JTimer timerTR(
"Trigger");
154 JTimer timerTX(
"Trigger router");
155 JTimer timerTW(
"Timeslice writer");
156 JTimer timerSW(
"Summary writer");
179 DEBUG(
"Input file has no Monte Carlo header.");
182 unsigned int numberOfTriggers = 0;
188 for ( ;
in.hasNext() && counter != inputFile.getLimit(); ++counter) {
190 STATUS(
"event: " << setw(10) << counter <<
'\r');
DEBUG(endl);
194 DEBUG(*timeslice << endl);
198 timesliceRouter.configure(*timeslice);
209 for (JDAQTimeslice::const_iterator super_frame = timeslice->begin(); super_frame != timeslice->end(); ++super_frame) {
211 if (moduleRouter.hasModule(super_frame->getModuleID())) {
217 const JModule& module = moduleRouter.getModule(super_frame->getModuleID());
218 JSuperFrame2D_t& buffer = JSuperFrame2D_t::demultiplex(*super_frame, module);
224 buffer.applyHighRateVeto(
parameters.highRateVeto_Hz);
230 timesliceL0.push_back(JSuperFrame1D_t(buffer));
238 JSuperFrame2D_t::iterator __end = partition(buffer.begin(), buffer.end(),
parameters.triggerNB.pmts);
240 if (buffer.begin() != __end) {
242 timesliceNB.push_back(JSuperFrame1D_t(super_frame->getDAQChronometer(),
243 super_frame->getModuleIdentifier(),
246 JSuperFrame1D_t zbuf;
248 buildL1(buffer.begin(), __end , back_inserter(zbuf));
250 buildNB(buffer.begin() , __end, zbuf, back_inserter(*timesliceNB.rbegin()));
258 timesliceL1.push_back(JSuperFrame1D_t(super_frame->getDAQChronometer(),
259 super_frame->getModuleIdentifier(),
262 buildL1(*timesliceL0.rbegin(), back_inserter(*timesliceL1.rbegin()));
270 timesliceL2.push_back(JSuperFrame1D_t(super_frame->getDAQChronometer(),
271 super_frame->getModuleIdentifier(),
274 buildL2(buffer, *timesliceL1.rbegin(), back_inserter(*timesliceL2.rbegin()));
282 timesliceSN.push_back(JSuperFrame1D_t(super_frame->getDAQChronometer(),
283 super_frame->getModuleIdentifier(),
286 buildSN(buffer, *timesliceL1.rbegin(), back_inserter(*timesliceSN.rbegin()));
300 for (JTriggerInput::const_iterator hit = trigger_input.begin(); hit != trigger_input.end(); ++hit) {
325 trigger3DMuon (trigger_input, back_inserter(trigger_output));
326 trigger3DShower(trigger_input, back_inserter(trigger_output));
327 triggerMXShower(trigger_input, timesliceL0, back_inserter(trigger_output));
331 numberOfTriggers += trigger_output.size();
335 DEBUG(
"Number of triggers: " << trigger_output.size() << endl);
337 for (JTriggerOutput::const_iterator event = trigger_output.begin();
event != trigger_output.end(); ++event) {
401 const double factor = 1.0 / (double) counter;
403 for (
const JTimer* p : { &timerCC, &timerL0, &timerL1, &timerL2, &timerSN, &timerRX, &timerTR, &timerTX, &timerTW, &timerSW }) {
404 p->print(cout, factor);
407 NOTICE(
"Number of trigger/slices " << numberOfTriggers <<
"/" << counter << endl);
408 NOTICE(
"Trigger rate [Hz] " << numberOfTriggers * 1.0e9 * factor /
getFrameTime() << endl);
Utility class to parse command line options.
JTriggerMask_t getTriggerMask(const unsigned int bit)
Convert trigger bit to trigger mask.
Data structure for a composite optical module.
Router for fast addressing of hits in KM3NETDAQ::JDAQTimeslice data structure as a function of the op...
Auxiliary class to select ROOT class based on class name.
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);.
*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
Empty structure for specification of parser element that is initialised (i.e. does not require input)...
Long64_t counter_type
Type definition for counter.
Auxiliary class for multiplexing object iterators.
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.
Head getHeader(const JMultipleFileScanner_t &file_list)
Get Monte Carlo header.
void setDAQLongprint(const bool option)
Set DAQ print option.
Auxiliary class for defining the range of iterations of objects.
double getMaximalDistance(const JDetector &detector)
Get maximal distance between modules in detector.
void merge(const JMatch_t &match)
Merge events.
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
double getFrameTime()
Get frame time duration.
Auxiliary class for CPU timing and usage.
const JDAQChronometer & getDAQChronometer() const
Get DAQ chronometer.
Auxiliary class to build JDAQEvent for a triggered event.
Auxiliary class to set DAQ system clock parameters.
const JPosition3D & getPosition() const
Get position.
The Head class reflects the header of Monte-Carlo event files, which consists of keys (also referred ...
void load(const std::string &file_name, JDetector &detector)
Load detector from input file.
Auxiliary class to build JDAQTimeslice for L1 timeslice.
double getRTS()
Get TDC dynamic range.
General purpose class for object reading from a list of file names.
2-dimensional frame with time calibrated data from one optical module.
const JLimit & getLimit() const
Get limit.
do set_variable DETECTOR_TXT $WORKDIR detector
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
Match of two events considering overlap in time.
Time slice with calibrated data.
#define DEBUG(A)
Message macros.