9 inline void setMaxAtomic(
unsigned int new_value, std::atomic<unsigned int> &destination) {
11 unsigned int is_value = destination;
12 unsigned int max_value = std::max(is_value,new_value);
13 if (max_value == is_value)
break;
14 else if (destination.compare_exchange_weak(is_value,max_value)) {
break; }
28 Cache::Cache(
const std::vector<const IMaterialEffectsUpdator*> & updaters)
64 const size_t numUpdaters = updaters.size();
66 for (
const auto & thisUpdater : updaters) {
111 if (lineNumber !=0)
result =
"Line " + std::to_string(lineNumber)+
": ";
112 result +=
" PROBLEM Eloss cache pointer overwritten " + std::to_string(
reinterpret_cast<std::uintptr_t
>(
m_cacheEloss))
113 +
" from extrapolationCache " + std::to_string(
reinterpret_cast<std::uintptr_t
>(
m_extrapolationCache->eloss()));
121 for (
size_t ib=0; ib< bounds.size(); ++ib){
122 const Trk::Surface& surf = bounds[ib]->surfaceRepresentation();
Cache class to allow passing information to/between calls.
Base Class for a Detector Layer in the Tracking realm.
virtual const Surface & surfaceRepresentation() const =0
Transforms the layer into a Surface representation for extrapolation.
Abstract Base Class for tracking surfaces.
Full Volume description used in Tracking, it inherits from Volume to get the geometrical structure,...
GeometrySignature geometrySignature() const
return the Signature
Ensure that the ATLAS eigen extensions are properly loaded.
Cache(Dbg::PropStat &stat)
IMaterialEffectsUpdator::ICache & subMaterialEffectsUpdatorCache()
std::string elossPointerErrorMsg(int lineNumber=0) const
String error message if the cache has a problem.
const Trk::EnergyLoss * m_cacheEloss
cache of TrackStateOnSurfaces
void retrieveBoundaries()
Retrieve boundaries.
void setRecallInformation(const Surface &, const Layer &, const TrackingVolume &)
Private method for setting recall Information.
bool elossPointerOverwritten() const
Check cache integrity.
std::vector< std::pair< const Trk::Surface *, Trk::BoundaryCheck > > m_navigSurfs
std::array< unsigned short, kNRecursionValues > m_recursionCount
const TrackingVolume * m_recallTrackingVolume
const Layer * m_recallLayer
Destination TrackingVolume for recall.
std::vector< const Trk::DetachedTrackingVolume * > m_navigVols
std::vector< Trk::IMaterialEffectsUpdator::ICache > m_MaterialUpCache
internal switch for resolved configuration
void addOneNavigationLayer(const Trk::TrackingVolume *pDetVol, const Trk::Layer *pLayer, bool boundaryCheck=true)
Add one layer and navigLayer.
Dbg::PropStat * m_statPtr
std::vector< DestSurf > m_detachedBoundaries
void populateMatEffUpdatorCache(const std::vector< const IMaterialEffectsUpdator * > &updaters)
std::vector< std::pair< const Trk::TrackingVolume *, const Trk::Layer * > > m_navigLays
unsigned int m_nPropagations
const Surface * m_recallSurface
Destination Layer for recall.
std::vector< DestSurf > m_staticBoundaries
Trk::ExtrUniquePtrHolder< Trk::TrackParameters > m_ownedPtrs
parameters to be used for final propagation in case of fallback
std::vector< std::pair< const Trk::TrackingVolume *, unsigned int > > m_navigVolsInt
void resetRecallInformation()
std::string to_string(const std::string &txt) const
String representation of cache.
std::vector< DestSurf > m_navigBoundaries
void copyToNavigationSurfaces()
Insert navigation surfaces from layers, dense boundaries, navig boundaries and detached boundaries.
Trk::ExtrapolationCache * m_extrapolationCache
cache pointer for Eloss
const Trk::TrackingVolume * m_currentStatic
std::vector< DestSurf > m_layers
unsigned int m_methodSequence
std::vector< DestSurf > m_denseBoundaries