62int main(
int argc,
char **argv)
72 JLimit_t& numberOfEvents = inputFile.getLimit();
75 bool reuse_parameters;
82 JParser<> zap(
"Auxiliary program to re-trigger event data.");
84 zap[
'f'] =
make_field(inputFile,
"input file.");
87 zap[
'a'] =
make_field(detectorFile,
"detector file.");
89 zap[
'U'] =
make_field(reuse_parameters,
"reuse trigger parameters from input file.");
90 zap[
'S'] =
make_field(snapshot,
"use snapshot hits instead of triggered hits.");
96 catch(
const exception &error) {
97 FATAL(error.what() << endl);
112 if (reuse_parameters) {
118 NOTICE(
"Set trigger parameters from input." << endl);
121 FATAL(
"No trigger parameters from input." << endl);
127 if (parameters.disableHighRateVeto) {
129 NOTICE(
"Disabling high-rate veto of all PMTs." << endl);
136 parameters.triggerNB.write.prescale = 1;
139 DEBUG(
"Reset time [ms] " <<
getRTS() * 1e-6 << endl);
140 DEBUG(
"Trigger" << endl << parameters << endl);
144 if (parameters.writeSummary()) {
WARNING(
"Discard writeSummary option during reprocesing of data." << endl); }
145 if (parameters.writeL1()) {
WARNING(
"Discard writeL1 option during reprocesing of data." << endl); }
146 if (parameters.writeL2()) {
WARNING(
"Discard writeL2 option during reprocesing of data." << endl); }
147 if (parameters.writeSN()) {
WARNING(
"Discard writeSN option during reprocesing of data." << endl); }
155 typedef JTimeslice <hit_type> JTimeslice_t;
156 typedef JBuildL1 <hit_type> JBuildL1_t;
157 typedef JBuildL2 <hit_type> JBuildL2_t;
159 const JBuildL1_t buildL1(parameters);
160 const JBuildL2_t buildL2(parameters.L2);
161 const JBuildL2_t buildSN(parameters.SN);
162 const JBuildL2_t buildNB(parameters.NB);
186 if (scan.getEntries() == 0) {
187 FATAL(
"No summary data." << endl);
195 Long64_t index = scan.find(*evt);
204 DEBUG(timeslice << endl);
215 for (JDAQTimeslice::const_iterator super_frame = timeslice.begin(); super_frame != timeslice.end(); ++super_frame) {
217 if (moduleRouter.
hasModule(super_frame->getModuleID())) {
222 JSuperFrame2D_t& buffer = JSuperFrame2D_t::demultiplex(*super_frame, module);
226 buffer.applyHighRateVeto(parameters.highRateVeto_Hz);
230 timesliceL0.push_back(JSuperFrame1D_t(buffer));
232 DEBUG(
"L0 " << setw(8) << timesliceL0.rbegin()->getModuleID() <<
' ' << setw(8) << timesliceL0.rbegin()->size() <<
LAMBDA([ps = timesliceL0.rbegin()](ostream& out) { for (const auto& i : *ps) { out <<
" " << i; } }) << endl);
236 if (parameters.triggerNB.enabled) {
238 JSuperFrame2D_t::iterator __end = partition(buffer.begin(), buffer.end(), parameters.triggerNB.pmts);
240 if (buffer.begin() != __end) {
242 timesliceNB.push_back(JSuperFrame1D_t(super_frame->getDAQChronometer(),
243 super_frame->getModuleIdentifier(),
244 module.getPosition()));
247 JSuperFrame1D_t zbuf;
249 buildL1(buffer.begin(), __end, back_inserter(zbuf));
251 buildNB(buffer.begin(), __end, zbuf, back_inserter(*timesliceNB.rbegin()));
257 timesliceL1.push_back(JSuperFrame1D_t(super_frame->getDAQChronometer(),
258 super_frame->getModuleIdentifier(),
259 module.getPosition()));
261 buildL1(*timesliceL0.rbegin(), back_inserter(*timesliceL1.rbegin()));
263 DEBUG(
"L1 " << setw(8) << timesliceL1.rbegin()->getModuleID() <<
' ' << setw(8) << timesliceL1.rbegin()->size() <<
LAMBDA([ps = timesliceL1.rbegin()](ostream& out) { for (const auto& i : *ps) { out <<
" " << i; } }) << endl);
267 timesliceL2.push_back(JSuperFrame1D_t(super_frame->getDAQChronometer(),
268 super_frame->getModuleIdentifier(),
269 module.getPosition()));
271 buildL2(buffer, *timesliceL1.rbegin(), back_inserter(*timesliceL2.rbegin()));
273 DEBUG(
"L2 " << setw(8) << timesliceL2.rbegin()->getModuleID() <<
' ' << setw(8) << timesliceL2.rbegin()->size() <<
LAMBDA([ps = timesliceL2.rbegin()](ostream& out) { for (const auto& i : *ps) { out <<
" " << i; } }) << endl);
277 JTimeslice_t::value_type tv(super_frame->getDAQChronometer(),
278 super_frame->getModuleIdentifier(),
279 module.getPosition());
281 buildSN(buffer, *timesliceL1.rbegin(), back_inserter(tv));
285 timesliceSN.push_back(tv);
287 DEBUG(
"SN " << setw(8) << timesliceSN.rbegin()->getModuleID() <<
' ' << setw(8) << timesliceSN.rbegin()->size() <<
LAMBDA([ps = timesliceL0.rbegin()](ostream& out) { for (const auto& i : *ps) { out <<
" " << i; } }) << endl);
296 if (parameters.triggerNB.enabled) {
300 for (JTriggerInput::const_iterator hit = trigger_input.begin(); hit != trigger_input.end(); ++hit) {
302 if (parameters.triggerNB.write()) {
305 getTriggerMask(triggerNB.getTriggerBit()),
309 parameters.TMaxLocal_ns,
310 parameters.triggerNB.DMax_m,
311 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 DEBUG(
"Number of triggers: " << trigger_output.size() << endl);
329 for (JTriggerOutput::const_iterator event = trigger_output.begin(); event != trigger_output.end(); ++event) {
334 parameters.TMaxLocal_ns,
335 getTimeRange(parameters));
337 tev.setCounter(evt->getCounter());