Jpp 20.0.0-27-g39925593c-D
the software that should make you happy
Loading...
Searching...
No Matches
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}
Template definition of a multi-dimensional oscillation probability interpolation table.

◆ 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
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
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.
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 to select ROOT class based on 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