ATLAS Offline Software
Public Member Functions | Static Public Member Functions | Protected Member Functions | Private Types | Private Member Functions | Private Attributes | List of all members
Trk::Navigator Class Referencefinal

#include <Navigator.h>

Inheritance diagram for Trk::Navigator:
Collaboration diagram for Trk::Navigator:

Public Member Functions

 Navigator (const std::string &, const std::string &, const IInterface *)
 Constructor. More...
 
virtual ~Navigator ()=default
 Destructor. More...
 
virtual StatusCode initialize () override
 AlgTool initialize method. More...
 
virtual const TrackingGeometrytrackingGeometry (const EventContext &ctx) const override final
 INavigator interface method - returns the TrackingGeometry used for navigation. More...
 
virtual const TrackingVolumevolume (const EventContext &ctx, const Amg::Vector3D &gp) const override final
 INavigator interface methods - global search for the Volume one is in. More...
 
virtual const TrackingVolumehighestVolume (const EventContext &ctx) const override final
 INavigator interface method - forward hightes TrackingVolume. More...
 
virtual const TrackParametersclosestParameters (const Track &trk, const Surface &sf) const override final
 INavigator interface method - getting the closest TrackParameters from a Track to a Surface. More...
 
virtual bool atVolumeBoundary (const Trk::TrackParameters *parms, const Trk::TrackingVolume *vol, Trk::PropDirection dir, const Trk::TrackingVolume *&nextVol, double tol) const override final
 INavigator method to resolve navigation at boundary. More...
 
virtual const BoundarySurface< TrackingVolume > * nextBoundarySurface (const EventContext &ctx, const IPropagator &prop, const TrackParameters &parms, PropDirection dir) const override final
 INavigator interface methods - getting the next BoundarySurface not knowing the Volume. More...
 
virtual const BoundarySurface< TrackingVolume > * nextBoundarySurface (const EventContext &ctx, const IPropagator &prop, const TrackParameters &parms, PropDirection dir, const TrackingVolume &vol) const override final
 INavigator interface methods - getting the next BoundarySurface when knowing the Volume. More...
 
virtual NavigationCell nextTrackingVolume (const EventContext &ctx, const IPropagator &prop, const TrackParameters &parms, PropDirection dir, const TrackingVolume &vol) const override final
 INavigator interface method - getting the next Volume and the parameter for the next Navigation. More...
 
ServiceHandle< StoreGateSvc > & evtStore ()
 The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc. More...
 
const ServiceHandle< StoreGateSvc > & evtStore () const
 The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc. More...
 
const ServiceHandle< StoreGateSvc > & detStore () const
 The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc. More...
 
virtual StatusCode sysInitialize () override
 Perform system initialization for an algorithm. More...
 
virtual StatusCode sysStart () override
 Handle START transition. More...
 
virtual std::vector< Gaudi::DataHandle * > inputHandles () const override
 Return this algorithm's input handles. More...
 
virtual std::vector< Gaudi::DataHandle * > outputHandles () const override
 Return this algorithm's output handles. More...
 
Gaudi::Details::PropertyBase & declareProperty (Gaudi::Property< T > &t)
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, SG::VarHandleKey &hndl, const std::string &doc, const SG::VarHandleKeyType &)
 Declare a new Gaudi property. More...
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, SG::VarHandleBase &hndl, const std::string &doc, const SG::VarHandleType &)
 Declare a new Gaudi property. More...
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, SG::VarHandleKeyArray &hndArr, const std::string &doc, const SG::VarHandleKeyArrayType &)
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, T &property, const std::string &doc, const SG::NotHandleType &)
 Declare a new Gaudi property. More...
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, T &property, const std::string &doc="none")
 Declare a new Gaudi property. More...
 
void updateVHKA (Gaudi::Details::PropertyBase &)
 
MsgStream & msg () const
 
MsgStream & msg (const MSG::Level lvl) const
 
bool msgLvl (const MSG::Level lvl) const
 

Static Public Member Functions

static const InterfaceID & interfaceID ()
 AlgTool and IAlgTool interface methods. More...
 

Protected Member Functions

void renounceArray (SG::VarHandleKeyArray &handlesArray)
 remove all handles from I/O resolution More...
 
std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > renounce (T &h)
 
void extraDeps_update_handler (Gaudi::Details::PropertyBase &ExtraDeps)
 Add StoreName to extra input/output deps as needed. More...
 

Private Types

typedef ServiceHandle< StoreGateSvcStoreGateSvc_t
 

Private Member Functions

Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
 specialization for handling Gaudi::Property<SG::VarHandleKey> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleKeyArrayType &)
 specialization for handling Gaudi::Property<SG::VarHandleKeyArray> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleType &)
 specialization for handling Gaudi::Property<SG::VarHandleBase> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &t, const SG::NotHandleType &)
 specialization for handling everything that's not a Gaudi::Property<SG::VarHandleKey> or a <SG::VarHandleKeyArray> More...
 

Private Attributes

SG::ReadCondHandleKey< TrackingGeometrym_trackingGeometryReadKey
 
ServiceHandle< Trk::ITrackingGeometrySvcm_trackingGeometrySvc
 ToolHandle to the TrackingGeometrySvc. More...
 
std::string m_trackingGeometryName
 Name of the TrackingGeometry as given in Detector Store. More...
 
double m_insideVolumeTolerance
 Tolerance for inside() method of Volumes. More...
 
double m_isOnSurfaceTolerance
 Tolerance for isOnSurface() method of BoundarySurfaces. More...
 
bool m_useConditions {}
 
Trk::MagneticFieldProperties m_fieldProperties
 
bool m_useStraightLineApproximation
 use the straight line approximation for the next boundary sf More...
 
bool m_searchWithDistance
 search with new distanceToSurface() method More...
 
bool m_fastField
 
StoreGateSvc_t m_evtStore
 Pointer to StoreGate (event store by default) More...
 
