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));
234 if (parameters.triggerNB.enabled) {
236 JSuperFrame2D_t::iterator __end = partition(buffer.begin(), buffer.end(), parameters.triggerNB.pmts);
238 if (buffer.begin() != __end) {
240 timesliceNB.push_back(JSuperFrame1D_t(super_frame->getDAQChronometer(),
241 super_frame->getModuleIdentifier(),
245 JSuperFrame1D_t zbuf;
247 buildL1(buffer.begin(), __end , back_inserter(zbuf));
250 buildNB(buffer.begin() , __end, zbuf, back_inserter(*timesliceNB.rbegin()));
256 timesliceL1.push_back(JSuperFrame1D_t(super_frame->getDAQChronometer(),
257 super_frame->getModuleIdentifier(),
260 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()));
272 timesliceSN.push_back(JSuperFrame1D_t(super_frame->getDAQChronometer(),
273 super_frame->getModuleIdentifier(),
276 buildSN(buffer, *timesliceL1.rbegin(), back_inserter(*timesliceSN.rbegin()));
283 if (parameters.triggerNB.enabled) {
287 for (JTriggerInput::const_iterator hit = trigger_input.begin(); hit != trigger_input.end(); ++hit) {
289 if (parameters.triggerNB.write()) {
296 parameters.TMaxLocal_ns,
297 parameters.triggerNB.DMax_m,
298 getTimeRange(parameters.triggerNB));
308 trigger3DMuon (trigger_input, back_inserter(trigger_output));
309 trigger3DShower(trigger_input, back_inserter(trigger_output));
310 triggerMXShower(trigger_input, timesliceL0, back_inserter(trigger_output));
314 DEBUG(
"Number of triggers: " << trigger_output.size() << endl);
316 for (JTriggerOutput::const_iterator event = trigger_output.begin(); event != trigger_output.end(); ++event) {
321 parameters.TMaxLocal_ns,
322 getTimeRange(parameters));