62int main(
int argc,
char **argv)
71 JLimit_t& numberOfEvents = inputFile.getLimit();
83 JParser<> zap(
"Auxiliary program to trigger time slice data.");
85 zap[
'f'] =
make_field(inputFile,
"input file.");
88 zap[
'a'] =
make_field(detectorFile,
"detector file.");
93 zap[
'm'] =
make_field(merge,
"Allow merging of files w/o Monte Carlo headers");
98 catch(
const exception &error) {
99 FATAL(error.what() << endl);
112 DEBUG(
"Reset time [ms] " <<
getRTS() * 1e-6 << endl);
113 DEBUG(
"Trigger" << endl << parameters << endl);
126 if (parameters.disableHighRateVeto) {
128 NOTICE(
"Disabling high-rate veto of all PMTs." << endl);
143 typedef JTimeslice <hit_type> JTimeslice_t;
144 typedef JBuildL1 <hit_type> JBuildL1_t;
145 typedef JBuildL2 <hit_type> JBuildL2_t;
147 const JBuildL1_t buildL1(parameters);
148 const JBuildL2_t buildL2(parameters.L2);
149 const JBuildL2_t buildSN(parameters.SN);
150 const JBuildL2_t buildNB(parameters.NB);
152 JTimer timerCC(
"Calibration");
157 JTimer timerRX(
"Timeslice router");
158 JTimer timerTR(
"Trigger");
159 JTimer timerTX(
"Trigger router");
160 JTimer timerTW(
"Timeslice writer");
161 JTimer timerSW(
"Summary writer");
178 unsigned int numberOfTriggers = 0;
184 for ( ; in.
hasNext() && counter != inputFile.getLimit(); ++counter) {
186 STATUS(
"event: " << setw(10) << counter <<
'\r');
DEBUG(endl);
190 DEBUG(*timeslice << endl);
205 for (JDAQTimeslice::const_iterator super_frame = timeslice->begin(); super_frame != timeslice->end(); ++super_frame) {
207 if (moduleRouter.
hasModule(super_frame->getModuleID())) {
214 JSuperFrame2D_t& buffer = JSuperFrame2D_t::demultiplex(*super_frame, module);
220 buffer.applyHighRateVeto(parameters.highRateVeto_Hz);
226 timesliceL0.push_back(JSuperFrame1D_t(buffer));
232 if (parameters.triggerNB.enabled) {
234 JSuperFrame2D_t::iterator __end = partition(buffer.begin(), buffer.end(), parameters.triggerNB.pmts);
236 if (buffer.begin() != __end) {
238 timesliceNB.push_back(JSuperFrame1D_t(super_frame->getDAQChronometer(),
239 super_frame->getModuleIdentifier(),
242 JSuperFrame1D_t zbuf;
244 buildL1(buffer.begin(), __end, back_inserter(zbuf));
246 buildNB(buffer.begin(), __end, zbuf, back_inserter(*timesliceNB.rbegin()));
254 timesliceL1.push_back(JSuperFrame1D_t(super_frame->getDAQChronometer(),
255 super_frame->getModuleIdentifier(),
258 buildL1(*timesliceL0.rbegin(), back_inserter(*timesliceL1.rbegin()));
266 timesliceL2.push_back(JSuperFrame1D_t(super_frame->getDAQChronometer(),
267 super_frame->getModuleIdentifier(),
270 buildL2(buffer, *timesliceL1.rbegin(), back_inserter(*timesliceL2.rbegin()));
279 JTimeslice_t::value_type tv;(super_frame->getDAQChronometer(),
280 super_frame->getModuleIdentifier(),
283 buildSN(buffer, *timesliceL1.rbegin(), back_inserter(tv));
286 timesliceSN.push_back(tv);
296 if (parameters.triggerNB.enabled) {
302 for (JTriggerInput::const_iterator hit = trigger_input.begin(); hit != trigger_input.end(); ++hit) {
304 if (parameters.triggerNB.write()) {
311 parameters.TMaxLocal_ns,
312 parameters.triggerNB.DMax_m,
313 getTimeRange(parameters.triggerNB));
327 trigger3DMuon (trigger_input, back_inserter(trigger_output));
328 trigger3DShower(trigger_input, back_inserter(trigger_output));
329 triggerMXShower(trigger_input, timesliceL0, back_inserter(trigger_output));
333 numberOfTriggers += trigger_output.size();
337 DEBUG(
"Number of triggers: " << trigger_output.size() << endl);
339 for (JTriggerOutput::const_iterator event = trigger_output.begin(); event != trigger_output.end(); ++event) {
346 parameters.TMaxLocal_ns,
347 getTimeRange(parameters));
354 if (parameters.writeL0()) {
363 if (parameters.writeL1()) {
372 if (parameters.writeL2()) {
381 if (parameters.writeSN()) {
390 if (parameters.writeSummary()) {
403 const double factor = 1.0 / (double) counter;
405 for (
const JTimer* p : { &timerCC, &timerL0, &timerL1, &timerL2, &timerSN, &timerRX, &timerTR, &timerTX, &timerTW, &timerSW }) {
406 p->print(cout, factor);
409 NOTICE(
"Number of trigger/slices " << numberOfTriggers <<
"/" << counter << endl);
410 NOTICE(
"Trigger rate [Hz] " << numberOfTriggers * 1.0e9 * factor /
getFrameTime() << endl);