CbmRoot
Loading...
Searching...
No Matches
CbmStsPhysics.h
Go to the documentation of this file.
1/* Copyright (C) 2014-2020 GSI Helmholtzzentrum fuer Schwerionenforschung, Darmstadt
2 SPDX-License-Identifier: GPL-3.0-only
3 Authors: Volker Friese [committer] */
4
11#ifndef CBMSTSPHYSICS_H
12#define CBMSTSPHYSICS_H 1
13
14#include <Rtypes.h> // for THashConsistencyHolder, ClassDef
15#include <RtypesCore.h> // for Double_t, Int_t, Bool_t
16
17#include <map> // for map
18#include <utility>
19#include <vector>
20
31
32public:
34 virtual ~CbmStsPhysics();
35
36
51 static Double_t DiffusionWidth(Double_t z, Double_t d, Double_t vBias, Double_t vFd, Double_t temperature,
52 Int_t chargeType);
53
54
62 static Double_t ElectricField(Double_t vBias, Double_t vFd, Double_t dZ, Double_t z);
63
64
75 Double_t 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
96 std::pair<std::vector<double>, double> GetLandauWidthTable() const;
97
101 static Double_t PairCreationEnergy() { return 3.57142e-9; }
102
103
112 static Double_t ParticleCharge(Int_t pid);
113
114
123 static Double_t ParticleMass(Int_t pid);
124
125
135 Double_t StoppingPower(Double_t eKin, Int_t pid);
136
137
149 Double_t StoppingPower(Double_t energy, Double_t mass, Double_t charge, Bool_t isElectron);
150
151
152private:
155
156
158 CbmStsPhysics(const CbmStsPhysics&) = delete;
159 ;
160
161
164
165
174 Double_t InterpolateDataTable(Double_t eKin, std::map<Double_t, Double_t>& table);
175
176
179
180
183
184
190 void SetUrbanParameters(Double_t z);
191
192
193private:
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 = 0.;
203 Double_t fUrbanR = 0.;
204
205 // --- Data tables for stopping power
206 std::map<Double_t, Double_t> fStoppingElectron {};
207 std::map<Double_t, Double_t> fStoppingProton {};
208
209 // --- Data tables for width of Landau distribution
210 std::map<Double_t, Double_t> fLandauWidth;
211
212
214};
215
216#endif /* CBMSTSPHYSICS_H_ */
Auxiliary class for physics processes in Silicon.
static Double_t PairCreationEnergy()
Energy for electron-hole pair creation in silicon.
void ReadDataTablesLandauWidth()
Read Landau width data table from file.
CbmStsPhysics operator=(const CbmStsPhysics &)=delete
Assignment operator (disabled)
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.
static Double_t ParticleCharge(Int_t pid)
Particle charge from PDG particle ID.
CbmStsPhysics(const CbmStsPhysics &)=delete
Copy constructor (disabled)
std::pair< std::vector< double >, double > GetLandauWidthTable() const
Raw values of landau width interpolation table.
Double_t fUrbanR
Urban model: weight parameter excitation/ionisation.
static Double_t ParticleMass(Int_t pid)
Particle mass from PDG particle ID.
Double_t InterpolateDataTable(Double_t eKin, std::map< Double_t, Double_t > &table)
Interpolate a value from the data tables.
static CbmStsPhysics * Instance()
Accessor to singleton instance.
static Double_t DiffusionWidth(Double_t z, Double_t d, Double_t vBias, Double_t vFd, Double_t temperature, Int_t chargeType)
Double_t StoppingPower(Double_t eKin, Int_t pid)
Stopping power (average specific energy loss) in Silicon.
Double_t LandauWidth(Double_t mostProbableCharge)
Half width at half max of Landau distribution in ultra-relativistic case.
static CbmStsPhysics * fgInstance
Singleton instance.
Double_t fUrbanE1
Urban model: first atomic energy level.
Double_t EnergyLoss(Double_t dz, Double_t mass, Double_t eKin, Double_t dedx) const
Energy loss in a Silicon layer.
std::map< Double_t, Double_t > fStoppingElectron
E [GeV] -> <-dE/dx> [GeV*g/cm^2].
void ReadDataTablesStoppingPower()
Read stopping power data table from file.
Double_t fUrbanE2
Urban model: second atomic energy level.
Double_t fUrbanI
Urban model: mean ionisation potential of Silicon.
CbmStsPhysics()
Constructor.
Double_t fUrbanF2
Urban model: oscillator strength second level.
std::map< Double_t, Double_t > fStoppingProton
E [GeV] -> <-dE/dx> [GeV*g/cm^2].
ClassDef(CbmStsPhysics, 2)
void SetUrbanParameters(Double_t z)
Calculate the parameters for the Urban model.
Double_t fUrbanF1
Urban model: oscillator strength first level.
std::map< Double_t, Double_t > fLandauWidth
q [e] -> width [e]
Double_t fUrbanEmax
Urban model: cut-off energy (delta-e threshold)
virtual ~CbmStsPhysics()