ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
Tracking
TrkEvent
TrkTrack
src
GXFMaterialEffects.cxx
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
3
*/
4
5
#include "
TrkTrack/GXFMaterialEffects.h
"
6
#include "
TrkSurfaces/Surface.h
"
7
#include "
TrkMaterialOnTrack/MaterialEffectsOnTrack.h
"
8
#include "
TrkMaterialOnTrack/ScatteringAngles.h
"
9
#include "
TrkMaterialOnTrack/EnergyLoss.h
"
10
11
namespace
Trk
{
12
GXFMaterialEffects::GXFMaterialEffects
(
const
MaterialEffectsOnTrack
&meot)
13
:
m_sigmadeltae
(0),
m_surf
(&meot.
associatedSurface
()) {
14
15
if
(meot.
energyLoss
() !=
nullptr
) {
16
m_deltae = meot.energyLoss()->deltaE();
17
m_sigmadeltaepos = meot.energyLoss()->sigmaPlusDeltaE();
18
m_sigmadeltaeneg = meot.energyLoss()->sigmaMinusDeltaE();
19
20
if (meot.scatteringAngles() == nullptr) {
21
m_eloss = std::unique_ptr<EnergyLoss>(meot.energyLoss()->clone());
22
m_sigmadeltae = meot.energyLoss()->sigmaDeltaE();
23
}
else
{
24
m_eloss = nullptr;
25
}
26
}
else
{
27
m_eloss =
nullptr
;
28
m_deltae = 0;
29
m_sigmadeltaepos = 0;
30
m_sigmadeltaeneg = 0;
31
}
32
33
double
x0 = meot.thicknessInX0();
34
const
ScatteringAngles *scatangles = meot.scatteringAngles();
35
36
if
((scatangles !=
nullptr
) && x0 > 0) {
37
m_x0 = x0;
38
m_sintheta = scatangles->sigmaDeltaTheta() / scatangles->sigmaDeltaPhi();
39
m_scatphi = scatangles->deltaPhi();
40
m_scattheta = scatangles->deltaTheta();
41
m_sigmascatphi = scatangles->sigmaDeltaPhi();
42
m_sigmascattheta = scatangles->sigmaDeltaTheta();
43
}
else
{
44
m_scatphi = m_scattheta = m_sigmascatphi = m_sigmascattheta = 0;
45
}
46
}
47
48
GXFMaterialEffects::GXFMaterialEffects
(
const
GXFMaterialEffects
& rhs)
49
:
m_scatphi
(rhs.
m_scatphi
),
50
m_scattheta
(rhs.
m_scattheta
),
51
m_sigmascatphi
(rhs.
m_sigmascatphi
),
52
m_sigmascattheta
(rhs.
m_sigmascattheta
),
53
m_x0
(rhs.
m_x0
),
54
m_deltap
(rhs.
m_deltap
),
55
m_deltae
(rhs.
m_deltae
),
56
m_sigmadeltae
(rhs.
m_sigmadeltae
),
57
m_sigmadeltaepos
(rhs.
m_sigmadeltaepos
),
58
m_sigmadeltaeneg
(rhs.
m_sigmadeltaeneg
),
59
m_eloss
(
std
::
unique_ptr
<
EnergyLoss
>(rhs.
m_eloss
!= nullptr ? rhs.
m_eloss
->clone() : nullptr)),
60
m_surf
(rhs.
m_surf
),
61
m_matprop
(rhs.
m_matprop
),
62
m_iskink
(rhs.
m_iskink
),
63
m_ismeasuredeloss
(rhs.
m_ismeasuredeloss
),
64
m_measscatphi
(rhs.
m_measscatphi
),
65
m_sintheta
(rhs.
m_sintheta
)
66
{
67
}
68
69
GXFMaterialEffects
&
GXFMaterialEffects::operator =
(
const
GXFMaterialEffects
& rhs) {
70
if
(
this
!= &rhs) {
71
m_eloss
= std::unique_ptr<EnergyLoss>(rhs.
m_eloss
!=
nullptr
? rhs.
m_eloss
->clone() :
nullptr
);
72
m_scatphi
= rhs.
m_scatphi
;
73
m_scattheta
= rhs.
m_scattheta
;
74
m_sigmascatphi
= rhs.
m_sigmascatphi
;
75
m_sigmascattheta
= rhs.
m_sigmascattheta
;
76
m_x0
= rhs.
m_x0
;
77
m_deltap
= rhs.
m_deltap
;
78
m_deltae
= rhs.
m_deltae
;
79
m_sigmadeltae
= rhs.
m_sigmadeltae
;
80
m_sigmadeltaepos
= rhs.
m_sigmadeltaepos
;
81
m_sigmadeltaeneg
= rhs.
m_sigmadeltaeneg
;
82
m_iskink
= rhs.
m_iskink
;
83
m_ismeasuredeloss
= rhs.
m_ismeasuredeloss
;
84
m_surf
= rhs.
m_surf
;
85
m_matprop
= rhs.
m_matprop
;
86
m_measscatphi
= rhs.
m_measscatphi
;
87
m_sintheta
= rhs.
m_sintheta
;
88
}
89
90
return
*
this
;
91
}
92
93
void
GXFMaterialEffects::setScatteringAngles
(
double
scatphi,
double
scattheta) {
94
m_scatphi
= scatphi;
95
m_scattheta
= scattheta;
96
}
97
98
void
GXFMaterialEffects::setScatteringSigmas
(
double
scatsigmaphi,
double
scatsigmatheta) {
99
m_sigmascatphi
= scatsigmaphi;
100
m_sigmascattheta
= scatsigmatheta;
101
}
102
103
double
GXFMaterialEffects::x0
()
const
{
104
return
m_x0
;
105
}
106
107
void
GXFMaterialEffects::setX0
(
double
x0
) {
108
m_x0
=
x0
;
109
}
110
111
double
GXFMaterialEffects::deltaPhi
()
const
{
112
return
m_scatphi
;
113
}
114
115
double
GXFMaterialEffects::measuredDeltaPhi
()
const
{
116
return
m_measscatphi
;
117
}
118
119
double
GXFMaterialEffects::deltaTheta
()
const
{
120
return
m_scattheta
;
121
}
122
123
double
GXFMaterialEffects::sigmaDeltaPhi
()
const
{
124
return
m_sigmascatphi
;
125
}
126
127
double
GXFMaterialEffects::sigmaDeltaTheta
()
const
{
128
return
m_sigmascattheta
;
129
}
130
131
double
GXFMaterialEffects::deltaE
()
const
{
132
return
m_deltae
;
133
}
134
135
void
GXFMaterialEffects::setEloss
(std::unique_ptr<Trk::EnergyLoss> eloss) {
136
m_eloss
= std::move(eloss);
137
}
138
139
double
GXFMaterialEffects::sigmaDeltaE
()
const
{
140
return
m_sigmadeltae
;
141
}
142
143
double
GXFMaterialEffects::sigmaDeltaEPos
()
const
{
144
return
m_sigmadeltaepos
;
145
}
146
147
double
GXFMaterialEffects::sigmaDeltaENeg
()
const
{
148
return
m_sigmadeltaeneg
;
149
}
150
151
double
GXFMaterialEffects::sigmaDeltaEAve
()
const
{
152
if
(
m_eloss
!=
nullptr
) {
153
return
m_eloss
->sigmaDeltaE();
154
}
155
return
0;
156
}
157
158
void
GXFMaterialEffects::setSigmaDeltaE
(
double
sigmadeltae) {
159
m_sigmadeltae
= sigmadeltae;
160
}
161
162
void
GXFMaterialEffects::setSigmaDeltaEPos
(
double
sigmadeltaepos) {
163
m_sigmadeltaepos
= sigmadeltaepos;
164
}
165
166
void
GXFMaterialEffects::setSigmaDeltaENeg
(
double
sigmadeltaeneg) {
167
m_sigmadeltaeneg
= sigmadeltaeneg;
168
}
169
170
void
GXFMaterialEffects::setDeltaE
(
double
deltae) {
171
m_deltae
= deltae;
172
}
173
174
void
GXFMaterialEffects::setMeasuredDeltaPhi
(
double
measdf) {
175
m_measscatphi
= measdf;
176
}
177
178
double
GXFMaterialEffects::delta_p
()
const
{
179
return
m_deltap
;
180
}
181
182
void
GXFMaterialEffects::setdelta_p
(
double
delta_p
) {
183
m_deltap
=
delta_p
;
184
}
185
186
void
GXFMaterialEffects::setKink
(
bool
iskink) {
187
m_iskink
= iskink;
188
}
189
190
bool
GXFMaterialEffects::isKink
()
const
{
191
return
m_iskink
;
192
}
193
194
void
GXFMaterialEffects::setMeasuredEloss
(
bool
ismeasuredeloss) {
195
m_ismeasuredeloss
= ismeasuredeloss;
196
}
197
198
bool
GXFMaterialEffects::isMeasuredEloss
()
const
{
199
return
m_ismeasuredeloss
;
200
}
201
202
const
Surface
&
GXFMaterialEffects::associatedSurface
()
const
{
203
return
*
m_surf
;
204
}
205
206
void
GXFMaterialEffects::setSurface
(
const
Surface
* surf) {
207
m_surf
= surf;
208
}
209
210
std::unique_ptr<MaterialEffectsBase>
GXFMaterialEffects::makeMEOT
()
const
{
211
std::optional<ScatteringAngles> scatangles;
212
213
if
(
m_sigmascattheta
!= 0) {
214
scatangles =
ScatteringAngles
(
m_scatphi
,
m_scattheta
,
m_sigmascatphi
,
m_sigmascattheta
);
215
}
216
217
std::bitset<MaterialEffectsBase::NumberOfMaterialEffectsTypes> typePattern;
218
typePattern.set(
MaterialEffectsBase::FittedMaterialEffects
);
219
std::unique_ptr<const Trk::EnergyLoss> neweloss;
220
221
if
(
m_deltae
!= 0) {
222
if
(
m_eloss
!=
nullptr
) {
223
neweloss.reset(
m_eloss
->clone());
224
}
else
{
225
neweloss = std::make_unique<Trk::EnergyLoss>(
m_deltae
,
m_sigmadeltae
,
m_sigmadeltaeneg
,
m_sigmadeltaepos
);
226
}
227
}
228
229
return
std::make_unique<MaterialEffectsOnTrack>(
230
m_x0
, scatangles, std::move(neweloss), *
m_surf
, typePattern);
231
}
232
233
const
Trk::MaterialProperties
*
GXFMaterialEffects::materialProperties
()
const
{
234
return
m_matprop
;
235
}
236
237
void
GXFMaterialEffects::setMaterialProperties
(
const
Trk::MaterialProperties
* matprop) {
238
m_matprop
= matprop;
239
}
240
}
EnergyLoss.h
GXFMaterialEffects.h
MaterialEffectsOnTrack.h
ScatteringAngles.h
Surface.h
Trk::EnergyLoss
This class describes energy loss material effects in the ATLAS tracking EDM.
Definition
EnergyLoss.h:34
Trk::GXFMaterialEffects::setMeasuredEloss
void setMeasuredEloss(bool)
Definition
GXFMaterialEffects.cxx:194
Trk::GXFMaterialEffects::m_sigmadeltae
double m_sigmadeltae
Definition
GXFMaterialEffects.h:113
Trk::GXFMaterialEffects::m_measscatphi
double m_measscatphi
Definition
GXFMaterialEffects.h:122
Trk::GXFMaterialEffects::delta_p
double delta_p() const
Definition
GXFMaterialEffects.cxx:178
Trk::GXFMaterialEffects::m_ismeasuredeloss
bool m_ismeasuredeloss
Definition
GXFMaterialEffects.h:121
Trk::GXFMaterialEffects::isMeasuredEloss
bool isMeasuredEloss() const
Definition
GXFMaterialEffects.cxx:198
Trk::GXFMaterialEffects::setKink
void setKink(bool)
Definition
GXFMaterialEffects.cxx:186
Trk::GXFMaterialEffects::m_sigmadeltaepos
double m_sigmadeltaepos
Definition
GXFMaterialEffects.h:114
Trk::GXFMaterialEffects::x0
double x0() const
Definition
GXFMaterialEffects.cxx:103
Trk::GXFMaterialEffects::setSigmaDeltaE
void setSigmaDeltaE(double)
Definition
GXFMaterialEffects.cxx:158
Trk::GXFMaterialEffects::m_x0
double m_x0
Definition
GXFMaterialEffects.h:110
Trk::GXFMaterialEffects::measuredDeltaPhi
double measuredDeltaPhi() const
Definition
GXFMaterialEffects.cxx:115
Trk::GXFMaterialEffects::setX0
void setX0(double)
Definition
GXFMaterialEffects.cxx:107
Trk::GXFMaterialEffects::deltaPhi
double deltaPhi() const
Definition
GXFMaterialEffects.cxx:111
Trk::GXFMaterialEffects::GXFMaterialEffects
GXFMaterialEffects(const MaterialEffectsOnTrack &)
Constructor that captures the properties of a more standard MaterialEffectsOnTrack object.
Definition
GXFMaterialEffects.cxx:12
Trk::GXFMaterialEffects::deltaTheta
double deltaTheta() const
Definition
GXFMaterialEffects.cxx:119
Trk::GXFMaterialEffects::m_sigmascatphi
double m_sigmascatphi
Definition
GXFMaterialEffects.h:108
Trk::GXFMaterialEffects::m_sintheta
double m_sintheta
Definition
GXFMaterialEffects.h:123
Trk::GXFMaterialEffects::m_deltae
double m_deltae
Definition
GXFMaterialEffects.h:112
Trk::GXFMaterialEffects::operator=
GXFMaterialEffects & operator=(const GXFMaterialEffects &rhs)
Definition
GXFMaterialEffects.cxx:69
Trk::GXFMaterialEffects::m_surf
const Surface * m_surf
Definition
GXFMaterialEffects.h:118
Trk::GXFMaterialEffects::sigmaDeltaEPos
double sigmaDeltaEPos() const
Definition
GXFMaterialEffects.cxx:143
Trk::GXFMaterialEffects::setSigmaDeltaENeg
void setSigmaDeltaENeg(double)
Definition
GXFMaterialEffects.cxx:166
Trk::GXFMaterialEffects::setSigmaDeltaEPos
void setSigmaDeltaEPos(double)
Definition
GXFMaterialEffects.cxx:162
Trk::GXFMaterialEffects::m_scatphi
double m_scatphi
Definition
GXFMaterialEffects.h:106
Trk::GXFMaterialEffects::m_sigmadeltaeneg
double m_sigmadeltaeneg
Definition
GXFMaterialEffects.h:115
Trk::GXFMaterialEffects::setDeltaE
void setDeltaE(double)
Definition
GXFMaterialEffects.cxx:170
Trk::GXFMaterialEffects::sigmaDeltaE
double sigmaDeltaE() const
Definition
GXFMaterialEffects.cxx:139
Trk::GXFMaterialEffects::isKink
bool isKink() const
Definition
GXFMaterialEffects.cxx:190
Trk::GXFMaterialEffects::setSurface
void setSurface(const Surface *)
Set the surface for this material effects instance.
Definition
GXFMaterialEffects.cxx:206
Trk::GXFMaterialEffects::associatedSurface
const Surface & associatedSurface() const
Definition
GXFMaterialEffects.cxx:202
Trk::GXFMaterialEffects::m_iskink
bool m_iskink
Definition
GXFMaterialEffects.h:120
Trk::GXFMaterialEffects::deltaE
double deltaE() const
Definition
GXFMaterialEffects.cxx:131
Trk::GXFMaterialEffects::makeMEOT
std::unique_ptr< MaterialEffectsBase > makeMEOT() const
Definition
GXFMaterialEffects.cxx:210
Trk::GXFMaterialEffects::sigmaDeltaEAve
double sigmaDeltaEAve() const
Definition
GXFMaterialEffects.cxx:151
Trk::GXFMaterialEffects::setScatteringAngles
void setScatteringAngles(double, double)
Definition
GXFMaterialEffects.cxx:93
Trk::GXFMaterialEffects::GXFMaterialEffects
GXFMaterialEffects()=default
Trk::GXFMaterialEffects::sigmaDeltaPhi
double sigmaDeltaPhi() const
Definition
GXFMaterialEffects.cxx:123
Trk::GXFMaterialEffects::m_scattheta
double m_scattheta
Definition
GXFMaterialEffects.h:107
Trk::GXFMaterialEffects::setEloss
void setEloss(std::unique_ptr< EnergyLoss >)
Set the energy loss properties of this material effect.
Definition
GXFMaterialEffects.cxx:135
Trk::GXFMaterialEffects::setScatteringSigmas
void setScatteringSigmas(double, double)
Definition
GXFMaterialEffects.cxx:98
Trk::GXFMaterialEffects::sigmaDeltaTheta
double sigmaDeltaTheta() const
Definition
GXFMaterialEffects.cxx:127
Trk::GXFMaterialEffects::m_sigmascattheta
double m_sigmascattheta
Definition
GXFMaterialEffects.h:109
Trk::GXFMaterialEffects::sigmaDeltaENeg
double sigmaDeltaENeg() const
Definition
GXFMaterialEffects.cxx:147
Trk::GXFMaterialEffects::setdelta_p
void setdelta_p(double)
Definition
GXFMaterialEffects.cxx:182
Trk::GXFMaterialEffects::setMaterialProperties
void setMaterialProperties(const MaterialProperties *)
Set the material properties of this material effects instance.
Definition
GXFMaterialEffects.cxx:237
Trk::GXFMaterialEffects::m_deltap
double m_deltap
Definition
GXFMaterialEffects.h:111
Trk::GXFMaterialEffects::setMeasuredDeltaPhi
void setMeasuredDeltaPhi(double)
Definition
GXFMaterialEffects.cxx:174
Trk::GXFMaterialEffects::m_matprop
const MaterialProperties * m_matprop
Definition
GXFMaterialEffects.h:119
Trk::GXFMaterialEffects::materialProperties
const MaterialProperties * materialProperties() const
Definition
GXFMaterialEffects.cxx:233
Trk::GXFMaterialEffects::m_eloss
std::unique_ptr< const EnergyLoss > m_eloss
Definition
GXFMaterialEffects.h:116
Trk::MaterialEffectsBase::FittedMaterialEffects
@ FittedMaterialEffects
contains values obtained by fitting the scatterer or e-loss
Definition
MaterialEffectsBase.h:56
Trk::MaterialEffectsOnTrack
represents the full description of deflection and e-loss of a track in material.
Definition
MaterialEffectsOnTrack.h:40
Trk::MaterialEffectsOnTrack::energyLoss
const EnergyLoss * energyLoss() const
returns the energy loss object.
Trk::MaterialProperties
Material with information about thickness of material.
Definition
MaterialProperties.h:40
Trk::ScatteringAngles
represents a deflection of the track caused through multiple scattering in material.
Definition
ScatteringAngles.h:26
Trk::Surface
Abstract Base Class for tracking surfaces.
Definition
Surface.h:79
unique_ptr
STL class.
Trk
Ensure that the ATLAS eigen extensions are properly loaded.
Definition
FakeTrackBuilder.h:9
std
STL namespace.
Generated on
for ATLAS Offline Software by
1.17.0