StoreGateSvc_t m_detStore
 Pointer to StoreGate (detector store by default) More...
 
std::vector< SG::VarHandleKeyArray * > m_vhka
 
bool m_varHandleArraysDeclared
 

Detailed Description

Main AlgTool for Navigation in the TrkExtrapolation realm : It retrieves the TrackingGeometry from the DetectorStore as the reference Geometry.

Author
Andre.nosp@m.as.S.nosp@m.alzbu.nosp@m.rger.nosp@m.@cern.nosp@m..ch

Definition at line 48 of file Navigator.h.

Member Typedef Documentation

◆ StoreGateSvc_t

typedef ServiceHandle<StoreGateSvc> AthCommonDataStore< AthCommonMsg< AlgTool > >::StoreGateSvc_t
privateinherited

Definition at line 388 of file AthCommonDataStore.h.

Constructor & Destructor Documentation

◆ Navigator()

Trk::Navigator::Navigator ( const std::string &  t,
const std::string &  n,
const IInterface *  p 
)

Constructor.

Definition at line 40 of file Navigator.cxx.

40  :
41  AthAlgTool(t, n, p),
42  m_trackingGeometryName("AtlasTrackingGeometry"),
47  m_fastField(false)
48  {
49  declareInterface<INavigator>(this);
50  // steering of algorithms
51  declareProperty("InsideVolumeTolerance", m_insideVolumeTolerance);
52  declareProperty("IsOnSurfaceTolerance", m_isOnSurfaceTolerance);
53  declareProperty("UseStraightLineApproximation", m_useStraightLineApproximation);
54  // closest parameter search with new Surface::distance method
55  declareProperty("SearchWithDistanceToSurface", m_searchWithDistance);
56  // Magnetic field properties
57  declareProperty("MagneticFieldProperties", m_fastField);
58  }

◆ ~Navigator()

virtual Trk::Navigator::~Navigator ( )
virtualdefault

Destructor.

Member Function Documentation

◆ atVolumeBoundary()

bool Trk::Navigator::atVolumeBoundary ( const Trk::TrackParameters parms,
const Trk::TrackingVolume vol,
Trk::PropDirection  dir,
const Trk::TrackingVolume *&  nextVol,
double  tol 
) const
finaloverridevirtual

INavigator method to resolve navigation at boundary.

Implements Trk::INavigator.

Definition at line 267 of file Navigator.cxx.

272 {
273  bool isAtBoundary = false;
274  nextVol = nullptr;
275  if (!vol) {
276  return isAtBoundary;
277  }
278  const auto& bounds = vol->boundarySurfaces();
279  for (unsigned int ib = 0; ib < bounds.size(); ib++) {
280  const Trk::Surface &surf = bounds[ib]->surfaceRepresentation();
281  if (surf.isOnSurface(parms->position(), true, tol, tol)) {
282 
283  // sanity check to enforce the desired tolerance
285  dir * parms->momentum().unit());
286  if (distSol.currentDistance(false) < tol && distSol.numberOfSolutions() > 0) {
287  isAtBoundary = true;
288  const Trk::TrackingVolume* attachedVol =
289  (bounds[ib])
290  ->attachedVolume(parms->position(), parms->momentum(), dir);
291  if (!nextVol && attachedVol) {
292  nextVol = attachedVol;
293  }
294  // double good solution indicate tangential intersection : revert the attached volumes
295  if (distSol.numberOfSolutions() > 1 && std::abs(distSol.first()) < tol && std::abs(distSol.second()) < tol) {
296  if (!nextVol) {
297  ATH_MSG_WARNING("Tracking volume "
298  << (*vol)
299  << " has loose ends. because the navigation of "
300  << std::endl
301  << (*parms) << std::endl
302  << " failed. Please consult the experts or have a "
303  "look at ATLASRECTS-7147");
304  continue;
305  }
306  //surfing the beampipe seems to happen particularly often in a Trigger test.
307  //see https://its.cern.ch/jira/browse/ATR-24234
308  //in this case, I downgrade the 'warning' to 'verbose'
309  const bool surfingTheBeamPipe = (vol->geometrySignature() == Trk::BeamPipe) or (nextVol->geometrySignature() == Trk::BeamPipe);
310  if (not surfingTheBeamPipe) {
311  ATH_MSG_WARNING("navigator detects tangential intersection: switch of volumes reverted ");
312  } else {
313  ATH_MSG_VERBOSE("navigator detects particle entering and re-entering the beampipe");
314  }
315  if (nextVol and (not surfingTheBeamPipe)) {
316  ATH_MSG_WARNING(vol->volumeName() << "->" << nextVol->volumeName() << "->" << vol->volumeName());
317  }
318  isAtBoundary = false;
319  // revert attached volume
320  nextVol = vol;
321  }
322  }
323  }
324  }
325 
326  return isAtBoundary;
327 }

◆ closestParameters()

const Trk::TrackParameters * Trk::Navigator::closestParameters ( const Track trk,
const Surface sf 
) const
finaloverridevirtual

INavigator interface method - getting the closest TrackParameters from a Track to a Surface.

Implements Trk::INavigator.

Definition at line 330 of file Navigator.cxx.

