52 double fractionThreshold;
54 JRange<int> multiplicity;
58 JParser<> zap(
"Auxiliary program to build supernova background from JKexing2D output");
60 zap[
'f'] =
make_field(inputFile,
"input file (JKexing2D).");
62 zap[
'w'] =
make_field(windowSize,
"size of the sliding window to test") = 5;
63 zap[
'M'] =
make_field(multiplicity,
"final multiplicity range") = JRange<int>(7,11);
64 zap[
'F'] =
make_field(fractionThreshold,
"minimum fraction of active channels to compute distribution") = 0.99;
69 catch(
const exception &error) {
70 FATAL(error.what() << endl);
73 typedef JManager<int, TH1D> JManager_i1D_t;
74 typedef JManager<string, TH1D> JManager_s1D_t;
75 typedef JManager<string, TH2D> JManager2D_t;
79 TFile
in(inputFile.c_str(),
"exist");
81 TParameter<int>* runNumber;
83 in.GetObject(
"RUNNR", runNumber);
85 JManager2D_t MT = JManager2D_t::Read(
in,
mul_p ,
'%');
86 JManager_s1D_t ST = JManager_s1D_t::Read(
in,
status_p,
'%');
92 const int factoryLimit_peak = 250;
93 const int factoryLimit_runs = 10000;
102 string title =
"MD_" + (*f) +
"_%";
103 mmap[*
f] = JManager_i1D_t(
new TH1D(title.c_str(), NULL, factoryLimit_peak, 0, factoryLimit_peak));
107 const double xmin = -0.5;
108 const double xmax = nx - 0.5;
112 JManager_s1D_t TD(
new TH1D(Form(
"SNT_[%d,%d]_", multiplicity.first, multiplicity.second) + TString(
"%"), NULL, factoryLimit_peak, -0.5, -0.5 + factoryLimit_peak));
117 JManager2D_t BL(
new TH2D(
"BL_%", NULL, 100,
epsilon, 1 +
epsilon, factoryLimit_peak, -0.5, -0.5 + factoryLimit_peak));
121 JManager_s1D_t
H(
new TH1D(
"H_%", NULL, factoryLimit_runs, 0, factoryLimit_runs));
125 TH1D* LT =
new TH1D(
"LIVETIME_ACF", NULL, 100,
epsilon, 1 +
epsilon);
131 const int nb = activeChannelFraction->GetN();
132 const Double_t* arr_acf_y = activeChannelFraction->GetY();
136 LT->FillN(nb, arr_acf_y, NULL);
162 transform(vec_acf_y.begin(),
165 back_inserter(select),
166 greater_equal<double> {});
168 mmap[*
f][M]->FillN(nb, count_vs_frame[*
f]->GetY(), &select[0]);
174 MUL_EFF[*
f]->FillN(nb,
177 count_vs_frame[*
f]->GetY());
182 int RUNNR = runNumber->GetVal();
188 const TH1* px =
projectHistogram(*MT[*
f], multiplicity.getLowerLimit(), multiplicity.getUpperLimit(),
'x');
194 TD[*
f]->FillN(events_per_frame->GetN(), events_per_frame->GetY(), NULL);
199 vector<double> vec(events_per_frame->GetY(), events_per_frame->GetY() + nb);
204 TD[(*f) +
"_nTS"]->FillN(events_per_frame_sliding.size(),
205 &events_per_frame_sliding[0],
212 events_per_frame->GetY(),
217 px =
projectHistogram(*MT[*f], multiplicity.getLowerLimit(), multiplicity.getUpperLimit(),
'x');
219 int peak = px->GetMaximum();
223 H[
"PK_" + (*f)]->Fill(RUNNR, peak);
229 double BI = (ST[
"PMT"]->GetSumOfWeights() / ST[
"PMT"]->GetEntries());
231 H[
"BIOLUM"]->Fill(RUNNR, BI);
239 TDirectory* bm = out.mkdir(
"BIOLUM");
240 TDirectory* hs = out.mkdir(
"HISTORY");
248 string dir_name =
"MUL_" + (*f);
249 TDirectory* dir = out.mkdir(dir_name.c_str());
250 mmap[*
f].Write(*dir);
Utility class to parse command line options.
bool select(const Trk &trk, const Evt &evt)
Event selection.
static const char * mul_p
static const char * status_p
o $QUALITY_ROOT d $DEBUG!CHECK_EXIT_CODE JPlot1D f
static const double H
Planck constant [eV s].
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
TGraph * histogramToGraph(const TH1 &h1)
Helper method to convert a 1D histogram to a graph.
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
std::vector< T > convolve(const std::vector< T > &input, const std::vector< T > &kernel)
Convolute data with given kernel.
static const int NUMBER_OF_PMTS
Total number of PMTs in module.
TH1 * projectHistogram(const TH2 &h2, const Double_t xmin, const Double_t xmax, const char projection)
Helper method for ROOT histogram projections.