Jpp 19.3.0-rc.1
the software that should make you happy
Loading...
Searching...
No Matches
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)
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
Definition JParser.hh:2142
Auxiliary class for multiplexing object iterators.
Utility class to parse command line options.
Definition JParser.hh:1698
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.
std::set< JROOTClassSelector > getROOTClassSelection(const bool option=false)
Get ROOT class selection.
Long64_t counter_type
Type definition for counter.
int j
Definition JPolint.hh:801
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
static counter_type max()
Get maximum counter value.
Definition JLimit.hh:128
Auxiliary class for ROOT I/O of application specific meta data.
Definition JMeta.hh:72