1 #ifndef __JRUNHISTOGRAMS__ 
    2 #define __JRUNHISTOGRAMS__ 
   25 #include "TProfile2D.h" 
   28 #include "TPaveText.h" 
   33 #include "TDirectory.h" 
   35 #include "TObjArray.h" 
   36 #include "TObjString.h" 
   39 using namespace KM3NETDAQ ;
 
   40 using namespace JLANG ;   
 
   42 using namespace JSUPPORT ;
 
   52   TAxis *axis      = h->GetXaxis();
 
   53   int bins         = axis->GetNbins();
 
   54   Axis_t from      = axis->GetXmin();
 
   55   Axis_t to        = axis->GetXmax();
 
   56   Axis_t width     = (to - from) / bins;
 
   57   Axis_t *new_bins = 
new Axis_t[bins + 1];
 
   59   for (
int i = 0; i <= bins; i++) {
 
   60     new_bins[i] = TMath::Power(10, from + i * width);
 
   63   axis->Set(bins, new_bins);
 
   77   TAxis *axis      = h->GetYaxis();
 
   78   int bins         = axis->GetNbins();
 
   79   Axis_t from      = axis->GetXmin();
 
   80   Axis_t to        = axis->GetXmax();
 
   81   Axis_t width     = (to - from) / bins;
 
   82   Axis_t *new_bins = 
new Axis_t[bins + 1];
 
   84   for (
int i = 0; i <= bins; i++) {
 
   85     new_bins[i] = TMath::Power(10, from + i * width);
 
   88   axis->Set(bins, new_bins);
 
   93 double binsToT[] = {-0.5 , 0.5 , 1.5 , 2.5 , 3.5 , 4.5 , 5.5 , 6.5 , 7.5 , 8.5 , 9.5 , 10.5 , 11.5 , 12.5 , 13.5 , 14.5 , 15.5 , 
 
   94                     16.5 , 17.5 , 18.5 , 19.5 , 20.5 , 21.5 , 22.5 , 23.5 , 24.5 , 25.5 , 26.5 , 27.5 , 28.5 , 30.5 , 32.5 , 34.5 , 
 
   95                     36.5 , 38.5 , 40.5 , 45.5 , 50.5 , 55.5 , 60.5 , 65.5 , 70.5 , 75.5 , 80.5 , 85.5 , 90.5 , 95.5 , 100.5 , 120.5 , 140.5 , 
 
   96                     160.5 , 180.5 , 200.5 , 254.5 , 255.5 , 256.5}; 
 
  109   for(
int i=0 ; i < h->GetNbinsX() ; i++){
 
  111     double width = h -> GetXaxis() -> GetBinWidth(i);
 
  113     h -> SetBinContent(i , h -> GetBinContent(i) / width);
 
  114     h -> SetBinError  (i , h -> GetBinError(i)   / width);
 
  139     h_fifo_per_dom                   = NULL;
 
  140     h_daq_status_per_dom             = NULL;
 
  141     h_hrv_per_dom                    = NULL;
 
  142     h_rate_summary                   = NULL;
 
  143     h_pmt_rate_distribution          = NULL;
 
  144     h_dom_rate_distribution          = NULL;
 
  145     m_mean_summary_rate              = NULL;
 
  146     m_mean_summary_rate_distribution = NULL;
 
  147     m_summary_rate_distribution      = NULL;
 
  155     init_h_fifo_per_dom                   (du_ids , modules_per_string);
 
  156     init_h_daq_status_per_dom             (du_ids , modules_per_string);
 
  157     init_h_hrv_per_dom                    (du_ids , modules_per_string);
 
  158     init_h_rate_summary                   (du_ids , modules_per_string);
 
  159     init_h_pmt_rate_distribution          ();
 
  160     init_h_dom_rate_distribution          ();
 
  161     init_m_mean_summary_rate              (modules_per_string);
 
  162     init_m_mean_summary_rate_distribution ();
 
  163     init_m_summary_rate_distribution      ();
 
  175     string title = 
MAKE_STRING (
" FIFO ; String ; Floor ; Number of slices with FIFO almost full ");
 
  177     h_fifo_per_dom = 
new TH2D (name.c_str() , title.c_str() , *du_ids.rbegin() , 0.5 , *du_ids.rbegin() + 0.5 , modules_per_string , 0.5 , modules_per_string + 0.5 );
 
  189     string title = 
MAKE_STRING (
" DAQ Status ; String ; Floor ; Number of slices with wrong DAQ status of packets ");
 
  191     h_daq_status_per_dom = 
new TH2D (name.c_str() , title.c_str() , *du_ids.rbegin() , 0.5 , *du_ids.rbegin() + 0.5 , modules_per_string , 0.5 , modules_per_string + 0.5 );
 
  203     string title = 
MAKE_STRING (
"HRV ; String ; Floor ; Number of slices with at least 1 PMT in HRV");
 
  205     h_hrv_per_dom = 
new TH2D (name.c_str() , title.c_str() , *du_ids.rbegin() , 0.5 , *du_ids.rbegin() + 0.5 , modules_per_string , 0.5 , modules_per_string + 0.5 );
 
  217     string title = 
MAKE_STRING (
"Summary slices ; String ; Floor ; Mean rate over all summary slices [kHz]");
 
  219     h_rate_summary = 
new TH2D (name.c_str() , title.c_str() , *du_ids.rbegin() , 0.5 , *du_ids.rbegin() + 0.5 , modules_per_string , 0.5 , modules_per_string + 0.5 );
 
  228     string title = 
MAKE_STRING (
"PMT rate distribution from summary slices ; rate [kHz] ; Counts");    
 
  230     h_pmt_rate_distribution = 
new TH1D (name.c_str() , title.c_str() , 40 , 0 , log10(1000));
 
  232     BinLogX (h_pmt_rate_distribution);
 
  234     h_pmt_rate_distribution -> SetMinimum(1);
 
  243     string title = 
MAKE_STRING (
"DOM rate distribution from summary slices ; rate [kHz] ; Counts");    
 
  245     h_dom_rate_distribution = 
new TH1D (name.c_str() , title.c_str() , 50 , log10(50) , log10(50000));
 
  247     BinLogX (h_dom_rate_distribution);
 
  249     h_dom_rate_distribution -> SetMinimum(1);
 
  260     string title = 
MAKE_STRING (
" ; rate [kHz] ; # PMTs");
 
  262     TH1D* h = 
new TH1D(name.c_str() , title.c_str() , 40 , 0 , log10(1000));
 
  277     string title = 
MAKE_STRING (
" ; TDC Channel ; Floor ; rate [kHz]");
 
  289       string title = 
MAKE_STRING (
"Summaryslice ; TDC channel ; rate [kHz] ; counts");    
 
  291       TH2D* h_summary_rate_distribution = 
new TH2D (name.c_str() , title.c_str(),
 
  293                                                     100 , -1 , log10(10000));
 
  295       BinLogY (h_summary_rate_distribution);
 
  334     h_dom_mean_rates         .resize (number_of_timeslice_types , NULL);
 
  335     m_mean_ToT               .resize (number_of_timeslice_types , NULL);
 
  336     m_mean_ToT_distribution  .resize (number_of_timeslice_types , NULL);
 
  337     m_pmt_tot_distributions  .resize (number_of_timeslice_types , NULL);
 
  338     m_pmt_rate_distributions .resize (number_of_timeslice_types , NULL);
 
  351     init_h_dom_mean_rates          (ts_type , du_ids , modules_per_string , ts_name);
 
  352     init_m_mean_ToT                (ts_type , modules_per_string , ts_name);
 
  353     init_m_mean_ToT_distribution   (ts_type , ts_name);
 
  354     init_m_pmt_tot_distributions   (ts_type , ts_name);
 
  355     init_m_pmt_rate_distributions  (ts_type , ts_name);
 
  369     for (
typename vector < 
JManager < string , TH2D >* >::const_iterator it = m_pmt_tot_distributions.begin() ; it != m_pmt_tot_distributions.end() ; ++it , ++i){
 
  376           TPRegexp 
r (
"(\\w+)/(\\DU)(\\d+)/(F)(\\d+)");
 
  378           TObjArray* 
o = r.MatchS(s);
 
  380           int String = ((TObjString *)o->At(3))->GetString().Atoi();
 
  381           int Floor  = ((TObjString *)o->At(5))->GetString().Atoi();
 
  383           for (
int pmt = 1 ; pmt <= (
j -> second) -> GetXaxis() -> GetNbins() ; pmt++){
 
  385             (*m_mean_ToT[i])[
MAKE_STRING(
"Detector/DU" + 
to_string(String))] -> Fill((
j->second) -> GetXaxis() -> GetBinCenter(pmt) , Floor , (
j -> second) -> ProjectionY (
"" , pmt , pmt) -> GetMean () );
 
  386             (*m_mean_ToT_distribution[i])[
MAKE_STRING(
"Detector/DU" + 
to_string(String))] -> Fill((
j -> second) -> ProjectionY (
"" , pmt , pmt) -> GetMean () );            
 
  403     string title = 
MAKE_STRING (ts_name + 
" ; DU number ; Floor number ; time slice averaged rate [Hz]");
 
  405     h_dom_mean_rates[ts_type] = 
new TH2D (name.c_str() , title.c_str() , *du_ids.rbegin() , 0.5 , *du_ids.rbegin() + 0.5 , modules_per_string , 0.5 , 0.5 + modules_per_string);
 
  418     string title = 
MAKE_STRING (ts_name + 
" ; TDC channel ; Floor number ; mean ToT [ns] ");
 
  433     string title = 
MAKE_STRING (ts_name + 
" ; ToT [ns] ; # PMTS ");
 
  435     m_mean_ToT_distribution[ts_type] = 
new JManager < string , TH1D > (
new TH1D (name.c_str() , title.c_str() , 255 , 0.5 , 255.5));
 
  447     string title = 
MAKE_STRING (ts_name + 
" ; TDC channel ; ToT [ns] ; counts");
 
  466       string title = 
MAKE_STRING (ts_name + 
" ; TDC channel ; rate [kHz] ; counts ");    
 
  468       TH2D* h_pmt_rate_distributions = 
new TH2D (name.c_str() , title.c_str(),
 
  470                                                  60 , -6 , log10(1000));
 
  472       BinLogY (h_pmt_rate_distributions);
 
  505     h_Trigger_bit_event               = NULL;
 
  506     h_Trigger_bit_hit                 = NULL;
 
  507     h_Trigger_time                    = NULL;
 
  508     h_Snapshot_hits                   = NULL;
 
  509     h_Triggered_hits                  = NULL;
 
  510     h_Number_of_overlays              = NULL;
 
  511     h_Snapshot_hits_per_module        = NULL;
 
  512     h_Triggered_hits_per_module       = NULL;
 
  513     m_Snapshot_hits_per_pmt           = NULL;
 
  514     h_pmt_distribution_triggered_hits = NULL;
 
  515     h_tot_distribution_triggered_hits = NULL;
 
  516     h_pmt_distribution_snapshot_hits  = NULL;
 
  517     h_tot_distribution_snapshot_hits  = NULL;
 
  528     init_h_Trigger_bit_event              ();
 
  529     init_h_Trigger_bit_hit                ();
 
  530     init_h_Trigger_time                   ();
 
  531     init_h_Snapshot_hits                  ();
 
  532     init_h_Triggered_hits                 ();
 
  533     init_h_Number_of_overlays             ();
 
  534     init_h_Snapshot_hits_per_module       (modules_per_string , du_ids);
 
  535     init_h_Triggered_hits_per_module      (modules_per_string , du_ids);
 
  536     init_m_Snapshot_hits_per_pmt          (modules_per_string);
 
  537     init_h_pmt_distribution_triggered_hits();
 
  538     init_h_tot_distribution_triggered_hits();
 
  539     init_h_pmt_distribution_snapshot_hits ();
 
  540     init_h_tot_distribution_snapshot_hits ();
 
  549     string title = 
MAKE_STRING (
"Number of events as a function of trigger bit in event ; Trigger Bit ; Counts ");
 
  557         h_Trigger_bit_event -> GetXaxis() -> SetBinLabel(i+1 , 
getTriggerName(i) );
 
  561         h_Trigger_bit_event -> GetXaxis() -> SetBinLabel(i+1 , 
"" );
 
  565      h_Trigger_bit_event -> GetXaxis() -> LabelsOption(
"v"); 
 
  575     string title = 
MAKE_STRING (
"Number of hits per event as a function of trigger bit in hit ; Trigger Bit ; #Events ");
 
  583         h_Trigger_bit_hit -> GetXaxis() -> SetBinLabel(i+1 , 
getTriggerName(i) );
 
  586         h_Trigger_bit_hit -> GetXaxis() -> SetBinLabel(i+1 , 
"" );
 
  590      h_Trigger_bit_hit -> GetXaxis() -> LabelsOption(
"v"); 
 
  600     string title = 
MAKE_STRING (
"Time of first triggered hit ; time [ms] ; #Events ");
 
  602     h_Trigger_time = 
new TH1D (name.c_str() , title.c_str() , 50, -0.5, 100.5 );
 
  612     string title = 
MAKE_STRING (
" ; Number of snapshot hits; Events ");
 
  614     h_Snapshot_hits = 
new TH1D (name.c_str() , title.c_str() , 50, 0, 4 );
 
  625     string title = 
MAKE_STRING (
" ; Number of triggered hits; Events ");
 
  627     h_Triggered_hits = 
new TH1D (name.c_str() , title.c_str() , 50 , 0, 4 );
 
  638     string title = 
MAKE_STRING (
" ; Number of overlays; Events ");
 
  640     int MAX_OVERLAYS = 1000;
 
  642     h_Number_of_overlays = 
new TH1D (name.c_str() , title.c_str() , MAX_OVERLAYS , -0.5, MAX_OVERLAYS - 0.5 );
 
  653     string title = 
MAKE_STRING (
" ; String ; Floor ; Number of snapshot hits ");
 
  655     h_Snapshot_hits_per_module = 
new TH2D (name.c_str() , title.c_str() ,
 
  656                                            *du_ids.rbegin() , 0.5 , *du_ids.rbegin() + 0.5 ,
 
  657                                            modules_per_string , 0.5 , modules_per_string + 0.5 );
 
  668     string title = 
MAKE_STRING (
" ; String ; Floor ; Number of triggered hits ");
 
  670     h_Triggered_hits_per_module = 
new TH2D (name.c_str() , title.c_str() ,
 
  671                                            *du_ids.rbegin() , 0.5 , *du_ids.rbegin() + 0.5 ,
 
  672                                            modules_per_string , 0.5 , modules_per_string + 0.5 );
 
  683     string title = 
MAKE_STRING (
" ; TDC Channel ; Floor ; Number of snapshot hits ");
 
  686                                                                          modules_per_string , 0.5 , modules_per_string + 0.5 ) );
 
  697     string title = 
MAKE_STRING (
" ; TDC Channel ; Counts [a.u.]");
 
  708     string title = 
MAKE_STRING (
" ; ToT [ns] ; Counts [a.u.]");
 
  710     h_tot_distribution_triggered_hits = 
new TH1D (name.c_str() , title.c_str() , 
nbinsToT , 
binsToT);
 
  720     string title = 
MAKE_STRING (
" ; TDC Channel ; Counts [a.u.]");
 
  732     string title = 
MAKE_STRING (
" ; ToT [ns] ; Counts [a.u.]");
 
  734     h_tot_distribution_snapshot_hits = 
new TH1D (name.c_str() , title.c_str() , 
nbinsToT , 
binsToT);
 
  770     h_summary.initialize(du_ids , modules_per_string);
 
  783     const string   prefix = 
"KM3NETDAQ::JDAQ" ;
 
  784     string        ts_name = T::Class_Name();
 
  785     string::size_type pos = ts_name.find(prefix);
 
  787     if (pos != string::npos) ts_name.replace(ts_name.find(prefix) , prefix.length() , 
"");
 
  789     h_timeslice.initialize(du_ids , modules_per_string , index , ts_name);
 
  797     h_trigger.initialize (du_ids , modules_per_string);
 
  810     if(f.GetDirectory(dirname.c_str()) == 0) f.mkdir (dirname.c_str());
 
  812     f.cd (dirname.c_str());
 
  814     for (
int i=0 ; i < (int)table.size(); i++){
 
  816       for (
int j=0 ; 
j< (int)table[i].size(); 
j++){
 
  818         if (table[i][
j]) table [i][
j] -> Write();
 
  833     if(f.GetDirectory(dirname.c_str()) == 0) f.mkdir (dirname.c_str());
 
  835     f.cd (dirname.c_str());
 
  837     for (
int i=0 ; i < (int)table.size(); i++){
 
  839       if (table[i]) table[i] -> Write();
 
  850   template <
class T , 
class V>
 
  853     if(f.GetDirectory(dirname.c_str()) == 0) f.mkdir (dirname.c_str());
 
  855     f.cd (dirname.c_str());
 
  859       i -> second -> Write();
 
  868   template <
class T , 
class V>
 
  873       if (i -> second -> GetTitle()){
 
  875         std::string     buffer = i -> second -> GetTitle();
 
  876         string::size_type ipos = buffer.find(wc);
 
  878         if (ipos!=std::string::npos){
 
  884           buffer.replace(ipos, 1, os.str());
 
  886           i -> second -> SetTitle(buffer.c_str());
 
  897   template < 
class T , 
class V >
 
  902       std::string fullpath = 
MAKE_STRING(i->second->GetName());
 
  904       int          pos = fullpath.rfind (
'/');
 
  905       std::string 
name = fullpath.substr (pos + 1);
 
  906       std::string 
path = fullpath.substr (0 , pos);
 
  908       if (f.GetDirectory(path.c_str()) == 0) f.mkdir (path.c_str());
 
  912       i -> second -> SetName(name.c_str());
 
  913       i -> second -> Write();
 
  922   template < 
class T , 
class V >
 
  931           std::string fullpath = 
MAKE_STRING(
j-> second -> GetName());
 
  933           int          pos = fullpath.rfind  (
'/');
 
  934           std::string 
name = fullpath.substr (pos + 1);
 
  935           std::string 
path = fullpath.substr (0 , pos);
 
  937           if (f.GetDirectory(path.c_str()) == 0) f.mkdir (path.c_str());
 
  941           j -> second -> SetName(name.c_str());
 
  942           j -> second -> Write();
 
  957     if (h_summary.h_fifo_per_dom)          h_summary.h_fifo_per_dom          -> Write();
 
  958     if (h_summary.h_daq_status_per_dom)    h_summary.h_daq_status_per_dom    -> Write();
 
  959     if (h_summary.h_hrv_per_dom)           h_summary.h_hrv_per_dom           -> Write();
 
  960     if (h_summary.h_rate_summary)          h_summary.h_rate_summary          -> Write();
 
  961     if (h_summary.h_pmt_rate_distribution) h_summary.h_pmt_rate_distribution -> Write();
 
  962     if (h_summary.h_dom_rate_distribution) h_summary.h_dom_rate_distribution -> Write();
 
  964     Write_histogram_table_to_file(f , 
MAKE_STRING(
"Detector/DOM_mean_rates")          , h_timeslice.h_dom_mean_rates);
 
  966     for (
typename vector < 
JManager < string , TH2D >* >::const_iterator i = h_timeslice.m_pmt_tot_distributions.begin() ; i != h_timeslice.m_pmt_tot_distributions.end() ; ++i){
 
  972           for(
int k=1 ; 
k < 
j -> second -> GetNbinsX() ; ++
k){
 
  974             for(
int t=1 ; t < 
j -> second -> GetNbinsY() ; ++t){
 
  976               double width = 
j -> second -> GetYaxis() -> GetBinWidth(t);
 
  978               j -> second -> SetBinContent(
k,t,
j -> second -> GetBinContent(
k,t) / width);
 
  979               j -> second -> SetBinError(
k,t,
j -> second -> GetBinError(
k,t) / width);
 
  986     Write_manager_table_in_key_dir (f , h_timeslice.m_pmt_tot_distributions);
 
  987     Write_manager_table_in_key_dir (f , h_timeslice.m_pmt_rate_distributions);
 
  988     if (h_summary.m_summary_rate_distribution) Write_manager_in_key_dir (f , h_summary.m_summary_rate_distribution);
 
  990     if (h_summary.m_mean_summary_rate)              Write_manager_in_key_dir( f , h_summary.m_mean_summary_rate);
 
  991     if (h_summary.m_mean_summary_rate_distribution) Write_manager_in_key_dir( f , h_summary.m_mean_summary_rate_distribution);
 
  993     h_timeslice.Fill_mean_ToT_histograms();
 
  995     Write_manager_table_in_key_dir (f , h_timeslice.m_mean_ToT);
 
  996     Write_manager_table_in_key_dir (f , h_timeslice.m_mean_ToT_distribution);
 
 1001     if (h_trigger.h_Trigger_bit_event) h_trigger.h_Trigger_bit_event -> Write(); 
 
 1002     if (h_trigger.h_Trigger_bit_hit)   h_trigger.h_Trigger_bit_hit   -> Write(); 
 
 1003     if (h_trigger.h_Trigger_time)      h_trigger.h_Trigger_time      -> Write();
 
 1005     f.mkdir (
MAKE_STRING (
"JDAQEvent/hits_per_event").c_str());
 
 1006     f.cd    (
"JDAQEvent/hits_per_event");
 
 1008     if (h_trigger.h_Triggered_hits)      h_trigger.h_Triggered_hits     -> Write(); 
 
 1009     if (h_trigger.h_Snapshot_hits)       h_trigger.h_Snapshot_hits      -> Write();
 
 1010     if (h_trigger.h_Number_of_overlays)  h_trigger.h_Number_of_overlays -> Write();
 
 1012     f.mkdir ( 
MAKE_STRING (
"JDAQEvent/hits_pmt_distributions").c_str());
 
 1013     f.cd    (
"JDAQEvent/hits_pmt_distributions");
 
 1015     if (h_trigger.h_pmt_distribution_triggered_hits) {h_trigger.h_pmt_distribution_triggered_hits -> Write();}
 
 1016     if (h_trigger.h_pmt_distribution_snapshot_hits)  {h_trigger.h_pmt_distribution_snapshot_hits  -> Write();}
 
 1018     f.mkdir ( 
MAKE_STRING (
"JDAQEvent/hits_tot_distributions").c_str());
 
 1019     f.cd    (
"JDAQEvent/hits_tot_distributions");
 
 1021     if (h_trigger.h_tot_distribution_triggered_hits) {
normalizeBW1D (h_trigger.h_tot_distribution_triggered_hits) ; h_trigger.h_tot_distribution_triggered_hits-> Write();}
 
 1022     if (h_trigger.h_tot_distribution_snapshot_hits)  {
normalizeBW1D (h_trigger.h_tot_distribution_snapshot_hits)  ; h_trigger.h_tot_distribution_snapshot_hits -> Write();}
 
 1026     if (h_trigger.h_Triggered_hits_per_module) { h_trigger.h_Triggered_hits_per_module-> Write();}
 
 1027     if (h_trigger.h_Snapshot_hits_per_module)  { h_trigger.h_Snapshot_hits_per_module -> Write();}
 
 1029     if (h_trigger.m_Snapshot_hits_per_pmt) Write_manager_in_key_dir(f , h_trigger.m_Snapshot_hits_per_pmt);
 
TH1D * h_pmt_distribution_snapshot_hits
 
void init_h_dom_mean_rates(int ts_type, std::set< int > du_ids, int modules_per_string, std::string ts_name)
 
TH2D * h_Snapshot_hits_per_module
 
then fatal No hydrophone data file $HYDROPHONE_TXT fi sort gr k
 
void init_h_rate_summary(set< int > &du_ids, int modules_per_string)
 
void init_h_fifo_per_dom(std::set< int > &du_ids, int modules_per_string)
 
void init_h_Trigger_time()
 
ROOT TTree parameter settings of various packages. 
 
static const unsigned int NUMBER_OF_TRIGGER_BITS
Number of trigger bits. 
 
TH1D * h_pmt_distribution_triggered_hits
 
vector< JManager< string, TH2D > * > m_pmt_tot_distributions
 
JManager< string, TH1D > * m_mean_summary_rate_distribution
 
void Write_histogram_table_to_file(TFile &f, string dirname, vector< T * > table)
 
vector< TH2D * > h_dom_mean_rates
 
void init_h_Trigger_bit_event()
 
TH1D * h_Number_of_overlays
 
void init_h_Triggered_hits_per_module(int modules_per_string, std::set< int > &du_ids)
 
TH2D * h_Triggered_hits_per_module
 
void init_h_Snapshot_hits_per_module(int modules_per_string, std::set< int > &du_ids)
 
std::set< int > getStringIDs(const JDetector &detector)
Get list of strings IDs. 
 
void initialize(std::set< int > &du_ids, int modules_per_string)
 
then echo Enter input within $TIMEOUT_S seconds echo n User name
 
void initialize(std::set< int > &du_ids, int modules_per_string)
 
TH2D * h_daq_status_per_dom
 
Dynamic ROOT object management. 
 
void initialize_summary_histograms()
 
JManager< string, TH2D > * m_mean_summary_rate
 
void init_m_mean_ToT_distribution(int ts_type, string ts_name)
 
then echo The file $DIR KM3NeT_00000001_00000000 root already please rename or remove it first
 
TH1D * h_dom_rate_distribution
 
#define MAKE_STRING(A)
Make string. 
 
void Fill_mean_ToT_histograms()
 
do cat driver txt<< EOFevent ev_configure{RC_EVT%< ev_configure.txt > RC_DWRT path
 
void init_h_pmt_distribution_snapshot_hits()
 
void Write_to_file(TFile &f)
 
void init_m_summary_rate_distribution()
 
void init_h_tot_distribution_triggered_hits()
 
Auxiliary class to manage set of compatible ROOT objects (e.g. histograms) using unique keys...
 
TimesliceHistograms h_timeslice
 
void init_m_mean_summary_rate(int modules_per_string)
 
TH1D * h_tot_distribution_snapshot_hits
 
void init_h_Number_of_overlays()
 
TriggerHistograms h_trigger
 
do set_variable OUTPUT_DIRECTORY $WORKDIR T
 
void Replace_wildcard_in_name(JManager< T, V > *manager, char wc= '%')
 
void Write_manager_table_in_key_dir(TFile &f, vector< JManager< T, V > * > table)
 
JRA_Histograms(const JDetector &detector)
 
void init_m_pmt_rate_distributions(int ts_type, string ts_name)
 
TH1D * h_pmt_rate_distribution
 
void Write_histogram_table_to_file(TFile &f, string dirname, vector< vector< T * > > table)
 
TH1D * h_Trigger_bit_event
 
void init_h_Snapshot_hits()
 
static const JStringCounter getNumberOfStrings
Function object to count unique strings. 
 
void init_m_Snapshot_hits_per_pmt(int modules_per_string)
 
vector< JManager< string, TH1D > * > m_mean_ToT_distribution
 
void init_h_Triggered_hits()
 
SummaryHistograms h_summary
 
Direct access to module in detector data structure. 
 
void init_m_mean_ToT(int ts_type, int modules_per_string, string ts_name)
 
void init_h_dom_rate_distribution()
 
JManager< string, TH2D > * m_summary_rate_distribution
 
const char * getTriggerName(JTriggerbit_t bit)
Get trigger name. 
 
void Write_manager_in_key_dir(TFile &f, JManager< T, V > *manager)
 
General purpose string class. 
 
std::string to_string(const T &value)
Convert value to string. 
 
vector< JManager< string, TH2D > * > m_mean_ToT
 
vector< JManager< string, TH2D > * > m_pmt_rate_distributions
 
void init_h_tot_distribution_snapshot_hits()
 
TH1D * h_tot_distribution_triggered_hits
 
void init_h_pmt_distribution_triggered_hits()
 
void normalizeBW1D(TH1D *h)
 
void initialize(std::set< int > du_ids, int modules_per_string, int ts_type, std::string ts_name)
 
void init_m_mean_summary_rate_distribution()
 
Indexing of data type in type list. 
 
KM3NeT DAQ constants, bit handling, etc. 
 
static const int NUMBER_OF_PMTS
Total number of PMTs in module. 
 
void init_h_daq_status_per_dom(std::set< int > &du_ids, int modules_per_string)
 
int getNumberOfModules(const JDetector &detector)
Get number of modules. 
 
void init_h_Trigger_bit_hit()
 
void initialize_trigger_histograms()
 
void init_h_hrv_per_dom(set< int > &du_ids, int modules_per_string)
 
JManager< string, TH2D > * m_Snapshot_hits_per_pmt
 
void initialize_timeslice_histograms()
 
void Write_manager_to_file(TFile &f, string dirname, JManager< T, V > *table)
 
void init_h_pmt_rate_distribution()
 
void init_m_pmt_tot_distributions(int ts_type, string ts_name)