76 JParser<> zap(
"Auxiliary program to merge JRunAnalyzer histograms.");
78 zap[
'f'] =
make_field(inputFile,
"input file (output from JRunAnalyzer).");
80 zap[
'w'] =
make_field(weight_mc,
"weight mc events");
85 catch(
const exception &error) {
86 FATAL(error.what() << endl);
89 int min_run = numeric_limits<int>::max(), max_run = 0;
91 size_t min_date = numeric_limits<int>::max(), max_date = 0;
95 double total_mc_livetime = 0;
103 runinfo = *in.next();
105 FATAL(
"MULTIPLE RUN INFO");
108 int run_id = runinfo.
run_id;
122 FATAL(
"NO RUN INFO");
137 time_t tmin = min_date, tmax = max_date;
139 TTimeStamp date_min(tmin, 0);
140 TTimeStamp date_max(tmax, 0);
142 cout <<
"Minimum RUN: " << min_run <<
", "; date_min.Print(
"s");
143 cout <<
"Maximum RUN: " << max_run <<
", "; date_max.Print(
"s");
145 int xbins = (max_run - min_run) + 1;
146 string title = string(
"Data taken from: ") + date_min.AsString(
"s") +
" - " + date_max.AsString(
"s");
148 TH2D* h_pmt_rate_distribution =
new TH2D(
"h_pmt_rate_distribution",
string(title +
"; RUN; PMT Rate Distribution [kHz]").c_str(), xbins, (
double) min_run-0.5, (
double) max_run+0.5,
JDAQRate::getN(), JDAQRate::getData(1.0e-4));
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);
162 TH2D* h_tres =
new TH2D(
"h_tres",
string(title +
";RUN;Time residuals [ns]").c_str(), xbins, (
double) min_run-0.5, (
double) max_run+0.5, 100, -50, 150);
163 TH2D* h_likelihood =
new TH2D (
"h_likelihood",
string(title +
";RUN;Likelihood").c_str(), xbins, (
double) min_run-0.5, (
double) max_run+0.5, 100, -1000, 1000);
164 TH2D* h_beta0 =
new TH2D(
"h_beta0",
string(title +
";RUN;beta0").c_str(), xbins, (
double) min_run-0.5, (
double) max_run+0.5, 20, 0, 1);
165 TH2D* h_energy =
new TH2D (
"h_energy",
string(title +
";RUN;Energy [GeV];").c_str(), xbins, (
double) min_run-0.5, (
double) max_run+0.5, 65, 0, 9);
167 TH2D* h_zenith =
new TH2D(
"h_zenith",
string(title +
";RUN;cosZenith").c_str(), xbins, (
double) min_run-0.5, (
double) max_run+0.5, 20, -1, 1);
168 TH2D* h_azimuth =
new TH2D(
"h_azimuth",
string(title +
";RUN;cosAzimuth").c_str(), xbins, (
double) min_run-0.5, (
double) max_run+0.5, 20, -1, 1);
169 TH2D* h_radial_position =
new TH2D (
"h_radial_position",
string(title +
";RUN;Radial Position [m]").c_str(), xbins, (
double) min_run-0.5, (
double) max_run+0.5, 60, 0, 4.2);
171 TH2D* h_z_position =
new TH2D (
"h_z_position",
string(title +
";RUN;Z Position [m]").c_str(), xbins, (
double) min_run-0.5, (
double) max_run+0.5, 50, 0, 3.2);
176 DEBUG(
"Processing " << *i << endl) ;
181 runinfo = *in.next();
183 FATAL(
"MULTIPLE RUN INFO");
186 FATAL(
"NO RUN INFO");
190 TFile in(i->c_str(),
"read");
192 cout << i->c_str() << endl;
196 TH1D* h1d_prd =
new TH1D();
197 TH1D* h1d_thb =
new TH1D();
198 TH1D* h1d_th =
new TH1D();
199 TH1D* h1d_th3D =
new TH1D();
200 TH1D* h1d_sh =
new TH1D();
201 TH1D* h1d_tosh =
new TH1D();
202 TH1D* h1d_noo =
new TH1D();
203 TH1D* h1d_pdth =
new TH1D();
204 TH1D* h1d_pdsh =
new TH1D();
205 TH1D* h1d_ed =
new TH1D();
206 TH1D* h1d_tr =
new TH1D();
207 TH1D* h1d_lk =
new TH1D();
208 TH1D* h1d_b0 =
new TH1D();
209 TH1D* h1d_en =
new TH1D();
210 TH1D* h1d_zn =
new TH1D();
211 TH1D* h1d_az =
new TH1D();
212 TH1D* h1d_rp =
new TH1D();
213 TH1D* h1d_zp =
new TH1D();
215 in.GetDirectory(
"Detector")->GetObject(
"h_pmt_rate_distribution", h1d_prd);
218 TDirectory* dir = in.GetDirectory(
"JDAQEvent");
220 dir->GetObject(
"h_Trigger_bit_hit", h1d_thb);
223 dir->GetObject(
"h_Triggered_hits", h1d_th);
226 dir->GetObject(
"h_Triggered_hits_3dmuon", h1d_th3D);
229 dir->GetObject(
"h_Snapshot_hits", h1d_sh);
232 dir->GetObject(
"h_Triggered_over_Snapshot_hits", h1d_tosh);
235 dir->GetObject(
"h_Number_of_overlays", h1d_noo);
238 dir->GetObject(
"h_pmt_distribution_triggered_hits", h1d_pdth);
241 dir->GetObject(
"h_pmt_distribution_snapshot_hits", h1d_pdsh);
244 dir->GetObject(
"h_event_duration", h1d_ed);
247 TDirectory* dir_r = in.GetDirectory(
"Reco");
249 dir_r->GetObject(
"h_tres", h1d_tr);
252 dir_r->GetObject(
"h_likelihood", h1d_lk);
255 dir_r->GetObject(
"h_beta0", h1d_b0);
258 dir_r->GetObject(
"h_energy", h1d_en);
261 dir_r->GetObject(
"h_zenith", h1d_zn);
264 dir_r->GetObject(
"h_azimuth", h1d_az);
267 dir_r->GetObject(
"h_radial_position", h1d_rp);
270 dir_r->GetObject(
"h_z_position", h1d_zp);
277 outputFile.put(*h_pmt_distribution_snapshot_hits);
278 outputFile.put(*h_pmt_distribution_triggered_hits);
280 outputFile.put(*h_Triggered_over_Snapshot_hits);
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
Utility class to parse command line options.
General purpose class for object reading from a list of file names.
Object reading from a list of files.
int getRunNumber() const
Get run number.
JDAQUTCExtended getTimesliceStart() const
Get start of timeslice.
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.
static const unsigned int NUMBER_OF_TRIGGER_BITS
Number of trigger bits.
static const int NUMBER_OF_PMTS
Total number of PMTs in module.