40 int main(
int argc,
char **argv)
46 typedef JTriggeredFileScanner<JEvt> JTriggeredFileScanner_t;
47 typedef JTriggeredFileScanner_t::multi_pointer_type multi_pointer_type;
49 JTriggeredFileScanner_t inputFile;
53 size_t numberOfPrefits;
62 JParser<> zap(
"Example program to histogram fit results.");
67 zap[
'n'] =
make_field(numberOfEvents) = JLimit::max();
69 zap[
'E'] =
make_field(E_GeV) = JRange<double>(1.0, -1.0);
70 zap[
'Q'] =
make_field(quality) = numeric_limits<double>::min();
77 catch(
const exception& error) {
78 FATAL(error.what() << endl);
89 catch(
const JException& error) {
94 JVolume volume(head, logx);
96 const double Xmax = E_GeV.is_valid() ? volume.getX(E_GeV.getMaximum()) : volume.getXmax();
97 const double Xmin = E_GeV.is_valid() ? volume.getX(E_GeV.getMinimum()) : volume.getXmin();
101 TH1D* hN =
new TH1D(
"hN", NULL, 25, Xmin, Xmax);
102 TH1D* he =
new TH1D(
"he", NULL, 25, Xmin, Xmax);
110 load(detectorFile, detector);
112 catch(
const JException& error) {
116 JCylinder3D cylinder(detector.begin(), detector.end());
118 STATUS(
"Detector Geometry:" << endl);
119 STATUS(
"Zmin: " << cylinder.getZmin() << endl);
120 STATUS(
"Zmax: " << cylinder.getZmax() << endl);
121 STATUS(
"Z origin: " << 0.5 * (cylinder.getZmax() + cylinder.getZmin()) << endl);
122 STATUS(
"Radius: " << cylinder.getRadius() << endl);
124 while (inputFile.hasNext()) {
126 STATUS(
"event: " << setw(10) << inputFile.getCounter() <<
'\r');
DEBUG(endl);
128 multi_pointer_type ps = inputFile.next();
137 const double X = volume.getX(neutrino.E);
143 JEvt::iterator __end = evt->end();
145 if (numberOfPrefits > 0) {
147 advance(__end = evt->begin(), min(numberOfPrefits, evt->size()));
149 partial_sort(evt->begin(), __end, evt->end(),
qualitySorter);
153 for(JEvt::const_iterator track = evt->begin(); track != __end; ++track) {
157 const double R = sqrt(pos.getX() * pos.getX() + pos.getY() * pos.getY());
159 if ((pos.getZ() > cylinder.getZmin()
160 && pos.getZ() < cylinder.getZmax()
161 && R < cylinder.getRadius())
181 WARNING(
"No neutrino." << endl);