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);
105 DEBUG(
"Reset time [ms] " <<
getRTS() * 1e-6 << endl);
123 typedef double hit_type;
136 JTimer timerCC(
"Calibration");
141 JTimer timerRX(
"Timeslice router");
142 JTimer timerTR(
"Trigger");
143 JTimer timerTX(
"Trigger router");
144 JTimer timerTW(
"Timeslice writer");
145 JTimer timerSW(
"Summary writer");
168 DEBUG(
"Input file has no Monte Carlo header.");
171 unsigned int numberOfTriggers = 0;
177 for ( ;
in.hasNext() && counter != inputFile.getLimit(); ++counter) {
179 STATUS(
"event: " << setw(10) << counter <<
'\r');
DEBUG(endl);
183 DEBUG(*timeslice << endl);
187 timesliceRouter.configure(*timeslice);
198 for (JDAQTimeslice::const_iterator super_frame = timeslice->begin(); super_frame != timeslice->end(); ++super_frame) {
200 if (moduleRouter.hasModule(super_frame->getModuleID())) {
206 const JModule& module = moduleRouter.getModule(super_frame->getModuleID());
207 JSuperFrame2D_t& buffer = JSuperFrame2D_t::demultiplex(*super_frame, module);
213 buffer.applyHighRateVeto(
parameters.highRateVeto_Hz);
219 timesliceL0.push_back(JSuperFrame1D_t(buffer));
227 JSuperFrame2D_t::iterator __end = partition(buffer.begin(), buffer.end(),
parameters.triggerNB.pmts);
229 if (buffer.begin() != __end) {
231 timesliceNB.push_back(JSuperFrame1D_t(super_frame->getDAQChronometer(),
232 super_frame->getModuleIdentifier(),
235 JSuperFrame1D_t zbuf;
237 buildL1(buffer.begin(), __end , back_inserter(zbuf));
239 buildNB(buffer.begin() , __end, zbuf, back_inserter(*timesliceNB.rbegin()));
247 timesliceL1.push_back(JSuperFrame1D_t(super_frame->getDAQChronometer(),
248 super_frame->getModuleIdentifier(),
251 buildL1(*timesliceL0.rbegin(), back_inserter(*timesliceL1.rbegin()));
259 timesliceL2.push_back(JSuperFrame1D_t(super_frame->getDAQChronometer(),
260 super_frame->getModuleIdentifier(),
263 buildL2(buffer, *timesliceL1.rbegin(), back_inserter(*timesliceL2.rbegin()));
271 timesliceSN.push_back(JSuperFrame1D_t(super_frame->getDAQChronometer(),
272 super_frame->getModuleIdentifier(),
275 buildSN(buffer, *timesliceL1.rbegin(), back_inserter(*timesliceSN.rbegin()));
289 for (JTriggerInput::const_iterator hit = trigger_input.begin(); hit != trigger_input.end(); ++hit) {
314 trigger3DMuon (trigger_input, back_inserter(trigger_output));
315 trigger3DShower(trigger_input, back_inserter(trigger_output));
316 triggerMXShower(trigger_input, timesliceL0, back_inserter(trigger_output));
320 numberOfTriggers += trigger_output.size();
324 DEBUG(
"Number of triggers: " << trigger_output.size() << endl);
326 for (JTriggerOutput::const_iterator event = trigger_output.begin();
event != trigger_output.end(); ++event) {
390 const double factor = 1.0 / (double) counter;
392 for (
const JTimer* p : { &timerCC, &timerL0, &timerL1, &timerL2, &timerSN, &timerRX, &timerTR, &timerTX, &timerTW, &timerSW }) {
393 p->print(cout, factor);
396 NOTICE(
"Number of trigger/slices " << numberOfTriggers <<
"/" << counter << endl);
397 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.
Auxiliary class to select ROOT class based on class name.
Router for direct addressing of module data in detector data structure.
*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
Router for fast addressing of hits in KM3NETDAQ::JDAQTimeslice data structure as a function of the op...
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 source JAcoustics sh $DETECTOR_ID typeset A TRIPODS get_tripods $WORKDIR tripod txt TRIPODS for EMITTER in
Match of two events considering overlap in time.
Time slice with calibrated data.
#define DEBUG(A)
Message macros.