ATLAS Offline Software
Loading...
Searching...
No Matches
PixeldEdxData.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3*/
10
11
12#ifndef PIXELDEDXDATA_H
13#define PIXELDEDXDATA_H
14
16#include <string>
17#include <vector>
18#include <unordered_map>
19#include <array>
20
22
24 public:
25 void setPar(const int i, const double param);
26 void setPosNeg(const bool posneg);
27 void setFunctionType(const std::string &fun);
28 void setBetheBlochType(const std::string &bb);
29 void setMinimumdEdxForMass(const double mindedxMass);
30
31 double dEdxPdf(const double dedx, const double signedP, const double mass, const std::array<double,9> & par, const int offset) const;
32 double fdEdxZero(const double x, const std::array<double,9> & par) const;
33
34 double getPar(const int i, const int j) const;
35 std::array<double, 3> getP(const double dedxArg, const double signedP, const int nGoodPixels) const;
36 std::array<double,9> getFirstNPar( const double p, const int nGoodPixels, const int np) const;
37 double getMass(const double dedx, const double signedP, const int nGoodPixels) const;
38 double getdEdx(const double p, const double mass, const int nGoodPixels) const;
39 double getdEdx(const double p, const double mass, const std::array<double,9> & par) const;
40
41 // Crystal Ball distribution
42 static double crystalBall(const double x, const double x0,const double sig,const double alp,const double n) ;
43 // Asymetric Gaussian distribution
44 static double asymGaus(const double x,const double x0,const double sig,const double asym) ;
45 // Moyal distribution
46 static double moyal(const double x,const double Ep,const double R) ;
47
48 static double dEdx_5p_BG_aleph(const double xbg, const std::array<double,9>& pp) ;
49 static double dEdx_5p_aleph(const double p,double mass, const std::array<double,9>& pp) ;
50 static double dEdx_5p_BG(const double xbg, const std::array<double,9>& pp) ;
51 static double dEdx_5p(const double p,const double mass, const std::array<double,9>& pp) ;
52 static double dEdx_BG(const double xbg, const std::array<double,9>& pp) ;
53 static double dEdx_def(const double p,const double mass, const std::array<double,9>& pp) ;
54 static double dEdx_3p(const double p, const double mass, const std::array<double,9>& pp) ;
55
56 std::vector<float> getLikelihoods(const double dedx2, const double p2, const int nGoodPixels) const;
57
58 private:
59 static constexpr double m_piMass = 0.13957;
60 static constexpr double m_kMass = 0.49368;
61 static constexpr double m_pMass = 0.93827;
62
63 std::unordered_map<uint32_t,std::vector<double>> m_par;
64 bool m_posneg{};
65 std::string m_fun;
66 std::string m_bb;
68
69};
70
71CLASS_DEF( PixeldEdxData , 127567078 , 1 )
72
74
75#endif
Hold mappings of ranges to condition objects.
#define CONDCONT_DEF(...)
Definition CondCont.h:1413
macros to associate a CLID to a type
#define CLASS_DEF(NAME, CID, VERSION)
associate a clid and a version to a type eg
#define x
double m_mindedxformass
static double crystalBall(const double x, const double x0, const double sig, const double alp, const double n)
double getdEdx(const double p, const double mass, const int nGoodPixels) const
std::vector< float > getLikelihoods(const double dedx2, const double p2, const int nGoodPixels) const
static double dEdx_5p_BG(const double xbg, const std::array< double, 9 > &pp)
static double dEdx_BG(const double xbg, const std::array< double, 9 > &pp)
std::string m_fun
static constexpr double m_kMass
double getMass(const double dedx, const double signedP, const int nGoodPixels) const
void setMinimumdEdxForMass(const double mindedxMass)
void setBetheBlochType(const std::string &bb)
std::string m_bb
void setFunctionType(const std::string &fun)
static double dEdx_5p_aleph(const double p, double mass, const std::array< double, 9 > &pp)
static double dEdx_5p(const double p, const double mass, const std::array< double, 9 > &pp)
double getPar(const int i, const int j) const
double dEdxPdf(const double dedx, const double signedP, const double mass, const std::array< double, 9 > &par, const int offset) const
static double dEdx_def(const double p, const double mass, const std::array< double, 9 > &pp)
static constexpr double m_piMass
std::unordered_map< uint32_t, std::vector< double > > m_par
std::array< double, 9 > getFirstNPar(const double p, const int nGoodPixels, const int np) const
static double asymGaus(const double x, const double x0, const double sig, const double asym)
void setPar(const int i, const double param)
static double dEdx_5p_BG_aleph(const double xbg, const std::array< double, 9 > &pp)
static constexpr double m_pMass
double fdEdxZero(const double x, const std::array< double, 9 > &par) const
void setPosNeg(const bool posneg)
std::array< double, 3 > getP(const double dedxArg, const double signedP, const int nGoodPixels) const
static double moyal(const double x, const double Ep, const double R)
static double dEdx_3p(const double p, const double mass, const std::array< double, 9 > &pp)