ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
Tracking
TrkExtrapolation
TrkExUtils
TrkExUtils
ExtrapolationCell.h
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3
*/
4
6
// ExtrapolationCell.h, (c) ATLAS Detector software
8
9
#ifndef TRKEXUTILS_EXTRAPOLATIONCELL_H
10
#define TRKEXUTILS_EXTRAPOLATIONCELL_H
11
12
#include "
TrkDetDescrUtils/GeometrySignature.h
"
13
#include "
TrkEventPrimitives/ParticleHypothesis.h
"
14
#include "
TrkEventPrimitives/PropDirection.h
"
15
#include "
TrkExUtils/MaterialUpdateMode.h
"
16
#include "
TrkEventPrimitives/TransportJacobian.h
"
17
#include "
TrkGeometry/MagneticFieldProperties.h
"
18
#include "
TrkGeometry/MaterialProperties.h
"
19
#include "
TrkMaterialOnTrack/EnergyLoss.h
"
20
#include "
TrkSurfaces/Surface.h
"
21
22
#ifndef TRKEXUTILS_CHECKPATHMACRO
23
#define TRKEXUTILS_CHECKPATHMACRO
24
#define reachedLimit(current, limit, tolerance) \
25
((limit) > 0 && \
26
(((current) < (limit)) \
27
? ((current) - (limit)) * ((current) - (limit)) / ((limit) * (limit)) < \
28
(tolerance) * (tolerance) \
29
: true))
30
#endif
31
32
namespace
Trk
{
33
34
class
MaterialProperties;
35
class
TrackingVolume;
36
class
Layer;
37
// class Surface;
38
42
class
ExtrapolationMode
43
{
44
45
public
:
46
enum
eMode
47
{
48
Direct
= 1,
// call propagator directly, no navigation
49
Destination
= 2,
// try to hit the destination, if not other means to stop
50
StopWithPathLimit
= 3,
// stop when the path limit is reached
51
StopWithMaterialLimitX0
=
52
4,
// stop when the material limit is reached in X0
53
StopWithMaterialLimitL0
=
54
5,
// stop when the material limit is reached in L0
55
StopAtBoundary
= 6,
// stop at the next ID / Calo / MS boundary
56
CollectSensitive
= 7,
// collect parameters on sensitive elements
57
CollectPassive
= 8,
// collect parameters on passive layers
58
CollectBoundary
= 9,
// collect parameters on boundary parameters
59
CollectMaterial
= 10,
// collect all material on the way
60
CollectJacobians
= 11,
// collect the transport jacobians
61
CollectPathSteps
= 12,
// collect the single path steps
62
AvoidFallback
= 13,
// don't fallback to propagation
63
FATRAS
= 14
// force initial radialDirection to be outward
64
};
65
};
66
70
class
ExtrapolationConfig
71
{
72
public
:
74
ExtrapolationConfig
(
unsigned
int
evalue = 0)
75
:
m_value
(evalue)
76
{}
77
79
ExtrapolationConfig
(
const
ExtrapolationConfig
& eConfig)
80
:
m_value
(eConfig.
m_value
)
81
{}
82
84
void
addMode
(
ExtrapolationMode::eMode
em)
85
{
86
// set the bit corresponding to this mode
87
m_value
|= (1 << int(em));
88
}
89
91
bool
checkMode
(
ExtrapolationMode::eMode
em)
const
92
{
93
// check if the bit is set or not
94
return
(
m_value
& (1 <<
int
(em)));
95
}
96
97
private
:
98
unsigned
int
m_value
;
99
};
100
104
class
ExtrapolationCode
105
{
106
107
public
:
108
enum
eCode
109
{
110
Unset
= 0,
// no code set yet
111
InProgress
= 1,
// successful : extrapolation in process
112
SuccessDestination
= 2,
// successful : destination reached
113
SuccessBoundaryReached
=
114
3,
// successful : boundary reached & configured to do so
115
SuccessPathLimit
=
116
4,
// successful : path limit reached & configured to do so
117
SuccessMaterialLimit
=
118
5,
// successful : material limit reached & configured to do so
119
Recovered
= 6,
// successful : recovered & configured to do so
120
FailureDestination
= 7,
// failure : could not reach destination
121
FailureLoop
= 8,
// failure : loop or oscillation between volumes
122
FailureNavigation
= 9,
// failure : general navigation failure
123
FailureUpdateKill
= 10,
// failure : updated track under threshold
124
FailureConfiguration
= 11,
// failure : general configuration failure
125
LeftKnownWorld
= 12
// successful ? failure ? if we just knew ...
126
};
127
129
eCode
code
;
130
131
/* create a simple extrapolation code */
132
ExtrapolationCode
(
eCode
c)
133
:
code
(c)
134
{}
135
137
ExtrapolationCode
&
operator=
(
const
eCode
& ec)
138
{
139
code
= ec;
140
return
(*
this
);
141
}
142
144
bool
operator==
(
const
eCode
& ec)
const
{
return
(ec ==
code
); }
145
147
bool
operator!=
(
const
eCode
& ec)
const
{
return
(ec !=
code
); }
148
150
bool
inProgress
()
const
{
return
(
code
==
InProgress
); }
151
153
bool
isSuccess
()
const
{
return
(
code
>
InProgress
&&
code
<
Recovered
); }
154
156
bool
isSuccessBeforeDestination
()
const
157
{
158
return
(
code
>
SuccessDestination
&&
code
<
Recovered
);
159
}
160
162
bool
isSuccessOrRecovered
()
const
163
{
164
return
(
code
>
InProgress
&&
code
<=
FailureDestination
);
165
}
166
168
bool
isFailure
()
const
{
return
(
code
>
Recovered
); }
169
171
bool
isFailureOrRecovered
()
const
{
return
(
code
>
SuccessMaterialLimit
); };
172
174
const
std::string&
toString
()
const
{
return
s_ecodeNames
[
code
]; }
175
176
private
:
177
static
const
std::vector<std::string>
s_ecodeNames
;
178
};
179
186
template
<
class
T>
187
class
ExtrapolationStep
188
{
189
public
:
190
const
T*
parameters
;
191
const
Surface
*
surface
;
192
const
Layer
*
193
layer
;
194
ExtrapolationConfig
stepConfiguration
;
196
const
MaterialProperties
*
material
;
197
Amg::Vector3D
materialPosition
;
198
double
materialScaling
;
199
const
TransportJacobian
*
200
transportJacobian
;
201
double
pathLength
;
202
float
time
;
203
204
ExtrapolationStep
(
const
T* pars = 0,
const
Surface
* sf =
nullptr
,
205
const
ExtrapolationConfig
& eConfig =
ExtrapolationConfig
(),
206
const
MaterialProperties
* mprop =
nullptr
,
207
const
TransportJacobian
* tjac =
nullptr
,
208
double
pLength = -1.)
209
:
parameters
(pars),
210
surface
(sf),
211
layer
(nullptr),
212
stepConfiguration
(eConfig),
213
material
(mprop),
214
materialPosition
(
Amg
::
Vector3D
(0., 0., 0.)),
215
materialScaling
(1.),
216
transportJacobian
(tjac),
217
pathLength
(pLength),
218
time
(0) {}
219
};
220
228
229
template
<
class
T>
230
class
ExtrapolationCell
231
{
232
public
:
233
T*
startParameters
;
234
const
TrackingVolume
*
235
startVolume
;
236
const
Layer
*
startLayer
;
237
238
T*
endParameters
;
239
const
TrackingVolume
*
endVolume
;
241
const
Layer
*
endLayer
;
243
const
Surface
*
244
endSurface
;
245
246
T*
leadParameters
;
247
const
TrackingVolume
*
248
leadVolume
;
249
const
Layer
*
leadLayer
;
250
const
Surface
*
leadLayerSurface
;
252
253
T*
lastBoundaryParameters
;
255
const
Surface
*
256
lastBoundarySurface
;
257
258
T*
lastLeadParameters
;
260
PropDirection
propDirection
;
261
int
radialDirection
;
263
264
GeometrySignature
265
nextGeometrySignature
;
267
268
int
navigationStep
;
269
double
pathLength
;
270
double
pathLimit
;
271
272
double
materialX0
;
273
double
materialLimitX0
;
274
double
materialL0
;
275
double
materialLimitL0
;
276
int
materialProcess
;
277
278
ParticleHypothesis
279
pHypothesis
;
280
MagneticFieldProperties
281
mFieldMode
;
282
MaterialUpdateMode
materialUpdateMode
;
284
bool
navigationCurvilinear
;
286
bool
sensitiveCurvilinear
;
288
bool
destinationCurvilinear
;
290
291
std::vector<ExtrapolationStep<T>>
292
extrapolationSteps
;
293
294
ExtrapolationConfig
295
extrapolationConfiguration
;
296
297
float
time
;
298
EnergyLoss
*
eLoss
;
299
float
zOaTrX
;
300
float
zX
;
301
303
ExtrapolationCell
(T& sParameters,
304
PropDirection
pDir =
alongMomentum
,
305
unsigned
int
econfig = 1)
306
:
startParameters
(&sParameters)
307
,
startVolume
(nullptr)
308
,
startLayer
(nullptr)
309
,
endParameters
(0)
310
,
endVolume
(nullptr)
311
,
endLayer
(nullptr)
312
,
endSurface
(nullptr)
313
,
leadParameters
(&sParameters)
314
,
leadVolume
(nullptr)
315
,
leadLayer
(nullptr)
316
,
leadLayerSurface
(nullptr)
317
,
lastBoundaryParameters
(0)
318
,
lastBoundarySurface
(nullptr)
319
,
lastLeadParameters
(&sParameters)
320
,
propDirection
(pDir)
321
,
radialDirection
(1)
322
,
nextGeometrySignature
(
Trk
::
Unsigned
)
323
,
navigationStep
(0)
324
,
pathLength
(0.)
325
,
pathLimit
(-1)
326
,
materialX0
(0.)
327
,
materialLimitX0
(-1.)
328
,
materialL0
(0.)
329
,
materialLimitL0
(-1.)
330
,
materialProcess
(0)
331
,
pHypothesis
(
Trk
::
pion
)
332
,
mFieldMode
(
Trk
::
MagneticFieldProperties
(
Trk
::
FullField
))
333
,
materialUpdateMode
(
Trk
::
addNoise
)
334
,
navigationCurvilinear
(true)
335
,
sensitiveCurvilinear
(false)
336
,
destinationCurvilinear
(false)
337
,
extrapolationConfiguration
(econfig)
338
,
time
(0)
339
,
eLoss
(nullptr)
340
,
zOaTrX
(0.)
341
,
zX
(0.)
342
{}
343
345
void
addConfigurationMode
(
ExtrapolationMode::eMode
em)
346
{
347
// set the bit corresponding to this mode
348
extrapolationConfiguration
.addMode(em);
349
}
350
352
bool
checkConfigurationMode
(
ExtrapolationMode::eMode
em)
const
353
{
354
// check if the bit is set or not
355
return
extrapolationConfiguration
.checkMode(em);
356
}
357
359
bool
onLastBoundary
()
const
360
{
361
return
(
leadParameters
==
lastBoundaryParameters
);
362
}
363
366
void
stepParameters
(
const
T* pars,
ExtrapolationMode::eMode
fillMode);
367
370
void
stepTransport
(
const
Surface
& sf,
371
double
pathLength
= 0.,
372
const
TransportJacobian
* tjac =
nullptr
);
373
376
void
addMaterial
(
double
sfactor,
const
MaterialProperties
* mprop =
nullptr
);
377
void
addMaterial
(
double
step,
const
Material
* mat =
nullptr
);
378
381
void
stepMaterial
(
const
Surface
& sf,
382
const
Layer
* lay,
383
const
Amg::Vector3D
&
position
,
384
double
sfactor,
385
const
MaterialProperties
* mprop =
nullptr
);
386
388
bool
initialVolume
()
const
{
return
(
leadVolume
==
startVolume
); }
389
391
bool
finalVolumeReached
()
const
392
{
393
return
(
leadVolume
==
endVolume
&&
endVolume
);
394
}
395
397
bool
pathLimitReached
(
double
tolerance
= 0.001)
const
398
{
399
return
(
checkConfigurationMode
(
Trk::ExtrapolationMode::StopWithPathLimit
) &&
400
reachedLimit
(
pathLength
,
pathLimit
,
tolerance
));
401
}
402
404
bool
materialLimitReached
(
double
tolerance
= 0.001)
const
405
{
406
return
((
checkConfigurationMode
(
407
Trk::ExtrapolationMode::StopWithMaterialLimitX0
) &&
408
reachedLimit
(
materialX0
,
materialLimitX0
,
tolerance
)) ||
409
(
checkConfigurationMode
(
410
Trk::ExtrapolationMode::StopWithMaterialLimitL0
) &&
411
reachedLimit
(
materialL0
,
materialLimitL0
,
tolerance
)));
412
}
413
415
void
restartAtDestination
();
416
418
void
finalize
(
const
ExtrapolationCode
& ec);
419
421
void
emptyGarbageBin
(
const
ExtrapolationCode
& ec);
422
424
void
setParticleHypothesis
(
const
ParticleHypothesis
& hypo)
425
{
426
pHypothesis
= hypo;
427
}
428
430
void
setRadialDirection
()
431
{
432
// in FATRAS extrapolation mode force radial direction to be outwards (+1)
433
if
(
checkConfigurationMode
(
ExtrapolationMode::FATRAS
))
434
radialDirection
= 1;
435
else
{
436
// if the endSurface is given, it is used to evaluate the radial direction
437
// else the leadParamenters are used
438
if
(
endSurface
) {
439
if
(
leadParameters
->position().perp() >
440
endSurface
->globalReferencePoint().perp())
441
radialDirection
= -1;
442
}
else
{
443
if
(
leadParameters
->position().perp() >
444
(
leadParameters
->position() +
445
propDirection
*
leadParameters
->momentum().unit())
446
.perp())
447
radialDirection
= -1;
448
}
449
}
450
}
451
454
bool
checkRadialCompatibility
()
const
455
{
456
// this checks the radial compatibility - not needed for outwards moving
457
if
(
radialDirection
> 0)
458
return
true
;
459
// this was radially inwards moving and stays like this
460
if
(
leadParameters
->position().perp() >
461
(
leadParameters
->position() +
462
propDirection
*
leadParameters
->momentum().unit())
463
.perp())
464
return
true
;
465
// radial direction changed
466
return
false
;
467
}
468
469
private
:
470
std::vector<const T*>
m_garbageCollection
;
471
};
472
473
template
<
class
T>
474
void
475
ExtrapolationCell<T>::restartAtDestination
()
476
{
478
startParameters
=
endParameters
;
479
startVolume
=
endVolume
;
480
startLayer
=
endLayer
;
481
endParameters
= 0;
482
endVolume
= 0;
483
endLayer
= 0;
484
endSurface
= 0;
485
leadParameters
=
startParameters
;
486
leadVolume
= 0;
487
leadLayer
= 0;
488
leadLayerSurface
= 0;
489
lastBoundaryParameters
= 0;
490
lastBoundarySurface
= 0;
491
lastLeadParameters
=
startParameters
;
492
navigationStep
= 0;
493
pathLength
= 0.;
494
materialX0
= 0.;
495
materialL0
= 0.;
496
if
(
eLoss
)
497
eLoss
->set(0., 0., 0., 0., 0., 0.);
498
// clear the vector
499
extrapolationSteps
.clear();
500
}
501
502
template
<
class
T>
503
void
504
ExtrapolationCell<T>::finalize
(
const
ExtrapolationCode
& ec)
505
{
506
// set the leadParameters to the endParameters if anything happened here and
507
// the code wass succesful
508
if
(ec.
isSuccessOrRecovered
() &&
leadParameters
!=
startParameters
) {
509
// end parameters are the last lead parameters !< @TODO check if we need a
510
// clone here! should not be necessary
511
endParameters
=
leadParameters
->clone();
512
}
513
// now do the cleanup - will delete the step content if eCode is failure
514
emptyGarbageBin
(ec);
515
delete
eLoss
;
516
}
517
518
template
<
class
T>
519
void
520
ExtrapolationCell<T>::emptyGarbageBin
(
const
ExtrapolationCode
& ec)
521
{
522
for
(
auto
bC :
m_garbageCollection
)
523
delete
bC;
524
m_garbageCollection
.clear();
525
// in case of failure of the extrapolation stream, clear all the caches
526
if
(ec.
isFailure
()) {
527
for
(
auto
& es :
extrapolationSteps
) {
528
delete
es.parameters;
529
delete
es.transportJacobian;
530
}
531
// now clear the vector
532
extrapolationSteps
.clear();
533
}
534
}
535
536
template
<
class
T>
537
void
538
ExtrapolationCell<T>::stepParameters
(
const
T* parameters,
539
Trk::ExtrapolationMode::eMode
fillMode)
540
{
541
// this is the garbage bin collection
542
if
(!
checkConfigurationMode
(fillMode)) {
543
// only dump them in the garbage bin
544
m_garbageCollection
.push_back(parameters);
545
return
;
546
}
547
// find out if you want to attach or you need a new one
548
// current step surface
549
const
Surface
* cssf = &(parameters->associatedSurface());
550
// get the last step surface - if it is identical with the current one ->
551
// attach information
552
const
Surface
* lssf =
553
extrapolationSteps
.size()
554
?
extrapolationSteps
[
extrapolationSteps
.size() - 1].surface
555
: 0;
556
// create a new step
557
if
(cssf != lssf)
558
extrapolationSteps
.push_back(
ExtrapolationStep<T>
());
559
// fill the parameters, the surface and add the mode
560
extrapolationSteps
[
extrapolationSteps
.size() - 1].parameters = parameters;
561
extrapolationSteps
[
extrapolationSteps
.size() - 1].surface = cssf;
562
extrapolationSteps
[
extrapolationSteps
.size() - 1].stepConfiguration.addMode(
563
fillMode);
564
}
565
566
template
<
class
T>
567
void
568
ExtrapolationCell<T>::stepTransport
(
const
Surface
& sf,
569
double
pLength,
570
const
TransportJacobian
* tjac)
571
{
572
// find out if you want to attach or you need a new one
573
// current step surface
574
const
Surface
* cssf = &sf;
575
// get the last step surface - if it is identical with the current one ->
576
// attach information
577
const
Surface
* lssf =
578
extrapolationSteps
.size()
579
?
extrapolationSteps
[
extrapolationSteps
.size() - 1].surface
580
: 0;
581
// only create a new step for a transport jacobian
582
if
(tjac) {
583
// create a new step
584
if
(cssf != lssf)
585
extrapolationSteps
.push_back(
ExtrapolationStep<T>
());
586
// set the surface
587
extrapolationSteps
[
extrapolationSteps
.size() - 1].surface = cssf;
588
// set the the transport information
589
extrapolationSteps
[
extrapolationSteps
.size() - 1].transportJacobian = tjac;
590
extrapolationSteps
[
extrapolationSteps
.size() - 1].stepConfiguration.addMode(
591
Trk::ExtrapolationMode::CollectJacobians
);
592
// fill the step path length
593
if
(pLength > 0.) {
594
extrapolationSteps
[
extrapolationSteps
.size() - 1].pathLength = pLength;
595
extrapolationSteps
[
extrapolationSteps
.size() - 1]
596
.stepConfiguration.addMode(
Trk::ExtrapolationMode::CollectPathSteps
);
597
}
598
}
else
{
599
// let's just fill the pathLength information
600
pathLength
+= pLength;
601
}
602
}
603
604
template
<
class
T>
605
void
606
ExtrapolationCell<T>::addMaterial
(
double
sfactor,
607
const
MaterialProperties
* mprop)
608
{
609
610
// fill the material if there
611
if
(mprop) {
612
// the overal material
613
materialX0
+= sfactor * mprop->
thicknessInX0
();
614
materialL0
+= sfactor * mprop->
thicknessInL0
();
615
zOaTrX
+= mprop->
zOverAtimesRho
() * sfactor * mprop->
thicknessInX0
();
616
zX
+= mprop->
averageZ
() * sfactor * mprop->
thicknessInX0
();
617
}
618
}
619
620
template
<
class
T>
621
void
622
ExtrapolationCell<T>::addMaterial
(
double
step,
const
Material
* mat)
623
{
624
625
// fill the material if there
626
if
(mat && step > 0.) {
627
// the overal material
628
materialX0
+= step / mat->X0;
629
materialL0
+= step / mat->L0;
630
zOaTrX
+= mat->zOverAtimesRho() * step / mat->X0;
631
zX
+= mat->averageZ() * step / mat->X0;
632
}
633
}
634
635
template
<
class
T>
636
void
637
ExtrapolationCell<T>::stepMaterial
(
const
Surface
& sf,
638
const
Layer
* lay,
639
const
Amg::Vector3D
& mposition,
640
double
sfactor,
641
const
MaterialProperties
* mprop)
642
{
643
644
// add material to the global counter
645
addMaterial
(sfactor, mprop);
646
// find out if you want to attach or you need a new one
647
// current step surface
648
const
Surface
* cssf = &sf;
649
// get the last step surface - if it is identical with the current one ->
650
// attach information
651
const
Surface
* lssf =
652
extrapolationSteps
.size()
653
?
extrapolationSteps
[
extrapolationSteps
.size() - 1].surface
654
: 0;
655
// create a new step
656
if
(cssf != lssf)
657
extrapolationSteps
.push_back(
ExtrapolationStep<T>
());
658
// set the surface
659
extrapolationSteps
[
extrapolationSteps
.size() - 1].surface = cssf;
660
extrapolationSteps
[
extrapolationSteps
.size() - 1].layer = lay;
661
// fill the material if there
662
if
(mprop) {
663
// record the step information
664
extrapolationSteps
[
extrapolationSteps
.size() - 1].material = mprop;
665
extrapolationSteps
[
extrapolationSteps
.size() - 1].stepConfiguration.addMode(
666
Trk::ExtrapolationMode::CollectMaterial
);
667
extrapolationSteps
[
extrapolationSteps
.size() - 1].materialPosition =
668
mposition;
669
extrapolationSteps
[
extrapolationSteps
.size() - 1].materialScaling = sfactor;
670
}
671
}
672
673
}
// end of namespace
674
675
#endif
// TRKEXUTILS_EXTRAPOLATIONCELL_H
676
EnergyLoss.h
reachedLimit
#define reachedLimit(current, limit, tolerance)
Definition
ExtrapolationCell.h:24
GeometrySignature.h
MagneticFieldProperties.h
MaterialProperties.h
MaterialUpdateMode.h
ParticleHypothesis.h
PropDirection.h
Surface.h
Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition
GeoPrimitives.h:47
TransportJacobian.h
Trk::EnergyLoss
This class describes energy loss material effects in the ATLAS tracking EDM.
Definition
EnergyLoss.h:34
Trk::ExtrapolationCell< TrackParameters >::time
float time
Definition
ExtrapolationCell.h:297
Trk::ExtrapolationCell::addMaterial
void addMaterial(double step, const Material *mat=nullptr)
Definition
ExtrapolationCell.h:622
Trk::ExtrapolationCell< TrackParameters >::propDirection
PropDirection propDirection
Definition
ExtrapolationCell.h:260
Trk::ExtrapolationCell< TrackParameters >::materialProcess
int materialProcess
Definition
ExtrapolationCell.h:276
Trk::ExtrapolationCell< TrackParameters >::mFieldMode
MagneticFieldProperties mFieldMode
Definition
ExtrapolationCell.h:281
Trk::ExtrapolationCell< TrackParameters >::lastLeadParameters
TrackParameters * lastLeadParameters
Definition
ExtrapolationCell.h:258
Trk::ExtrapolationCell::initialVolume
bool initialVolume() const
check if this is the initial volume
Definition
ExtrapolationCell.h:388
Trk::ExtrapolationCell< TrackParameters >::materialL0
double materialL0
Definition
ExtrapolationCell.h:274
Trk::ExtrapolationCell< TrackParameters >::endVolume
const TrackingVolume * endVolume
Definition
ExtrapolationCell.h:239
Trk::ExtrapolationCell< TrackParameters >::leadVolume
const TrackingVolume * leadVolume
Definition
ExtrapolationCell.h:248
Trk::ExtrapolationCell::finalize
void finalize(const ExtrapolationCode &ec)
finalize call - this one is called by the ExtrapoaltionEngine
Definition
ExtrapolationCell.h:504
Trk::ExtrapolationCell::stepMaterial
void stepMaterial(const Surface &sf, const Layer *lay, const Amg::Vector3D &position, double sfactor, const MaterialProperties *mprop=nullptr)
fill or attach material, jacobian, step length
Definition
ExtrapolationCell.h:637
Trk::ExtrapolationCell< TrackParameters >::endSurface
const Surface * endSurface
Definition
ExtrapolationCell.h:244
Trk::ExtrapolationCell::onLastBoundary
bool onLastBoundary() const
check if you are still at the last boundary surface
Definition
ExtrapolationCell.h:359
Trk::ExtrapolationCell< TrackParameters >::zOaTrX
float zOaTrX
Definition
ExtrapolationCell.h:299
Trk::ExtrapolationCell::addConfigurationMode
void addConfigurationMode(ExtrapolationMode::eMode em)
add a configuration mode
Definition
ExtrapolationCell.h:345
Trk::ExtrapolationCell< TrackParameters >::destinationCurvilinear
bool destinationCurvilinear
Definition
ExtrapolationCell.h:288
Trk::ExtrapolationCell::addMaterial
void addMaterial(double sfactor, const MaterialProperties *mprop=nullptr)
fill or attach material, jacobian, step length
Definition
ExtrapolationCell.h:606
Trk::ExtrapolationCell< TrackParameters >::zX
float zX
Definition
ExtrapolationCell.h:300
Trk::ExtrapolationCell< TrackParameters >::endLayer
const Layer * endLayer
Definition
ExtrapolationCell.h:241
Trk::ExtrapolationCell< TrackParameters >::lastBoundaryParameters
TrackParameters * lastBoundaryParameters
Definition
ExtrapolationCell.h:253
Trk::ExtrapolationCell< TrackParameters >::materialX0
double materialX0
Definition
ExtrapolationCell.h:272
Trk::ExtrapolationCell::ExtrapolationCell
ExtrapolationCell(T &sParameters, PropDirection pDir=alongMomentum, unsigned int econfig=1)
start parameters are compulsory
Definition
ExtrapolationCell.h:303
Trk::ExtrapolationCell::stepParameters
void stepParameters(const T *pars, ExtrapolationMode::eMode fillMode)
fill or attach the parameters from a step - memory management steered by extrapolationConfiguration
Definition
ExtrapolationCell.h:538
Trk::ExtrapolationCell< TrackParameters >::materialLimitL0
double materialLimitL0
Definition
ExtrapolationCell.h:275
Trk::ExtrapolationCell< TrackParameters >::startVolume
const TrackingVolume * startVolume
Definition
ExtrapolationCell.h:235
Trk::ExtrapolationCell< TrackParameters >::endParameters
TrackParameters * endParameters
Definition
ExtrapolationCell.h:238
Trk::ExtrapolationCell::restartAtDestination
void restartAtDestination()
prepare destination as new start point - optimised for Kalman filtering
Definition
ExtrapolationCell.h:475
Trk::ExtrapolationCell< TrackParameters >::startParameters
TrackParameters * startParameters
Definition
ExtrapolationCell.h:233
Trk::ExtrapolationCell::materialLimitReached
bool materialLimitReached(double tolerance=0.001) const
the materialLimitReached
Definition
ExtrapolationCell.h:404
Trk::ExtrapolationCell< TrackParameters >::navigationStep
int navigationStep
Definition
ExtrapolationCell.h:268
Trk::ExtrapolationCell< TrackParameters >::leadParameters
TrackParameters * leadParameters
Definition
ExtrapolationCell.h:246
Trk::ExtrapolationCell< TrackParameters >::extrapolationSteps
std::vector< ExtrapolationStep< TrackParameters > > extrapolationSteps
Definition
ExtrapolationCell.h:292
Trk::ExtrapolationCell< TrackParameters >::radialDirection
int radialDirection
Definition
ExtrapolationCell.h:261
Trk::ExtrapolationCell::setParticleHypothesis
void setParticleHypothesis(const ParticleHypothesis &hypo)
set ParticleHypothesis
Definition
ExtrapolationCell.h:424
Trk::ExtrapolationCell::pathLimitReached
bool pathLimitReached(double tolerance=0.001) const
the materialLimitReached
Definition
ExtrapolationCell.h:397
Trk::ExtrapolationCell< TrackParameters >::startLayer
const Layer * startLayer
Definition
ExtrapolationCell.h:236
Trk::ExtrapolationCell< TrackParameters >::sensitiveCurvilinear
bool sensitiveCurvilinear
Definition
ExtrapolationCell.h:286
Trk::ExtrapolationCell< TrackParameters >::pathLimit
double pathLimit
Definition
ExtrapolationCell.h:270
Trk::ExtrapolationCell< TrackParameters >::eLoss
EnergyLoss * eLoss
Definition
ExtrapolationCell.h:298
Trk::ExtrapolationCell::checkRadialCompatibility
bool checkRadialCompatibility() const
check whether the propagation stays compatible with initial radial direction
Definition
ExtrapolationCell.h:454
Trk::ExtrapolationCell< TrackParameters >::extrapolationConfiguration
ExtrapolationConfig extrapolationConfiguration
Definition
ExtrapolationCell.h:295
Trk::ExtrapolationCell< TrackParameters >::m_garbageCollection
std::vector< const TrackParameters * > m_garbageCollection
Definition
ExtrapolationCell.h:470
Trk::ExtrapolationCell< TrackParameters >::materialUpdateMode
MaterialUpdateMode materialUpdateMode
Definition
ExtrapolationCell.h:282
Trk::ExtrapolationCell< TrackParameters >::leadLayer
const Layer * leadLayer
Definition
ExtrapolationCell.h:249
Trk::ExtrapolationCell< TrackParameters >::nextGeometrySignature
GeometrySignature nextGeometrySignature
Definition
ExtrapolationCell.h:265
Trk::ExtrapolationCell::checkConfigurationMode
bool checkConfigurationMode(ExtrapolationMode::eMode em) const
check the configuration mode
Definition
ExtrapolationCell.h:352
Trk::ExtrapolationCell< TrackParameters >::pHypothesis
ParticleHypothesis pHypothesis
Definition
ExtrapolationCell.h:279
Trk::ExtrapolationCell< TrackParameters >::navigationCurvilinear
bool navigationCurvilinear
Definition
ExtrapolationCell.h:284
Trk::ExtrapolationCell< TrackParameters >::pathLength
double pathLength
Definition
ExtrapolationCell.h:269
Trk::ExtrapolationCell< TrackParameters >::leadLayerSurface
const Surface * leadLayerSurface
Definition
ExtrapolationCell.h:250
Trk::ExtrapolationCell::emptyGarbageBin
void emptyGarbageBin(const ExtrapolationCode &ec)
memory cleanup
Definition
ExtrapolationCell.h:520
Trk::ExtrapolationCell::finalVolumeReached
bool finalVolumeReached() const
trigger for final volume
Definition
ExtrapolationCell.h:391
Trk::ExtrapolationCell::stepTransport
void stepTransport(const Surface &sf, double pathLength=0., const TransportJacobian *tjac=nullptr)
fill transport information - path length and TransportJacobian
Definition
ExtrapolationCell.h:568
Trk::ExtrapolationCell< TrackParameters >::lastBoundarySurface
const Surface * lastBoundarySurface
Definition
ExtrapolationCell.h:256
Trk::ExtrapolationCell< TrackParameters >::materialLimitX0
double materialLimitX0
Definition
ExtrapolationCell.h:273
Trk::ExtrapolationCell::setRadialDirection
void setRadialDirection()
estimate the radial direction of the extrapolation cell
Definition
ExtrapolationCell.h:430
Trk::ExtrapolationCode
Definition
ExtrapolationCell.h:105
Trk::ExtrapolationCode::operator=
ExtrapolationCode & operator=(const eCode &ec)
assigment operator - because we can
Definition
ExtrapolationCell.h:137
Trk::ExtrapolationCode::s_ecodeNames
static const std::vector< std::string > s_ecodeNames
Definition
ExtrapolationCell.h:11
Trk::ExtrapolationCode::ExtrapolationCode
ExtrapolationCode(eCode c)
Definition
ExtrapolationCell.h:132
Trk::ExtrapolationCode::eCode
eCode
Definition
ExtrapolationCell.h:109
Trk::ExtrapolationCode::FailureDestination
@ FailureDestination
Definition
ExtrapolationCell.h:120
Trk::ExtrapolationCode::Unset
@ Unset
Definition
ExtrapolationCell.h:110
Trk::ExtrapolationCode::SuccessPathLimit
@ SuccessPathLimit
Definition
ExtrapolationCell.h:115
Trk::ExtrapolationCode::SuccessBoundaryReached
@ SuccessBoundaryReached
Definition
ExtrapolationCell.h:113
Trk::ExtrapolationCode::InProgress
@ InProgress
Definition
ExtrapolationCell.h:111
Trk::ExtrapolationCode::FailureLoop
@ FailureLoop
Definition
ExtrapolationCell.h:121
Trk::ExtrapolationCode::SuccessDestination
@ SuccessDestination
Definition
ExtrapolationCell.h:112
Trk::ExtrapolationCode::SuccessMaterialLimit
@ SuccessMaterialLimit
Definition
ExtrapolationCell.h:117
Trk::ExtrapolationCode::FailureUpdateKill
@ FailureUpdateKill
Definition
ExtrapolationCell.h:123
Trk::ExtrapolationCode::FailureConfiguration
@ FailureConfiguration
Definition
ExtrapolationCell.h:124
Trk::ExtrapolationCode::LeftKnownWorld
@ LeftKnownWorld
Definition
ExtrapolationCell.h:125
Trk::ExtrapolationCode::Recovered
@ Recovered
Definition
ExtrapolationCell.h:119
Trk::ExtrapolationCode::FailureNavigation
@ FailureNavigation
Definition
ExtrapolationCell.h:122
Trk::ExtrapolationCode::toString
const std::string & toString() const
toString
Definition
ExtrapolationCell.h:174
Trk::ExtrapolationCode::operator==
bool operator==(const eCode &ec) const
== operator to eCode
Definition
ExtrapolationCell.h:144
Trk::ExtrapolationCode::isFailure
bool isFailure() const
return failure
Definition
ExtrapolationCell.h:168
Trk::ExtrapolationCode::isSuccessBeforeDestination
bool isSuccessBeforeDestination() const
return sucess other than destination reached
Definition
ExtrapolationCell.h:156
Trk::ExtrapolationCode::isSuccess
bool isSuccess() const
return success
Definition
ExtrapolationCell.h:153
Trk::ExtrapolationCode::isSuccessOrRecovered
bool isSuccessOrRecovered() const
return success or recovered
Definition
ExtrapolationCell.h:162
Trk::ExtrapolationCode::inProgress
bool inProgress() const
return inProgress
Definition
ExtrapolationCell.h:150
Trk::ExtrapolationCode::code
eCode code
the actual code
Definition
ExtrapolationCell.h:129
Trk::ExtrapolationCode::operator!=
bool operator!=(const eCode &ec) const
!= operator to eCode
Definition
ExtrapolationCell.h:147
Trk::ExtrapolationCode::isFailureOrRecovered
bool isFailureOrRecovered() const
return failure or recovered
Definition
ExtrapolationCell.h:171
Trk::ExtrapolationConfig
Definition
ExtrapolationCell.h:71
Trk::ExtrapolationConfig::ExtrapolationConfig
ExtrapolationConfig(unsigned int evalue=0)
Constructor.
Definition
ExtrapolationCell.h:74
Trk::ExtrapolationConfig::ExtrapolationConfig
ExtrapolationConfig(const ExtrapolationConfig &eConfig)
Copy Constructor.
Definition
ExtrapolationCell.h:79
Trk::ExtrapolationConfig::addMode
void addMode(ExtrapolationMode::eMode em)
add a configuration mode
Definition
ExtrapolationCell.h:84
Trk::ExtrapolationConfig::checkMode
bool checkMode(ExtrapolationMode::eMode em) const
check the configuration mode
Definition
ExtrapolationCell.h:91
Trk::ExtrapolationConfig::m_value
unsigned int m_value
Definition
ExtrapolationCell.h:98
Trk::ExtrapolationMode
enumeration to decode - for Extrapolation steering
Definition
ExtrapolationCell.h:43
Trk::ExtrapolationMode::eMode
eMode
Definition
ExtrapolationCell.h:47
Trk::ExtrapolationMode::Direct
@ Direct
Definition
ExtrapolationCell.h:48
Trk::ExtrapolationMode::CollectPassive
@ CollectPassive
Definition
ExtrapolationCell.h:57
Trk::ExtrapolationMode::CollectSensitive
@ CollectSensitive
Definition
ExtrapolationCell.h:56
Trk::ExtrapolationMode::CollectMaterial
@ CollectMaterial
Definition
ExtrapolationCell.h:59
Trk::ExtrapolationMode::StopWithPathLimit
@ StopWithPathLimit
Definition
ExtrapolationCell.h:50
Trk::ExtrapolationMode::CollectPathSteps
@ CollectPathSteps
Definition
ExtrapolationCell.h:61
Trk::ExtrapolationMode::FATRAS
@ FATRAS
Definition
ExtrapolationCell.h:63
Trk::ExtrapolationMode::CollectBoundary
@ CollectBoundary
Definition
ExtrapolationCell.h:58
Trk::ExtrapolationMode::StopWithMaterialLimitL0
@ StopWithMaterialLimitL0
Definition
ExtrapolationCell.h:53
Trk::ExtrapolationMode::StopWithMaterialLimitX0
@ StopWithMaterialLimitX0
Definition
ExtrapolationCell.h:51
Trk::ExtrapolationMode::Destination
@ Destination
Definition
ExtrapolationCell.h:49
Trk::ExtrapolationMode::CollectJacobians
@ CollectJacobians
Definition
ExtrapolationCell.h:60
Trk::ExtrapolationMode::AvoidFallback
@ AvoidFallback
Definition
ExtrapolationCell.h:62
Trk::ExtrapolationMode::StopAtBoundary
@ StopAtBoundary
Definition
ExtrapolationCell.h:55
Trk::ExtrapolationStep
templated class to record the different possible entities during extrapolation
Definition
ExtrapolationCell.h:188
Trk::ExtrapolationStep::parameters
const T * parameters
the parameters of this step
Definition
ExtrapolationCell.h:190
Trk::ExtrapolationStep::ExtrapolationStep
ExtrapolationStep(const T *pars=0, const Surface *sf=nullptr, const ExtrapolationConfig &eConfig=ExtrapolationConfig(), const MaterialProperties *mprop=nullptr, const TransportJacobian *tjac=nullptr, double pLength=-1.)
Definition
ExtrapolationCell.h:204
Trk::ExtrapolationStep::stepConfiguration
ExtrapolationConfig stepConfiguration
sensitive, passive, boundary to name the parameters
Definition
ExtrapolationCell.h:194
Trk::ExtrapolationStep::transportJacobian
const TransportJacobian * transportJacobian
the transport jacobian from the last step
Definition
ExtrapolationCell.h:200
Trk::ExtrapolationStep::pathLength
double pathLength
the path length from the last step
Definition
ExtrapolationCell.h:201
Trk::ExtrapolationStep::layer
const Layer * layer
the associatedLayer() or materialLayer() of the surface
Definition
ExtrapolationCell.h:193
Trk::ExtrapolationStep::material
const MaterialProperties * material
the associated material
Definition
ExtrapolationCell.h:196
Trk::ExtrapolationStep::materialScaling
double materialScaling
scale factor for the material as calculated
Definition
ExtrapolationCell.h:198
Trk::ExtrapolationStep::materialPosition
Amg::Vector3D materialPosition
position from where the material is taken
Definition
ExtrapolationCell.h:197
Trk::ExtrapolationStep::surface
const Surface * surface
the surface where the step is bound
Definition
ExtrapolationCell.h:191
Trk::ExtrapolationStep::time
float time
timing info
Definition
ExtrapolationCell.h:202
Trk::Layer
Base Class for a Detector Layer in the Tracking realm.
Definition
Layer.h:72
Trk::MagneticFieldProperties
magnetic field properties to steer the behavior of the extrapolation
Definition
MagneticFieldProperties.h:31
Trk::MaterialProperties
Material with information about thickness of material.
Definition
MaterialProperties.h:40
Trk::MaterialProperties::thicknessInX0
float thicknessInX0() const
Return the radiationlength fraction.
Trk::MaterialProperties::zOverAtimesRho
float zOverAtimesRho() const
Return the .
Trk::MaterialProperties::thicknessInL0
float thicknessInL0() const
Return the nuclear interaction length fraction.
Trk::MaterialProperties::averageZ
float averageZ() const
Returns the average Z of the material.
Trk::Material
A common object to be contained by.
Definition
Material.h:117
Trk::Surface
Abstract Base Class for tracking surfaces.
Definition
Surface.h:79
Trk::TrackingVolume
Full Volume description used in Tracking, it inherits from Volume to get the geometrical structure,...
Definition
TrackingVolume.h:119
Trk::TransportJacobian
This class represents the jacobian for transforming initial track parameters to new track parameters ...
Definition
TransportJacobian.h:46
tolerance
Definition
suep_shower.h:17
Amg
Definition of ATLAS Math & Geometry primitives (Amg).
Definition
AmgStringHelpers.h:19
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition
GeoPrimitives.h:47
Trk
Ensure that the ATLAS eigen extensions are properly loaded.
Definition
FakeTrackBuilder.h:9
Trk::PropDirection
PropDirection
PropDirection, enum for direction of the propagation.
Definition
PropDirection.h:19
Trk::alongMomentum
@ alongMomentum
Definition
PropDirection.h:20
Trk::FullField
@ FullField
Field is set to be realistic, but within a given Volume.
Definition
MagneticFieldMode.h:21
Trk::ParticleHypothesis
ParticleHypothesis
Enumeration for Particle hypothesis respecting the interaction with material.
Definition
ParticleHypothesis.h:28
Trk::pion
@ pion
Definition
ParticleHypothesis.h:32
Trk::MaterialUpdateMode
MaterialUpdateMode
This is a steering enum to force the material update it can be: (1) addNoise (-1) removeNoise Second ...
Definition
MaterialUpdateMode.h:18
Trk::addNoise
@ addNoise
Definition
MaterialUpdateMode.h:19
Trk::GeometrySignature
GeometrySignature
Definition
GeometrySignature.h:24
Trk::Unsigned
@ Unsigned
Definition
GeometrySignature.h:33
Trk::position
const Amg::Vector3D & position() const
Method to retrieve the position of the Intersection.
Generated on
for ATLAS Offline Software by
1.17.0