332 {
333 
334  // search with dedicated algorithms for cylinder/sl/perigee
335  // surface
336  const Trk::TrackParameters *closestTrackParameters = nullptr;
337 
338  // policy change --- only measured parameters are taken
339  DataVector<const TrackParameters>::const_iterator it = trk.trackParameters()->begin();
340  std::vector<const Trk::TrackParameters *> measuredParameters;
341  measuredParameters.reserve(trk.trackParameters()->size());
342  for (; it != trk.trackParameters()->end(); ++it) {
343  // dynamic cast the Measured ones
344  const Trk::TrackParameters *mtp = *it;
345  if (!mtp || !mtp->covariance()) {
346  continue;
347  }
348  measuredParameters.push_back(*it);
349  }
350 
351  // new policy --- take only measured parameters
352  if (measuredParameters.empty()) {
353  return nullptr;
354  }
355 
356  if (m_searchWithDistance) {
357  // loop over the track parameters and get the distance
358  std::vector<const Trk::TrackParameters *>::const_iterator tpIter = measuredParameters.begin();
359  std::vector<const Trk::TrackParameters *>::const_iterator tpIterEnd = measuredParameters.end();
360  // set a maximum distance
361  double closestDistance = 10e10;
362  const Trk::TrackParameters *currentClosestParameters = nullptr;
363 
364  for (; tpIter != tpIterEnd; ++tpIter) {
365  // forward-backward solution
366  Amg::Vector3D tpDirection = (*tpIter)->momentum().normalized();
367 
368  Trk::DistanceSolution currentDistance = sf.straightLineDistanceEstimate((*tpIter)->position(), tpDirection);
369  if (currentDistance.numberOfSolutions() > 0) {
370  // get the one/two solution(s)
371  double firstDistance = std::abs(currentDistance.first());
372  double secondDistance = currentDistance.numberOfSolutions() >
373  1 ? std::abs(currentDistance.second()) : firstDistance;
374  // now do the check
375  if (firstDistance < closestDistance || secondDistance < closestDistance) {
376  currentClosestParameters = (*tpIter);
377  closestDistance = firstDistance <= secondDistance ? firstDistance : secondDistance;
378  }
379  }
380  }
381 
382  // return what has shown to be closest
383  return currentClosestParameters;
384  }
385 
386  if (sf.type() == Trk::SurfaceType::Cylinder) {
387  Trk::TrkParametersComparisonFunction tParFinderCylinder(sf.bounds().r());
388  closestTrackParameters =
389  *(std::min_element(measuredParameters.begin(), measuredParameters.end(),
390  tParFinderCylinder));
391  return closestTrackParameters;
392  }
393 
394  if (sf.type() == Trk::SurfaceType::Line ||
395  sf.type() == Trk::SurfaceType::Perigee) {
397  sf.center(), sf.transform().rotation().col(2));
398  closestTrackParameters = *(std::min_element(
399  measuredParameters.begin(), measuredParameters.end(), tParFinderLine));
400  return closestTrackParameters;
401  }
402 
403  Trk::TrkParametersComparisonFunction tParFinderCenter(sf.center());
404  closestTrackParameters = *(std::min_element(measuredParameters.begin(), measuredParameters.end(), tParFinderCenter));
405 
406  return closestTrackParameters;
407 }

