44{
47
49
51 typedef JTriggeredFileScanner_t::multi_pointer_type multi_pointer_type;
52
54 JLimit_t& numberOfEvents = inputFile.getLimit();
56 string option;
57 size_t numberOfPrefits;
59 int application;
64
65 try {
66
67 JParser<> zap(
"Program to histogram fit results from reconstructed data.");
68
79
80 zap(argc, argv);
81 }
82
85 }
86
87 const double rad_to_deg = 180/M_PI;
88 const double R_m = 700.0;
89 const int MAX_OVERLAYS = 300;
90 const double MAX_TRIGGERED_HITS = 2500;
91 const double E_RANGE_MIN = -1.0;
92 const double E_RANGE_MAX = 7;
95
97 TH1D job("job", NULL, 100, 0.5, 100.5);
98 TH1D hz ("hz", "; cos(#theta_{zenith})" , 21 , Z_RANGE_MIN, Z_RANGE_MAX);
99 TH1D ho ("ho", "; # of overlays" , MAX_OVERLAYS , -0.5, MAX_OVERLAYS-0.5);
100 TH2D hzo ("hzo", "; cos(#theta_{zenith}) ; # of overlays" , 21, Z_RANGE_MIN, Z_RANGE_MAX, MAX_OVERLAYS , -0.5, MAX_OVERLAYS-0.5);
101 TH2D hxy ("hxy", "; x position ; y position" , 201, -R_m, R_m, 201, -R_m, R_m);
102 TH1D hn ("hn", "; # of triggered hits" , 600, -0.5, MAX_TRIGGERED_HITS-0.5);
103 TH1D hN ("hN", "; JEnergy # of hits" , 600, -0.5, MAX_TRIGGERED_HITS-0.5);
104 TH1D hq ("hq", "; quality parameter" , 200, -200.0, 800);
105 TH1D hb0 ("hb0", "; log(beta0)" , 60, -2.0, 3.5);
106 TH1D he ("he", "; log(Ereco [GeV])" , 75, E_RANGE_MIN, E_RANGE_MAX);
107 TH2D heo ("heo", "; log(Ereco [GeV]) ; # of overlays" , 75, E_RANGE_MIN, E_RANGE_MAX, MAX_OVERLAYS , -0.5, MAX_OVERLAYS-0.5);
108 TH2D hen ("hen", "; log(Ereco [GeV]) ; # of triggered hits" , 75, E_RANGE_MIN, E_RANGE_MAX, 600 , -0.5, MAX_TRIGGERED_HITS-0.5);
109 TH2D heN ("heN", "; log(Ereco [GeV]) ; JEnergy # of hits" , 75, E_RANGE_MIN, E_RANGE_MAX, 600 , -0.5, MAX_TRIGGERED_HITS-0.5);
110 TH2D hzq ("hzq", "; cos(#theta_{zenith}); quality" , 21, Z_RANGE_MIN, Z_RANGE_MAX, 600, -200.0, 800.0);
111 TH2D hzn ("hzn", "; cos(#theta_{zenith}); # of triggered hits", 21, Z_RANGE_MIN, Z_RANGE_MAX, 600 , -0.5, MAX_TRIGGERED_HITS-0.5);
112 TH2D hzN ("hzN", "; cos(#theta_{zenith}); JEnergy # of hits" , 21, Z_RANGE_MIN, Z_RANGE_MAX, 600, -0.5, MAX_TRIGGERED_HITS-0.5);
113 TH2D hze ("hze", "; cos(#theta_{zenith}); log(Ereco [GeV])" , 21, Z_RANGE_MIN, Z_RANGE_MAX, 75, E_RANGE_MIN, E_RANGE_MAX);
114 TH2D hzb0("hzb0", "; cos(#theta_{zenith}); log(beta0)" , 21, Z_RANGE_MIN, Z_RANGE_MAX, 60, E_RANGE_MIN, 3.5);
115
116
118
120
121 multi_pointer_type ps = inputFile.
next();
122
125
126 job.Fill(1.0);
127
128 if (!evt->empty()) {
129
131
132 if (evt->begin() == __end) {
133 continue;
134 }
135
136 if (numberOfPrefits > 0) {
137
138 JEvt::iterator __q = __end;
139
140 advance(__end = evt->begin(), min(numberOfPrefits, (
size_t)
distance(evt->begin(), __q)));
141
143
144 } else {
145
147 }
148
149 if (numberOfPrefits > 0) {
150 advance(__end = evt->begin(), min(numberOfPrefits, evt->size()));
151 }
152
153 for (JEvt::const_iterator fit = evt->begin(); fit != __end; ++fit) {
154
156
157 if (coszenith_range(track.
getDZ()) &&
158 quality_range (fit->getQ()) &&
159 energy_range (fit->getE())) {
160
162 const double Efit = fit->getE();
163
164 ho .Fill(overlays);
166 hz .Fill(track.
getDZ());
168 hzo.Fill(track.
getDZ(), overlays) ;
169 hxy.Fill(track.
getX(), track.
getY());
170 hq .Fill(fit->getQ());
171 hzq.Fill(track.
getDZ(), fit->getQ() );
172
177 }
178
182 }
183 he .Fill(log10(Efit));
185 hze .Fill(track.
getDZ(), log10(Efit) );
186 heo .Fill(log10(Efit), overlays );
187 }
188
189 }
190 }
191 }
192 STATUS(
"Number of events input " << setw(8) << right << job.GetBinContent(1) << endl);
193 out.Write();
194 out.Close();
195}
#define DEBUG(A)
Message macros.
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
double getY() const
Get y position.
double getX() const
Get x position.
double getDZ() const
Get z direction.
Utility class to parse command line options.
counter_type getCounter() const
Get counter.
unsigned int size() const
Get number of hits.
static const int JENERGY_NUMBER_OF_HITS
number of hits see JRECONSTRUCTION::JMuonEnergy
static const int JGANDALF_BETA0_RAD
ile KM3NeT Data Definitions v3.6.1-27-ge2759ac https://git.km3net.de/common/km3net-dataformat
JTrack3E getTrack(const Trk &track)
Get track.
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
counter_type advance(counter_type &counter, const counter_type value, const counter_type limit=std::numeric_limits< counter_type >::max())
Advance counter.
KM3NeT DAQ data structures and auxiliaries.
Auxiliary class to test history.
Empty structure for specification of parser element that is initialised (i.e. does not require input)...
General purpose sorter of fit results.
Auxiliary class for defining the range of iterations of objects.
static counter_type max()
Get maximum counter value.
Auxiliary class to synchronously read DAQ events and Monte Carlo events (and optionally other events)...
virtual bool hasNext() override
Check availability of next element.
virtual const multi_pointer_type & next() override
Get next element.
Reconstruction type dependent comparison of track quality.