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);
 
  185     JTimeslice_t    timesliceL0(timeslice.getDAQChronometer());
 
  186     JTimeslice_t    timesliceL1(timeslice.getDAQChronometer());
 
  187     JTimeslice_t    timesliceL2(timeslice.getDAQChronometer());
 
  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);