Jpp  18.0.1-rc.2
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.
Long64_t counter_type
Type definition for counter.
data_type r[M+1]
Definition: JPolint.hh:779
Auxiliary class for a type holder.
Definition: JType.hh:19
Auxiliary class for multiplexing object iterators.
string outputFile
Auxiliary interface for direct access of elements in ROOT TChain.
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:703
static const int NUMBER_OF_PMTS
Total number of PMTs in module.
Definition: JDAQ.hh:26