56 int main(
int argc,
char **argv)
64 JSingleFileScanner<JDAQEvent> inputFile;
69 bool reuse_parameters;
74 JParser<> zap(
"Auxiliary program to re-trigger event data.");
78 zap[
'n'] =
make_field(numberOfEvents) = JLimit::max();
86 catch(
const exception &error) {
87 FATAL(error.what() << endl);
96 DEBUG(
"Reset time [ms] " <<
getRTS() * 1e-6 << endl);
97 DEBUG(
"Trigger" << endl << parameters << endl);
102 load(detectorFile, detector);
104 catch(
const JException& error) {
108 if (reuse_parameters) {
114 NOTICE(
"Set trigger parameters from input." << endl);
116 catch(
const JException& error) {
117 FATAL(
"No trigger parameters from input." << endl);
123 const JModuleRouter moduleRouter(detector);
125 if (parameters.
writeSummary()) {
WARNING(
"Discard writeSummary option during reprocesing of data." << endl); }
126 if (parameters.
writeL1()) {
WARNING(
"Discard writeL1 option during reprocesing of data." << endl); }
127 if (parameters.
writeL2()) {
WARNING(
"Discard writeL2 option during reprocesing of data." << endl); }
128 if (parameters.
writeSN()) {
WARNING(
"Discard writeSN option during reprocesing of data." << endl); }
132 typedef double hit_type;
134 typedef JSuperFrame1D<hit_type> JSuperFrame1D_t;
135 typedef JSuperFrame2D<hit_type> JSuperFrame2D_t;
136 typedef JTimeslice <hit_type> JTimeslice_t;
137 typedef JBuildL1 <hit_type> JBuildL1_t;
138 typedef JBuildL2 <hit_type> JBuildL2_t;
140 const JBuildL1_t buildL1(parameters);
141 const JBuildL2_t buildL2(parameters.
L2);
143 JTimesliceRouter timesliceRouter(parameters.
numberOfBins);
145 const JTrigger3DMuon trigger3DMuon (parameters);
146 const JTrigger3DShower trigger3DShower(parameters);
147 const JTriggerMXShower triggerMXShower(parameters, detector);
160 JTreeScanner<JDAQSummaryslice, JDAQEvaluator> scan(inputFile);
162 if (scan.getEntries() == 0) {
163 FATAL(
"No summary data." << endl);
166 while (inputFile.hasNext()) {
168 STATUS(
"event: " << setw(10) << inputFile.getCounter() <<
'\r');
DEBUG(endl);
171 Long64_t index = scan.find(*evt);
180 DEBUG(timeslice << endl);
182 timesliceRouter.configure(timeslice);
189 for (JDAQTimeslice::const_iterator super_frame = timeslice.begin(); super_frame != timeslice.end(); ++super_frame) {
191 if (!moduleRouter.hasModule(super_frame->getModuleID())) {
192 ERROR(
"Missing module: " << super_frame->getModuleID() << endl);
198 const JModule& module = moduleRouter.getModule(super_frame->getModuleID());
199 JSuperFrame2D_t& buffer = JSuperFrame2D_t::demultiplex(*super_frame, module);
207 timesliceL0.push_back(JSuperFrame1D_t(buffer));
211 timesliceL1.push_back(JSuperFrame1D_t(super_frame->getDAQChronometer(),
212 super_frame->getModuleIdentifier(),
213 module.getPosition()));
215 buildL1(*timesliceL0.rbegin(), back_inserter(*timesliceL1.rbegin()));
219 timesliceL2.push_back(JSuperFrame1D_t(super_frame->getDAQChronometer(),
220 super_frame->getModuleIdentifier(),
221 module.getPosition()));
223 buildL2(buffer, *timesliceL1.rbegin(), back_inserter(*timesliceL2.rbegin()));
229 JTriggerInput trigger_input(timesliceL2);
230 JTriggerOutput trigger_output;
232 trigger3DMuon (trigger_input, back_inserter(trigger_output));
233 trigger3DShower(trigger_input, back_inserter(trigger_output));
234 triggerMXShower(trigger_input, timesliceL0, back_inserter(trigger_output));
236 trigger_output.merge(JEventOverlap(parameters.
TMaxEvent_ns));
238 DEBUG(
"Number of triggers: " << trigger_output.size() << endl);
240 for (JTriggerOutput::const_iterator event = trigger_output.begin();
event != trigger_output.end(); ++event) {
242 JTriggeredEvent tev(*event,
255 JSingleFileScanner<JRemove<typelist, JDAQEvent>::typelist> io(inputFile);