ATLAS Offline Software
Extrapolator.icc
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
3  */
4 namespace Trk {
5 
6 inline const TrackingGeometry*
7 Extrapolator::trackingGeometry() const
8 {
9  if (m_navigator){
10  return m_navigator->trackingGeometry(Gaudi::Hive::currentContext());
11  }
12  return nullptr;
13 }
14 
15 inline const IPropagator*
16 Extrapolator::subPropagator(const Trk::TrackingVolume& tvol) const
17 {
18  const IPropagator* currentPropagator =
19  (tvol.geometrySignature() < m_subPropagators.size())
20  ? m_subPropagators[tvol.geometrySignature()]
21  : nullptr;
22 
23  if (tvol.geometrySignature() == Trk::Calo && m_useDenseVolumeDescription) {
24  currentPropagator =
25  (Trk::MS < m_subPropagators.size()) ? m_subPropagators[Trk::MS] : nullptr;
26  }
27  if (!currentPropagator) {
28  ATH_MSG_ERROR(
29  "[!] Configuration problem: no Propagator found for volumeSignature: "
30  << tvol.geometrySignature());
31  }
32  return currentPropagator;
33 }
34 
35 inline const IMaterialEffectsUpdator*
36 Extrapolator::subMaterialEffectsUpdator(const Trk::TrackingVolume& tvol) const
37 {
38  return (tvol.geometrySignature() < m_subupdaters.size())
39  ? m_subupdaters[tvol.geometrySignature()]
40  : nullptr;
41 }
42 
43 
44 inline const Trk::TrackParameters*
45 Extrapolator::returnResult(Cache& cache,
46  const Trk::TrackParameters* result) const
47 {
48  (void)cache;
49  // call the model action on the material effect updaters
50  for (unsigned int imueot = 0; imueot < m_subupdaters.size(); ++imueot) {
51  m_subupdaters[imueot]->modelAction();
52  }
53  // return the result
54  return result;
55 }
56 }