1 #ifndef __JRUNANALYZER__
2 #define __JRUNANALYZER__
80 while (scanner.hasNext()) {
91 if (event.hasTriggerBit(i)) {
97 int counter_3dmuon = 0;
99 JRange_t
range(JRange_t::DEFAULT_RANGE);
104 const double t1 =
getTime(hit->getT(), module.
getPMT(hit->getPMT()));
110 if(trigger_mask.hasTriggerBit(getTriggerBit<JTrigger3DMuon>())) counter_3dmuon++;
124 if(trigger_mask.hasTriggerBit(getTriggerBit<JTrigger3DMuon>())){
130 if (hit -> hasTriggerBit(i)) {
136 FATAL(
"JModuleRouter trying to access non existing identifier: "<< hit->getModuleID());
154 int pmt = hit-> getPMT();
168 FATAL(
"JModuleRouter trying to access non existing identifier: "<< hit->getModuleID());
197 while (scanner.hasNext()){
201 for (JDAQSummaryslice::const_iterator frame = slice.begin() ; frame != slice.end() ; ++ frame) {
229 const double factor = 1.0e-3;
233 rate += frame->getRate(i, factor);
235 h2->Fill(i , frame->getRate(i, factor));
237 PMT_rate_quantiles[string][floor][i].put(frame->getRate(i, factor));
245 DOM_rate_quantiles[string][floor].put(rate);
250 const double factor = 1.0e-3;
254 rate += frame->getRate(i, factor);
261 DOM_rate_quantiles[string][floor].put(rate);
266 FATAL(
"JModuleRouter trying to access non existing identifier: "<< frame->getModuleID());
271 for(
auto& i : DOM_rate_quantiles){
281 for(
auto& i : PMT_rate_quantiles){
287 if (i.second[
j][
k].getCount() > 0){
310 double inverseFrameTimeSec = 1. / (1.0e-9 *
getFrameTime());
312 while (scanner.hasNext()){
314 T slice = *(scanner.next());
316 for(
auto & frame : slice) {
320 double rate = frame.numberOfHits * inverseFrameTimeSec;
324 DOM_rate_quantiles[string][floor].put(rate);
334 h2 -> Fill(hit->getPMT() , hit->getToT()) ;
336 pmt_hit_count[hit->getPMT()]++;
349 FATAL(
"JModuleRouter trying to access non existing identifier: "<< frame.getModuleID());
373 if (scanner.hasNext()) {
390 if(scanner.hasNext()) {
408 if(scanner.hasNext()) {
449 j->second->Scale(1.,
"width");
TH1D * h_pmt_distribution_snapshot_hits
TH2D * h_Snapshot_hits_per_module
then fatal No hydrophone data file $HYDROPHONE_TXT fi sort gr k
void iterateTimesliceTree(JTreeScanner< T > &scanner)
ROOT TTree parameter settings of various packages.
static const unsigned int NUMBER_OF_TRIGGER_BITS
Number of trigger bits.
int countFIFOStatus() const
Count FIFO status.
TH1D * h_pmt_distribution_triggered_hits
vector< JManager< string, TH2D > * > m_pmt_tot_distributions
JManager< string, TH1D > * m_mean_summary_rate_distribution
int getFloor() const
Get floor number.
const JModule & getModule(const JObjectID &id) const
Get module parameters.
Data structure for a composite optical module.
Auxiliary class for trigger mask.
std::vector< T >::difference_type distance(typename std::vector< T >::const_iterator first, typename PhysicsEvent::const_iterator< T > second)
Specialisation of STL distance.
vector< TH2D * > h_dom_mean_rates
JRA_Histograms histograms
TH1D * h_Number_of_overlays
TH2D * h_Triggered_hits_per_module
Router for direct addressing of module data in detector data structure.
then set_variable singlesRate set_variable doublesRate set_variable numberOfSlices echo Generating random background echo Singles rate
o $QUALITY_ROOT d $DEBUG!JPlot1D f
TH2D * h_daq_status_per_dom
JLimit_t numberOfTimeslices
Dynamic ROOT object management.
void initialize_summary_histograms()
double getTime(const Hit &hit)
Get true time of hit.
void iterateSummarysliceTree(JTreeScanner< JDAQSummaryslice > &scanner)
JManager< string, TH2D > * m_mean_summary_rate
Class dedicated to the analysis of KM3NeT runs.
floor_range getRangeOfFloors(const JDetector &detector)
Get range of floors.
Template definition for direct access of elements in ROOT TChain.
TH1D * h_dom_rate_distribution
#define MAKE_STRING(A)
Make string.
void writeToFile(TFile &f)
void Fill_mean_ToT_histograms()
Auxiliary class for defining the range of iterations of objects.
Type definition of range.
Auxiliary class to manage set of compatible ROOT objects (e.g. histograms) using unique keys...
TimesliceHistograms h_timeslice
~JRunAnalyzer()
Destructor.
TH1D * h_tot_distribution_snapshot_hits
TriggerHistograms h_trigger
double getFrameTime()
Get frame time duration.
do set_variable OUTPUT_DIRECTORY $WORKDIR T
void Write_manager_table_in_key_dir(TFile &f, vector< JManager< T, V > * > table)
TH1D * h_pmt_rate_distribution
JMultipleFileScanner inputFile
void Write_histogram_table_to_file(TFile &f, string dirname, vector< vector< T * > > table)
TH1D * h_Trigger_bit_event
const JPMT & getPMT(const int index) const
Get PMT.
void iterateEventTree(JTreeScanner< JDAQEvent > &scanner)
vector< JManager< string, TH1D > * > m_mean_ToT_distribution
Scanning of objects from multiple files according a format that follows from the extension of each fi...
SummaryHistograms h_summary
Direct access to module in detector data structure.
z range($ZMAX-$ZMIN)< $MINIMAL_DZ." fi fi typeset -Z 4 STRING typeset -Z 2 FLOOR JPlot1D -f $
int getString() const
Get string number.
Auxiliary class to define a range between two values.
int countHighRateVeto() const
Count high-rate veto status.
General purpose class for object reading from a list of file names.
JManager< string, TH2D > * m_summary_rate_distribution
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
bool hasModule(const JObjectID &id) const
Has module.
JRunAnalyzer(const JMultipleFileScanner<> &file, const JDetector &detector, JLimit_t nTimeslices, JLimit_t nSummaryslices, JLimit_t nEvents, bool pmtanalysis)
Constructor.
TH1D * h_tot_distribution_triggered_hits
TH1D * h_Triggered_hits_3dmuon
JLimit_t numberOfSummaryslices
TH2D * h_Triggered_hits_3dmuon_per_module
Indexing of data type in type list.
static const int NUMBER_OF_PMTS
Total number of PMTs in module.
bool testDAQStatus() const
Test DAQ status of packets.
JRA_Histograms getHistograms()
void initialize_trigger_histograms()
JManager< string, TH2D > * m_Snapshot_hits_per_pmt
void initialize_timeslice_histograms()
TH1D * h_Triggered_over_Snapshot_hits