60 int main(
int argc,
char **argv)
69 JLimit_t& numberOfEvents = inputFile.getLimit();
79 JParser<> zap(
"Auxiliary program to trigger time slice data.");
81 zap[
'f'] =
make_field(inputFile,
"input file.");
83 zap[
'n'] =
make_field(numberOfEvents) = JLimit::max();
84 zap[
'a'] =
make_field(detectorFile,
"detector file.");
87 zap[
'C'] =
make_field(selector,
"timeslice selector, e.g. JDAQTimesliceL1.") = getROOTClassSelection<JDAQTimesliceTypes_t>();
92 catch(
const exception &error) {
93 FATAL(error.what() << endl);
101 DEBUG(
"Reset time [ms] " <<
getRTS() * 1e-6 << endl);
102 DEBUG(
"Trigger" << endl << parameters << endl);
119 typedef double hit_type;
127 const JBuildL1_t buildL1(parameters);
128 const JBuildL2_t buildL2(parameters.
L2);
129 const JBuildL2_t buildSN(parameters.
SN);
131 JTimer timerCC(
"Calibration");
136 JTimer timerRX(
"Timeslice router");
137 JTimer timerTR(
"Trigger");
138 JTimer timerTX(
"Trigger router");
139 JTimer timerTW(
"Timeslice writer");
140 JTimer timerSW(
"Summary writer");
157 unsigned int numberOfTriggers = 0;
163 for ( ; in.
hasNext() && counter != inputFile.getLimit(); ++counter) {
165 STATUS(
"event: " << setw(10) << counter <<
'\r');
DEBUG(endl);
169 DEBUG(*timeslice << endl);
184 for (JDAQTimeslice::const_iterator super_frame = timeslice->begin(); super_frame != timeslice->end(); ++super_frame) {
186 if (!moduleRouter.
hasModule(super_frame->getModuleID())) {
187 ERROR(
"Missing module: " << super_frame->getModuleID() << endl);
196 JSuperFrame2D_t& buffer = JSuperFrame2D_t::demultiplex(*super_frame, module);
208 timesliceL0.push_back(JSuperFrame1D_t(buffer));
216 JSuperFrame2D_t::iterator __end = partition(buffer.begin(), buffer.end(), parameters.
triggerNB.
pmts);
218 if (buffer.begin() != __end) {
220 timesliceNB.push_back(JSuperFrame1D_t(super_frame->getDAQChronometer(),
221 super_frame->getModuleIdentifier(),
224 buildL1(buffer.begin(), __end , back_inserter(*timesliceNB.rbegin()));
232 timesliceL1.push_back(JSuperFrame1D_t(super_frame->getDAQChronometer(),
233 super_frame->getModuleIdentifier(),
236 buildL1(*timesliceL0.rbegin(), back_inserter(*timesliceL1.rbegin()));
244 timesliceL2.push_back(JSuperFrame1D_t(super_frame->getDAQChronometer(),
245 super_frame->getModuleIdentifier(),
248 buildL2(buffer, *timesliceL1.rbegin(), back_inserter(*timesliceL2.rbegin()));
256 timesliceSN.push_back(JSuperFrame1D_t(super_frame->getDAQChronometer(),
257 super_frame->getModuleIdentifier(),
260 buildSN(buffer, *timesliceL1.rbegin(), back_inserter(*timesliceSN.rbegin()));
272 for (JTriggerInput::const_iterator hit = trigger_input.begin(); hit != trigger_input.
end(); ++hit) {
292 trigger3DMuon (trigger_input, back_inserter(trigger_output));
293 trigger3DShower(trigger_input, back_inserter(trigger_output));
294 triggerMXShower(trigger_input, timesliceL0, back_inserter(trigger_output));
298 numberOfTriggers += trigger_output.size();
302 DEBUG(
"Number of triggers: " << trigger_output.size() << endl);
304 for (JTriggerOutput::const_iterator event = trigger_output.begin();
event != trigger_output.end(); ++event) {
368 const double factor = 1.0 / (double) counter;
370 for (
const JTimer* buffer[] = { &timerCC, &timerL0, &timerL1, &timerL2, &timerSN, &timerRX, &timerTR, &timerTX, &timerTW, &timerSW, NULL }, **i = buffer; *i != NULL; ++i) {
371 (*i)->print(cout, factor);
374 NOTICE(
"Number of trigger/slices " << numberOfTriggers <<
"/" << counter << endl);
375 NOTICE(
"Trigger rate [Hz] " << numberOfTriggers * 1.0e9 * factor /
getFrameTime() << endl);