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.