9#ifndef TRKEXTOOLS_TIMEDEXTRAPOLATOR_H
10#define TRKEXTOOLS_TIMEDEXTRAPOLATOR_H
19#include "GaudiKernel/ToolHandle.h"
57typedef std::pair<const Surface*, BoundaryCheck>
DestSurf;
179 virtual StatusCode
finalize()
override;
199 virtual std::unique_ptr<const Trk::TrackParameters>
279 bool startingLayer =
false)
const;
294 "Propagators", {},
"Array of Propagators"};
296 "STEP_Propagator",
"Trk::STEP_Propagator/AtlasSTEP_Propagator"};
298 "Navigator",
"Trk::Navigator/AtlasNavigator",
299 "Navigator for TrackingGeometry and magnetic fiels access"};
301 "MaterialEffectsUpdators", {},
"Array of Material Updators"};
303 "MultipleScatteringUpdators", {},
" Array of MultipleScattering Updators"};
305 "EnergyLossUpdater",
"Trk::EnergyLossUpdator/AtlasEnergyLossUpdator"};
309 std::vector<const IPropagator*>
311 std::vector<const ITimedMatEffUpdator*>
317 "configuration of subPropagators"};
319 "configuration of subupdaters"};
324 this,
"MaterialEffectsOnTrackProviderIndex", 0,
325 "if several meotps are available in a volume steer which one to use"};
329 "boolean to switch on/off material effects"};
331 "return 0 if navigation breaks - for validation reasons"};
333 "return 0 if update kills the trajectory"};
335 "skip the initial post-Update at the layer [Fatras conversion mode]"};
337 "use the reference material for the update"};
339 "allowed layer intersection attempts at the start of a volume"};
341 this,
"SuccessiveLayerAttempts", 1,
342 "layer intersection attemps after one layer has been hit sucessfully"};
344 DoubleProperty
m_tolerance{
this,
"Tolerance", 0.002,
"surface & volume tolerance"};
347 "handling of secondaries beyond ID"};
353 this,
"UseDenseVolumeDescription",
true,
354 "use dense volume description when available in ID/Calo"};
356 "use approximative MS inert material"};
368 "steer the output for the navigation statistics"};
370 "steer the output for the navigation break details"};
372 "MaterialEffectsOnTrackValidation",
false,
"mat effects on track validation"};
378 Cache(
unsigned int max_navig_surf = 1000.)
385 for (std::pair<const Trk::TrackParameters*, bool> param :
m_garbageBin) {
397 std::map<const Trk::TrackParameters*, bool>
405 std::vector<std::pair<const Trk::DetachedTrackingVolume*, unsigned int>>
m_detachedVols;
406 std::vector<std::pair<const Trk::TrackingVolume*, unsigned int>>
m_denseVols;
407 std::vector<std::pair<const Trk::TrackingVolume*, const Trk::Layer*>>
m_navigLays;
425 std::vector<std::pair<const Trk::Surface*, Trk::BoundaryCheck>>
m_navigSurfs;
426 std::vector<std::pair<const Trk::Surface*, double>>
m_trSurfs;
429 std::vector<std::pair<const Trk::Surface*, double>>
m_trLays;
435 BooleanProperty
m_fastField{
this,
"MagneticFieldProperties",
false};
445 return m_navigator->trackingGeometry(Gaudi::Hive::currentContext());
456 if (!currentPropagator) {
457 msg(MSG::ERROR) <<
"[!] Configuration problem: no Propagator found for volumeSignature: "
460 return currentPropagator;
std::vector< FPGATrackSimHit > hitVector
Define macros for attributes used to control the static checker.
Base Class for a navigation object (active) in the Calo realm.
The BoundaryCheck class allows to steer the way surface boundaries are used for inside/outside checks...
Base Class for a navigation object (active/passive) in the Tracking realm.
Interface class IDynamicLayerCreator It inherits from IAlgTool.
Interface class IEnergyLossUpdator.
Interface class IMultipleScatteringUpdator.
Interface class for the navigation AlgTool, it inherits from IAlgTool Detailed information about priv...
Interface class IPropagators It inherits from IAlgTool.
Interface class for the updater AlgTool, it inherits from IAlgTool Detailed information about private...
Base Class for a Detector Layer in the Tracking realm.
magnetic field properties to steer the behavior of the extrapolation
A common object to be contained by.
Abstract Base Class for tracking surfaces.
The TrackingGeometry class is the owner of the constructed TrackingVolumes.
Full Volume description used in Tracking, it inherits from Volume to get the geometrical structure,...
GeometrySignature geometrySignature() const
return the Signature
Base class for all volumes inside the tracking realm, it defines the interface for inherited Volume c...
Eigen::Matrix< double, 3, 1 > Vector3D
Ensure that the ATLAS eigen extensions are properly loaded.
PropDirection
PropDirection, enum for direction of the propagation.
BoundarySurfaceFace
Enum to describe the position of the BoundarySurface respectively to the frame orientatin of the volu...
std::vector< const Trk::TrackParameters * > TrackParametersVector
ParticleHypothesis
Enumeration for Particle hypothesis respecting the interaction with material.
std::pair< const Surface *, BoundaryCheck > DestSurf
typedef for input surfaces, boundary check
ParametersBase< TrackParametersDim, Charged > TrackParameters
BoundaryTrackParameters(const TrackParameters *parms, const TrackingVolume *exitTV, const TrackingVolume *entryTV)
const TrackParameters * trPar
const TrackingVolume * exitVol
const TrackingVolume * entryVol
DestBound(const Surface *surf, double dist, unsigned int index)
const Trk::Material * material
IdentifiedIntersection(float dist, int id, const Trk::Material *mat)
const TrackParameters * navParameters
void boundaryInformation(const TrackingVolume *tvol, const TrackParameters *nextPars, const TrackParameters *navPars, BoundarySurfaceFace face=undefinedFace)
reset the boundary information by invalidating it
const TrackingVolume * nextVolume
< the members
const TrackParameters * nextParameters
ParamsNextVolume()
update the boundaryInformation
BoundarySurfaceFace exitFace
void resetBoundaryInformation()