49   Long64_t               numberOfEvents;
 
   50   JPMTParametersMap      pmtParameters;
 
   58     JParser<> zap(
"Example program to test hit coincidence building with random data.");
 
   70   catch(
const exception &error) {
 
   71     FATAL(error.what() << endl);
 
   74   gRandom->SetSeed(seed);
 
   85   JDetectorSimulator simbad(detector);
 
   87   simbad.reset(
new JPMTDefaultSimulator(pmtParameters, detector));
 
   88   simbad.reset(
new JCLBDefaultSimulator());
 
   89   simbad.reset(k40Simulator.clone());
 
   94   TProfile hn(
"hn", NULL, 31,  0.5,  +31.5);
 
   95   TProfile hc(
"hc", NULL, 21, -1.05, +1.05);
 
   96   TProfile ht(
"ht", NULL, 20,  0.5,  +20.5);
 
   99   const JModuleRouter moduleRouter(detector);
 
  101   typedef double        hit_type;
 
  103   typedef JSuperFrame2D<hit_type>   JSuperFrame2D_t;
 
  104   typedef JBuildL1     <hit_type>   JBuildL1_t;
 
  107   const JBuildL1_t buildL1(JBuildL1Parameters((hit_type) Tmax_ns, 
true));
 
  108   JSuperFrame2D_t  buffer;
 
  111   for (
int event_count = 0; event_count < numberOfEvents; ++event_count) {
 
  113     STATUS(
"event: " << setw(10) << event_count << 
'\r'); 
DEBUG(endl);
 
  115     const int frame_index = 1;
 
  121     for (JDAQTimeslice::const_iterator super_frame = timeslice.begin(); super_frame != timeslice.end(); ++super_frame) {
 
  123       if (moduleRouter.hasModule(super_frame->getModuleID())) {
 
  127         const JModule& module = detector.getModule(moduleRouter.getAddress(super_frame->getModuleID()));
 
  129         buffer(*super_frame, module);
 
  133         buildL1(buffer, back_inserter(dataL1));
 
  136         if (!dataL1.empty()) {
 
  138           JBuildL2<hit_type> buildL2(JL2Parameters(1, Tmax_ns, -1.0));
 
  140           JFrameL1_t d1(dataL1);
 
  143           for (
int i = 1; i <= hn.GetNbinsX(); ++i) {
 
  145             buildL2.numberOfHits = (int) hn.GetBinCenter(i);
 
  149             buildL2(buffer, d1, back_inserter(d2));
 
  151             hn.Fill((
double) buildL2.numberOfHits, (
double) d2.size() / (double) dataL1.size());
 
  158         if (!dataL1.empty()) {
 
  160           JBuildL2<hit_type> buildL2(JL2Parameters(2, Tmax_ns, -1.0));
 
  162           JFrameL1_t d1(dataL1);
 
  165           for (
int i = 1; i <= hc.GetNbinsX(); ++i) {
 
  167             buildL2.ctMin = hc.GetBinCenter(i);
 
  171             buildL2(buffer, d1, back_inserter(d2));
 
  173             hc.Fill(buildL2.ctMin, (
double) d2.size() / (double) dataL1.size());
 
  180         if (!dataL1.empty()) {
 
  182           JBuildL2<hit_type> buildL2(JL2Parameters(2, 0.0, -1.0));
 
  184           JFrameL1_t d1(dataL1);
 
  187           for (
int i = ht.GetNbinsX(); i != 0; --i) {
 
  189             buildL2.TMaxLocal_ns = ht.GetBinCenter(i);
 
  193             buildL2(buffer, d1, back_inserter(d2));
 
  195             ht.Fill(buildL2.TMaxLocal_ns, (
double) d2.size() / (double) dataL1.size());