Belle II Software  release-05-01-25
KLMLikelihoodParameters.h
1 /**************************************************************************
2  * BASF2 (Belle Analysis Framework 2) *
3  * Copyright(C) 2016 - Belle II Collaboration *
4  * *
5  * Author: The Belle II Collaboration *
6  * Contributors: KLM group *
7  * *
8  * This software is provided "as is" without any warranty. *
9 **************************************************************************/
10 #pragma once
11 
12 /* KLM headers. */
13 #include <klm/muid/MuidElementNumbers.h>
14 
15 /* ROOT headers. */
16 #include <TObject.h>
17 
18 /* C++ headers. */
19 #include <map>
20 
21 namespace Belle2 {
30  class KLMLikelihoodParameters : public TObject {
31 
32  public:
33 
38  {
39  }
40 
45  {
46  }
47 
55  void setLongitudinalPDF(int hypothesis, int outcome, int lastLayer, const std::vector<double>& params)
56  {
57  const int id = MuidElementNumbers::getLongitudinalID(hypothesis, outcome, lastLayer);
58  setLongitudinalPDF(id, params);
59  }
60 
68  void setTransversePDF(int hypothesis, int detector, int degreesOfFreedom, const std::vector<double>& params)
69  {
70  int id = MuidElementNumbers::getTransverseID(hypothesis, detector, degreesOfFreedom);
71  setTransversePDF(id, params);
72  }
73 
81  void setTransverseThreshold(int hypothesis, int detector, int degreesOfFreedom, const double threshold)
82  {
83  int id = MuidElementNumbers::getTransverseID(hypothesis, detector, degreesOfFreedom);
84  setTransverseThreshold(id, threshold);
85  }
86 
94  void setTransverseScaleX(int hypothesis, int detector, int degreesOfFreedom, const double scaleX)
95  {
96  int id = MuidElementNumbers::getTransverseID(hypothesis, detector, degreesOfFreedom);
97  setTransverseScaleX(id, scaleX);
98  }
99 
107  void setTransverseScaleY(int hypothesis, int detector, int degreesOfFreedom, const double scaleY)
108  {
109  int id = MuidElementNumbers::getTransverseID(hypothesis, detector, degreesOfFreedom);
110  setTransverseScaleY(id, scaleY);
111  }
112 
119  const std::vector<double>& getLongitudinalPDF(int hypothesis, int outcome, int lastLayer) const
120  {
121  const int id = MuidElementNumbers::getLongitudinalID(hypothesis, outcome, lastLayer);
122  return getLongitudinalPDF(id);
123  }
124 
131  const std::vector<double>& getTransversePDF(int hypothesis, int detector, int degreesOfFreedom) const
132  {
133  const int id = MuidElementNumbers::getTransverseID(hypothesis, detector, degreesOfFreedom);
134  return getTransversePDF(id);
135  }
136 
143  double getTransverseThreshold(int hypothesis, int detector, int degreesOfFreedom) const
144  {
145  const int id = MuidElementNumbers::getTransverseID(hypothesis, detector, degreesOfFreedom);
146  return getTransverseThreshold(id);
147  }
148 
155  double getTransverseScaleX(int hypothesis, int detector, int degreesOfFreedom) const
156  {
157  const int id = MuidElementNumbers::getTransverseID(hypothesis, detector, degreesOfFreedom);
158  return getTransverseScaleX(id);
159  }
160 
167  double getTransverseScaleY(int hypothesis, int detector, int degreesOfFreedom) const
168  {
169  const int id = MuidElementNumbers::getTransverseID(hypothesis, detector, degreesOfFreedom);
170  return getTransverseScaleY(id);
171  }
172 
173  private:
174 
180  void setLongitudinalPDF(const int id, const std::vector<double>& params)
181  {
182  m_LongitudinalPDF.insert(std::pair<int, std::vector<double>>(id, params));
183  }
184 
190  void setTransversePDF(const int id, const std::vector<double>& params)
191  {
192  m_TransversePDF.insert(std::pair<int, std::vector<double>>(id, params));
193  }
194 
200  void setTransverseThreshold(const int id, const double threshold)
201  {
202  m_TransverseThreshold.insert(std::pair<int, double>(id, threshold));
203  }
204 
210  void setTransverseScaleX(const int id, const double scaleX)
211  {
212  m_TransverseScaleX.insert(std::pair<int, double>(id, scaleX));
213  }
214 
220  void setTransverseScaleY(const int id, const double scaleY)
221  {
222  m_TransverseScaleY.insert(std::pair<int, double>(id, scaleY));
223  }
224 
229  const std::vector<double>& getLongitudinalPDF(const int id) const;
230 
235  const std::vector<double>& getTransversePDF(const int id) const;
236 
241  double getTransverseThreshold(const int id) const;
242 
247  double getTransverseScaleX(const int id) const;
248 
253  double getTransverseScaleY(const int id) const;
254 
256  std::map<int, std::vector<double>> m_LongitudinalPDF;
257 
259  std::map<int, std::vector<double>> m_TransversePDF;
260 
262  std::map<int, double> m_TransverseThreshold;
263 
265  std::map<int, double> m_TransverseScaleX;
266 
268  std::map<int, double> m_TransverseScaleY;
269 
272 
273  };
274 
276 }
Belle2::KLMLikelihoodParameters::KLMLikelihoodParameters
KLMLikelihoodParameters()
Constructor.
Definition: KLMLikelihoodParameters.h:45
Belle2::MuidElementNumbers::getLongitudinalID
static int getLongitudinalID(int hypothesis, int outcome, int lastLayer)
Get the unique longitudinal identifier for given hypothesis, outcome and last layer crossed.
Definition: MuidElementNumbers.cc:176
Belle2::KLMLikelihoodParameters::m_LongitudinalPDF
std::map< int, std::vector< double > > m_LongitudinalPDF
Longitudinal probability density function.
Definition: KLMLikelihoodParameters.h:264
Belle2::KLMLikelihoodParameters::getTransverseScaleX
double getTransverseScaleX(int hypothesis, int detector, int degreesOfFreedom) const
Get the transverse probability density function (analytical): horizontal scale for specific hypothesi...
Definition: KLMLikelihoodParameters.h:163
Belle2::KLMLikelihoodParameters::setTransverseThreshold
void setTransverseThreshold(int hypothesis, int detector, int degreesOfFreedom, const double threshold)
Set the transverse probability density function (analytical): threshold for specific hypothesis,...
Definition: KLMLikelihoodParameters.h:89
Belle2::KLMLikelihoodParameters::getTransversePDF
const std::vector< double > & getTransversePDF(int hypothesis, int detector, int degreesOfFreedom) const
Get the transverse probability density function for specific hypothesis, detector and degrees of free...
Definition: KLMLikelihoodParameters.h:139
Belle2::KLMLikelihoodParameters::setTransversePDF
void setTransversePDF(int hypothesis, int detector, int degreesOfFreedom, const std::vector< double > &params)
Set the transverse probability density function for specific hypothesis, detector and degrees of free...
Definition: KLMLikelihoodParameters.h:76
Belle2::KLMLikelihoodParameters::m_TransversePDF
std::map< int, std::vector< double > > m_TransversePDF
Transverse probability density function.
Definition: KLMLikelihoodParameters.h:267
Belle2::KLMLikelihoodParameters::getLongitudinalPDF
const std::vector< double > & getLongitudinalPDF(int hypothesis, int outcome, int lastLayer) const
Get the longitudinal probability density function for specific hypothesis, outcome and last layer.
Definition: KLMLikelihoodParameters.h:127
Belle2
Abstract base class for different kinds of events.
Definition: MillepedeAlgorithm.h:19
Belle2::KLMLikelihoodParameters::~KLMLikelihoodParameters
~KLMLikelihoodParameters()
Destructor.
Definition: KLMLikelihoodParameters.h:52
Belle2::KLMLikelihoodParameters::m_TransverseScaleX
std::map< int, double > m_TransverseScaleX
Transverse probability density function (analytical): horizontal scale.
Definition: KLMLikelihoodParameters.h:273
Belle2::KLMLikelihoodParameters::getTransverseThreshold
double getTransverseThreshold(int hypothesis, int detector, int degreesOfFreedom) const
Get the transverse probability density function (analytical): threshold for specific hypothesis,...
Definition: KLMLikelihoodParameters.h:151
Belle2::KLMLikelihoodParameters::ClassDef
ClassDef(KLMLikelihoodParameters, 1)
Class version.
Belle2::KLMLikelihoodParameters::m_TransverseScaleY
std::map< int, double > m_TransverseScaleY
Transverse probability density function (analytical): vertical scale.
Definition: KLMLikelihoodParameters.h:276
Belle2::KLMLikelihoodParameters::setLongitudinalPDF
void setLongitudinalPDF(int hypothesis, int outcome, int lastLayer, const std::vector< double > &params)
Set the longitudinal probability density function for specific hypothesis, outcome and last layer.
Definition: KLMLikelihoodParameters.h:63
Belle2::KLMLikelihoodParameters::m_TransverseThreshold
std::map< int, double > m_TransverseThreshold
Transverse probability density function (analytical): threshold.
Definition: KLMLikelihoodParameters.h:270
Belle2::KLMLikelihoodParameters::setTransverseScaleX
void setTransverseScaleX(int hypothesis, int detector, int degreesOfFreedom, const double scaleX)
Set the transverse probability density function (analytical): horizontal scale for specific hypothesi...
Definition: KLMLikelihoodParameters.h:102
Belle2::KLMLikelihoodParameters::setTransverseScaleY
void setTransverseScaleY(int hypothesis, int detector, int degreesOfFreedom, const double scaleY)
Set the transverse probability density function (analytical): vertical scale for specific hypothesis,...
Definition: KLMLikelihoodParameters.h:115
Belle2::KLMLikelihoodParameters::getTransverseScaleY
double getTransverseScaleY(int hypothesis, int detector, int degreesOfFreedom) const
Get the transverse probability density function (analytical): vertical scale for specific hypothesis,...
Definition: KLMLikelihoodParameters.h:175
Belle2::MuidElementNumbers::getTransverseID
static int getTransverseID(int hypothesis, int detector, int degreesOfFreedom)
Get the unique transverse identifier for given hypothesis, detector and degrees of freedom.
Definition: MuidElementNumbers.cc:184