1 #ifndef __JRUNANALYZER__ 
    2 #define __JRUNANALYZER__ 
   87     while (scanner.hasNext()) {
 
   98         if (event.hasTriggerBit(i)) {
 
  104       int counter_3dmuon = 0;
 
  106       JRange_t 
range(JRange_t::DEFAULT_RANGE);
 
  111         const double   t1     = 
getTime(hit->getT(), module.
getPMT(hit->getPMT()));
 
  117         if(trigger_mask.hasTriggerBit(getTriggerBit<JTrigger3DMuon>())) counter_3dmuon++; 
 
  131           if(trigger_mask.hasTriggerBit(getTriggerBit<JTrigger3DMuon>())){
 
  137             if (hit -> hasTriggerBit(i)) {
 
  143           FATAL(
"JModuleRouter trying to access non existing identifier: "<< hit->getModuleID());
 
  161           int pmt    = hit->  getPMT();
 
  174             FATAL(
"JModuleRouter trying to access non existing identifier: "<< hit->getModuleID());
 
  188     TH1D* h_tres = 
new TH1D(
"h_tres", 
";Time residuals [ns]; Entries", 100, -50, 150);
 
  189     TH1D* h_likelihood = 
new TH1D (
"h_likelihood", 
" ; Likelihood; Reconstructed Events ", 100, -1000, 1000);
 
  190     TH1D* h_beta0 = 
new TH1D(
"h_beta0", 
"; beta0; Reconstructed Events", 20, 0, 1);
 
  191     TH1D* h_energy = 
new TH1D (
"h_energy", 
" ; Energy [GeV]; Reconstructed Events ", 65, 0, 9);
 
  193     TH1D* h_zenith = 
new TH1D(
"h_zenith", 
"; cosZenith; Reconstructed Events", 20, -1, 1);
 
  194     TH1D* h_azimuth = 
new TH1D(
"h_azimuth", 
"; cosAzimuth; Reconstructed Events", 20, -1, 1);
 
  195     TH1D* h_radial_position = 
new TH1D (
"h_radial_position", 
"; Radial Position [m]; Reconstructed Events", 60, 0, 4.2);
 
  197     TH1D* h_z_position = 
new TH1D (
"h_z_position", 
"; Z Position [m] ; Reconstructed Events", 50, 0, 3.2);
 
  200     while (scanner.hasNext()) {
 
  209         JEvt::iterator best = evt->begin();  
 
  210         h_energy -> Fill(best->getE());
 
  211         h_likelihood -> Fill(best->getQ());
 
  212         h_z_position -> Fill(best->getZ());
 
  213         h_radial_position -> Fill(sqrt(best->getX()*best->getX() + best->getY()*best->getY()));
 
  226           h_tres -> Fill(hit->getT() - track.
getT(hit->getPosition()));
 
  235     h_likelihood -> Write();
 
  236     h_z_position -> Write();
 
  237     h_radial_position -> Write();
 
  239     h_azimuth -> Write();
 
  265     while (scanner.hasNext()){
 
  269       for (JDAQSummaryslice::const_iterator frame = slice.begin() ; frame != slice.end() ; ++ frame) {
 
  297             const double factor = 1.0e-3;   
 
  301               rate += frame->getRate(i, factor);
 
  303               h2->Fill(i , frame->getRate(i, factor));
 
  305               PMT_rate_quantiles[string][floor][i].put(frame->getRate(i, factor)); 
 
  313             DOM_rate_quantiles[string][floor].put(rate);
 
  318             const double factor = 1.0e-3;   
 
  322               rate += frame->getRate(i, factor);
 
  329             DOM_rate_quantiles[string][floor].put(rate);
 
  334           FATAL(
"JModuleRouter trying to access non existing identifier: "<< frame->getModuleID());
 
  339     for(
auto& i : DOM_rate_quantiles){
 
  349       for(
auto& i : PMT_rate_quantiles){
 
  355             if (i.second[
j][
k].getCount() > 0){
 
  378     double inverseFrameTimeSec = 1. / (1.0e-9 * 
getFrameTime());
 
  380     while (scanner.hasNext()){
 
  382       T slice = *(scanner.next());
 
  384       for(
auto & frame : slice) {
 
  388           double  rate   = frame.numberOfHits * inverseFrameTimeSec;
 
  392           DOM_rate_quantiles[string][floor].put(rate);
 
  402             h2 -> Fill(hit->getPMT() , hit->getToT()) ;
 
  404             pmt_hit_count[hit->getPMT()]++;
 
  417             FATAL(
"JModuleRouter trying to access non existing identifier: "<< frame.getModuleID());
 
  439     if (scanner.hasNext()) {
 
  455     if(scanner.hasNext()) {
 
  472     if(scanner.hasNext()) {
 
  488     if(scanner.hasNext()) {
 
  501     f->mkdir(
"Detector");
 
  520           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. 
 
virtual const multi_pointer_type & next() override
Get next element. 
 
JTrack3E getTrack(const Trk &track)
Get track. 
 
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
 
Template specialisation of L0 builder for JHitL0 data type. 
 
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
 
void writeToFile(TFile *f, int analysis_level)
 
General purpose class for parallel reading of objects from a single file or multiple files...
 
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. 
 
double getPhi() const 
Get phi angle. 
 
JSingleFileScanner inputFile
 
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. 
 
JVersor3D getDirection(const JVector3D &pos) const 
Get photon direction of Cherenkov light on PMT. 
 
TH1D * h_dom_rate_distribution
 
#define MAKE_STRING(A)
Make string. 
 
Basic data structure for L0 hit. 
 
void Fill_mean_ToT_histograms()
 
void iterateRecoEventTree(JParallelFileScanner< JTypeList< JDAQEvent, JFIT::JEvt > > &scanner, TFile &f)
 
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. 
 
void setLogarithmicX(TList *list)
Make x-axis of objects in list logarithmic (e.g. after using log10()). 
 
TH1D * h_tot_distribution_snapshot_hits
 
TriggerHistograms h_trigger
 
double getFrameTime()
Get frame time duration. 
 
do set_variable OUTPUT_DIRECTORY $WORKDIR T
 
double getTheta() const 
Get theta angle. 
 
Parallel scanning of objects from a single file or multiple files according a format that follows fro...
 
void Write_manager_table_in_key_dir(TFile &f, vector< JManager< T, V > * > table)
 
static const int JGANDALF_BETA0_RAD
KM3NeT Data Definitions v3.0.0 https://git.km3net.de/common/km3net-dataformat. 
 
TH1D * h_pmt_rate_distribution
 
JRunAnalyzer(const JSingleFileScanner<> &file, const JDetector &detector, TFile *out, JLimit_t nTimeslices, JLimit_t nSummaryslices, JLimit_t nEvents, int analysislevel)
Constructor. 
 
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. 
 
double getT(const JVector3D &pos) const 
Get arrival time of Cherenkov light at given position. 
 
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. 
 
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. 
 
TH1D * h_tot_distribution_triggered_hits
 
TH1D * h_Triggered_hits_3dmuon
 
JLimit_t numberOfSummaryslices
 
Object reading from a list of files. 
 
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. 
 
void initialize_trigger_histograms()
 
JManager< string, TH2D > * m_Snapshot_hits_per_pmt
 
void initialize_timeslice_histograms()
 
TH1D * h_Triggered_over_Snapshot_hits