37 int main(
int argc,
char **argv){
41 typedef JTriggeredFileScanner<> JTriggeredFileScanner_t;
42 typedef JTriggeredFileScanner_t::multi_pointer_type multi_pointer_type;
44 JTriggeredFileScanner_t inputFile;
47 JRange<double> t_res_ns;
60 zap[
'T'] =
make_field(t_res_ns) = JRange<double>(-100, 100);
61 zap[
'D'] =
make_field(D_m) = JRange<double>(0, 100);
62 zap[
'C'] =
make_field(cosT) = JRange<double>(-1, 1);
66 if (zap.
read(argc, argv) != 0)
return 1;
68 catch(
const exception& error){
69 FATAL(error.what() << endl);
77 load(detectorFile, detector);
79 catch(
const JException& error){
83 const JPMTRouter pmtRouter(detector);
84 const JModuleRouter moduleRouter(detector);
86 typedef vector<JHitL0> JDataL0_t;
87 const JBuildL0<JHitL0> buildL0;
89 TFile *out =
new TFile(
outputFile.c_str(),
"RECREATE");
90 if ( !out->IsOpen() ) printf(
"Can't open outputfile\n");
92 TH2D hPDF2Dist(
"hPDF2Dist",
"PDF for ORCA Shower Position Fit; #delta t [ns]; D [m]",
93 2000, t_res_ns.getLowerLimit(), t_res_ns.getUpperLimit(),
94 700, D_m.getLowerLimit(), D_m.getUpperLimit());
96 while(inputFile.hasNext()){
98 multi_pointer_type ps = inputFile.next();
102 JTimeConverter converter(*event, *tev);
106 cascade.pos =
event->mc_trks[1].pos;
107 cascade.pos -= Vec(0.0, 0.0, -117.164);
109 for (
unsigned int i = 1; i <
event->mc_trks.size(); i++) {
110 cascade.E +=
event->mc_trks[i].E;
111 cascade.dir +=
event->mc_trks[i].dir *
event->mc_trks[i].E;
113 cascade.dir.normalize();
116 double t_vx = converter.putTime(event->mc_trks[1].t);
120 buildL0(
JDAQTimeslice(*tev,
true), moduleRouter, back_inserter(dataL0));
123 const JRotation3D R(dir);
126 for (vector<JHitL0>::const_iterator i = dataL0.begin(); i != dataL0.end(); ++i) {
129 hit.transform(R, vx);
131 const double D = hit.getLength();
133 const double dt = hit.getT() - t_expected;
134 const JDirection3D photonDir(hit.getPosition());
135 const double ct = photonDir.getDot(hit.getDirection());
137 if((D >= D_m.getLowerLimit() && D <= D_m.getUpperLimit()) &&
138 (dt >= t_res_ns.getLowerLimit() && dt <= t_res_ns.getUpperLimit()) &&
139 (ct >= cosT.getLowerLimit() && ct <= cosT.getUpperLimit())){
147 hPDF2Dist.Fill(dt, D,
w);