Jpp  18.5.0
the software that should make you happy
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
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

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 }
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 
81  JTreeScannerInterface<JDAQTimeslice>* s = map[selector];
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 }
Auxiliary class for ROOT I/O of application specific meta data.
Definition: JMeta.hh:70
Utility class to parse command line options.
Definition: JParser.hh:1514
Auxiliary class to select ROOT class based on class name.
Auxiliary interface for direct access of elements in ROOT TChain.
Long64_t counter_type
Type definition for counter.
data_type r[M+1]
Definition: JPolint.hh:868
Auxiliary class for a type holder.
Definition: JType.hh:19
Auxiliary class for multiplexing object iterators.
string outputFile
int getFrameIndex() const
Get frame index.
Auxiliary class for defining the range of iterations of objects.
Definition: JLimit.hh:41
Auxiliary class to manage set of compatible ROOT objects (e.g. histograms) using unique keys...
Definition: JManager.hh:43
Hit data structure.
Definition: JDAQHit.hh:34
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
Definition: JParser.hh:1989
double getFrameTime()
Get frame time duration.
Definition: JDAQClock.hh:162
#define ERROR(A)
Definition: JMessage.hh:66
Data time slice.
bool putObject(TDirectory &dir, const TObject &object)
Write object to ROOT directory.
Auxiliary class to select JTreeScanner based on ROOT class name.
z range($ZMAX-$ZMIN)< $MINIMAL_DZ." fi fi typeset -Z 4 STRING typeset -Z 2 FLOOR JPlot1D -f $
void BinLogX(TH1 *h)
Definition: JDomAnalyser.cc:34
General purpose class for object reading from a list of file names.
int j
Definition: JPolint.hh:792
static const int NUMBER_OF_PMTS
Total number of PMTs in module.
Definition: JDAQ.hh:26