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()));
278 timesliceSN.push_back(JSuperFrame1D_t(super_frame->getDAQChronometer(),
279 super_frame->getModuleIdentifier(),
282 buildSN(buffer, *timesliceL1.rbegin(), back_inserter(*timesliceSN.rbegin()));
290 if (parameters.triggerNB.enabled) {
296 for (JTriggerInput::const_iterator hit = trigger_input.begin(); hit != trigger_input.end(); ++hit) {
298 if (parameters.triggerNB.write()) {
305 parameters.TMaxLocal_ns,
306 parameters.triggerNB.DMax_m,
307 getTimeRange(parameters.triggerNB));
321 trigger3DMuon (trigger_input, back_inserter(trigger_output));
322 trigger3DShower(trigger_input, back_inserter(trigger_output));
323 triggerMXShower(trigger_input, timesliceL0, back_inserter(trigger_output));
327 numberOfTriggers += trigger_output.size();
331 DEBUG(
"Number of triggers: " << trigger_output.size() << endl);
333 for (JTriggerOutput::const_iterator event = trigger_output.begin(); event != trigger_output.end(); ++event) {
340 parameters.TMaxLocal_ns,
341 getTimeRange(parameters));
348 if (parameters.writeL0()) {
357 if (parameters.writeL1()) {
366 if (parameters.writeL2()) {
375 if (parameters.writeSN()) {
384 if (parameters.writeSummary()) {
397 const double factor = 1.0 / (double) counter;
399 for (
const JTimer* p : { &timerCC, &timerL0, &timerL1, &timerL2, &timerSN, &timerRX, &timerTR, &timerTX, &timerTW, &timerSW }) {
400 p->print(cout, factor);
403 NOTICE(
"Number of trigger/slices " << numberOfTriggers <<
"/" << counter << endl);
404 NOTICE(
"Trigger rate [Hz] " << numberOfTriggers * 1.0e9 * factor /
getFrameTime() << endl);