ATLAS Offline Software
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 
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 
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
52  4, // stop when the material limit is reached in X0
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 
71 {
72 public:
74  ExtrapolationConfig(unsigned int evalue = 0)
75  : m_value(evalue)
76  {}
77 
80  : m_value(eConfig.m_value)
81  {}
82 
85  {
86  // set the bit corresponding to this mode
87  m_value |= (1 << int(em));
88  }
89 
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 
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
114  3, // successful : boundary reached & configured to do so
116  4, // successful : path limit reached & configured to do so
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 
130 
131  /* create a simple extrapolation code */
133  : code(c)
134  {}
135 
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 
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>
188 {
189 public:
190  const T* parameters;
191  const Surface* surface;
192  const Layer*
199  const 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 
229 template<class T>
231 {
232 public:
234  const TrackingVolume*
236  const Layer* startLayer;
237 
240  const Layer* endLayer;
242  const Surface*
245 
247  const TrackingVolume*
249  const Layer* leadLayer;
251 
254  const Surface*
257 
262 
266 
269  double pathLength;
270  double pathLimit;
271 
272  double materialX0;
274  double materialL0;
277 
283  bool navigationCurvilinear;
285  bool sensitiveCurvilinear;
289 
291  std::vector<ExtrapolationStep<T>>
293 
296 
297  float time;
299  float zOaTrX;
300  float zX;
301 
303  ExtrapolationCell(T& sParameters,
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)
318  , lastBoundarySurface(nullptr)
319  , lastLeadParameters(&sParameters)
320  , propDirection(pDir)
321  , radialDirection(1)
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)
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 
346  {
347  // set the bit corresponding to this mode
349  }
350 
353  {
354  // check if the bit is set or not
356  }
357 
359  bool onLastBoundary() const
360  {
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  {
401  }
402 
404  bool materialLimitReached(double tolerance = 0.001) const
405  {
406  return ((checkConfigurationMode(
412  }
413 
415  void restartAtDestination();
416 
418  void finalize(const ExtrapolationCode& ec);
419 
421  void emptyGarbageBin(const ExtrapolationCode& ec);
422 
425  {
426  pHypothesis = hypo;
427  }
428 
431  {
432  // in FATRAS extrapolation mode force radial direction to be outwards (+1)
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() >
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 
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
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
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
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
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
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(
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
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
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
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(
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 
Trk::ExtrapolationCell::materialLimitX0
double materialLimitX0
given material limit in X0
Definition: ExtrapolationCell.h:273
make_hlt_rep.pars
pars
Definition: make_hlt_rep.py:90
Trk::ExtrapolationCell::restartAtDestination
void restartAtDestination()
prepare destination as new start point - optimised for Kalman filtering
Definition: ExtrapolationCell.h:475
Trk::ExtrapolationMode::CollectPassive
@ CollectPassive
Definition: ExtrapolationCell.h:57
Trk::TransportJacobian
Definition: TransportJacobian.h:46
EnergyLoss.h
Trk::ExtrapolationStep::materialScaling
double materialScaling
scale factor for the material as calculated
Definition: ExtrapolationCell.h:198
Trk::ExtrapolationCode::Unset
@ Unset
Definition: ExtrapolationCell.h:110
Trk::ExtrapolationCell::destinationCurvilinear
bool destinationCurvilinear
return curvilinear parameters even on destination
Definition: ExtrapolationCell.h:288
Trk::ExtrapolationCell::extrapolationSteps
std::vector< ExtrapolationStep< T > > extrapolationSteps
parameters on sensitive detector elements
Definition: ExtrapolationCell.h:292
Trk::ExtrapolationCell::lastBoundarySurface
const Surface * lastBoundarySurface
this is the last boundary surface to prevent loops
Definition: ExtrapolationCell.h:256
Trk::ExtrapolationConfig::m_value
unsigned int m_value
Definition: ExtrapolationCell.h:98
Trk::ExtrapolationCell::m_garbageCollection
std::vector< const T * > m_garbageCollection
Definition: ExtrapolationCell.h:470
GeometrySignature.h
Trk::ExtrapolationCode::FailureUpdateKill
@ FailureUpdateKill
Definition: ExtrapolationCell.h:123
Trk::MagneticFieldProperties
Definition: MagneticFieldProperties.h:31
Trk::ExtrapolationCode::inProgress
bool inProgress() const
return inProgress
Definition: ExtrapolationCell.h:150
Surface.h
CaloCellPos2Ntuple.int
int
Definition: CaloCellPos2Ntuple.py:24
Trk::ExtrapolationMode::StopWithMaterialLimitL0
@ StopWithMaterialLimitL0
Definition: ExtrapolationCell.h:53
Trk::ExtrapolationCell::addConfigurationMode
void addConfigurationMode(ExtrapolationMode::eMode em)
add a configuration mode
Definition: ExtrapolationCell.h:345
GeometrySignature
MaterialProperties.h
Trk::ExtrapolationStep::layer
const Layer * layer
the associatedLayer() or materialLayer() of the surface
Definition: ExtrapolationCell.h:193
Trk::ExtrapolationCell::onLastBoundary
bool onLastBoundary() const
check if you are still at the last boundary surface
Definition: ExtrapolationCell.h:359
Trk::ExtrapolationMode::CollectBoundary
@ CollectBoundary
Definition: ExtrapolationCell.h:58
Trk::ExtrapolationCell::propDirection
PropDirection propDirection
this is the propagation direction
Definition: ExtrapolationCell.h:260
Trk::ExtrapolationMode
enumeration to decode - for Extrapolation steering
Definition: ExtrapolationCell.h:43
Trk::ExtrapolationCell::pHypothesis
ParticleHypothesis pHypothesis
what particle hypothesis to be used, default : pion
Definition: ExtrapolationCell.h:279
Trk::ExtrapolationConfig::ExtrapolationConfig
ExtrapolationConfig(unsigned int evalue=0)
Constructor.
Definition: ExtrapolationCell.h:74
mat
GeoMaterial * mat
Definition: LArDetectorConstructionTBEC.cxx:55
Trk::ExtrapolationMode::StopWithPathLimit
@ StopWithPathLimit
Definition: ExtrapolationCell.h:50
Trk::MaterialProperties::thicknessInX0
float thicknessInX0() const
Return the radiationlength fraction.
Trk::ExtrapolationCell::emptyGarbageBin
void emptyGarbageBin(const ExtrapolationCode &ec)
memory cleanup
Definition: ExtrapolationCell.h:520
Trk::ExtrapolationCell::sensitiveCurvilinear
bool sensitiveCurvilinear
stay in curvilinear parameters even on the destination surface
Definition: ExtrapolationCell.h:286
Trk::ExtrapolationCode::operator==
bool operator==(const eCode &ec) const
== operator to eCode
Definition: ExtrapolationCell.h:144
Trk::ExtrapolationCell::endLayer
const Layer * endLayer
the end Layer - can be optionally 0 (needs other trigger to stop)
Definition: ExtrapolationCell.h:241
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::MaterialProperties::thicknessInL0
float thicknessInL0() const
Return the nuclear interaction length fraction.
PropDirection.h
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::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::alongMomentum
@ alongMomentum
Definition: PropDirection.h:20
Trk::ExtrapolationCode::SuccessBoundaryReached
@ SuccessBoundaryReached
Definition: ExtrapolationCell.h:113
Trk::ExtrapolationMode::CollectPathSteps
@ CollectPathSteps
Definition: ExtrapolationCell.h:61
Trk::Surface::globalReferencePoint
virtual const Amg::Vector3D & globalReferencePoint() const
Returns a global reference point on the surface, for PlaneSurface, StraightLineSurface,...
TransportJacobian.h
Trk::ExtrapolationCell::pathLimitReached
bool pathLimitReached(double tolerance=0.001) const
the materialLimitReached
Definition: ExtrapolationCell.h:397
Trk::ExtrapolationCode::SuccessDestination
@ SuccessDestination
Definition: ExtrapolationCell.h:112
Trk::ExtrapolationStep
Definition: ExtrapolationCell.h:188
Trk::ExtrapolationCode::FailureDestination
@ FailureDestination
Definition: ExtrapolationCell.h:120
python.RingerConstants.Layer
Layer
Definition: RingerConstants.py:42
Trk::ExtrapolationCell::startVolume
const TrackingVolume * startVolume
the start volume - needed for the volumeToVolume loop
Definition: ExtrapolationCell.h:235
Trk::ExtrapolationCell::pathLength
double pathLength
the path length accumulated
Definition: ExtrapolationCell.h:269
Trk::ExtrapolationCell::leadLayer
const Layer * leadLayer
the lead Layer - carrying the navigation stream
Definition: ExtrapolationCell.h:249
Trk::ExtrapolationCell::zX
float zX
z*dInX0 (for average calculations)
Definition: ExtrapolationCell.h:300
Trk::ExtrapolationCell::eLoss
EnergyLoss * eLoss
cumulated energy loss
Definition: ExtrapolationCell.h:298
Trk::ExtrapolationCell::setParticleHypothesis
void setParticleHypothesis(const ParticleHypothesis &hypo)
set ParticleHypothesis
Definition: ExtrapolationCell.h:424
Trk::ExtrapolationCode::operator!=
bool operator!=(const eCode &ec) const
!= operator to eCode
Definition: ExtrapolationCell.h:147
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::ExtrapolationStep::stepConfiguration
ExtrapolationConfig stepConfiguration
sensitive, passive, boundary to name the parameters
Definition: ExtrapolationCell.h:194
MagneticFieldProperties.h
Trk::ParticleHypothesis
ParticleHypothesis
Definition: ParticleHypothesis.h:25
Trk::ExtrapolationMode::eMode
eMode
Definition: ExtrapolationCell.h:47
Trk::ExtrapolationCell::navigationStep
int navigationStep
a counter of the navigation Step
Definition: ExtrapolationCell.h:268
Trk::ExtrapolationStep::material
const MaterialProperties * material
the associated material
Definition: ExtrapolationCell.h:196
Trk::ExtrapolationCell::materialX0
double materialX0
collected material so far in units of X0
Definition: ExtrapolationCell.h:272
Trk::ExtrapolationCell::nextGeometrySignature
GeometrySignature nextGeometrySignature
when a boundary is reached the geometry signature is updated to the next volume one
Definition: ExtrapolationCell.h:265
Trk::PropDirection
PropDirection
Definition: PropDirection.h:19
Trk::ExtrapolationCode::isSuccessOrRecovered
bool isSuccessOrRecovered() const
return success or recovered
Definition: ExtrapolationCell.h:162
Trk::ExtrapolationCell::radialDirection
int radialDirection
for checking if navigation is radially towards the IP, this has consequences for entering cylinders
Definition: ExtrapolationCell.h:261
Trk::ExtrapolationCode::Recovered
@ Recovered
Definition: ExtrapolationCell.h:119
Trk::ExtrapolationCode::FailureNavigation
@ FailureNavigation
Definition: ExtrapolationCell.h:122
Trk::ExtrapolationCode::LeftKnownWorld
@ LeftKnownWorld
Definition: ExtrapolationCell.h:125
Trk::ExtrapolationMode::FATRAS
@ FATRAS
Definition: ExtrapolationCell.h:63
Trk::ExtrapolationMode::Destination
@ Destination
Definition: ExtrapolationCell.h:49
Trk::ExtrapolationCell::materialL0
double materialL0
collected material so far in units of L0
Definition: ExtrapolationCell.h:274
Trk::ExtrapolationCode::isSuccess
bool isSuccess() const
return success
Definition: ExtrapolationCell.h:153
Trk::pion
@ pion
Definition: ParticleHypothesis.h:29
Trk::ExtrapolationConfig::addMode
void addMode(ExtrapolationMode::eMode em)
add a configuration mode
Definition: ExtrapolationCell.h:84
Trk::ExtrapolationCell::setRadialDirection
void setRadialDirection()
estimate the radial direction of the extrapolation cell
Definition: ExtrapolationCell.h:430
Trk::ExtrapolationCode
Definition: ExtrapolationCell.h:105
Trk::ExtrapolationCell::endParameters
T * endParameters
by pointer - are newly created and can be optionally 0
Definition: ExtrapolationCell.h:238
Trk::ExtrapolationCode::SuccessPathLimit
@ SuccessPathLimit
Definition: ExtrapolationCell.h:115
Trk::ExtrapolationMode::CollectSensitive
@ CollectSensitive
Definition: ExtrapolationCell.h:56
Trk::ExtrapolationCode::s_ecodeNames
static const std::vector< std::string > s_ecodeNames
Definition: ExtrapolationCell.h:177
Trk::ExtrapolationMode::CollectJacobians
@ CollectJacobians
Definition: ExtrapolationCell.h:60
Trk::ExtrapolationCell::startParameters
T * startParameters
by reference - need to be defined
Definition: ExtrapolationCell.h:233
ParticleHypothesis.h
Trk::ExtrapolationCell::materialProcess
int materialProcess
the material process to be generated
Definition: ExtrapolationCell.h:276
Trk::ExtrapolationConfig::checkMode
bool checkMode(ExtrapolationMode::eMode em) const
check the configuration mode
Definition: ExtrapolationCell.h:91
Trk::Unsigned
@ Unsigned
Definition: GeometrySignature.h:33
Trk::FullField
@ FullField
Field is set to be realistic, but within a given Volume.
Definition: MagneticFieldMode.h:21
Trk::ExtrapolationCell::checkConfigurationMode
bool checkConfigurationMode(ExtrapolationMode::eMode em) const
check the configuration mode
Definition: ExtrapolationCell.h:352
reachedLimit
#define reachedLimit(current, limit, tolerance)
Definition: ExtrapolationCell.h:24
Trk::ExtrapolationMode::AvoidFallback
@ AvoidFallback
Definition: ExtrapolationCell.h:62
Trk::ExtrapolationStep::parameters
const T * parameters
the parameters of this step
Definition: ExtrapolationCell.h:190
Trk::ExtrapolationCode::SuccessMaterialLimit
@ SuccessMaterialLimit
Definition: ExtrapolationCell.h:117
Trk::ExtrapolationCell::lastBoundaryParameters
T * lastBoundaryParameters
this is the last boundary surface to prevent loops
Definition: ExtrapolationCell.h:253
tolerance
Definition: suep_shower.h:17
Trk::ExtrapolationCell::lastLeadParameters
T * lastLeadParameters
this is for caching the last valid
Definition: ExtrapolationCell.h:258
Trk::ExtrapolationCode::isSuccessBeforeDestination
bool isSuccessBeforeDestination() const
return sucess other than destination reached
Definition: ExtrapolationCell.h:156
Trk::ExtrapolationCell::ExtrapolationCell
ExtrapolationCell(T &sParameters, PropDirection pDir=alongMomentum, unsigned int econfig=1)
start parameters are compulsory
Definition: ExtrapolationCell.h:303
Trk
Ensure that the ATLAS eigen extensions are properly loaded.
Definition: FakeTrackBuilder.h:9
Trk::ExtrapolationCell::materialLimitL0
double materialLimitL0
given material limit in L0
Definition: ExtrapolationCell.h:275
Trk::ExtrapolationCode::isFailureOrRecovered
bool isFailureOrRecovered() const
return failure or recovered
Definition: ExtrapolationCell.h:171
Trk::ExtrapolationCode::isFailure
bool isFailure() const
return failure
Definition: ExtrapolationCell.h:168
Amg
Definition of ATLAS Math & Geometry primitives (Amg)
Definition: AmgStringHelpers.h:19
Trk::ExtrapolationCell::materialUpdateMode
MaterialUpdateMode materialUpdateMode
how to deal with the material effect, default: addNoise
Definition: ExtrapolationCell.h:282
Trk::ExtrapolationConfig
Definition: ExtrapolationCell.h:71
Trk::ExtrapolationCell::pathLimit
double pathLimit
the maximal limit of the extrapolation
Definition: ExtrapolationCell.h:270
Trk::ExtrapolationCode::code
eCode code
the actual code
Definition: ExtrapolationCell.h:129
Trk::EnergyLoss
This class describes energy loss material effects in the ATLAS tracking EDM.
Definition: EnergyLoss.h:34
Trk::ExtrapolationMode::Direct
@ Direct
Definition: ExtrapolationCell.h:48
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition: GeoPrimitives.h:47
Trk::ExtrapolationMode::CollectMaterial
@ CollectMaterial
Definition: ExtrapolationCell.h:59
Trk::ExtrapolationCode::FailureConfiguration
@ FailureConfiguration
Definition: ExtrapolationCell.h:124
Trk::ExtrapolationConfig::ExtrapolationConfig
ExtrapolationConfig(const ExtrapolationConfig &eConfig)
Copy Constructor.
Definition: ExtrapolationCell.h:79
MaterialUpdateMode.h
Trk::ExtrapolationStep::pathLength
double pathLength
the path length from the last step
Definition: ExtrapolationCell.h:201
Trk::ExtrapolationCell::zOaTrX
float zOaTrX
z/A*rho*dInX0 (for average calculations)
Definition: ExtrapolationCell.h:299
Trk::MaterialProperties
Definition: MaterialProperties.h:40
Trk::ExtrapolationCell
Definition: ExtrapolationCell.h:231
Trk::ExtrapolationCell::addMaterial
void addMaterial(double sfactor, const MaterialProperties *mprop=nullptr)
fill or attach material, jacobian, step length
Definition: ExtrapolationCell.h:606
Trk::ExtrapolationCell::leadParameters
T * leadParameters
the one last truely valid parameter in the stream
Definition: ExtrapolationCell.h:246
mapkey::sf
@ sf
Definition: TElectronEfficiencyCorrectionTool.cxx:38
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::ExtrapolationCode::ExtrapolationCode
ExtrapolationCode(eCode c)
Definition: ExtrapolationCell.h:132
Trk::addNoise
@ addNoise
Definition: MaterialUpdateMode.h:19
Trk::MaterialProperties::averageZ
float averageZ() const
Returns the average Z of the material.
Trk::ExtrapolationCell::navigationCurvilinear
bool navigationCurvilinear
stay in curvilinear parameters where possible, default : true
Definition: ExtrapolationCell.h:284
Trk::ExtrapolationCell::materialLimitReached
bool materialLimitReached(double tolerance=0.001) const
the materialLimitReached
Definition: ExtrapolationCell.h:404
Trk::ExtrapolationCode::eCode
eCode
Definition: ExtrapolationCell.h:109
LArCellBinning.step
step
Definition: LArCellBinning.py:158
Trk::ExtrapolationCell::initialVolume
bool initialVolume() const
check if this is the initial volume
Definition: ExtrapolationCell.h:388
physics_parameters.parameters
parameters
Definition: physics_parameters.py:144
Trk::ExtrapolationCell::finalize
void finalize(const ExtrapolationCode &ec)
finalize call - this one is called by the ExtrapoaltionEngine
Definition: ExtrapolationCell.h:504
Trk::MaterialProperties::zOverAtimesRho
float zOverAtimesRho() const
Return the .
Trk::ExtrapolationCell::checkRadialCompatibility
bool checkRadialCompatibility() const
check whether the propagation stays compatible with initial radial direction
Definition: ExtrapolationCell.h:454
Trk::ExtrapolationCell::time
float time
timing info
Definition: ExtrapolationCell.h:297
Trk::Material
Definition: Material.h:116
Trk::ExtrapolationMode::StopWithMaterialLimitX0
@ StopWithMaterialLimitX0
Definition: ExtrapolationCell.h:51
Trk::ExtrapolationCell::endVolume
const TrackingVolume * endVolume
the end Volume - can be optionally 0 (needs other trigger to stop)
Definition: ExtrapolationCell.h:239
Trk::ExtrapolationCode::FailureLoop
@ FailureLoop
Definition: ExtrapolationCell.h:121
Trk::Surface
Definition: Tracking/TrkDetDescr/TrkSurfaces/TrkSurfaces/Surface.h:75
Trk::ExtrapolationMode::StopAtBoundary
@ StopAtBoundary
Definition: ExtrapolationCell.h:55
Trk::ExtrapolationCell::leadVolume
const TrackingVolume * leadVolume
the lead Volume - carrying the navigation stream
Definition: ExtrapolationCell.h:248
Trk::ExtrapolationCell::startLayer
const Layer * startLayer
the start layer - needed for layerToLayer loop
Definition: ExtrapolationCell.h:236
Trk::ExtrapolationStep::materialPosition
Amg::Vector3D materialPosition
position from where the material is taken
Definition: ExtrapolationCell.h:197
Trk::TrackingVolume
Definition: TrackingVolume.h:121
python.compressB64.c
def c
Definition: compressB64.py:93
Trk::ExtrapolationCell::finalVolumeReached
bool finalVolumeReached() const
trigger for final volume
Definition: ExtrapolationCell.h:391
Trk::ExtrapolationCell::endSurface
const Surface * endSurface
keep track of the destination surface - can be optionally 0
Definition: ExtrapolationCell.h:244
Trk::ExtrapolationCell::mFieldMode
MagneticFieldProperties mFieldMode
what magnetic field mode to be used, default : fullField
Definition: ExtrapolationCell.h:281
Trk::ExtrapolationCell::extrapolationConfiguration
ExtrapolationConfig extrapolationConfiguration
overall global configuration
Definition: ExtrapolationCell.h:295
Trk::ExtrapolationCode::operator=
ExtrapolationCode & operator=(const eCode &ec)
assigment operator - because we can
Definition: ExtrapolationCell.h:137
Trk::ExtrapolationStep::transportJacobian
const TransportJacobian * transportJacobian
the transport jacobian from the last step
Definition: ExtrapolationCell.h:200
Trk::ExtrapolationStep::surface
const Surface * surface
the surface where the step is bound
Definition: ExtrapolationCell.h:191
Trk::ExtrapolationCode::toString
const std::string & toString() const
toString
Definition: ExtrapolationCell.h:174
Trk::ExtrapolationCode::InProgress
@ InProgress
Definition: ExtrapolationCell.h:111
Trk::Layer
Definition: Layer.h:73
Trk::ExtrapolationStep::time
float time
timing info
Definition: ExtrapolationCell.h:202
Trk::ExtrapolationCell::leadLayerSurface
const Surface * leadLayerSurface
if the lead layer has sub structure that is the first one to start with
Definition: ExtrapolationCell.h:250