◆ declareGaudiProperty() [1/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< AlgTool > >::declareGaudiProperty ( Gaudi::Property< T > &  hndl,
const SG::VarHandleKeyArrayType  
)
inlineprivateinherited

specialization for handling Gaudi::Property<SG::VarHandleKeyArray>

Definition at line 170 of file AthCommonDataStore.h.

172  {
173  return *AthCommonDataStore<PBASE>::declareProperty(hndl.name(),
174  hndl.value(),
175  hndl.documentation());
176 
177  }

◆ declareGaudiProperty() [2/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< AlgTool > >::declareGaudiProperty ( Gaudi::Property< T > &  hndl,
const SG::VarHandleKeyType  
)
inlineprivateinherited

specialization for handling Gaudi::Property<SG::VarHandleKey>

Definition at line 156 of file AthCommonDataStore.h.

158  {
159  return *AthCommonDataStore<PBASE>::declareProperty(hndl.name(),
160  hndl.value(),
161  hndl.documentation());
162 
163  }

◆ declareGaudiProperty() [3/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< AlgTool > >::declareGaudiProperty ( Gaudi::Property< T > &  hndl,
const SG::VarHandleType  
)
inlineprivateinherited

specialization for handling Gaudi::Property<SG::VarHandleBase>

Definition at line 184 of file AthCommonDataStore.h.

186  {
187  return *AthCommonDataStore<PBASE>::declareProperty(hndl.name(),
188  hndl.value(),
189  hndl.documentation());
190  }

◆ declareGaudiProperty() [4/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< AlgTool > >::declareGaudiProperty ( Gaudi::Property< T > &  t,
const SG::NotHandleType  
)
inlineprivateinherited

specialization for handling everything that's not a Gaudi::Property<SG::VarHandleKey> or a <SG::VarHandleKeyArray>

Definition at line 199 of file AthCommonDataStore.h.

200  {
201  return PBASE::declareProperty(t);
202  }

◆ declareProperty() [1/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( const std::string &  name,
SG::VarHandleBase hndl,
const std::string &  doc,
const SG::VarHandleType  
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
hndlObject holding the property value.
docDocumentation string for the property.

This is the version for types that derive from SG::VarHandleBase. The property value object is put on the input and output lists as appropriate; then we forward to the base class.

Definition at line 245 of file AthCommonDataStore.h.

249  {
250  this->declare(hndl.vhKey());
251  hndl.vhKey().setOwner(this);
252 
253  return PBASE::declareProperty(name,hndl,doc);
254  }

◆ declareProperty() [2/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( const std::string &  name,
SG::VarHandleKey hndl,
const std::string &  doc,
const SG::VarHandleKeyType  
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
hndlObject holding the property value.
docDocumentation string for the property.

This is the version for types that derive from SG::VarHandleKey. The property value object is put on the input and output lists as appropriate; then we forward to the base class.

Definition at line 221 of file AthCommonDataStore.h.

225  {
226  this->declare(hndl);
227  hndl.setOwner(this);
228 
229  return PBASE::declareProperty(name,hndl,doc);
230  }

◆ declareProperty() [3/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( const std::string &  name,
SG::VarHandleKeyArray hndArr,
const std::string &  doc,
const SG::VarHandleKeyArrayType  
)
inlineinherited

Definition at line 259 of file AthCommonDataStore.h.

263  {
264 
265  // std::ostringstream ost;
266  // ost << Algorithm::name() << " VHKA declareProp: " << name
267  // << " size: " << hndArr.keys().size()
268  // << " mode: " << hndArr.mode()
269  // << " vhka size: " << m_vhka.size()
270  // << "\n";
271  // debug() << ost.str() << endmsg;
272 
273  hndArr.setOwner(this);
274  m_vhka.push_back(&hndArr);
275 
276  Gaudi::Details::PropertyBase* p = PBASE::declareProperty(name, hndArr, doc);
277  if (p != 0) {
278  p->declareUpdateHandler(&AthCommonDataStore<PBASE>::updateVHKA, this);
279  } else {
280  ATH_MSG_ERROR("unable to call declareProperty on VarHandleKeyArray "
281  << name);
282  }
283 
284  return p;
285 
286  }

◆ declareProperty() [4/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( const std::string &  name,
T &  property,
const std::string &  doc,
const SG::NotHandleType  
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
propertyObject holding the property value.
docDocumentation string for the property.

This is the generic version, for types that do not derive from SG::VarHandleKey. It just forwards to the base class version of declareProperty.

Definition at line 333 of file AthCommonDataStore.h.

337  {
338  return PBASE::declareProperty(name, property, doc);
339  }

◆ declareProperty() [5/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( const std::string &  name,
T &  property,
const std::string &  doc = "none" 
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
propertyObject holding the property value.
docDocumentation string for the property.

This dispatches to either the generic declareProperty or the one for VarHandle/Key/KeyArray.

Definition at line 352 of file AthCommonDataStore.h.

355  {
356  typedef typename SG::HandleClassifier<T>::type htype;
357  return declareProperty (name, property, doc, htype());
358  }

◆ declareProperty() [6/6]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( Gaudi::Property< T > &  t)
inlineinherited

Definition at line 145 of file AthCommonDataStore.h.

145  {
146  typedef typename SG::HandleClassifier<T>::type htype;
148  }

◆ detStore()

const ServiceHandle<StoreGateSvc>& AthCommonDataStore< AthCommonMsg< AlgTool > >::detStore ( ) const
inlineinherited

The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 95 of file AthCommonDataStore.h.

95 { return m_detStore; }

◆ evtStore() [1/2]

ServiceHandle<StoreGateSvc>& AthCommonDataStore< AthCommonMsg< AlgTool > >::evtStore ( )
inlineinherited

The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 85 of file AthCommonDataStore.h.

85 { return m_evtStore; }

◆ evtStore() [2/2]

const ServiceHandle<StoreGateSvc>& AthCommonDataStore< AthCommonMsg< AlgTool > >::evtStore ( ) const
inlineinherited

The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 90 of file AthCommonDataStore.h.

90 { return m_evtStore; }

◆ extraDeps_update_handler()

void AthCommonDataStore< AthCommonMsg< AlgTool > >::extraDeps_update_handler ( Gaudi::Details::PropertyBase &  ExtraDeps)
protectedinherited

Add StoreName to extra input/output deps as needed.

use the logic of the VarHandleKey to parse the DataObjID keys supplied via the ExtraInputs and ExtraOuputs Properties to add the StoreName if it's not explicitly given

◆ highestVolume()

const Trk::TrackingVolume * Trk::Navigator::highestVolume ( const EventContext &  ctx) const
finaloverridevirtual

INavigator interface method - forward hightes TrackingVolume.

Implements Trk::INavigator.

Definition at line 94 of file Navigator.cxx.

95 {
96  return (trackingGeometry(ctx)->highestTrackingVolume());
97 }

◆ initialize()

StatusCode Trk::Navigator::initialize ( )
overridevirtual

AlgTool initialize method.

Definition at line 63 of file Navigator.cxx.

63  {
64  //We can use conditions when the key is not empty
66  // get the TrackingGeometry
67  if (!m_useConditions) {
68  if (m_trackingGeometrySvc.retrieve().isSuccess()) {
69  ATH_MSG_DEBUG("Successfully retrieved " << m_trackingGeometrySvc);
70  m_trackingGeometryName = m_trackingGeometrySvc->trackingGeometryName();
71  } else {
72  ATH_MSG_WARNING("Couldn't retrieve " << m_trackingGeometrySvc << ". ");
73  ATH_MSG_WARNING(" -> Trying to retrieve default '"
74  << m_trackingGeometryName << "' from DetectorStore.");
75  }
76  }
77 
79 
82  : Trk::MagneticFieldProperties(Trk::FullField);
83 
84  return StatusCode::SUCCESS;
85 }

◆ inputHandles()

virtual std::vector<Gaudi::DataHandle*> AthCommonDataStore< AthCommonMsg< AlgTool > >::inputHandles ( ) const
overridevirtualinherited

Return this algorithm's input handles.

We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.

◆ interfaceID()

static const InterfaceID& Trk::INavigator::interfaceID ( )
inlinestaticinherited

AlgTool and IAlgTool interface methods.

Definition at line 74 of file INavigator.h.

74 { return IID_INavigator; }

◆ msg() [1/2]

MsgStream& AthCommonMsg< AlgTool >::msg ( ) const
inlineinherited

Definition at line 24 of file AthCommonMsg.h.

24  {
25  return this->msgStream();
26  }

◆ msg() [2/2]

MsgStream& AthCommonMsg< AlgTool >::msg ( const MSG::Level  lvl) const
inlineinherited

Definition at line 27 of file AthCommonMsg.h.

27  {
28  return this->msgStream(lvl);
29  }

◆ msgLvl()

bool AthCommonMsg< AlgTool >::msgLvl ( const MSG::Level  lvl) const
inlineinherited

Definition at line 30 of file AthCommonMsg.h.

30  {
31  return this->msgLevel(lvl);
32  }

◆ nextBoundarySurface() [1/2]

const Trk::BoundarySurface< Trk::TrackingVolume > * Trk::Navigator::nextBoundarySurface ( const EventContext &  ctx,
const IPropagator prop,
const TrackParameters parms,
Trk::PropDirection  dir 
) const
finaloverridevirtual

INavigator interface methods - getting the next BoundarySurface not knowing the Volume.

Implements Trk::INavigator.

Definition at line 100 of file Navigator.cxx.

104 {
105  const Trk::TrackingVolume* trackingVolume = volume(ctx,parms.position());
106  if (trackingVolume) {
107  return (nextBoundarySurface(ctx,prop, parms, dir, *trackingVolume));
108  }
109  return nullptr;
110 }

◆ nextBoundarySurface() [2/2]

const Trk::BoundarySurface< Trk::TrackingVolume > * Trk::Navigator::nextBoundarySurface ( const EventContext &  ctx,
const IPropagator prop,
const TrackParameters parms,
Trk::PropDirection  dir,
const TrackingVolume vol 
) const
finaloverridevirtual

INavigator interface methods - getting the next BoundarySurface when knowing the Volume.

Implements Trk::INavigator.

Definition at line 113 of file Navigator.cxx.

118 {
119  // get the surface accessor
120  Trk::ObjectAccessor surfAcc = vol.boundarySurfaceAccessor(
121  parms.position(), dir * parms.momentum().normalized());
122  // initialize the currentBoundary surface
123  const Trk::BoundarySurface<Trk::TrackingVolume>* currentBoundary = nullptr;
124  bool outsideVolume = surfAcc.inverseRetrieval();
125  // attempt counter
126  int tryBoundary = 0;
127 
128  // set the prop direction according to inverseRetrieval result
129  Trk::PropDirection searchDir = dir;
130  if (outsideVolume) {
131  searchDir =
133  }
134 
135  // debug version
136  ATH_MSG_VERBOSE("g [N] Starting parameters are :" << parms);
137 
138  // loop over the the boundary surfaces according to the accessor type
139  for (const Trk::ObjectAccessor::value_type& surface_id : surfAcc) {
140  ++tryBoundary;
141  // ----------------- output to screen if outputLevel() says so --------
142  ATH_MSG_VERBOSE(" [N] " << tryBoundary << ". try - BoundarySurface "
143  << surface_id << " of Volume: '"
144  << vol.volumeName() << "'.");
145  // get the boundary Surface according to the surfaceAccessor
146  currentBoundary = vol.boundarySurface(surface_id);
147  const Trk::Surface& currentSurface =
148  currentBoundary->surfaceRepresentation();
149 
150  // do either RungeKutta (always after first unsuccessful try) or straight
151  // line
152  auto trackPar =
153  (!m_useStraightLineApproximation || tryBoundary > 1)
154  ? prop.propagateParameters(
155  ctx, parms, currentSurface, searchDir, true, m_fieldProperties)
156  : prop.propagateParameters(
157  ctx, parms, currentSurface, searchDir, true, s_zeroMagneticField);
158 
159  if (trackPar) {
161  " [N] --> next BoundarySurface found with Parameters: " << *trackPar);
162  return currentBoundary;
163  }
164  }
165  return nullptr;
166 }

◆ nextTrackingVolume()

Trk::NavigationCell Trk::Navigator::nextTrackingVolume ( const EventContext &  ctx,
const IPropagator prop,
const TrackParameters parms,
Trk::PropDirection  dir,
const TrackingVolume vol 
) const
finaloverridevirtual

INavigator interface method - getting the next Volume and the parameter for the next Navigation.

Implements Trk::INavigator.

Definition at line 169 of file Navigator.cxx.

174 {
175 
176  bool first = false;
177  bool second = false;
178 
179  // ---------------------------------------------------
180  // get the object accessor from the Volume
181  Trk::ObjectAccessor surfAcc = vol.boundarySurfaceAccessor(
182  parms.position(), dir * parms.momentum().normalized());
183  // the object accessor already solved the outside question
184  bool outsideVolume = surfAcc.inverseRetrieval();
185  // initialize the boundary pointer / tracking volume pointer
186  const Trk::BoundarySurface<Trk::TrackingVolume>* currentBoundary = nullptr;
187  const Trk::TrackingVolume* nextVolume = nullptr;
188 
189  // debug version
190  ATH_MSG_VERBOSE(" [N] Starting parameters are : " << parms);
191  ATH_MSG_VERBOSE(" [N] This corresponds to [r,z] = [ "
192  << parms.position().perp() << ", " << parms.position().z()
193  << "]");
194  ATH_MSG_VERBOSE(" [N] Boundary Surface accessor : " << surfAcc);
195 
196  // set the prop direction according to inverseRetrieval result
197  Trk::PropDirection searchDir = dir;
198  if (outsideVolume) {
199  ATH_MSG_VERBOSE(" [N] Parameters have been flagged as being outside !");
200  searchDir =
202  }
203 
204  // loop over boundary surfaces
205  int tryBoundary = 0;
206 
207  for (const Trk::ObjectAccessor::value_type& surface_id : surfAcc) {
208  ++tryBoundary;
209  // get the boundary surface associated to the surfaceAccessor
210  currentBoundary = vol.boundarySurface(surface_id);
211 
212  // ----------------- output to screen if outputLevel() says so --------
213  if (!currentBoundary) {
214  ATH_MSG_WARNING(" [N] " << tryBoundary << ". try - BoundarySurface "
215  << surface_id << " of Volume: '"
216  << vol.volumeName() << "' NOT FOUND.");
217  continue;
218  }
219  ATH_MSG_VERBOSE(" [N] " << tryBoundary << ". try - BoundarySurface "
220  << surface_id << " of Volume: '"
221  << vol.volumeName() << "'.");
222 
223 
224  const Trk::Surface& currentSurface =
225  currentBoundary->surfaceRepresentation();
226  // try the propagation
227  std::unique_ptr<Trk::TrackParameters> trackPar = nullptr;
228  // do either RungeKutta (always after first unsuccessful try) or straight
229  // line
230  if (!currentSurface.isOnSurface(parms.position(), true, 0., 0.)) {
231  trackPar =
232  (!m_useStraightLineApproximation || tryBoundary > 1)
233  ? prop.propagateParameters(
234  ctx, parms, currentSurface, searchDir, true, m_fieldProperties)
235  : prop.propagateParameters(
236  ctx, parms, currentSurface, searchDir, true, s_zeroMagneticField);
237  } else {
238  trackPar.reset(parms.clone()); //to be revisited
239  }
240  if (trackPar) {
241  // the next volume pointer
242  nextVolume = currentBoundary->attachedVolume(
243  trackPar->position(), trackPar->momentum().normalized(), dir);
244  return {nextVolume, std::move(trackPar),
245  Trk::BoundarySurfaceFace(surface_id)};
246  }
247 
248  // ---------------------------------------------------
249  if (!first && searchDir == Trk::alongMomentum) {
250  first = true;
251  } else if (!second && searchDir == Trk::alongMomentum) {
252  second = true;
253  } else if (searchDir == Trk::alongMomentum) {
254  } else if (!first && searchDir == Trk::oppositeMomentum) {
255  first = true;
256  } else if (!second && searchDir == Trk::oppositeMomentum) {
257  second = true;
258  } else if (searchDir == Trk::oppositeMomentum) {
259  }
260  // ---------------------------------------------------
261  }
262  // return what you have : no idea
263  return {nullptr, nullptr};
264 }

◆ outputHandles()

virtual std::vector<Gaudi::DataHandle*> AthCommonDataStore< AthCommonMsg< AlgTool > >::outputHandles ( ) const
overridevirtualinherited

Return this algorithm's output handles.

We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.

◆ renounce()

std::enable_if_t<std::is_void_v<std::result_of_t<decltype(&T::renounce)(T)> > && !std::is_base_of_v<SG::VarHandleKeyArray, T> && std::is_base_of_v<Gaudi::DataHandle, T>, void> AthCommonDataStore< AthCommonMsg< AlgTool > >::renounce ( T &  h)
inlineprotectedinherited

Definition at line 380 of file AthCommonDataStore.h.

381  {
382  h.renounce();
383  PBASE::renounce (h);
384  }

◆ renounceArray()

void AthCommonDataStore< AthCommonMsg< AlgTool > >::renounceArray ( SG::VarHandleKeyArray handlesArray)
inlineprotectedinherited

remove all handles from I/O resolution

Definition at line 364 of file AthCommonDataStore.h.

364  {
365  handlesArray.renounce();
366  }

◆ sysInitialize()

virtual StatusCode AthCommonDataStore< AthCommonMsg< AlgTool > >::sysInitialize ( )
overridevirtualinherited

Perform system initialization for an algorithm.

We override this to declare all the elements of handle key arrays at the end of initialization. See comments on updateVHKA.

Reimplemented in DerivationFramework::CfAthAlgTool, AthCheckedComponent< AthAlgTool >, AthCheckedComponent<::AthAlgTool >, and asg::AsgMetadataTool.

◆ sysStart()

virtual StatusCode AthCommonDataStore< AthCommonMsg< AlgTool > >::sysStart ( )
overridevirtualinherited

Handle START transition.

We override this in order to make sure that conditions handle keys can cache a pointer to the conditions container.

◆ trackingGeometry()

const Trk::TrackingGeometry * Trk::Navigator::trackingGeometry ( const EventContext &  ctx) const
finaloverridevirtual

INavigator interface method - returns the TrackingGeometry used for navigation.

Implements Trk::INavigator.

Definition at line 410 of file Navigator.cxx.

411 {
412  if (m_useConditions) {
414  if (!handle.isValid()) {
415  throw std::runtime_error{
416  "Could not retrieve TrackingGeometry from Conditions Store."
417  };
418  }
419  return handle.cptr();
420  } else {
421  const TrackingGeometry* trackingGeometry = nullptr;
422  if (detStore()
424  .isFailure()) {
425  throw std::runtime_error{
426  "Could not retrieve TrackingGeometry from Detector Store."
427  };
428  }
429  return trackingGeometry;
430  }
431 }

◆ updateVHKA()

void AthCommonDataStore< AthCommonMsg< AlgTool > >::updateVHKA ( Gaudi::Details::PropertyBase &  )
inlineinherited

Definition at line 308 of file AthCommonDataStore.h.

308  {
309  // debug() << "updateVHKA for property " << p.name() << " " << p.toString()
310  // << " size: " << m_vhka.size() << endmsg;
311  for (auto &a : m_vhka) {
312  std::vector<SG::VarHandleKey*> keys = a->keys();
313  for (auto k : keys) {
314  k->setOwner(this);
315  }
316  }
317  }

◆ volume()

const Trk::TrackingVolume * Trk::Navigator::volume ( const EventContext &  ctx,
const Amg::Vector3D gp 
) const
finaloverridevirtual

INavigator interface methods - global search for the Volume one is in.

Implements Trk::INavigator.

Definition at line 88 of file Navigator.cxx.

89 {
90  return (trackingGeometry(ctx)->lowestTrackingVolume(gp));
91 }

Member Data Documentation

◆ m_detStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< AlgTool > >::m_detStore
privateinherited

Pointer to StoreGate (detector store by default)

Definition at line 393 of file AthCommonDataStore.h.

◆ m_evtStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< AlgTool > >::m_evtStore
privateinherited

Pointer to StoreGate (event store by default)

Definition at line 390 of file AthCommonDataStore.h.

◆ m_fastField

bool Trk::Navigator::m_fastField
private

Definition at line 126 of file Navigator.h.

◆ m_fieldProperties

Trk::MagneticFieldProperties Trk::Navigator::m_fieldProperties
private

Definition at line 120 of file Navigator.h.

◆ m_insideVolumeTolerance

double Trk::Navigator::m_insideVolumeTolerance
private

Tolerance for inside() method of Volumes.

Definition at line 116 of file Navigator.h.

◆ m_isOnSurfaceTolerance

double Trk::Navigator::m_isOnSurfaceTolerance
private

Tolerance for isOnSurface() method of BoundarySurfaces.

Definition at line 118 of file Navigator.h.

◆ m_searchWithDistance

bool Trk::Navigator::m_searchWithDistance
private

search with new distanceToSurface() method

Definition at line 124 of file Navigator.h.

◆ m_trackingGeometryName

std::string Trk::Navigator::m_trackingGeometryName
private

Name of the TrackingGeometry as given in Detector Store.

Definition at line 113 of file Navigator.h.

◆ m_trackingGeometryReadKey

SG::ReadCondHandleKey<TrackingGeometry> Trk::Navigator::m_trackingGeometryReadKey
private
Initial value:
{
this, "TrackingGeometryKey", "AtlasTrackingGeometry",
"Key of output of TrackingGeometry for ID"}

Definition at line 105 of file Navigator.h.

◆ m_trackingGeometrySvc

ServiceHandle<Trk::ITrackingGeometrySvc> Trk::Navigator::m_trackingGeometrySvc
private
Initial value:
{
this, "TrackingGeometrySvc", ""}

ToolHandle to the TrackingGeometrySvc.

Definition at line 110 of file Navigator.h.

◆ m_useConditions

bool Trk::Navigator::m_useConditions {}
private

Definition at line 119 of file Navigator.h.

◆ m_useStraightLineApproximation

bool Trk::Navigator::m_useStraightLineApproximation
private

use the straight line approximation for the next boundary sf

Definition at line 122 of file Navigator.h.

◆ m_varHandleArraysDeclared

bool AthCommonDataStore< AthCommonMsg< AlgTool > >::m_varHandleArraysDeclared
privateinherited

Definition at line 399 of file AthCommonDataStore.h.

◆ m_vhka

std::vector<SG::VarHandleKeyArray*> AthCommonDataStore< AthCommonMsg< AlgTool > >::m_vhka
privateinherited

Definition at line 398 of file AthCommonDataStore.h.


The documentation for this class was generated from the following files:
python.PyKernel.retrieve
def retrieve(aClass, aKey=None)
Definition: PyKernel.py:110
Trk::DistanceSolution::currentDistance
double currentDistance(bool signedDist=false) const
Current distance to surface (spatial), signed (along/opposite to surface normal) if input argument tr...
python.SystemOfUnits.second
int second
Definition: SystemOfUnits.py:120
DataModel_detail::const_iterator
Const iterator class for DataVector/DataList.
Definition: DVLIterator.h:82
Trk::BoundarySurface
Definition: BoundarySurface.h:50
Trk::Navigator::m_trackingGeometryName
std::string m_trackingGeometryName
Name of the TrackingGeometry as given in Detector Store.
Definition: Navigator.h:113
python.PerfMonSerializer.p
def p
Definition: PerfMonSerializer.py:743
SG::ReadCondHandle
Definition: ReadCondHandle.h:44
Trk::MagneticFieldProperties
Definition: MagneticFieldProperties.h:31
Trk::DistanceSolution
Definition: DistanceSolution.h:25
Trk::ObjectAccessor::inverseRetrieval
bool inverseRetrieval() const
Definition: ObjectAccessor.h:38
Trk::ParametersBase::position
const Amg::Vector3D & position() const
Access method for the position.
Trk::oppositeMomentum
@ oppositeMomentum
Definition: PropDirection.h:21
Trk::TrackingVolume::geometrySignature
GeometrySignature geometrySignature() const
return the Signature
Trk::DistanceSolution::numberOfSolutions
int numberOfSolutions() const
Number of intersection solutions.
AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
Definition: AthCommonDataStore.h:145
Trk::Surface::straightLineDistanceEstimate
virtual DistanceSolution straightLineDistanceEstimate(const Amg::Vector3D &pos, const Amg::Vector3D &dir) const =0
fast straight line distance evaluation to Surface
Trk::TrackingVolume::boundarySurfaces
std::vector< SharedObject< BoundarySurface< TrackingVolume > > > & boundarySurfaces()
Method to return the BoundarySurfaces.
Definition: TrackingVolume.cxx:982
skel.it
it
Definition: skel.GENtoEVGEN.py:423
AthCommonDataStore< AthCommonMsg< AlgTool > >::m_evtStore
StoreGateSvc_t m_evtStore
Pointer to StoreGate (event store by default)
Definition: AthCommonDataStore.h:390
PlotCalibFromCool.ib
ib
Definition: PlotCalibFromCool.py:419
AthCommonDataStore< AthCommonMsg< AlgTool > >::m_vhka
std::vector< SG::VarHandleKeyArray * > m_vhka
Definition: AthCommonDataStore.h:398
Trk::BoundarySurface::attachedVolume
virtual const Tvol * attachedVolume(const TrackParameters &parms, PropDirection dir) const =0
Get the next Volume depending on the TrackParameters and the requested direction.
Trk::alongMomentum
@ alongMomentum
Definition: PropDirection.h:20
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
Trk::DistanceSolution::first
double first() const
Distance to first intersection solution along direction.
ATH_MSG_VERBOSE
#define ATH_MSG_VERBOSE(x)
Definition: AthMsgStreamMacros.h:28
Trk::BoundarySurfaceFace
BoundarySurfaceFace
Definition: BoundarySurfaceFace.h:31
Trk::ObjectAccessor::value_type
int value_type
Definition: ObjectAccessor.h:17
Trk::BeamPipe
@ BeamPipe
Definition: GeometrySignature.h:27
mergePhysValFiles.end
end
Definition: DataQuality/DataQualityUtils/scripts/mergePhysValFiles.py:93
AthCommonDataStore< AthCommonMsg< AlgTool > >::detStore
const ServiceHandle< StoreGateSvc > & detStore() const
The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.
Definition: AthCommonDataStore.h:95
SG::VarHandleKeyArray::setOwner
virtual void setOwner(IDataHandleHolder *o)=0
Trk::Navigator::m_insideVolumeTolerance
double m_insideVolumeTolerance
Tolerance for inside() method of Volumes.
Definition: Navigator.h:116
Trk::FastField
@ FastField
call the fast field access method of the FieldSvc
Definition: MagneticFieldMode.h:20
Trk::PropDirection
PropDirection
Definition: PropDirection.h:19
Trk::Surface::isOnSurface
virtual bool isOnSurface(const Amg::Vector3D &glopo, const BoundaryCheck &bchk=true, double tol1=0., double tol2=0.) const
This method returns true if the GlobalPosition is on the Surface for both, within or without check of...
Definition: Surface.cxx:123
Trk::BoundarySurface::surfaceRepresentation
virtual const Surface & surfaceRepresentation() const =0
The Surface Representation of this.
AthCommonDataStore
Definition: AthCommonDataStore.h:52
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
Trk::Navigator::nextBoundarySurface
virtual const BoundarySurface< TrackingVolume > * nextBoundarySurface(const EventContext &ctx, const IPropagator &prop, const TrackParameters &parms, PropDirection dir) const override final
INavigator interface methods - getting the next BoundarySurface not knowing the Volume.
Definition: Navigator.cxx:100
beamspotman.n
n
Definition: beamspotman.py:731
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
Trk::DistanceSolution::second
double second() const
Distance to second intersection solution along direction (for a cylinder surface)
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
AthCommonDataStore< AthCommonMsg< AlgTool > >::m_detStore
StoreGateSvc_t m_detStore
Pointer to StoreGate (detector store by default)
Definition: AthCommonDataStore.h:393
Trk::ParametersBase
Definition: ParametersBase.h:55
Trk::FullField
@ FullField
Field is set to be realistic, but within a given Volume.
Definition: MagneticFieldMode.h:21
AthAlgTool::AthAlgTool
AthAlgTool()
Default constructor:
Trk::Navigator::m_isOnSurfaceTolerance
double m_isOnSurfaceTolerance
Tolerance for isOnSurface() method of BoundarySurfaces.
Definition: Navigator.h:118
beamspotman.dir
string dir
Definition: beamspotman.py:623
SG::VarHandleKeyArray::renounce
virtual void renounce()=0
SG::HandleClassifier::type
std::conditional< std::is_base_of< SG::VarHandleKeyArray, T >::value, VarHandleKeyArrayType, type2 >::type type
Definition: HandleClassifier.h:54
Trk
Ensure that the ATLAS eigen extensions are properly loaded.
Definition: FakeTrackBuilder.h:9
Trk::TrackingVolume::volumeName
const std::string & volumeName() const
Returns the VolumeName - for debug reason, might be depreciated later.
Trk::SurfaceType::Perigee
@ Perigee
merge_scale_histograms.doc
string doc
Definition: merge_scale_histograms.py:9
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:192
Trk::Navigator::m_useConditions
bool m_useConditions
Definition: Navigator.h:119
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition: GeoPrimitives.h:47
Trk::Navigator::m_useStraightLineApproximation
bool m_useStraightLineApproximation
use the straight line approximation for the next boundary sf
Definition: Navigator.h:122
Trk::Navigator::m_trackingGeometryReadKey
SG::ReadCondHandleKey< TrackingGeometry > m_trackingGeometryReadKey
Definition: Navigator.h:105
Trk::ObjectAccessor
Definition: ObjectAccessor.h:15
python.SystemOfUnits.mm
int mm
Definition: SystemOfUnits.py:83
Trk::ParametersBase::momentum
const Amg::Vector3D & momentum() const
Access method for the momentum.
a
TList * a
Definition: liststreamerinfos.cxx:10
h
mapkey::sf
@ sf
Definition: TElectronEfficiencyCorrectionTool.cxx:38
Trk::Navigator::m_searchWithDistance
bool m_searchWithDistance
search with new distanceToSurface() method
Definition: Navigator.h:124
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
DeMoScan.first
bool first
Definition: DeMoScan.py:534
Trk::SurfaceType::Cylinder
@ Cylinder
SG::VarHandleBase::vhKey
SG::VarHandleKey & vhKey()
Return a non-const reference to the HandleKey.
Definition: StoreGate/src/VarHandleBase.cxx:616
declareProperty
#define declareProperty(n, p, h)
Definition: BaseFakeBkgTool.cxx:15
Trk::Navigator::m_fastField
bool m_fastField
Definition: Navigator.h:126
python.Bindings.keys
keys
Definition: Control/AthenaPython/python/Bindings.py:790
Trk::ComparisonFunction< TrackParameters >
Trk::SurfaceType::Line
@ Line
Trk::Surface
Definition: Tracking/TrkDetDescr/TrkSurfaces/TrkSurfaces/Surface.h:75
Trk::Navigator::m_trackingGeometrySvc
ServiceHandle< Trk::ITrackingGeometrySvc > m_trackingGeometrySvc
ToolHandle to the TrackingGeometrySvc.
Definition: Navigator.h:110
Trk::TrackingVolume
Definition: TrackingVolume.h:121
AthCommonDataStore::declareGaudiProperty
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>
Definition: AthCommonDataStore.h:156
Trk::Navigator::trackingGeometry
virtual const TrackingGeometry * trackingGeometry(const EventContext &ctx) const override final
INavigator interface method - returns the TrackingGeometry used for navigation.
Definition: Navigator.cxx:410
Trk::Navigator::volume
virtual const TrackingVolume * volume(const EventContext &ctx, const Amg::Vector3D &gp) const override final
INavigator interface methods - global search for the Volume one is in.
Definition: Navigator.cxx:88
fitman.k
k
Definition: fitman.py:528
Trk::Navigator::m_fieldProperties
Trk::MagneticFieldProperties m_fieldProperties
Definition: Navigator.h:120