67   using namespace KM3NETDAQ;
 
   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;
 
  114           total_mc_livetime = runinfo.mc_livetime;
 
  118         total_mc_livetime += runinfo.mc_livetime;
 
  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;
 
  194     int run = runinfo.run_id;
 
  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);
 
  216     fill2DHistogram(run, h1d_prd, h_pmt_rate_distribution, weight_mc, runinfo.daq_livetime, total_mc_livetime);
 
  218     TDirectory* dir = 
in.GetDirectory(
"JDAQEvent");
 
  220     dir->GetObject(
"h_Trigger_bit_hit", h1d_thb);
 
  221     fill2DHistogram(run, h1d_thb, h_Trigger_bit_hit, weight_mc, runinfo.daq_livetime, total_mc_livetime);
 
  223     dir->GetObject(
"h_Triggered_hits", h1d_th);
 
  224     fill2DHistogram(run, h1d_th, h_Triggered_hits, weight_mc, runinfo.daq_livetime, total_mc_livetime);
 
  226     dir->GetObject(
"h_Triggered_hits_3dmuon", h1d_th3D);
 
  227     fill2DHistogram(run, h1d_th3D, h_Triggered_hits_3dmuon, weight_mc, runinfo.daq_livetime, total_mc_livetime);
 
  229     dir->GetObject(
"h_Snapshot_hits", h1d_sh);
 
  230     fill2DHistogram(run, h1d_sh, h_Snapshot_hits, weight_mc, runinfo.daq_livetime, total_mc_livetime);
 
  232     dir->GetObject(
"h_Triggered_over_Snapshot_hits", h1d_tosh);
 
  233     fill2DHistogram(run, h1d_tosh, h_Triggered_over_Snapshot_hits, weight_mc, runinfo.daq_livetime, total_mc_livetime);
 
  235     dir->GetObject(
"h_Number_of_overlays", h1d_noo);
 
  236     fill2DHistogram(run, h1d_noo, h_Number_of_overlays, weight_mc, runinfo.daq_livetime, total_mc_livetime);
 
  238     dir->GetObject(
"h_pmt_distribution_triggered_hits", h1d_pdth);
 
  239     fill2DHistogram(run, h1d_pdth, h_pmt_distribution_triggered_hits, weight_mc, runinfo.daq_livetime, total_mc_livetime);
 
  241     dir->GetObject(
"h_pmt_distribution_snapshot_hits", h1d_pdsh);
 
  242     fill2DHistogram(run, h1d_pdsh, h_pmt_distribution_snapshot_hits, weight_mc, runinfo.daq_livetime, total_mc_livetime);
 
  244     dir->GetObject(
"h_event_duration", h1d_ed);
 
  245     fill2DHistogram(run, h1d_ed, h_event_duration, weight_mc, runinfo.daq_livetime, total_mc_livetime);
 
  247     TDirectory* dir_r = 
in.GetDirectory(
"Reco");
 
  249     dir_r->GetObject(
"h_tres", h1d_tr);
 
  250     fill2DHistogram(run, h1d_tr, h_tres, weight_mc, runinfo.daq_livetime, total_mc_livetime);
 
  252     dir_r->GetObject(
"h_likelihood", h1d_lk);
 
  253     fill2DHistogram(run, h1d_lk, h_likelihood, weight_mc, runinfo.daq_livetime, total_mc_livetime);
 
  255     dir_r->GetObject(
"h_beta0", h1d_b0);
 
  256     fill2DHistogram(run, h1d_b0, h_beta0, weight_mc, runinfo.daq_livetime, total_mc_livetime);
 
  258     dir_r->GetObject(
"h_energy", h1d_en);
 
  259     fill2DHistogram(run, h1d_en, h_energy, weight_mc, runinfo.daq_livetime, total_mc_livetime);
 
  261     dir_r->GetObject(
"h_zenith", h1d_zn);
 
  262     fill2DHistogram(run, h1d_zn, h_zenith, weight_mc, runinfo.daq_livetime, total_mc_livetime);
 
  264     dir_r->GetObject(
"h_azimuth", h1d_az);
 
  265     fill2DHistogram(run, h1d_az, h_azimuth, weight_mc, runinfo.daq_livetime, total_mc_livetime);
 
  267     dir_r->GetObject(
"h_radial_position", h1d_rp);
 
  268     fill2DHistogram(run, h1d_rp, h_radial_position, weight_mc, runinfo.daq_livetime, total_mc_livetime);
 
  270     dir_r->GetObject(
"h_z_position", h1d_zp);
 
  271     fill2DHistogram(run, h1d_zp, h_z_position, weight_mc, runinfo.daq_livetime, total_mc_livetime);
 
  277   outputFile.put(*h_pmt_distribution_snapshot_hits);
 
  278   outputFile.put(*h_pmt_distribution_triggered_hits);
 
  280   outputFile.put(*h_Triggered_over_Snapshot_hits);
 
Utility class to parse command line options. 
 
JDAQUTCExtended getTimesliceStart() const 
Get start of timeslice. 
 
static const unsigned int NUMBER_OF_TRIGGER_BITS
Number of trigger bits. 
 
int getRunNumber() const 
Get run number. 
 
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object 
 
JUINT32_t getUTCseconds() const 
Get time. 
 
void setLogarithmicY(TList *list)
Make y-axis of objects in list logarithmic (e.g. after using log10()). 
 
void fill2DHistogram(int run, TH1D *h1, TH2D *h2, bool w_mc, double daq_livetime=1, double mc_livetime=1)
 
General purpose class for object reading from a list of file names. 
 
Object reading from a list of files. 
 
static const int NUMBER_OF_PMTS
Total number of PMTs in module. 
 
then fatal Wrong number of arguments fi set_variable DETECTOR $argv[1] set_variable INPUT_FILE $argv[2] eval JPrintDetector a $DETECTOR O IDENTIFIER eval JPrintDetector a $DETECTOR O SUMMARY JAcoustics sh $DETECTOR_ID source JAcousticsToolkit sh CHECK_EXIT_CODE typeset A EMITTERS get_tripods $WORKDIR tripod txt EMITTERS get_transmitters $WORKDIR transmitter txt EMITTERS for EMITTER in
 
#define DEBUG(A)
Message macros.