11 #include "TApplication.h" 
   13 #include "TGraphErrors.h" 
   31   double getCount (TH1D* hptr, 
int muon_threshold) {
 
   33     for (
int i = hptr->GetXaxis()->FindBin(muon_threshold); i <= hptr->GetNbinsX(); i++) {
 
   34       count += hptr->GetBinContent(i);
 
   39   double getLiveTime (TH1D* hptr, 
const JModule& module) {
 
   41     double livetime = hptr->GetBinContent(hptr->GetXaxis()->FindBin(label.c_str()));
 
   53 int main(
int argc, 
char **argv)
 
   74     JParser<> zap(
"Auxiliary program to find depth dependence of multiplicity rates");
 
   76     zap[
'f'] = 
make_field(inputFile, 
"JMM input file");
 
   82     zap[
'M'] = 
make_field(minMultiplicity, 
"Minimum multiplicity") = 8;
 
   83     zap[
'T'] = 
make_field(minLiveTime_s, 
"Minimum DOM livetime [s] to be eligible for plotting") = 3600;
 
   88   catch(
const exception &error) {
 
   89     FATAL(error.what() << endl);
 
  109     FATAL(
"Empty detector." << endl);
 
  115   NOTICE(
"Detector base UTM z [m]: " << utm_z << endl);
 
  122   DEBUG(
"Loading input file " << inputFile << endl);
 
  124   TFile* 
in = TFile::Open(inputFile.c_str(), 
"exist");
 
  126   if (
in == NULL || !
in->IsOpen()) {
 
  127     FATAL(
"File: " << inputFile << 
" not opened." << endl);
 
  136   DEBUG(
"Loading livetime histogram from " << inputFile << endl);
 
  138   TH1D* liveTime = (TH1D*)
in->Get(
"LiveTime");
 
  140   if (liveTime == NULL) {
 
  141     FATAL(
"Missing live time histogram.");
 
  148   for (JDetector::const_iterator module = 
detector.begin(); module != 
detector.end(); ++module) {
 
  150     if (module->
getString() != line) { 
continue; }
 
  152     STATUS(
"Loading data histogram for from input file: " << 
getLabel(*module) << 
"\t ID = " << module->
getID()  << endl);
 
  154     TH1D* data_histogram = (TH1D*)
in->Get(TString(
getLabel(*module)) + 
"_P");
 
  156     if (data_histogram != NULL) {
 
  158       double data_count    = 
getCount(data_histogram, minMultiplicity);
 
  159       double data_livetime = getLiveTime(liveTime, *module);
 
  161       double module_depth = - utm_z - module->
getZ();
 
  163       if (data_livetime > minLiveTime_s) {
 
  165         double val = data_count       / data_livetime;
 
  166         double err = sqrt(data_count) / data_livetime;
 
  168         NOTICE(module_depth << 
" " << val << endl);
 
  170         rate_val.push_back(val);
 
  171         rate_err.push_back(err);
 
  172         depth.push_back( module_depth);
 
  181   TGraph* gr_data = 
new TGraphErrors(depth.size(), &depth[0], &rate_val[0], 0, &rate_err[0]);
 
  183   gr_data->SetTitle(TString(
"KM3NeT Preliminary; Depth [m]; Inclusive ") + Form(
"%d", minMultiplicity) + TString(
"-fold coincidence rate [Hz]"));
 
Utility class to parse command line options. 
 
ROOT TTree parameter settings. 
 
Data structure for a composite optical module. 
 
std::string getLabel(const JLocation &location)
Get module label for monitoring and other applications. 
 
Router for direct addressing of module data in detector data structure. 
 
esac print_variable DETECTOR INPUT_FILE OUTPUT_FILE CDF for TYPE in
 
Data structure for detector geometry and calibration. 
 
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object 
 
int getID() const 
Get identifier. 
 
void load(const JString &file_name, JDetector &detector)
Load detector from input file. 
 
General purpose messaging. 
 
Scanning of objects from multiple files according a format that follows from the extension of each fi...
 
Direct access to module in detector data structure. 
 
int getString() const 
Get string number. 
 
Normalisation of MUPAGE events. 
 
Utility class to parse command line options. 
 
int getCount(const T &hit)
Get hit count. 
 
KM3NeT DAQ constants, bit handling, etc. 
 
double getZ() const 
Get z position. 
 
#define DEBUG(A)
Message macros. 
 
int main(int argc, char *argv[])