64{
68
73
74 try {
75
76 JParser<> zap(
"Auxiliary program to merge JRunAnalyzer histograms.");
77
78 zap[
'f'] =
make_field(inputFile,
"input file (output from JRunAnalyzer).");
82
84 }
85 catch(const exception &error) {
87 }
88
90
92
94
96 int run = 0;
97
99
100 {
102 if(in.hasNext()){
104 if(in.hasNext()){
105 FATAL(
"MULTIPLE RUN INFO");
106 }
107
109
110 if(run_id != run){
111
112 run = run_id;
113
115
116 } else {
117
119 }
120
121 } else {
122 FATAL(
"NO RUN INFO");
123 }
124 }
125
127
129
134 }
135 }
136
138
141
144
146 string title = string(
"Data taken from: ") +
date_min.AsString(
"s") +
" - " +
date_max.AsString(
"s");
147
149 TH2D* h_Trigger_bit_hit =
new TH2D(
"h_Trigger_bit_hit",
string(title +
"; RUN; Hits trigger bit").c_str(),
xbins, (
double)
min_run-0.5, (
double)
max_run+0.5, NUMBER_OF_TRIGGER_BITS, -0.5, NUMBER_OF_TRIGGER_BITS - 0.5);
150 TH2D* h_Triggered_hits =
new TH2D(
"h_Triggered_hits",
string(title +
"; RUN; Number of triggered hits").c_str(),
xbins, (
double)
min_run-0.5, (
double)
max_run+0.5, 50, 0, 4);
152 TH2D* h_Triggered_hits_3dmuon =
new TH2D(
"h_Triggered_hits_3dmuon",
string(title +
"; RUN; Number of triggered hits - JTRIGGER3DMUON").c_str(),
xbins, (
double)
min_run-0.5, (
double)
max_run+0.5, 50, 0, 3);
154 TH2D* h_Snapshot_hits =
new TH2D(
"h_Snapshot_hits",
string(title +
"; RUN; Number of snapshot hits").c_str(),
xbins, (
double)
min_run-0.5, (
double)
max_run+0.5, 50, 0, 4);
156 TH2D* h_Triggered_over_Snapshot_hits =
new TH2D(
"h_Triggered_over_Snapshot_hits",
string(title +
"; RUN; Triggered/Snapshot hits").c_str(),
xbins, (
double)
min_run-0.5, (
double)
max_run+0.5, 100, 0, 0.5);
157 TH2D* h_Number_of_overlays =
new TH2D(
"h_Number_of_overlays",
string(title +
";RUN;Number of Overlays").c_str(),
xbins, (
double)
min_run-0.5, (
double)
max_run+0.5, 1000, -0.5, 1000 - 0.5);
158 TH2D* h_pmt_distribution_triggered_hits =
new TH2D(
"h_pmt_distribution_triggered_hits",
string(title +
";RUN;Normalised PMT Distrib triggered hits (upper PMTs=[0-11])").c_str(),
xbins, (
double)
min_run-0.5, (
double)
max_run+0.5, NUMBER_OF_PMTS, -0.5 , NUMBER_OF_PMTS - 0.5);
159 TH2D* h_pmt_distribution_snapshot_hits =
new TH2D(
"h_pmt_distribution_snapshot_hits",
string(title +
";RUN; Normalised PMT Distrib snapshot hits (upper PMTs=[0-11])").c_str(),
xbins, (
double)
min_run-0.5, (
double)
max_run+0.5, NUMBER_OF_PMTS, -0.5 , NUMBER_OF_PMTS - 0.5);
160 TH2D* h_event_duration =
new TH2D(
"h_event_duration",
string(title +
";RUN;Event Duration [ns]").c_str(),
xbins, (
double)
min_run-0.5, (
double)
max_run+0.5, 60, 1, 6);
173
175
177
178 {
180 if(in.hasNext()){
182 if(in.hasNext()){
183 FATAL(
"MULTIPLE RUN INFO");
184 }
185 } else {
186 FATAL(
"NO RUN INFO");
187 }
188 }
189
190 TFile in(i->c_str(),
"read");
191
193
195
214
215 in.GetDirectory(
"Detector")->GetObject(
"h_pmt_rate_distribution",
h1d_prd);
217
218 TDirectory* dir = in.GetDirectory(
"JDAQEvent");
219
220 dir->GetObject(
"h_Trigger_bit_hit",
h1d_thb);
222
223 dir->GetObject(
"h_Triggered_hits",
h1d_th);
225
226 dir->GetObject(
"h_Triggered_hits_3dmuon",
h1d_th3D);
228
229 dir->GetObject(
"h_Snapshot_hits",
h1d_sh);
231
232 dir->GetObject(
"h_Triggered_over_Snapshot_hits",
h1d_tosh);
234
235 dir->GetObject(
"h_Number_of_overlays",
h1d_noo);
237
238 dir->GetObject(
"h_pmt_distribution_triggered_hits",
h1d_pdth);
240
241 dir->GetObject(
"h_pmt_distribution_snapshot_hits",
h1d_pdsh);
243
244 dir->GetObject(
"h_event_duration",
h1d_ed);
246
247 if (in.GetKey("Reco")) {
249
252
255
258
261
264
267
270
273 }
274 }
275
277
279 outputFile.put(*h_pmt_distribution_snapshot_hits);
280 outputFile.put(*h_pmt_distribution_triggered_hits);
282 outputFile.put(*h_Triggered_over_Snapshot_hits);
295
297
299
301}
void fill2DHistogram(int run, TH1D *h1, TH2D *h2, bool w_mc, double daq_livetime=1, double mc_livetime=1)
#define DEBUG(A)
Message macros.
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
int getRunNumber() const
Get run number.
JDAQUTCExtended getTimesliceStart() const
Get start of timeslice.
static int getN()
Get number of bins.
static const double * getData(const double factor=1.0)
Get abscissa values.
uint32_t getUTCseconds() const
Get major time.
void setLogarithmicY(TList *list)
Make y-axis of objects in list logarithmic (e.g. after using log10()).
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
KM3NeT DAQ data structures and auxiliaries.