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[])