Belle II Software  release-05-02-19
XTCalibrationAlgorithm.h
1 /**************************************************************************
2  * BASF2 (Belle Analysis Framework 2) *
3  * Copyright(C) 2010 - Belle II Collaboration *
4  * *
5  * Author: The Belle II Collaboration *
6  * Contributors: Makoto Uchida *
7  * *
8  * This software is provided "as is" without any warranty. *
9  **************************************************************************/
10 
11 #pragma once
12 #include "string"
13 #include "TH2D.h"
14 #include "TH1D.h"
15 #include "TF1.h"
16 #include <calibration/CalibrationAlgorithm.h>
17 #include <cdc/dbobjects/CDCGeometry.h>
18 #include <framework/database/DBObjPtr.h>
19 
20 namespace Belle2 {
25  namespace CDC {
26 
30  enum {c_Left = 0, c_Right = 1};
31 
35  enum {c_Polynomial = 0, c_Chebyshev = 1};
36 
46  enum FitStatus {c_lowStat = -1, c_fitFailure = 0, c_OK = 1,
47  c_errorOuter = 2, c_errorInner = 3
48  };
49 
53  class XTCalibrationAlgorithm : public CalibrationAlgorithm {
54  public:
57 
60 
62  void setBField(bool bfield) {m_bField = bfield;}
63 
65  void setDebug(bool debug = false) {m_debug = debug; }
66 
68  void setMinimumNDF(double ndf) {m_minNdf = ndf;}
69 
71  void setMinimumPval(double pval) {m_minPval = pval;}
72 
74  void setXtMode(unsigned short mode = c_Chebyshev) {m_xtMode = mode;}
75 
77  void setStoreHisto(bool storeHist = false) {m_storeHisto = storeHist;}
78 
80  void enableTextOutput(bool output = true) {m_textOutput = output;}
81 
83  void setOutputFileName(std::string outputname) {m_outputFileName.assign(outputname);}
84 
86  void setHistFileName(const std::string& name) {m_histName = "histXT_" + name + ".root";}
87 
89  void setLRSeparate(bool lr = true) {m_LRseparate = lr;}
90 
92  void setThreshold(double th = 0.6) {m_threshold = th;}
93 
94 
95  protected:
96 
98  EResult calibrate() override;
99 
101  void createHisto();
102 
104  void write();
105 
107  void storeHisto();
108 
110  void prepare();
111 
114 
116  void sanitaryCheck();
117  private:
118  double m_minNdf = 5;
119  double m_minPval = 0.;
120  bool m_debug = false;
121  bool m_storeHisto = true;
122  bool m_LRseparate = true;
123  bool m_bField = true;
124  double m_threshold = 0.6;
126  TProfile* m_hProf[56][2][20][10];
127  TH2F* m_hist2d[56][2][20][10];
128  TH2F* m_hist2dDraw[56][20][10];
129  TH1F* m_hist2d_1[56][2][20][10];
130  TF1* m_xtFunc[56][2][20][10];
132  double m_xtPrior[56][2][18][7][8];
134  int m_fitStatus[56][2][20][10];
135  bool m_useSliceFit = false;
136  int m_minEntriesRequired = 1000;
139  int m_xtMode = c_Chebyshev;
141  float m_lowerAlpha[18];
142  float m_upperAlpha[18];
143  float m_iAlpha[18];
144  float m_lowerTheta[7];
145  float m_upperTheta[7];
146  float m_iTheta[7];
147  double m_par6[56] = {89, 91, 94, 99, 104, 107, 110, 117,
149  126, 144, 150, 157, 170, 180,
150  160, 167, 183, 205, 200, 194,
151  177, 189, 192, 206, 224, 234,
152  193, 206, 209, 215, 222, 239,
153  204, 212, 217, 227, 235, 240,
154  215, 222, 230, 239, 246, 253,
155  227, 232, 239, 243, 253, 258,
156  231, 243, 246, 256, 263, 300
157  };
158 
159  bool m_textOutput = false;
160  std::string m_outputFileName = "xt_new.dat";
161  std::string m_histName = "histXT.root";
163  };
164  }
166 }
Belle2::CDC::XTCalibrationAlgorithm::XTCalibrationAlgorithm
XTCalibrationAlgorithm()
Constructor.
Definition: XTCalibrationAlgorithm.cc:22
Belle2::CDC::XTCalibrationAlgorithm::m_LRseparate
bool m_LRseparate
Separate LR in calibration or mix.
Definition: XTCalibrationAlgorithm.h:130
Belle2::CDC::XTCalibrationAlgorithm::setThreshold
void setThreshold(double th=0.6)
Set threshold for the fraction of fitted results.
Definition: XTCalibrationAlgorithm.h:100
Belle2::CDC::XTCalibrationAlgorithm::m_lowerTheta
float m_lowerTheta[7]
Lower boundays of theta bins.
Definition: XTCalibrationAlgorithm.h:152
Belle2::CDC::XTCalibrationAlgorithm::calibrate
EResult calibrate() override
Run algo on data.
Definition: XTCalibrationAlgorithm.cc:121
Belle2::CDC::XTCalibrationAlgorithm::~XTCalibrationAlgorithm
~XTCalibrationAlgorithm()
Destructor.
Definition: XTCalibrationAlgorithm.h:67
Belle2::CDC::XTCalibrationAlgorithm::setMinimumPval
void setMinimumPval(double pval)
set minimum Prob(Chi2) requirement
Definition: XTCalibrationAlgorithm.h:79
Belle2::CDC::XTCalibrationAlgorithm::prepare
void prepare()
Prepare the calibration of XT.
Definition: XTCalibrationAlgorithm.cc:301
Belle2::CDC::XTCalibrationAlgorithm::setDebug
void setDebug(bool debug=false)
Run in debug or silent.
Definition: XTCalibrationAlgorithm.h:73
Belle2::CDC::XTCalibrationAlgorithm::m_xtFunc
TF1 * m_xtFunc[56][2][20][10]
XTFunction.
Definition: XTCalibrationAlgorithm.h:138
Belle2::CDC::XTCalibrationAlgorithm::m_xtMode
int m_xtMode
Mode of xt; 0 is polynomial;1 is Chebyshev.
Definition: XTCalibrationAlgorithm.h:147
Belle2::CDC::XTCalibrationAlgorithm::m_cdcGeo
DBObjPtr< CDCGeometry > m_cdcGeo
Geometry of CDC.
Definition: XTCalibrationAlgorithm.h:170
Belle2::CDC::XTCalibrationAlgorithm::m_hist2d
TH2F * m_hist2d[56][2][20][10]
2D histo of xt
Definition: XTCalibrationAlgorithm.h:135
Belle2::CDC::XTCalibrationAlgorithm::enableTextOutput
void enableTextOutput(bool output=true)
Enable text output of calibration result.
Definition: XTCalibrationAlgorithm.h:88
Belle2::CDC::XTCalibrationAlgorithm::m_minNdf
double m_minNdf
minimum ndf required
Definition: XTCalibrationAlgorithm.h:126
Belle2::CDC::XTCalibrationAlgorithm::m_textOutput
bool m_textOutput
output text file if true
Definition: XTCalibrationAlgorithm.h:167
Belle2::CDC::XTCalibrationAlgorithm::m_nThetaBins
int m_nThetaBins
number of theta bins
Definition: XTCalibrationAlgorithm.h:146
Belle2::CDC::XTCalibrationAlgorithm::createHisto
void createHisto()
Create histogram for calibration.
Definition: XTCalibrationAlgorithm.cc:29
Belle2::CDC::XTCalibrationAlgorithm::m_hist2d_1
TH1F * m_hist2d_1[56][2][20][10]
1D xt histo, results of slice fit
Definition: XTCalibrationAlgorithm.h:137
Belle2::CDC::XTCalibrationAlgorithm::m_par6
double m_par6[56]
boundary parameter for fitting, semi-experiment number
Definition: XTCalibrationAlgorithm.h:156
Belle2::CDC::FitStatus
FitStatus
Fit Status.
Definition: XTCalibrationAlgorithm.h:54
Belle2::DBObjPtr
Class for accessing objects in the database.
Definition: DBObjPtr.h:31
Belle2::CDC::XTCalibrationAlgorithm::m_bField
bool m_bField
with b field or none
Definition: XTCalibrationAlgorithm.h:131
Belle2::CDC::XTCalibrationAlgorithm::m_threshold
double m_threshold
minimal requirement for the fraction of fitted results
Definition: XTCalibrationAlgorithm.h:132
Belle2::CDC::XTCalibrationAlgorithm::setBField
void setBField(bool bfield)
set to use BField
Definition: XTCalibrationAlgorithm.h:70
Belle2::CDC::XTCalibrationAlgorithm::m_hist2dDraw
TH2F * m_hist2dDraw[56][20][10]
2d histo for draw
Definition: XTCalibrationAlgorithm.h:136
Belle2::CDC::XTCalibrationAlgorithm::m_minPval
double m_minPval
minimum pvalue required
Definition: XTCalibrationAlgorithm.h:127
Belle2::CDC::XTCalibrationAlgorithm::setLRSeparate
void setLRSeparate(bool lr=true)
Set LR separate mode (default is true).
Definition: XTCalibrationAlgorithm.h:97
Belle2::CDC::XTCalibrationAlgorithm::m_hProf
TProfile * m_hProf[56][2][20][10]
Profile xt histo.
Definition: XTCalibrationAlgorithm.h:134
Belle2
Abstract base class for different kinds of events.
Definition: MillepedeAlgorithm.h:19
Belle2::CDC::XTCalibrationAlgorithm::m_iAlpha
float m_iAlpha[18]
Represented alpha in alpha bins.
Definition: XTCalibrationAlgorithm.h:151
Belle2::CDC::XTCalibrationAlgorithm::setMinimumNDF
void setMinimumNDF(double ndf)
set minimum number of degree of freedom requirement
Definition: XTCalibrationAlgorithm.h:76
Belle2::CDC::XTCalibrationAlgorithm::m_lowerAlpha
float m_lowerAlpha[18]
Lower boundays of alpha bins.
Definition: XTCalibrationAlgorithm.h:149
Belle2::CDC::XTCalibrationAlgorithm::setOutputFileName
void setOutputFileName(std::string outputname)
output file name
Definition: XTCalibrationAlgorithm.h:91
Belle2::CDC::XTCalibrationAlgorithm::m_storeHisto
bool m_storeHisto
Store histogram or not.
Definition: XTCalibrationAlgorithm.h:129
Belle2::CDC::XTCalibrationAlgorithm::m_fitStatus
int m_fitStatus[56][2][20][10]
Fit flag.
Definition: XTCalibrationAlgorithm.h:142
Belle2::CDC::XTCalibrationAlgorithm::m_useSliceFit
bool m_useSliceFit
Use slice fit or profile.
Definition: XTCalibrationAlgorithm.h:143
Belle2::CDC::XTCalibrationAlgorithm::storeHisto
void storeHisto()
Store histogram to file.
Definition: XTCalibrationAlgorithm.cc:437
Belle2::CDC::XTCalibrationAlgorithm::setStoreHisto
void setStoreHisto(bool storeHist=false)
set to store histogram or not.
Definition: XTCalibrationAlgorithm.h:85
Belle2::CDC::XTCalibrationAlgorithm::m_minEntriesRequired
int m_minEntriesRequired
minimum number of hit per hitosgram.
Definition: XTCalibrationAlgorithm.h:144
Belle2::CDC::XTCalibrationAlgorithm::m_upperAlpha
float m_upperAlpha[18]
Upper boundays of alpha bins.
Definition: XTCalibrationAlgorithm.h:150
Belle2::CalibrationAlgorithm::EResult
EResult
The result of calibration.
Definition: CalibrationAlgorithm.h:50
Belle2::CDC::XTCalibrationAlgorithm::m_xtModePrior
int m_xtModePrior
Mode of xt before calibration; 0 is polynomial;1 is Chebyshev.
Definition: XTCalibrationAlgorithm.h:148
Belle2::CDC::XTCalibrationAlgorithm::m_iTheta
float m_iTheta[7]
Represented theta in theta bins.
Definition: XTCalibrationAlgorithm.h:154
Belle2::CDC::XTCalibrationAlgorithm::checkConvergence
EResult checkConvergence()
Check the convergence of XT fit.
Definition: XTCalibrationAlgorithm.cc:277
Belle2::CDC::XTCalibrationAlgorithm::m_upperTheta
float m_upperTheta[7]
Upper boundays of theta bins.
Definition: XTCalibrationAlgorithm.h:153
Belle2::CDC::XTCalibrationAlgorithm::m_nAlphaBins
int m_nAlphaBins
number of alpha bins
Definition: XTCalibrationAlgorithm.h:145
Belle2::CDC::XTCalibrationAlgorithm::m_debug
bool m_debug
run in debug or silent
Definition: XTCalibrationAlgorithm.h:128
Belle2::CDC::XTCalibrationAlgorithm::setXtMode
void setXtMode(unsigned short mode=c_Chebyshev)
set xt mode, 0 is polynimial, 1 is Chebshev polynomial
Definition: XTCalibrationAlgorithm.h:82
Belle2::CDC::XTCalibrationAlgorithm::sanitaryCheck
void sanitaryCheck()
Check if there are any wrong xt functions.
Definition: XTCalibrationAlgorithm.cc:256
Belle2::CDC::XTCalibrationAlgorithm::m_histName
std::string m_histName
root file name
Definition: XTCalibrationAlgorithm.h:169
Belle2::CDC::XTCalibrationAlgorithm::m_xtPrior
double m_xtPrior[56][2][18][7][8]
paremeters of XT before calibration
Definition: XTCalibrationAlgorithm.h:140
Belle2::CDC::XTCalibrationAlgorithm::setHistFileName
void setHistFileName(const std::string &name)
Set name for histogram output.
Definition: XTCalibrationAlgorithm.h:94
Belle2::CDC::XTCalibrationAlgorithm::m_outputFileName
std::string m_outputFileName
Output xt filename.
Definition: XTCalibrationAlgorithm.h:168
Belle2::CDC::XTCalibrationAlgorithm::write
void write()
Store calibrated constand.
Definition: XTCalibrationAlgorithm.cc:347