Belle II Software  release-05-02-19
PXDAnalyticGainCalibrationAlgorithm.h
1 /**************************************************************************
2  * BASF2 (Belle Analysis Framework 2) *
3  * Copyright(C) 2021 - Belle II Collaboration *
4  * *
5  * Author: The Belle II Collaboration *
6  * Contributors: Qingyuan Liu *
7  * *
8  * This software is provided "as is" without any warranty. *
9  **************************************************************************/
10 
11 #pragma once
12 #include <calibration/CalibrationAlgorithm.h>
13 #include <vxd/dataobjects/VxdID.h>
14 #include <vector>
15 
16 // ROOT
17 #include <TH1.h>
18 
19 
20 namespace Belle2 {
28  class PXDAnalyticGainCalibrationAlgorithm : public CalibrationAlgorithm {
29  public:
30 
33 
36 
38  int minClusters;
39 
41  float safetyFactor;
42 
44  bool forceContinue;
45 
47  int strategy;
48 
51 
53  bool correctForward;
54 
56  void setBoundaries(const std::vector<Calibration::ExpRun>& boundaries) {m_requestedBoundaries = boundaries;}
57 
59  std::vector<Calibration::ExpRun> getBoundaries() const {return m_requestedBoundaries;}
60 
61  protected:
62 
64  virtual EResult calibrate() override;
65 
67  virtual bool isBoundaryRequired(const Calibration::ExpRun& /*currentRun*/) override;
68 
70  // We reset the temporary boundaries list to be the same as the requested one.
71  virtual void boundaryFindingSetup(std::vector<Calibration::ExpRun> /*runs*/, int /*iteration = 0*/) override
72  {
73  m_boundaries = m_requestedBoundaries;
74  };
75 
76  private:
77 
79  double EstimateGain(VxdID sensorID, unsigned short uBin, unsigned short vBin, TH1* hist = nullptr);
80 
82  //double CalculateMedian(std::vector<double>& signals);
83 
85  //double CalculateMedian(TH1* hist);
86 
88  //double FitLandau(std::vector<double>& signals);
89 
91  //double FitLandau(TH1* hist);
92 
94  double GetCurrentGainFromDB(VxdID sensorID, unsigned short uBin, unsigned short vBin);
95 
97  std::vector<Calibration::ExpRun> m_requestedBoundaries;
98 
99  };
101 } // namespace Belle2
102 
103 
Belle2::VxdID
Class to uniquely identify a any structure of the PXD and SVD.
Definition: VxdID.h:43
Belle2::PXDAnalyticGainCalibrationAlgorithm::~PXDAnalyticGainCalibrationAlgorithm
virtual ~PXDAnalyticGainCalibrationAlgorithm()
Destructor.
Definition: PXDAnalyticGainCalibrationAlgorithm.h:43
Belle2::PXDAnalyticGainCalibrationAlgorithm::m_requestedBoundaries
std::vector< Calibration::ExpRun > m_requestedBoundaries
During findPayloadBoundaries and isBoundaryRequired this is used to define the boundaries we want.
Definition: PXDAnalyticGainCalibrationAlgorithm.h:105
Belle2::PXDAnalyticGainCalibrationAlgorithm::strategy
int strategy
strategy to used for gain calibration, 0 for medians, 1 for landau fit
Definition: PXDAnalyticGainCalibrationAlgorithm.h:55
Belle2::PXDAnalyticGainCalibrationAlgorithm::setBoundaries
void setBoundaries(const std::vector< Calibration::ExpRun > &boundaries)
Setter for boundaries.
Definition: PXDAnalyticGainCalibrationAlgorithm.h:64
Belle2::PXDAnalyticGainCalibrationAlgorithm::correctForward
bool correctForward
Flag to update default gains in forward region due to low statistics.
Definition: PXDAnalyticGainCalibrationAlgorithm.h:61
Belle2::PXDAnalyticGainCalibrationAlgorithm::isBoundaryRequired
virtual bool isBoundaryRequired(const Calibration::ExpRun &) override
Decide if a run should be a payload boundary. Only used in certain Python Algorithm Starategies.
Definition: PXDAnalyticGainCalibrationAlgorithm.cc:294
Belle2::PXDAnalyticGainCalibrationAlgorithm::GetCurrentGainFromDB
double GetCurrentGainFromDB(VxdID sensorID, unsigned short uBin, unsigned short vBin)
Retrive current gain value from pulled in data base payload.
Definition: PXDAnalyticGainCalibrationAlgorithm.cc:267
Belle2::PXDAnalyticGainCalibrationAlgorithm::boundaryFindingSetup
virtual void boundaryFindingSetup(std::vector< Calibration::ExpRun >, int) override
What we do before isBoundaryRequired gets called.
Definition: PXDAnalyticGainCalibrationAlgorithm.h:79
Belle2::PXDAnalyticGainCalibrationAlgorithm::minClusters
int minClusters
Minimum number of collected clusters for estimating gains.
Definition: PXDAnalyticGainCalibrationAlgorithm.h:46
Belle2::PXDAnalyticGainCalibrationAlgorithm::calibrate
virtual EResult calibrate() override
Run algo on data.
Definition: PXDAnalyticGainCalibrationAlgorithm.cc:53
Belle2::PXDAnalyticGainCalibrationAlgorithm::getBoundaries
std::vector< Calibration::ExpRun > getBoundaries() const
getter for current boundaries
Definition: PXDAnalyticGainCalibrationAlgorithm.h:67
Belle2::PXDAnalyticGainCalibrationAlgorithm::safetyFactor
float safetyFactor
Safety factor for determining whether the collected number of clusters is enough.
Definition: PXDAnalyticGainCalibrationAlgorithm.h:49
Belle2
Abstract base class for different kinds of events.
Definition: MillepedeAlgorithm.h:19
Belle2::PXDAnalyticGainCalibrationAlgorithm::forceContinue
bool forceContinue
Force continue in low statistics runs instead of returning c_NotEnoughData.
Definition: PXDAnalyticGainCalibrationAlgorithm.h:52
Belle2::CalibrationAlgorithm::EResult
EResult
The result of calibration.
Definition: CalibrationAlgorithm.h:50
Belle2::PXDAnalyticGainCalibrationAlgorithm::EstimateGain
double EstimateGain(VxdID sensorID, unsigned short uBin, unsigned short vBin, TH1 *hist=nullptr)
Estimate gain as ratio of medians from MC and data for a part of PXD.
Definition: PXDAnalyticGainCalibrationAlgorithm.cc:209
Belle2::PXDAnalyticGainCalibrationAlgorithm::useChargeRatioHistogram
bool useChargeRatioHistogram
Flag to use histogram of charge ratio (relative to expected MPV)
Definition: PXDAnalyticGainCalibrationAlgorithm.h:58
Belle2::PXDAnalyticGainCalibrationAlgorithm::PXDAnalyticGainCalibrationAlgorithm
PXDAnalyticGainCalibrationAlgorithm()
Constructor set the prefix to PXDAnalyticGainCalibrationAlgorithm.
Definition: PXDAnalyticGainCalibrationAlgorithm.cc:40