CbmRoot
CbmStsPhysics.h
Go to the documentation of this file.
1 
7 #ifndef CBMSTSPHYSICS_H
8 #define CBMSTSPHYSICS_H 1
9 
10 #include <Rtypes.h> // for THashConsistencyHolder, ClassDef
11 #include <RtypesCore.h> // for Double_t, Int_t, Bool_t
12 
13 #include <map> // for map
14 
25 
26 public:
28  virtual ~CbmStsPhysics();
29 
30 
45  static Double_t DiffusionWidth(Double_t z,
46  Double_t d,
47  Double_t vBias,
48  Double_t vFd,
49  Double_t temperature,
50  Int_t chargeType);
51 
52 
60  static Double_t
61  ElectricField(Double_t vBias, Double_t vFd, Double_t dZ, Double_t z);
62 
63 
74  Double_t
75  EnergyLoss(Double_t dz, Double_t mass, Double_t eKin, Double_t dedx) const;
76 
77 
83  static CbmStsPhysics* Instance();
84 
85 
91  Double_t LandauWidth(Double_t mostProbableCharge);
92 
93 
97  static Double_t PairCreationEnergy() { return 3.57142e-9; }
98 
99 
108  static Double_t ParticleCharge(Int_t pid);
109 
110 
119  static Double_t ParticleMass(Int_t pid);
120 
121 
131  Double_t StoppingPower(Double_t eKin, Int_t pid);
132 
133 
145  Double_t StoppingPower(Double_t energy,
146  Double_t mass,
147  Double_t charge,
148  Bool_t isElectron);
149 
150 
151 private:
154 
155 
157  CbmStsPhysics(const CbmStsPhysics&) = delete;
158  ;
159 
160 
163 
164 
173  Double_t InterpolateDataTable(Double_t eKin,
174  std::map<Double_t, Double_t>& table);
175 
176 
179 
180 
183 
184 
190  void SetUrbanParameters(Double_t z);
191 
192 
193 private:
195 
196  // --- Parameters for the Urban model
197  Double_t fUrbanI = 0.;
198  Double_t fUrbanE1 = 0.;
199  Double_t fUrbanE2 = 0.;
200  Double_t fUrbanF1 = 0.;
201  Double_t fUrbanF2 = 0.;
202  Double_t fUrbanEmax =
203  0.;
204  Double_t fUrbanR =
205  0.;
206 
207  // --- Data tables for stopping power
208  std::map<Double_t, Double_t>
210  std::map<Double_t, Double_t>
212 
213  // --- Data tables for width of Landau distribution
214  std::map<Double_t, Double_t> fLandauWidth;
215 
216 
218 };
219 
220 #endif /* CBMSTSPHYSICS_H_ */
CbmStsPhysics
Auxiliary class for physics processes in Silicon.
Definition: CbmStsPhysics.h:24
CbmStsPhysics::ReadDataTablesStoppingPower
void ReadDataTablesStoppingPower()
Read stopping power data table from file.
Definition: CbmStsPhysics.cxx:268
CbmStsPhysics::ParticleCharge
static Double_t ParticleCharge(Int_t pid)
Particle charge from PDG particle ID.
Definition: CbmStsPhysics.cxx:196
CbmStsPhysics::LandauWidth
Double_t LandauWidth(Double_t mostProbableCharge)
Half width at half max of Landau distribution in ultra-relativistic case.
Definition: CbmStsPhysics.cxx:187
CbmStsPhysics::~CbmStsPhysics
virtual ~CbmStsPhysics()
Definition: CbmStsPhysics.cxx:53
CbmStsPhysics::fgInstance
static CbmStsPhysics * fgInstance
Singleton instance.
Definition: CbmStsPhysics.h:194
CbmStsPhysics::CbmStsPhysics
CbmStsPhysics()
Constructor.
CbmStsPhysics::fUrbanF2
Double_t fUrbanF2
Urban model: oscillator strength second level.
Definition: CbmStsPhysics.h:201
CbmStsPhysics::fUrbanEmax
Double_t fUrbanEmax
Urban model: cut-off energy (delta-e threshold)
Definition: CbmStsPhysics.h:202
CbmStsPhysics::StoppingPower
Double_t StoppingPower(Double_t eKin, Int_t pid)
Stopping power (average specific energy loss) in Silicon.
Definition: CbmStsPhysics.cxx:358
CbmStsPhysics::fUrbanE1
Double_t fUrbanE1
Urban model: first atomic energy level.
Definition: CbmStsPhysics.h:198
CbmStsPhysics::Instance
static CbmStsPhysics * Instance()
Accessor to singleton instance.
Definition: CbmStsPhysics.cxx:155
CbmStsPhysics::fUrbanF1
Double_t fUrbanF1
Urban model: oscillator strength first level.
Definition: CbmStsPhysics.h:200
CbmStsPhysics::ParticleMass
static Double_t ParticleMass(Int_t pid)
Particle mass from PDG particle ID.
Definition: CbmStsPhysics.cxx:217
d
double d
Definition: P4_F64vec2.h:24
CbmStsPhysics::fUrbanI
Double_t fUrbanI
Urban model: mean ionisation potential of Silicon.
Definition: CbmStsPhysics.h:197
CbmStsPhysics::EnergyLoss
Double_t EnergyLoss(Double_t dz, Double_t mass, Double_t eKin, Double_t dedx) const
Energy loss in a Silicon layer.
Definition: CbmStsPhysics.cxx:112
CbmStsPhysics::fStoppingProton
std::map< Double_t, Double_t > fStoppingProton
E [GeV] -> <-dE/dx> [GeV*g/cm^2].
Definition: CbmStsPhysics.h:211
CbmStsPhysics::ClassDef
ClassDef(CbmStsPhysics, 2)
CbmStsPhysics::ReadDataTablesLandauWidth
void ReadDataTablesLandauWidth()
Read Landau width data table from file.
Definition: CbmStsPhysics.cxx:238
CbmStsPhysics::CbmStsPhysics
CbmStsPhysics(const CbmStsPhysics &)=delete
Copy constructor (disabled)
CbmStsPhysics::fUrbanE2
Double_t fUrbanE2
Urban model: second atomic energy level.
Definition: CbmStsPhysics.h:199
CbmStsPhysics::fLandauWidth
std::map< Double_t, Double_t > fLandauWidth
q [e] -> width [e]
Definition: CbmStsPhysics.h:214
CbmStsPhysics::SetUrbanParameters
void SetUrbanParameters(Double_t z)
Calculate the parameters for the Urban model.
Definition: CbmStsPhysics.cxx:322
CbmStsPhysics::operator=
CbmStsPhysics operator=(const CbmStsPhysics &)=delete
Assignment operator (disabled)
CbmStsPhysics::fStoppingElectron
std::map< Double_t, Double_t > fStoppingElectron
E [GeV] -> <-dE/dx> [GeV*g/cm^2].
Definition: CbmStsPhysics.h:209
CbmStsPhysics::InterpolateDataTable
Double_t InterpolateDataTable(Double_t eKin, std::map< Double_t, Double_t > &table)
Interpolate a value from the data tables.
Definition: CbmStsPhysics.cxx:163
CbmStsPhysics::ElectricField
static Double_t ElectricField(Double_t vBias, Double_t vFd, Double_t dZ, Double_t z)
Electric field magnitude in a silicon sensor as function of z.
Definition: CbmStsPhysics.cxx:102
CbmStsPhysics::fUrbanR
Double_t fUrbanR
Urban model: weight parameter excitation/ionisation.
Definition: CbmStsPhysics.h:204
CbmStsPhysics::DiffusionWidth
static Double_t DiffusionWidth(Double_t z, Double_t d, Double_t vBias, Double_t vFd, Double_t temperature, Int_t chargeType)
Definition: CbmStsPhysics.cxx:58
CbmStsPhysics::PairCreationEnergy
static Double_t PairCreationEnergy()
Energy for electron-hole pair creation in silicon.
Definition: CbmStsPhysics.h:97