Jpp  19.1.0-rc.1
the software that should make you happy
Functions
JDomAnalyser.cc File Reference
#include <iostream>
#include <iomanip>
#include "JSupport/JSupport.hh"
#include "JSupport/JSupportToolkit.hh"
#include "JSupport/JMeta.hh"
#include "JSupport/JMultipleFileScanner.hh"
#include "JSupport/JAutoTreeScanner.hh"
#include "JROOT/JROOTClassSelector.hh"
#include "JLang/JObjectMultiplexer.hh"
#include "JROOT/JManager.hh"
#include "Jeep/JParser.hh"
#include "km3net-dataformat/online/JDAQPMTIdentifier.hh"
#include "km3net-dataformat/online/JDAQ.hh"
#include "JDAQ/JDAQTimesliceIO.hh"
#include "TH1D.h"
#include "TMath.h"

Go to the source code of this file.

Functions

void BinLogX (TH1 *h)
 
int main (int argc, char **argv)
 

Function Documentation

◆ BinLogX()

void BinLogX ( TH1 *  h)
inline

Definition at line 34 of file JDomAnalyser.cc.

34  {
35 
36  TAxis *axis = h->GetXaxis();
37  int bins = axis->GetNbins();
38  Axis_t min = axis->GetXmin();
39  Axis_t max = axis->GetXmax();
40  Axis_t width = (max - min) / bins;
41  Axis_t *new_bins = new Axis_t[bins + 1];
42 
43  for (int i = 0; i <= bins; i++) {
44  new_bins[i] = TMath::Power(10, min + i * width);
45  }
46 
47  axis->Set(bins, new_bins);
48  delete[] new_bins;
49 }

◆ main()

int main ( int  argc,
char **  argv 
)

Definition at line 52 of file JDomAnalyser.cc.

52  {
53 
55  JLimit_t& nSlices = inputFile.getLimit();
56  JROOTClassSelector selector;
57  string outputFile;
58  string detectorFile;
59 
60  try {
61 
62  JParser<> zap;
63 
64  zap['f'] = make_field(inputFile , "Path to input file ");
65  zap['o'] = make_field(outputFile , "Path to output file") = "out.root";
66  zap['C'] = make_field(selector , "timeslice selector, e.g. JDAQTimesliceL1.") = getROOTClassSelection<JDAQTimesliceTypes_t>();
67  zap['s'] = make_field(nSlices , "number of slices" ) = JLimit::max();
68 
69  zap(argc,argv);
70  }
71  catch(const exception &error) {
72  ERROR(error.what() << endl);
73  }
74 
75  const double factor = 1./(1.0e-6 * getFrameTime()); // [kHz]
76 
77  TH1D* h1 = new TH1D("rate_%", NULL, 100, -2, 2);
78  TH1D* h2 = new TH1D("time_%", NULL, 1, -0.5, 0.5);
79 
82  s->configure(inputFile);
83 
84  if (s->hasNext()){
85  JFrameIndexRange range (s->begin()->getFrameIndex() , s->rbegin()->getFrameIndex());
86  h2->SetBins(range.second - range.first + 1, range.first - 0.5, range.second + 0.5);
87  }
88 
89  BinLogX(h1);
90 
93 
95 
96  counter_type counter = 0;
97 
98  for ( ; scanner.hasNext() && counter != inputFile.getLimit(); ++counter) {
99 
100  JDAQTimeslice* slice = scanner.next();
101 
102  for(JDAQTimeslice::const_iterator frame = slice->begin() ; frame != slice->end() ; ++frame) {
103 
104  vector <int> pmt_hit_count (NUMBER_OF_PMTS , 0) ;
105 
106  for (JDAQSuperFrame::const_iterator hit = frame->begin() ; hit != frame->end() ; ++hit){
107  pmt_hit_count[hit->getPMT()]++;
108  }
109 
110  for (int pmt = 0 ; pmt != NUMBER_OF_PMTS ; ++pmt) {
111  r[JDAQPMTIdentifier(frame->getModuleID(),pmt)]->Fill(pmt_hit_count[pmt]*factor);
112  t[JDAQPMTIdentifier(frame->getModuleID(),pmt)]->Fill(slice->getFrameIndex(), pmt_hit_count[pmt]*factor);
113  }
114  }
115  }
116 
117  for (typename JManager < JDAQPMTIdentifier , TH1D >::const_iterator i = r.begin() ; i != r.end() ; ++i){
118 
119  for(int j=1 ; j < i -> second -> GetNbinsX() ; ++j){
120 
121  double width = i->second->GetXaxis()->GetBinWidth(j);
122  i -> second->SetBinContent(j ,i->second->GetBinContent(j)/width);
123  i -> second->SetBinError (j ,i->second->GetBinError (j)/width);
124  }
125  }
126 
127  TFile out(outputFile.c_str(), "recreate");
128 
129  putObject(out, JMeta(argc, argv));
130 
131  r.Write(out);
132  t.Write(out);
133 }
string outputFile
void BinLogX(TH1 *h)
Definition: JDomAnalyser.cc:34
#define ERROR(A)
Definition: JMessage.hh:66
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
Definition: JParser.hh:2158
Auxiliary class for multiplexing object iterators.
Utility class to parse command line options.
Definition: JParser.hh:1714
Auxiliary class to manage set of compatible ROOT objects (e.g. histograms) using unique keys.
Definition: JManager.hh:47
General purpose class for object reading from a list of file names.
Auxiliary interface for direct access of elements in ROOT TChain.
int getFrameIndex() const
Get frame index.
Hit data structure.
Definition: JDAQHit.hh:35
bool putObject(TDirectory &dir, const TObject &object)
Write object to ROOT directory.
Long64_t counter_type
Type definition for counter.
data_type r[M+1]
Definition: JPolint.hh:868
int j
Definition: JPolint.hh:792
double getFrameTime()
Get frame time duration.
Definition: JDAQClock.hh:162
static const int NUMBER_OF_PMTS
Total number of PMTs in module.
Definition: JDAQ.hh:26
Auxiliary class for a type holder.
Definition: JType.hh:19
Auxiliary class to select ROOT class based on class name.
Auxiliary class to select JTreeScanner based on ROOT class name.
Auxiliary class for defining the range of iterations of objects.
Definition: JLimit.hh:45
Auxiliary class for ROOT I/O of application specific meta data.
Definition: JMeta.hh:72