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());