Belle II Software  release-05-02-19
SpaceResolutionCalibrationAlgorithm.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 
13 #include <TH1F.h>
14 #include <TH2F.h>
15 #include <TGraphErrors.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  class SpaceResolutionCalibrationAlgorithm : public CalibrationAlgorithm {
31  // typedef std::array<float, 3> array3; /**< angle bin info. */
32  public:
33 
36 
39 
41  void setDebug(bool debug = false) {m_debug = debug; }
42 
44  void setMinimumNDF(double ndf) {m_minNdf = ndf;}
45 
47  void setMinimumPval(double pval) {m_minPval = pval;}
48 
50  void setBinWidth(double bw) {m_binWidth = bw;}
51 
53  void setBField(bool bfield) {m_bField = bfield;}
54 
56  void setStoreHisto(bool storeHist = false) {m_storeHisto = storeHist;}
57 
59  void enableTextOutput(bool output = true) {m_textOutput = output;}
60 
62  void setOutputFileName(std::string outputname) {m_outputFileName.assign(outputname);}
63 
65  void setHistFileName(const std::string& name) {m_histName = "histSigma_" + name + ".root";}
66 
68  void setThreshold(double th = 0.6) {m_threshold = th;}
69 
70  protected:
72  EResult calibrate() override;
74  void createHisto();
76  void storeHisto();
78  void write();
80  void prepare();
81 
83  double getUpperBoundaryForFit(TGraphErrors* graph)
84  {
85  double ymax = 0;
86  double xmax = 0;
87  int imax = 0;
88  double x, y;
89  int unCount = floor(0.05 / m_binWidth);
90  int N = graph->GetN();
91  int Nstart = floor(0.5 * (N - unCount));
92  int Nend = N - unCount;
93  for (int i = Nstart; i < Nend; ++i) {
94  graph->GetPoint(i, x, y);
95  if (graph->GetErrorY(i) > 0.06E-3) continue;
96  if (y > ymax) {
97  xmax = x; ymax = y;
98  imax = i;
99  }
100  }
101  if (imax <= Nstart) {
102  graph->GetPoint(Nend, x, y);
103  xmax = x;
104  }
105  return xmax;
106  }
107 
108  private:
109  static const int Max_nalpha = 18;
110  static const int Max_ntheta = 7;
111  static const unsigned short Max_np = 40;
113  double m_minNdf = 5;
114  double m_minPval = 0.;
115  double m_binWidth = 0.05;
116  bool m_debug = false;
117  bool m_storeHisto = false;
118  bool m_bField = true;
119  double m_threshold = 0.6 ;
120  double m_sigma[56][2][18][7][8];
121  TGraphErrors* m_gFit[56][2][18][7];
122  TGraphErrors* m_graph[56][2][18][7];
123  TH2F* m_hBiased[56][2][Max_nalpha][Max_ntheta];
129  int m_fitStatus[56][2][Max_nalpha][Max_ntheta] = {{{{0}}}} ;
133  float m_lowerAlpha[18];
134  float m_upperAlpha[18];
135  float m_iAlpha[18];
136  float m_lowerTheta[7];
137  float m_upperTheta[7];
138  float m_iTheta[7];
139  unsigned short m_sigmaParamMode = 0;
141  double m_sigmaPost[56][2][18][7][8];
142  unsigned short m_sigmaParamModePost;
144  bool m_textOutput = false;
145  std::string m_outputFileName = "sigma_new.dat";
146  std::string m_histName = "histSigma.root";
148  };
149  }
151 }
Belle2::CDC::SpaceResolutionCalibrationAlgorithm::m_cdcGeo
DBObjPtr< CDCGeometry > m_cdcGeo
Geometry of CDC.
Definition: SpaceResolutionCalibrationAlgorithm.h:155
Belle2::CDC::SpaceResolutionCalibrationAlgorithm::m_sigmaPost
double m_sigmaPost[56][2][18][7][8]
sigma prameters before calibration
Definition: SpaceResolutionCalibrationAlgorithm.h:149
Belle2::CDC::SpaceResolutionCalibrationAlgorithm::getUpperBoundaryForFit
double getUpperBoundaryForFit(TGraphErrors *graph)
search max point at boundary region
Definition: SpaceResolutionCalibrationAlgorithm.h:91
Belle2::CDC::SpaceResolutionCalibrationAlgorithm::Max_nalpha
static const int Max_nalpha
Maximum alpha bin.
Definition: SpaceResolutionCalibrationAlgorithm.h:117
Belle2::CDC::SpaceResolutionCalibrationAlgorithm::m_iAlpha
float m_iAlpha[18]
represented alphas of alpha bins.
Definition: SpaceResolutionCalibrationAlgorithm.h:143
Belle2::CDC::SpaceResolutionCalibrationAlgorithm::m_threshold
double m_threshold
minimal requirement for the fraction of fitted results
Definition: SpaceResolutionCalibrationAlgorithm.h:127
Belle2::CDC::SpaceResolutionCalibrationAlgorithm::createHisto
void createHisto()
create histogram
Definition: SpaceResolutionCalibrationAlgorithm.cc:38
Belle2::CDC::SpaceResolutionCalibrationAlgorithm::m_sigmaParamMode
unsigned short m_sigmaParamMode
sigma mode for this calibration.
Definition: SpaceResolutionCalibrationAlgorithm.h:147
Belle2::CDC::SpaceResolutionCalibrationAlgorithm::enableTextOutput
void enableTextOutput(bool output=true)
Enable text output of calibration result.
Definition: SpaceResolutionCalibrationAlgorithm.h:67
Belle2::CDC::SpaceResolutionCalibrationAlgorithm::setDebug
void setDebug(bool debug=false)
Set Debug mode.
Definition: SpaceResolutionCalibrationAlgorithm.h:49
Belle2::CDC::SpaceResolutionCalibrationAlgorithm::SpaceResolutionCalibrationAlgorithm
SpaceResolutionCalibrationAlgorithm()
Constructor.
Definition: SpaceResolutionCalibrationAlgorithm.cc:31
Belle2::CDC::SpaceResolutionCalibrationAlgorithm::m_hUnbiased
TH2F * m_hUnbiased[56][2][Max_nalpha][Max_ntheta]
2D histogram of unbiased residual
Definition: SpaceResolutionCalibrationAlgorithm.h:132
Belle2::CDC::SpaceResolutionCalibrationAlgorithm::~SpaceResolutionCalibrationAlgorithm
~SpaceResolutionCalibrationAlgorithm()
Destructor.
Definition: SpaceResolutionCalibrationAlgorithm.h:46
Belle2::CDC::SpaceResolutionCalibrationAlgorithm::Max_ntheta
static const int Max_ntheta
maximum theta bin
Definition: SpaceResolutionCalibrationAlgorithm.h:118
Belle2::CDC::SpaceResolutionCalibrationAlgorithm::m_sigma
double m_sigma[56][2][18][7][8]
new sigma prameters.
Definition: SpaceResolutionCalibrationAlgorithm.h:128
Belle2::CDC::SpaceResolutionCalibrationAlgorithm::setStoreHisto
void setStoreHisto(bool storeHist=false)
Store histograms durring the calibration or not.
Definition: SpaceResolutionCalibrationAlgorithm.h:64
Belle2::CDC::SpaceResolutionCalibrationAlgorithm::m_minNdf
double m_minNdf
Minimum NDF
Definition: SpaceResolutionCalibrationAlgorithm.h:121
Belle2::CDC::SpaceResolutionCalibrationAlgorithm::setThreshold
void setThreshold(double th=0.6)
Set threshold for the fraction of fitted results.
Definition: SpaceResolutionCalibrationAlgorithm.h:76
Belle2::CDC::SpaceResolutionCalibrationAlgorithm::m_storeHisto
bool m_storeHisto
Store histogram or not.
Definition: SpaceResolutionCalibrationAlgorithm.h:125
Belle2::CDC::SpaceResolutionCalibrationAlgorithm::m_hSigmaBiased
TH1F * m_hSigmaBiased[56][2][Max_nalpha][Max_ntheta]
sigma histogram of biased residual
Definition: SpaceResolutionCalibrationAlgorithm.h:134
Belle2::DBObjPtr
Class for accessing objects in the database.
Definition: DBObjPtr.h:31
Belle2::CDC::SpaceResolutionCalibrationAlgorithm::m_nThetaBins
int m_nThetaBins
number of theta bins
Definition: SpaceResolutionCalibrationAlgorithm.h:140
Belle2::CDC::SpaceResolutionCalibrationAlgorithm::calibrate
EResult calibrate() override
Run algo on data.
Definition: SpaceResolutionCalibrationAlgorithm.cc:311
Belle2::CDC::SpaceResolutionCalibrationAlgorithm::setBField
void setBField(bool bfield)
Work with B field or not;.
Definition: SpaceResolutionCalibrationAlgorithm.h:61
Belle2::CDC::SpaceResolutionCalibrationAlgorithm::m_lowerAlpha
float m_lowerAlpha[18]
Lower boundays of alpha bins.
Definition: SpaceResolutionCalibrationAlgorithm.h:141
Belle2::CDC::SpaceResolutionCalibrationAlgorithm::m_gFit
TGraphErrors * m_gFit[56][2][18][7]
sigma*sigma graph for fit
Definition: SpaceResolutionCalibrationAlgorithm.h:129
Belle2::CDC::SpaceResolutionCalibrationAlgorithm::m_minPval
double m_minPval
Minimum Prob(chi2) of track.
Definition: SpaceResolutionCalibrationAlgorithm.h:122
Belle2
Abstract base class for different kinds of events.
Definition: MillepedeAlgorithm.h:19
Belle2::CDC::SpaceResolutionCalibrationAlgorithm::setOutputFileName
void setOutputFileName(std::string outputname)
output file name
Definition: SpaceResolutionCalibrationAlgorithm.h:70
Belle2::CDC::SpaceResolutionCalibrationAlgorithm::m_histName
std::string m_histName
root file name
Definition: SpaceResolutionCalibrationAlgorithm.h:154
Belle2::CDC::SpaceResolutionCalibrationAlgorithm::m_nAlphaBins
int m_nAlphaBins
number of alpha bins
Definition: SpaceResolutionCalibrationAlgorithm.h:139
Belle2::CDC::SpaceResolutionCalibrationAlgorithm::m_hMeanUnbiased
TH1F * m_hMeanUnbiased[56][2][Max_nalpha][Max_ntheta]
mean histogram of unbiased residual
Definition: SpaceResolutionCalibrationAlgorithm.h:135
Belle2::CDC::SpaceResolutionCalibrationAlgorithm::m_upperAlpha
float m_upperAlpha[18]
Upper boundays of alpha bins.
Definition: SpaceResolutionCalibrationAlgorithm.h:142
Belle2::CDC::SpaceResolutionCalibrationAlgorithm::m_hSigmaUnbiased
TH1F * m_hSigmaUnbiased[56][2][Max_nalpha][Max_ntheta]
sigma histogram of ubiased residual
Definition: SpaceResolutionCalibrationAlgorithm.h:136
Belle2::CDC::SpaceResolutionCalibrationAlgorithm::storeHisto
void storeHisto()
store histogram
Definition: SpaceResolutionCalibrationAlgorithm.cc:425
Belle2::CDC::SpaceResolutionCalibrationAlgorithm::m_textOutput
bool m_textOutput
output text file if true
Definition: SpaceResolutionCalibrationAlgorithm.h:152
Belle2::CDC::SpaceResolutionCalibrationAlgorithm::setMinimumPval
void setMinimumPval(double pval)
Minimum Pval required.
Definition: SpaceResolutionCalibrationAlgorithm.h:55
Belle2::CalibrationAlgorithm::EResult
EResult
The result of calibration.
Definition: CalibrationAlgorithm.h:50
Belle2::CDC::SpaceResolutionCalibrationAlgorithm::m_hBiased
TH2F * m_hBiased[56][2][Max_nalpha][Max_ntheta]
2D histogram of biased residual
Definition: SpaceResolutionCalibrationAlgorithm.h:131
Belle2::CDC::SpaceResolutionCalibrationAlgorithm::write
void write()
save calibration, in text file or db
Definition: SpaceResolutionCalibrationAlgorithm.cc:472
Belle2::CDC::SpaceResolutionCalibrationAlgorithm::setBinWidth
void setBinWidth(double bw)
Bin width of each slide.
Definition: SpaceResolutionCalibrationAlgorithm.h:58
Belle2::CDC::SpaceResolutionCalibrationAlgorithm::m_iTheta
float m_iTheta[7]
represented alphas of theta bins.
Definition: SpaceResolutionCalibrationAlgorithm.h:146
Belle2::CDC::SpaceResolutionCalibrationAlgorithm::prepare
void prepare()
Prepare the calibration of space resolution.
Definition: SpaceResolutionCalibrationAlgorithm.cc:537
Belle2::CDC::SpaceResolutionCalibrationAlgorithm::Max_np
static const unsigned short Max_np
Maximum number of point =1/binwidth.
Definition: SpaceResolutionCalibrationAlgorithm.h:119
Belle2::CDC::SpaceResolutionCalibrationAlgorithm::m_lowerTheta
float m_lowerTheta[7]
Lower boundays of theta bins.
Definition: SpaceResolutionCalibrationAlgorithm.h:144
Belle2::CDC::SpaceResolutionCalibrationAlgorithm::setHistFileName
void setHistFileName(const std::string &name)
Set name for histogram output.
Definition: SpaceResolutionCalibrationAlgorithm.h:73
Belle2::CDC::SpaceResolutionCalibrationAlgorithm::m_graph
TGraphErrors * m_graph[56][2][18][7]
sigma graph.
Definition: SpaceResolutionCalibrationAlgorithm.h:130
Belle2::CDC::SpaceResolutionCalibrationAlgorithm::m_hMeanBiased
TH1F * m_hMeanBiased[56][2][Max_nalpha][Max_ntheta]
mean histogram biased residual
Definition: SpaceResolutionCalibrationAlgorithm.h:133
Belle2::CDC::SpaceResolutionCalibrationAlgorithm::m_fitStatus
int m_fitStatus[56][2][Max_nalpha][Max_ntheta]
Fit flag; 1:OK ; 0:error.
Definition: SpaceResolutionCalibrationAlgorithm.h:137
Belle2::CDC::SpaceResolutionCalibrationAlgorithm::m_debug
bool m_debug
Debug or not.
Definition: SpaceResolutionCalibrationAlgorithm.h:124
Belle2::CDC::SpaceResolutionCalibrationAlgorithm::setMinimumNDF
void setMinimumNDF(double ndf)
minimum NDF required for track
Definition: SpaceResolutionCalibrationAlgorithm.h:52
Belle2::CDC::SpaceResolutionCalibrationAlgorithm::m_outputFileName
std::string m_outputFileName
Output sigma filename.
Definition: SpaceResolutionCalibrationAlgorithm.h:153
Belle2::CDC::SpaceResolutionCalibrationAlgorithm::m_sigmaParamModePost
unsigned short m_sigmaParamModePost
sigma mode before this calibration.
Definition: SpaceResolutionCalibrationAlgorithm.h:150
Belle2::CDC::SpaceResolutionCalibrationAlgorithm::m_upperTheta
float m_upperTheta[7]
Upper boundays of theta bins.
Definition: SpaceResolutionCalibrationAlgorithm.h:145
Belle2::CDC::SpaceResolutionCalibrationAlgorithm::m_binWidth
double m_binWidth
width of each bin, unit cm
Definition: SpaceResolutionCalibrationAlgorithm.h:123
Belle2::CDC::SpaceResolutionCalibrationAlgorithm::m_bField
bool m_bField
Work with BField, fit range and initial parameters is different incase B and noB.
Definition: SpaceResolutionCalibrationAlgorithm.h:126