9 #ifndef TRKEXTOOLS_TIMEDEXTRAPOLATOR_H
10 #define TRKEXTOOLS_TIMEDEXTRAPOLATOR_H
19 #include "GaudiKernel/ToolHandle.h"
45 class DetachedTrackingVolume;
46 class AlignableTrackingVolume;
47 class TrackingGeometry;
48 class TrackParticleBase;
50 class IDynamicLayerCreator;
52 class IMultipleScatteringUpdator;
53 class IEnergyLossUpdator;
57 typedef std::pair<const Surface*, BoundaryCheck>
DestSurf;
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;
481 #endif // TRKEXTOOLS_TIMEDEXTRAPOLATOR_H