62int main(
int argc,
char **argv)
71 JLimit_t& numberOfEvents = inputFile.getLimit();
82 JParser<> zap(
"Auxiliary program to trigger time slice data.");
84 zap[
'f'] =
make_field(inputFile,
"input file.");
87 zap[
'a'] =
make_field(detectorFile,
"detector file.");
96 catch(
const exception &error) {
97 FATAL(error.what() << endl);
110 DEBUG(
"Reset time [ms] " <<
getRTS() * 1e-6 << endl);
111 DEBUG(
"Trigger" << endl << parameters << endl);
124 if (parameters.disableHighRateVeto) {
126 NOTICE(
"Disabling high-rate veto of all PMTs." << endl);
141 typedef JTimeslice <hit_type> JTimeslice_t;
142 typedef JBuildL1 <hit_type> JBuildL1_t;
143 typedef JBuildL2 <hit_type> JBuildL2_t;
145 const JBuildL1_t buildL1(parameters);
146 const JBuildL2_t buildL2(parameters.L2);
147 const JBuildL2_t buildSN(parameters.SN);
148 const JBuildL2_t buildNB(parameters.NB);
150 JTimer timerCC(
"Calibration");
155 JTimer timerRX(
"Timeslice router");
156 JTimer timerTR(
"Trigger");
157 JTimer timerTX(
"Trigger router");
158 JTimer timerTW(
"Timeslice writer");
159 JTimer timerSW(
"Summary writer");
176 unsigned int numberOfTriggers = 0;
182 for ( ; in.
hasNext() && counter != inputFile.getLimit(); ++counter) {
184 STATUS(
"event: " << setw(10) << counter <<
'\r');
DEBUG(endl);
188 DEBUG(*timeslice << endl);
203 for (JDAQTimeslice::const_iterator super_frame = timeslice->begin(); super_frame != timeslice->end(); ++super_frame) {
205 if (moduleRouter.
hasModule(super_frame->getModuleID())) {
212 JSuperFrame2D_t& buffer = JSuperFrame2D_t::demultiplex(*super_frame, module);
218 buffer.applyHighRateVeto(parameters.highRateVeto_Hz);
224 timesliceL0.push_back(JSuperFrame1D_t(buffer));
230 if (parameters.triggerNB.enabled) {
232 JSuperFrame2D_t::iterator __end = partition(buffer.begin(), buffer.end(), parameters.triggerNB.pmts);
234 if (buffer.begin() != __end) {
236 timesliceNB.push_back(JSuperFrame1D_t(super_frame->getDAQChronometer(),
237 super_frame->getModuleIdentifier(),
240 JSuperFrame1D_t zbuf;
242 buildL1(buffer.begin(), __end , back_inserter(zbuf));
244 buildNB(buffer.begin() , __end, zbuf, back_inserter(*timesliceNB.rbegin()));
252 timesliceL1.push_back(JSuperFrame1D_t(super_frame->getDAQChronometer(),
253 super_frame->getModuleIdentifier(),
256 buildL1(*timesliceL0.rbegin(), back_inserter(*timesliceL1.rbegin()));
264 timesliceL2.push_back(JSuperFrame1D_t(super_frame->getDAQChronometer(),
265 super_frame->getModuleIdentifier(),
268 buildL2(buffer, *timesliceL1.rbegin(), back_inserter(*timesliceL2.rbegin()));
276 timesliceSN.push_back(JSuperFrame1D_t(super_frame->getDAQChronometer(),
277 super_frame->getModuleIdentifier(),
280 buildSN(buffer, *timesliceL1.rbegin(), back_inserter(*timesliceSN.rbegin()));
288 if (parameters.triggerNB.enabled) {
294 for (JTriggerInput::const_iterator hit = trigger_input.begin(); hit != trigger_input.end(); ++hit) {
296 if (parameters.triggerNB.write()) {
303 parameters.TMaxLocal_ns,
304 parameters.triggerNB.DMax_m,
305 getTimeRange(parameters.triggerNB));
319 trigger3DMuon (trigger_input, back_inserter(trigger_output));
320 trigger3DShower(trigger_input, back_inserter(trigger_output));
321 triggerMXShower(trigger_input, timesliceL0, back_inserter(trigger_output));
325 numberOfTriggers += trigger_output.size();
329 DEBUG(
"Number of triggers: " << trigger_output.size() << endl);
331 for (JTriggerOutput::const_iterator event = trigger_output.begin(); event != trigger_output.end(); ++event) {
338 parameters.TMaxLocal_ns,
339 getTimeRange(parameters));
346 if (parameters.writeL0()) {
355 if (parameters.writeL1()) {
364 if (parameters.writeL2()) {
373 if (parameters.writeSN()) {
382 if (parameters.writeSummary()) {
395 const double factor = 1.0 / (double) counter;
397 for (
const JTimer* p : { &timerCC, &timerL0, &timerL1, &timerL2, &timerSN, &timerRX, &timerTR, &timerTX, &timerTW, &timerSW }) {
398 p->print(cout, factor);
401 NOTICE(
"Number of trigger/slices " << numberOfTriggers <<
"/" << counter << endl);
402 NOTICE(
"Trigger rate [Hz] " << numberOfTriggers * 1.0e9 * factor /
getFrameTime() << endl);