EIC Software
Reference for
EIC
simulation and reconstruction software on GitHub
Home page
Related Pages
Modules
Namespaces
Classes
Files
External Links
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Groups
Pages
MaterialEffects.h
Go to the documentation of this file.
Or view
the newest version in sPHENIX GitHub for file MaterialEffects.h
1
/* Copyright 2008-2014, Technische Universitaet Muenchen,
2
Authors: Christian Hoeppner & Sebastian Neubert & Johannes Rauch
3
4
This file is part of GENFIT.
5
6
GENFIT is free software: you can redistribute it and/or modify
7
it under the terms of the GNU Lesser General Public License as published
8
by the Free Software Foundation, either version 3 of the License, or
9
(at your option) any later version.
10
11
GENFIT is distributed in the hope that it will be useful,
12
but WITHOUT ANY WARRANTY; without even the implied warranty of
13
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
GNU Lesser General Public License for more details.
15
16
You should have received a copy of the GNU Lesser General Public License
17
along with GENFIT. If not, see <http://www.gnu.org/licenses/>.
18
*/
19
24
#ifndef genfit_MaterialEffects_h
25
#define genfit_MaterialEffects_h
26
27
#include "
RKTools.h
"
28
#include "
AbsMaterialInterface.h
"
29
30
#include <iostream>
31
#include <vector>
32
33
#include <TVector3.h>
34
35
36
namespace
genfit {
37
50
class
MaterialEffects
{
51
52
private
:
53
54
MaterialEffects
();
55
virtual
~MaterialEffects
();
56
57
static
MaterialEffects
*
instance_
;
58
59
60
public
:
61
62
static
MaterialEffects
*
getInstance
();
63
static
void
destruct
();
64
66
void
init
(
AbsMaterialInterface
* matIfc);
67
bool
isInitialized
() {
return
materialInterface_
!=
nullptr
; }
68
69
void
setNoEffects
(
bool
opt =
true
) {
noEffects_
= opt;}
70
71
void
setEnergyLossBetheBloch
(
bool
opt =
true
) {
energyLossBetheBloch_
= opt;
noEffects_
=
false
;}
72
void
setNoiseBetheBloch
(
bool
opt =
true
) {
noiseBetheBloch_
= opt;
noEffects_
=
false
;}
73
void
setNoiseCoulomb
(
bool
opt =
true
) {
noiseCoulomb_
= opt;
noEffects_
=
false
;}
74
void
setEnergyLossBrems
(
bool
opt =
true
) {
energyLossBrems_
= opt;
noEffects_
=
false
;}
75
void
setNoiseBrems
(
bool
opt =
true
) {
noiseBrems_
= opt;
noEffects_
=
false
;}
76
void
ignoreBoundariesBetweenEqualMaterials
(
bool
opt =
true
) {
ignoreBoundariesBetweenEqualMaterials_
= opt;}
77
83
void
setMscModel
(
const
std::string& modelName);
84
85
87
double
effects
(
const
std::vector<RKStep>&
steps
,
88
int
materialsFXStart,
89
int
materialsFXStop,
90
const
double
&
mom
,
91
const
int
&
pdg
,
92
M7x7
* noise =
nullptr
);
93
99
void
stepper
(
const
RKTrackRep
* rep,
100
M1x7
& state7,
101
const
double
&
mom
,
// momentum
102
double
& relMomLoss,
// relative momloss for the step will be added
103
const
int
&
pdg
,
104
Material
& currentMaterial,
105
StepLimits
& limits,
106
bool
varField =
true
);
107
108
void
setDebugLvl
(
unsigned
int
lvl = 1);
109
110
111
void
drawdEdx
(
int
pdg
= 11);
112
113
private
:
114
116
void
getParticleParameters
();
117
118
void
getMomGammaBeta
(
double
Energy,
119
double
&
mom
,
double
& gammaSquare,
double
&
gamma
,
double
& betaSquare)
const
;
120
122
125
double
momentumLoss
(
double
stepSign,
double
mom
,
bool
linear);
126
128
double
dEdx
(
double
Energy)
const
;
129
130
132
double
dEdxBetheBloch
(
double
betaSquare,
double
gamma
,
double
gammasquare)
const
;
133
135
143
void
noiseBetheBloch
(
M7x7
& noise,
double
mom
,
double
betaSquare,
double
gamma
,
double
gammaSquare)
const
;
144
146
153
void
noiseCoulomb
(
M7x7
& noise,
154
const
M1x3
& direction,
double
momSquare,
double
betaSquare)
const
;
155
157
161
double
dEdxBrems
(
double
mom
)
const
;
162
164
166
void
noiseBrems
(
M7x7
& noise,
double
momSquare,
double
betaSquare)
const
;
167
168
169
170
bool
noEffects_
;
171
172
bool
energyLossBetheBloch_
;
173
bool
noiseBetheBloch_
;
174
bool
noiseCoulomb_
;
175
bool
energyLossBrems_
;
176
bool
noiseBrems_
;
177
178
bool
ignoreBoundariesBetweenEqualMaterials_
;
179
180
const
double
me_
;
// electron mass (GeV)
181
182
double
stepSize_
;
// stepsize
183
184
// cached values for energy loss and noise calculations
185
double
dEdx_
;
// Runkge Kutta dEdx
186
double
E_
;
// Runge Kutta Energy
187
double
matDensity_
;
188
double
matZ_
;
189
double
matA_
;
190
double
radiationLength_
;
191
double
mEE_
;
// mean excitation energy
192
193
int
pdg_
;
194
int
charge_
;
195
double
mass_
;
196
197
int
mscModelCode_
;
198
199
AbsMaterialInterface
*
materialInterface_
;
200
201
unsigned
int
debugLvl_
;
202
203
// ClassDef(MaterialEffects, 1);
204
205
};
206
207
}
/* End of namespace genfit */
210
#endif // genfit_MaterialEffects_h
fun4all_GenFit
blob
master
trackReps
include
MaterialEffects.h
Built by
Jin Huang
. updated:
Mon Jan 22 2024 12:43:54
using
1.8.2 with
EIC GitHub integration