Belle II Software  release-08-01-10
ARICHReconstructionPar.h
1 /**************************************************************************
2  * basf2 (Belle II Analysis Software Framework) *
3  * Author: The Belle II Collaboration *
4  * *
5  * See git log for contributors and copyright holders. *
6  * This file is licensed under LGPL-3.0, see LICENSE.md. *
7  **************************************************************************/
8 
9 #pragma once
10 
11 #include <TObject.h>
12 #include <vector>
13 #include <TF1.h>
14 #include <TF2.h>
15 
16 namespace Belle2 {
22 
25  class ARICHReconstructionPar : public TObject {
26 
27  public:
28 
31 
33  void initializeDefault();
34 
39  void setBackgroundPDF(TF1* bkgPDF)
40  {
41  m_bkgPDF = bkgPDF;
42  }
43 
48  void setBackgroundPhiPDF(TF2* bkgPhiPDF)
49  {
50  m_bkgPhiPDF = bkgPhiPDF;
51  }
52 
53 
58  void setThcResolution(TF1* thcRes)
59  {
60  m_thcResolution = thcRes;
61  }
62 
67  void setAerogelFOM(const std::vector<float>& aerogelFOM)
68  {
69  m_aerogelFOM = aerogelFOM;
70  }
71 
76  void setFlatBkgPerPad(const float flatBkgPerPad)
77  {
78  m_flatBkgPerPad = flatBkgPerPad;
79  }
80 
85  void setParameters(const std::vector<float>& pars)
86  {
87  m_pars = pars;
88  }
89 
94  const std::vector<float>& getParameters() const
95  {
96  return m_pars;
97  }
98 
103  const TF1* getBackgroundPDF() const
104  {
105  return m_bkgPDF;
106  }
107 
112  const TF2* getBackgroundPhiPDF() const
113  {
114  return m_bkgPhiPDF;
115  }
116 
122  double getThcResolution(double momentum) const
123  {
124  return m_thcResolution->Eval(momentum);
125  }
126 
132  double getAerogelFOM(unsigned iLayer) const
133  {
134  return m_aerogelFOM.at(iLayer);
135  }
136 
141  float getFlatBkgPerPad() const
142  {
143  return m_flatBkgPerPad;
144  }
145 
152  double getBackgroundPerPad(double th_cer, const std::vector<double>& pars) const;
153 
162  double getPhiCorrectedBackgroundPerPad(double fi_cer_trk, double th_cer, const std::vector<double>& pars) const;
163 
164 
172  double getExpectedBackgroundHits(const std::vector<double>& pars, double minThc = 0.1, double maxThc = 0.5) const;
173 
181  double getNPadsInRing(double maxThc, double minThc = 0.0, double trackTh = 0.45) const;
182 
186  void print() const;
187 
188  private:
189 
190  mutable TF2* m_bkgPhiPDF = NULL;
191  mutable TF1* m_bkgPDF = NULL;
192  TF1* m_thcResolution = NULL;
193  std::vector<float> m_pars;
194  std::vector<float> m_aerogelFOM;
195  float m_flatBkgPerPad = 0.0;
199  };
200 
202 } // namespace
203 
The Class for ARICH reconstruction parameters.
double getThcResolution(double momentum) const
Get Cherenkov angle resolution (without smearing due to pad size!) at given track momentum.
double getBackgroundPerPad(double th_cer, const std::vector< double > &pars) const
Get expected number of background hits for pad at given theta.
void initializeDefault()
initializes "default" values of parameters
void setFlatBkgPerPad(const float flatBkgPerPad)
Set flat background per pad.
float getFlatBkgPerPad() const
Get flat background per pad.
std::vector< float > m_pars
vector of other pdf parameters
double getPhiCorrectedBackgroundPerPad(double fi_cer_trk, double th_cer, const std::vector< double > &pars) const
Get expected number of background hits for pad at given theta at given phi_Cer_trk (flat background i...
void setAerogelFOM(const std::vector< float > &aerogelFOM)
Set aerogel figure of merit for cherenkov photon yield.
ARICHReconstructionPar()
Default constructor.
double getAerogelFOM(unsigned iLayer) const
Get aerogel cherenkov photon yield for tile of selected layer.
double getNPadsInRing(double maxThc, double minThc=0.0, double trackTh=0.45) const
Get average number of pads in ring.
const TF2 * getBackgroundPhiPDF() const
Get background PDF function (with phi correction)
void setParameters(const std::vector< float > &pars)
Set additional cherenkov angle PDF parameters.
void setThcResolution(TF1 *thcRes)
Set function for cherenkov angle resolution vs.
void setBackgroundPhiPDF(TF2 *bkgPhiPDF)
Set background PDF function with flattening phi correction.
void setBackgroundPDF(TF1 *bkgPDF)
Set background PDF function for cherenkov angle distribution (vs.
TF2 * m_bkgPhiPDF
background PDF function with phi correction
ClassDef(ARICHReconstructionPar, 2)
ClassDef, must be the last term before the closing {}.
TF1 * m_thcResolution
cherenkov angle resolution (function of track momentum)
void print() const
Print parameters values.
const TF1 * getBackgroundPDF() const
Get background PDF function.
double getExpectedBackgroundHits(const std::vector< double > &pars, double minThc=0.1, double maxThc=0.5) const
Get number of expected background hits in ring (0.1<theta<0.5rad by default)
std::vector< float > m_aerogelFOM
aerogel figure of merit (for photon yield)
float m_flatBkgPerPad
expected background hits per pad (treated flat over detector surface)
TF1 * m_bkgPDF
background PDF function (function of theta)
const std::vector< float > & getParameters() const
Get vector of additional cherenkov angle PDF parameters.
Abstract base class for different kinds of events.