62int main(
int argc, 
char **argv)
 
   71  JLimit_t&                numberOfEvents = inputFile.getLimit();
 
   83    JParser<> zap(
"Auxiliary program to trigger time slice data.");
 
   85    zap[
'f'] = 
make_field(inputFile,      
"input file.");
 
   88    zap[
'a'] = 
make_field(detectorFile,   
"detector file.");
 
   93    zap[
'm'] = 
make_field(merge,          
"Allow merging of files w/o Monte Carlo headers");
 
   98  catch(
const exception &error) {
 
   99    FATAL(error.what() << endl);
 
  112  DEBUG(
"Reset time [ms] " << 
getRTS()       * 1e-6 << endl);
 
  113  DEBUG(
"Trigger"          << endl << parameters    << endl);
 
  126  if (parameters.disableHighRateVeto) {
 
  128    NOTICE(
"Disabling high-rate veto of all PMTs." << endl);
 
  143  typedef JTimeslice   <hit_type>   JTimeslice_t;
 
  144  typedef JBuildL1     <hit_type>   JBuildL1_t;
 
  145  typedef JBuildL2     <hit_type>   JBuildL2_t;
 
  147  const JBuildL1_t buildL1(parameters);
 
  148  const JBuildL2_t buildL2(parameters.L2);
 
  149  const JBuildL2_t buildSN(parameters.SN);
 
  150  const JBuildL2_t buildNB(parameters.NB);
 
  152  JTimer timerCC(
"Calibration");
 
  157  JTimer timerRX(
"Timeslice router");
 
  158  JTimer timerTR(
"Trigger");
 
  159  JTimer timerTX(
"Trigger router");
 
  160  JTimer timerTW(
"Timeslice writer");
 
  161  JTimer timerSW(
"Summary writer");
 
  178  unsigned int numberOfTriggers = 0;
 
  184  for ( ; in.
hasNext() && counter != inputFile.getLimit(); ++counter) {
 
  186    STATUS(
"event: " << setw(10) << counter << 
'\r'); 
DEBUG(endl);
 
  190    DEBUG(*timeslice << endl);
 
  205    for (JDAQTimeslice::const_iterator super_frame = timeslice->begin(); super_frame != timeslice->end(); ++super_frame) {
 
  207      if (moduleRouter.
hasModule(super_frame->getModuleID())) {
 
  214        JSuperFrame2D_t& buffer = JSuperFrame2D_t::demultiplex(*super_frame, module);
 
  220        buffer.applyHighRateVeto(parameters.highRateVeto_Hz);
 
  226        timesliceL0.push_back(JSuperFrame1D_t(buffer));
 
  232        if (parameters.triggerNB.enabled) {
 
  234          JSuperFrame2D_t::iterator __end = partition(buffer.begin(), buffer.end(), parameters.triggerNB.pmts);
 
  236          if (buffer.begin() != __end) {
 
  238            timesliceNB.push_back(JSuperFrame1D_t(super_frame->getDAQChronometer(),
 
  239                                                  super_frame->getModuleIdentifier(),
 
  242            JSuperFrame1D_t zbuf;
 
  244            buildL1(buffer.begin(), __end , back_inserter(zbuf));
 
  246            buildNB(buffer.begin() , __end, zbuf, back_inserter(*timesliceNB.rbegin()));
 
  254        timesliceL1.push_back(JSuperFrame1D_t(super_frame->getDAQChronometer(),
 
  255                                              super_frame->getModuleIdentifier(),
 
  258        buildL1(*timesliceL0.rbegin(), back_inserter(*timesliceL1.rbegin()));
 
  266        timesliceL2.push_back(JSuperFrame1D_t(super_frame->getDAQChronometer(),
 
  267                                              super_frame->getModuleIdentifier(),
 
  270        buildL2(buffer, *timesliceL1.rbegin(), back_inserter(*timesliceL2.rbegin()));
 
  278        timesliceSN.push_back(JSuperFrame1D_t(super_frame->getDAQChronometer(),
 
  279                                              super_frame->getModuleIdentifier(),
 
  282        buildSN(buffer, *timesliceL1.rbegin(), back_inserter(*timesliceSN.rbegin()));
 
  290    if (parameters.triggerNB.enabled) {      
 
  296      for (JTriggerInput::const_iterator hit = trigger_input.begin(); hit != trigger_input.end(); ++hit) {
 
  298        if (parameters.triggerNB.write()) {
 
  305                              parameters.TMaxLocal_ns, 
 
  306                              parameters.triggerNB.DMax_m,
 
  307                              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    numberOfTriggers += trigger_output.size();
 
  331    DEBUG(
"Number of triggers: " << trigger_output.size() << endl);
 
  333    for (JTriggerOutput::const_iterator event = trigger_output.begin(); event != trigger_output.end(); ++event) {
 
  340                          parameters.TMaxLocal_ns, 
 
  341                          getTimeRange(parameters));
 
  348    if (parameters.writeL0()) {
 
  357    if (parameters.writeL1()) {
 
  366    if (parameters.writeL2()) {
 
  375    if (parameters.writeSN()) {
 
  384    if (parameters.writeSummary()) {
 
  397    const double factor = 1.0 / (double) counter;
 
  399    for (
const JTimer* p : { &timerCC, &timerL0, &timerL1, &timerL2, &timerSN, &timerRX, &timerTR, &timerTX, &timerTW, &timerSW }) {
 
  400      p->print(cout, factor);
 
  403    NOTICE(
"Number of trigger/slices " << numberOfTriggers << 
"/" << counter << endl);
 
  404    NOTICE(
"Trigger rate [Hz]        " << numberOfTriggers * 1.0e9 * factor / 
getFrameTime() << endl);