Belle II Software  release-05-02-19
TOPGainEfficiencyCalculatorModule.h
1 /**************************************************************************
2  * BASF2 (Belle Analysis Framework 2) *
3  * Copyright(C) 2017 - Belle II Collaboration *
4  * *
5  * Author: The Belle II Collaboration *
6  * Contributors: Maeda Yosuke, Okuto Rikuya *
7  * *
8  * This software is provided "as is" without any warranty. *
9  **************************************************************************/
10 
11 #pragma once
12 
13 #include <framework/core/HistoModule.h>
14 #include <top/modules/TOPGainEfficiencyMonitor/TOPLaserHitSelectorModule.h>
15 
16 #include <string>
17 
18 #include <TTree.h>
19 #include <TH1.h>
20 #include <TH2.h>
21 #include <TF1.h>
22 
23 namespace Belle2 {
37  class TOPGainEfficiencyCalculatorModule : public HistoModule {
38 
39  public:
40 
44  enum { c_NParameterGainFit = 6 };
45 
49  enum { c_NPlotsPerChannel = 3, c_NChannelPerPage = 4 };
50 
54  enum EHistogramType { c_LoadForFitHeight = 1, c_LoadHitRateHeight = 2,
55  c_LoadForFitIntegral = 3, c_LoadHitRateIntegral = 4
56  };
57 
62 
67 
72  virtual void initialize() override;
73 
78  virtual void beginRun() override;
79 
84  virtual void event() override;
85 
89  virtual void endRun() override;
90 
95  virtual void terminate() override;
96 
101  virtual void defineHisto() override;
102 
108  void LoadHistograms(const std::string& histotype);//histotype {Height_gain,Height_efficiency,Integral_gain:}
109 
113  void FitHistograms(EHistogramType LoadHisto);
114 
118  void DummyFillBranch(EHistogramType LoadHisto);
119 
123  void DrawResult(const std::string& histotype, EHistogramType LoadHisto);
124 
130  static double TOPGainFunc(double* var, double* par);
131 
135  static double FindPeakForSmallerXThan(TH1* histo, double xmax = 0);
136 
137  private:
138 
139  TTree* m_tree = 0;
140  std::vector<TBranch*> m_branch[4];
142  TH2F* m_timeChargeHistogram[c_NChannelPerPMT] = {};
143  TH1D* m_timeHistogram[c_NChannelPerPMT] = {};
144  TH1D* m_chargeHistogram[c_NChannelPerPMT] = {};
145  TH1F* m_nCalPulseHistogram =
146  0;
147  TF1* m_funcForLaser[c_NChannelPerPMT] = {};
148  TF1* m_funcForFitRange[c_NChannelPerPMT] = {};
149  TF1* m_funcForFullRange[c_NChannelPerPMT] = {};
151  std::string m_inputFile = "";
152  std::string m_outputPDFFile =
153  "";
155  std::string m_fitoption =
156  "L";
158  short m_targetSlotId = 0;
159  short m_targetPmtId = 0;
160  short m_targetPmtChId = -1;
161  short m_hvDiff = 0;
163  float m_fitHalfWidth = 1.;
164  float m_threshold = 100;
165  float m_thresholdForIntegral =
166  550;
167  float m_p0HeightIntegral = -50.0;
168  float m_p1HeightIntegral = 6.0;
169  float m_fitMax = 0;
170  float m_fracFit = 0.99;
171  float m_initialP0 = (float)(-1.);
172  float m_initialP1 = (float)(-1.);
173  float m_initialP2 = (float)(-1.);
174  float m_initialX0 = (float)(-1.);
175  float m_pedestalSigma = 10.;
177  short m_pixelId = 0;
178  short m_pmtChId = 0;
179  float m_hitTiming = 0;
180  float m_hitTimingSigma = 0;
181  int m_nEntries = 0;
182  int m_nCalPulse = 0;
184  float m_meanPulseHeight = 0;
186  float m_gain = 0;
187  float m_efficiency = 0;
188  float m_p0 = 0;
189  float m_p1 = 0;
190  float m_p2 = 0;
191  float m_x0 = 0;
192  float m_p0Error = 0;
193  float m_p1Error = 0;
194  float m_p2Error = 0;
195  float m_x0Error = 0;
196  float m_chisquare = 0;
197  int m_ndf = 0;
202  };
203 
205 } //namespace Belle2
Belle2::TOPGainEfficiencyCalculatorModule::m_p2
float m_p2
fit result of p2
Definition: TOPGainEfficiencyCalculatorModule.h:198
Belle2::TOPGainEfficiencyCalculatorModule::m_chargeHistogram
TH1D * m_chargeHistogram[c_NChannelPerPMT]
pulse charge distribution, extracted from m_timeChargeHistogram as a projection along its y-axis with...
Definition: TOPGainEfficiencyCalculatorModule.h:152
Belle2::TOPGainEfficiencyCalculatorModule::m_funcForLaser
TF1 * m_funcForLaser[c_NChannelPerPMT]
array of TF1 pointer to store fit function for hit timing distribution
Definition: TOPGainEfficiencyCalculatorModule.h:155
Belle2::TOPGainEfficiencyCalculatorModule::m_threshold
float m_threshold
pulse charge threshold, which defines lower limit of fit region and efficiency calculation
Definition: TOPGainEfficiencyCalculatorModule.h:172
Belle2::TOPGainEfficiencyCalculatorModule::m_funcFullRangeIntegral
float m_funcFullRangeIntegral
integral of fit function for its full range
Definition: TOPGainEfficiencyCalculatorModule.h:206
Belle2::TOPGainEfficiencyCalculatorModule::DrawResult
void DrawResult(const std::string &histotype, EHistogramType LoadHisto)
Draw results of gain/efficiency calculation for each channel to a given output file.
Definition: TOPGainEfficiencyCalculatorModule.cc:475
Belle2::TOPGainEfficiencyCalculatorModule::m_targetPmtChId
short m_targetPmtChId
PMT channel ID.
Definition: TOPGainEfficiencyCalculatorModule.h:168
Belle2::TOPGainEfficiencyCalculatorModule::m_hitTimingSigma
float m_hitTimingSigma
Gaussian fit sigma for a peak of laser direct photons in hit timing distribution.
Definition: TOPGainEfficiencyCalculatorModule.h:188
Belle2::TOPGainEfficiencyCalculatorModule::m_thresholdForIntegral
float m_thresholdForIntegral
pulse integral threshold, which defines lower limit of fit region and efficiency calculation
Definition: TOPGainEfficiencyCalculatorModule.h:173
Belle2::TOPGainEfficiencyCalculatorModule::m_hitTiming
float m_hitTiming
timing of laser direct photon hits, given by Gaussian fit mean
Definition: TOPGainEfficiencyCalculatorModule.h:187
Belle2::TOPGainEfficiencyCalculatorModule::m_targetPmtId
short m_targetPmtId
PMT ID.
Definition: TOPGainEfficiencyCalculatorModule.h:167
Belle2::TOPGainEfficiencyCalculatorModule::m_nCalPulseHistogram
TH1F * m_nCalPulseHistogram
histogram to store the number of events with calibration pulse(s) identified for each asic (1,...
Definition: TOPGainEfficiencyCalculatorModule.h:153
Belle2::TOPGainEfficiencyCalculatorModule::m_initialP1
float m_initialP1
initial value of the fit parameter p1
Definition: TOPGainEfficiencyCalculatorModule.h:180
Belle2::TOPGainEfficiencyCalculatorModule::m_meanPulseHeight
float m_meanPulseHeight
histogram mean of pulse height distribution
Definition: TOPGainEfficiencyCalculatorModule.h:192
Belle2::TOPGainEfficiencyCalculatorModule::m_outputPDFFile
std::string m_outputPDFFile
output PDF file to store plots of 2D histogram, timing, and charge distribution for each channel
Definition: TOPGainEfficiencyCalculatorModule.h:160
Belle2::TOPGainEfficiencyCalculatorModule::m_fitHalfWidth
float m_fitHalfWidth
half fit width for direct laser hit peak in [ns] unit
Definition: TOPGainEfficiencyCalculatorModule.h:171
Belle2::TOPGainEfficiencyCalculatorModule::m_fracFit
float m_fracFit
fraction of events which are covered by an area [0,m_fitMax]
Definition: TOPGainEfficiencyCalculatorModule.h:178
Belle2::TOPGainEfficiencyCalculatorModule::event
virtual void event() override
This will be empty as the all the processes are done in beginRun() function thus input file can be a ...
Definition: TOPGainEfficiencyCalculatorModule.cc:174
Belle2::TOPGainEfficiencyCalculatorModule::terminate
virtual void terminate() override
Termination action.
Definition: TOPGainEfficiencyCalculatorModule.cc:183
Belle2::TOPGainEfficiencyCalculatorModule::m_p1Error
float m_p1Error
fit error of p1
Definition: TOPGainEfficiencyCalculatorModule.h:201
Belle2::TOPGainEfficiencyCalculatorModule::m_nEntries
int m_nEntries
entries of pulse charge distribution
Definition: TOPGainEfficiencyCalculatorModule.h:189
Belle2::TOPGainEfficiencyCalculatorModule::m_p1
float m_p1
fit result of p1
Definition: TOPGainEfficiencyCalculatorModule.h:197
Belle2::TOPGainEfficiencyCalculatorModule::m_histoMeanAboveThre
float m_histoMeanAboveThre
mean of histogram above threshold, ignore overflow bin
Definition: TOPGainEfficiencyCalculatorModule.h:209
Belle2::TOPGainEfficiencyCalculatorModule::m_p1HeightIntegral
float m_p1HeightIntegral
Parameter from p0 + x*p1 function that fits height-integral distribution.
Definition: TOPGainEfficiencyCalculatorModule.h:176
Belle2::TOPGainEfficiencyCalculatorModule::beginRun
virtual void beginRun() override
The main processes, fitting charge distribution and calculating gain/efficiency, are done in this fun...
Definition: TOPGainEfficiencyCalculatorModule.cc:170
Belle2::TOPGainEfficiencyCalculatorModule::m_tree
TTree * m_tree
ntuple to store summary
Definition: TOPGainEfficiencyCalculatorModule.h:147
Belle2::TOPGainEfficiencyCalculatorModule::m_nCalPulse
int m_nCalPulse
the number of events with calibration pulse(s) identified
Definition: TOPGainEfficiencyCalculatorModule.h:190
Belle2::TOPGainEfficiencyCalculatorModule::m_efficiency
float m_efficiency
calculated efficiency from fitting of pulse charge distribution
Definition: TOPGainEfficiencyCalculatorModule.h:195
Belle2::TOPGainEfficiencyCalculatorModule::m_branch
std::vector< TBranch * > m_branch[4]
ntuple to store summary of gain using height distribution.
Definition: TOPGainEfficiencyCalculatorModule.h:148
Belle2::TOPGainEfficiencyCalculatorModule::m_inputFile
std::string m_inputFile
input file containing timing vs charge 2D histograms (output of TOPLaserHitSelector)
Definition: TOPGainEfficiencyCalculatorModule.h:159
Belle2::TOPGainEfficiencyCalculatorModule::m_nOverflowEvents
int m_nOverflowEvents
the number of events outside histogram range
Definition: TOPGainEfficiencyCalculatorModule.h:191
Belle2::TOPGainEfficiencyCalculatorModule::m_initialX0
float m_initialX0
initial value of the fit parameter x0
Definition: TOPGainEfficiencyCalculatorModule.h:182
Belle2::TOPGainEfficiencyCalculatorModule::FitHistograms
void FitHistograms(EHistogramType LoadHisto)
Fit charge (or integrated charged) distribution to calculate gain and efficiency for each channel.
Definition: TOPGainEfficiencyCalculatorModule.cc:286
Belle2::TOPGainEfficiencyCalculatorModule::m_p0HeightIntegral
float m_p0HeightIntegral
Parameter from p0 + x*p1 function that fits height-integral distribution.
Definition: TOPGainEfficiencyCalculatorModule.h:175
Belle2::TOPGainEfficiencyCalculatorModule::endRun
virtual void endRun() override
Draw plots to show fitting results for each channel and save them into a given PDF file (outputPDFFil...
Definition: TOPGainEfficiencyCalculatorModule.cc:178
Belle2::TOPGainEfficiencyCalculatorModule::TOPGainEfficiencyCalculatorModule
TOPGainEfficiencyCalculatorModule()
Constructor.
Definition: TOPGainEfficiencyCalculatorModule.cc:57
Belle2::TOPGainEfficiencyCalculatorModule::m_histoFitRangeIntegral
float m_histoFitRangeIntegral
integral of histogram for a range [threshold, fitMax]
Definition: TOPGainEfficiencyCalculatorModule.h:208
Belle2::TOPGainEfficiencyCalculatorModule::m_x0
float m_x0
fit result of x0
Definition: TOPGainEfficiencyCalculatorModule.h:199
Belle2
Abstract base class for different kinds of events.
Definition: MillepedeAlgorithm.h:19
Belle2::TOPGainEfficiencyCalculatorModule::m_pmtChId
short m_pmtChId
PMT channel ID.
Definition: TOPGainEfficiencyCalculatorModule.h:186
Belle2::TOPGainEfficiencyCalculatorModule::LoadHistograms
void LoadHistograms(const std::string &histotype)
Load 2D histograms from a given input file (output of TOPLaserHitSelector) and create timing and char...
Definition: TOPGainEfficiencyCalculatorModule.cc:228
Belle2::TOPGainEfficiencyCalculatorModule::m_p2Error
float m_p2Error
fit error of p2
Definition: TOPGainEfficiencyCalculatorModule.h:202
Belle2::TOPGainEfficiencyCalculatorModule::m_pedestalSigma
float m_pedestalSigma
sigma of pedestal
Definition: TOPGainEfficiencyCalculatorModule.h:183
Belle2::TOPGainEfficiencyCalculatorModule::m_meanPulseHeightError
float m_meanPulseHeightError
histogram mean error of pulse height distribution
Definition: TOPGainEfficiencyCalculatorModule.h:193
Belle2::TOPGainEfficiencyCalculatorModule::TOPGainFunc
static double TOPGainFunc(double *var, double *par)
Fit function of pulse charge (or charnge) distribution for channel(pixel)-by-channel gain extraction,...
Definition: TOPGainEfficiencyCalculatorModule.cc:635
Belle2::TOPGainEfficiencyCalculatorModule::m_initialP0
float m_initialP0
initial value of the fit parameter p0
Definition: TOPGainEfficiencyCalculatorModule.h:179
Belle2::TOPGainEfficiencyCalculatorModule::FindPeakForSmallerXThan
static double FindPeakForSmallerXThan(TH1 *histo, double xmax=0)
Find peak and return its position for a limited range of x (x smaller than the given value (xmax))
Definition: TOPGainEfficiencyCalculatorModule.cc:656
Belle2::TOPGainEfficiencyCalculatorModule::m_initialP2
float m_initialP2
initial value of the fit parameter p2
Definition: TOPGainEfficiencyCalculatorModule.h:181
Belle2::TOPGainEfficiencyCalculatorModule::m_x0Error
float m_x0Error
fit error of x0
Definition: TOPGainEfficiencyCalculatorModule.h:203
Belle2::TOPGainEfficiencyCalculatorModule::m_hvDiff
short m_hvDiff
HV difference from nominal HV value.
Definition: TOPGainEfficiencyCalculatorModule.h:169
Belle2::TOPGainEfficiencyCalculatorModule::m_timeHistogram
TH1D * m_timeHistogram[c_NChannelPerPMT]
hit timing distribution, extracted from m_timeChargeHistogram as a projection along its x-axis.
Definition: TOPGainEfficiencyCalculatorModule.h:151
Belle2::TOPGainEfficiencyCalculatorModule::DummyFillBranch
void DummyFillBranch(EHistogramType LoadHisto)
Fill Dummy for Branch.
Definition: TOPGainEfficiencyCalculatorModule.cc:442
Belle2::TOPGainEfficiencyCalculatorModule::m_p0Error
float m_p0Error
fit error of p0
Definition: TOPGainEfficiencyCalculatorModule.h:200
Belle2::TOPGainEfficiencyCalculatorModule::EHistogramType
EHistogramType
enum for LoadHistograms switch.
Definition: TOPGainEfficiencyCalculatorModule.h:62
Belle2::TOPGainEfficiencyCalculatorModule::initialize
virtual void initialize() override
Load time vs charge 2D histogram from a given input file (paramter "inputFile") and prepare hit timin...
Definition: TOPGainEfficiencyCalculatorModule.cc:95
Belle2::TOPGainEfficiencyCalculatorModule::m_pixelId
short m_pixelId
pixel ID, calculated from PMT ID and PMT channel ID
Definition: TOPGainEfficiencyCalculatorModule.h:185
Belle2::TOPGainEfficiencyCalculatorModule::m_funcFitRangeIntegral
float m_funcFitRangeIntegral
integral of fit function for a range [threshold, fitMax]
Definition: TOPGainEfficiencyCalculatorModule.h:207
Belle2::TOPGainEfficiencyCalculatorModule::defineHisto
virtual void defineHisto() override
Define TTree branches to store fit results for each channel This TTree is saved in an output file giv...
Definition: TOPGainEfficiencyCalculatorModule.cc:100
Belle2::TOPGainEfficiencyCalculatorModule::m_gain
float m_gain
calculated gain from fitting of pulse charge distribution
Definition: TOPGainEfficiencyCalculatorModule.h:194
Belle2::TOPGainEfficiencyCalculatorModule::m_p0
float m_p0
fit result of p0
Definition: TOPGainEfficiencyCalculatorModule.h:196
Belle2::TOPGainEfficiencyCalculatorModule::m_fitMax
float m_fitMax
upper limit of fit region for pulse charge distribution, determined based on m_fracFit value
Definition: TOPGainEfficiencyCalculatorModule.h:177
Belle2::TOPGainEfficiencyCalculatorModule::m_chisquare
float m_chisquare
chi2 of fitting
Definition: TOPGainEfficiencyCalculatorModule.h:204
Belle2::TOPGainEfficiencyCalculatorModule::m_fitoption
std::string m_fitoption
charge histograms fitting option.
Definition: TOPGainEfficiencyCalculatorModule.h:163
Belle2::TOPGainEfficiencyCalculatorModule::m_funcForFitRange
TF1 * m_funcForFitRange[c_NChannelPerPMT]
array of TF1 pointer to store fit function for pulse charge distribution, defined only for fit region
Definition: TOPGainEfficiencyCalculatorModule.h:156
Belle2::TOPGainEfficiencyCalculatorModule::m_targetSlotId
short m_targetSlotId
slot ID
Definition: TOPGainEfficiencyCalculatorModule.h:166
Belle2::TOPGainEfficiencyCalculatorModule::~TOPGainEfficiencyCalculatorModule
virtual ~TOPGainEfficiencyCalculatorModule()
Destructor.
Definition: TOPGainEfficiencyCalculatorModule.cc:93
Belle2::TOPGainEfficiencyCalculatorModule::m_funcForFullRange
TF1 * m_funcForFullRange[c_NChannelPerPMT]
array of TF1 pointer to store fit function for pulse charge distribution, defined only for full range...
Definition: TOPGainEfficiencyCalculatorModule.h:157
Belle2::TOPGainEfficiencyCalculatorModule::m_ndf
int m_ndf
NDF of fitting.
Definition: TOPGainEfficiencyCalculatorModule.h:205
Belle2::TOPGainEfficiencyCalculatorModule::m_timeChargeHistogram
TH2F * m_timeChargeHistogram[c_NChannelPerPMT]
2D histogram of hit timing and pulse charge (or charge), taken from an output file of TOPLaserHitSele...
Definition: TOPGainEfficiencyCalculatorModule.h:150