34 int main(
int argc,
char **argv)
40 typedef JTriggeredFileScanner_t::multi_pointer_type multi_pointer_type;
42 JTriggeredFileScanner_t inputFileA;
43 JTriggeredFileScanner_t inputFileB;
51 JParser<> zap(
"Example program to compare fit results from two files.");
56 zap[
'n'] =
make_field(numberOfEvents) = JLimit::max();
62 catch(
const exception& error) {
63 FATAL(error.what() << endl);
77 inputFileA.setLimit(numberOfEvents);
78 inputFileB.setLimit(numberOfEvents);
95 TH1D hA(
"h[A]", NULL, 100, -3.0, +2.3);
96 TH1D hB(
"h[B]", NULL, 100, -3.0, +2.3);
97 TH2D hA_angle_E(
"hA_angle_E", NULL, 20, E_nu_min, E_nu_max, 100, 0,90);
98 TH2D hB_angle_E(
"hB_angle_E", NULL, 20, E_nu_min, E_nu_max, 100, 0,90);
101 360, -180.0, +180.0);
103 while (inputFileA.hasNext() && inputFileB.hasNext()) {
105 STATUS(
"event: " << setw(10) << inputFileA.getCounter() <<
'\r');
DEBUG(endl);
107 multi_pointer_type psA = inputFileA.next();
108 multi_pointer_type psB = inputFileB.next();
112 while (psA.get<
Evt>()->
mc_id < psB.get<
Evt>()->
mc_id && inputFileA.hasNext()) { psA = inputFileA.next(); }
113 while (psB.get<
Evt>()->
mc_id < psA.get<
Evt>()->
mc_id && inputFileB.hasNext()) { psB = inputFileB.next(); }
115 if (!psA.is_valid()) {
continue; }
116 if (!psB.is_valid()) {
continue; }
118 if (psA.get<
Evt>()->
mc_id == psB.get<
Evt>()->mc_id) {
128 if (muon == event->mc_trks.end()) {
continue; }
130 if (evtA->empty()) {
continue; }
131 if (evtB->empty()) {
continue; }
133 JEvt::const_iterator fitA = evtA->begin();
134 JEvt::const_iterator fitB = evtB->begin();
139 hA.Fill(log10(angleA));
140 hB.Fill(log10(angleB));
142 h2.Fill(fitB->getQ() - fitA->getQ(), angleB - angleA);
144 const double Enu = neutrino.
E;
145 hA_angle_E.Fill(Enu, angleA);
146 hB_angle_E.Fill(Enu, angleB);
148 if (angleA > angle_Deg) {
149 manager.Fill(*fitA, *fitB, angleB < angle_Deg);