diff --git a/Tracking/TrkExtrapolation/TrkExInterfaces/TrkExInterfaces/IExtrapolator.h b/Tracking/TrkExtrapolation/TrkExInterfaces/TrkExInterfaces/IExtrapolator.h index c139ed811991d75f9090b25dcf077056a12fbb44..477d4e3d3c81030317318bc436b747ce8771418c 100755 --- a/Tracking/TrkExtrapolation/TrkExInterfaces/TrkExInterfaces/IExtrapolator.h +++ b/Tracking/TrkExtrapolation/TrkExInterfaces/TrkExInterfaces/IExtrapolator.h @@ -177,20 +177,7 @@ namespace Trk { ParticleHypothesis particle = pion, MaterialUpdateMode matupmode = addNoise) const = 0; - /** 8) <b>Configured AlgTool extrapolation method</b>): - - Extrapolation using specific intermediate surfaces and energy loss effects to be accounted for at - each surface as specified by the corresponding MaterialEffectsOnTrack. The last propagation ends - at the last surface given, applying the corresponding MaterialEffectsOnTrack to the track parameters - before returning. - */ - virtual std::pair<const TrackParameters*, const Layer*> extrapolateToNextStation( - const TrackParameters& parm, - PropDirection dir = anyDirection, - const BoundaryCheck& bcheck = true, - ParticleHypothesis particle = pion, - MaterialUpdateMode matupmode = addNoise) const = 0; - - /** 9) <b>Configured AlgTool extrapolation method</b> ): + /** 8) <b>Configured AlgTool extrapolation method</b> ): - extrapolation to the next active layer, based on the extrapolation to the next layer and layer identification * */ @@ -199,7 +186,7 @@ namespace Trk { PropDirection dir = anyDirection, ParticleHypothesis particle = pion) const = 0; - /** 10) <b>Configured AlgTool extrapolation method</b>: + /** 9) <b>Configured AlgTool extrapolation method</b>: - Extrapolate to a destination surface, while collecting all the material layers in between. */ virtual std::vector<const TrackStateOnSurface*>* extrapolateM(const TrackParameters& parameters, @@ -209,7 +196,7 @@ namespace Trk { ParticleHypothesis particle = pion, Trk::ExtrapolationCache* cache = 0) const = 0; - /** 11) <b>Configured AlgTool extrapolation method</b>: + /** 10) <b>Configured AlgTool extrapolation method</b>: - Extrapolate to a destination surface, while collecting all the material layers and transport jacobians in between. */ diff --git a/Tracking/TrkExtrapolation/TrkExTools/TrkExTools/Extrapolator.h b/Tracking/TrkExtrapolation/TrkExTools/TrkExTools/Extrapolator.h index 888d614d1fe6b5f901de6af9e79bb8ee21af012f..3de66df7d4661965297106c3bcfa1f01fd4c3e93 100755 --- a/Tracking/TrkExtrapolation/TrkExTools/TrkExTools/Extrapolator.h +++ b/Tracking/TrkExtrapolation/TrkExTools/TrkExTools/Extrapolator.h @@ -174,57 +174,64 @@ VERBOSE : Method call sequence with values - returns a ParametersBase object as well, 0 if the extrapolation did not succeed */ - virtual const NeutralParameters* extrapolate(const NeutralParameters& parameters, - const Surface& sf, - PropDirection dir = anyDirection, - const BoundaryCheck& bcheck = true) const override final; + virtual const NeutralParameters* extrapolate( + const NeutralParameters& parameters, + const Surface& sf, + PropDirection dir = anyDirection, + const BoundaryCheck& bcheck = true) const override final; /** 1) <b>Configured AlgTool extrapolation method</b>):*/ - virtual const TrackParameters* extrapolate(const TrackParameters& parm, - const Surface& sf, - PropDirection dir=anyDirection, - const BoundaryCheck& bcheck = true, - ParticleHypothesis particle=pion, - MaterialUpdateMode matupmode=addNoise, - Trk::ExtrapolationCache* cache = nullptr) const override final; + virtual const TrackParameters* extrapolate( + const TrackParameters& parm, + const Surface& sf, + PropDirection dir = anyDirection, + const BoundaryCheck& bcheck = true, + ParticleHypothesis particle = pion, + MaterialUpdateMode matupmode = addNoise, + Trk::ExtrapolationCache* cache = nullptr) const override final; /** 2) <b>Configured AlgTool extrapolation method</b>):*/ - virtual TrackParametersUVector extrapolateStepwise(const TrackParameters& parm, - const Surface& sf, - PropDirection dir = anyDirection, - const BoundaryCheck& bcheck = true, - ParticleHypothesis particle = pion) const override final; + virtual TrackParametersUVector extrapolateStepwise( + const TrackParameters& parm, + const Surface& sf, + PropDirection dir = anyDirection, + const BoundaryCheck& bcheck = true, + ParticleHypothesis particle = pion) const override final; /** 3) <b>Configured AlgTool extrapolation method</b>):*/ - virtual const TrackParameters* extrapolate(const Track& trk, - const Surface& sf, - PropDirection dir = anyDirection, - const BoundaryCheck& bcheck = true, - ParticleHypothesis particle = pion, - MaterialUpdateMode matupmode = addNoise, - Trk::ExtrapolationCache* cache = nullptr) const override final; + virtual const TrackParameters* extrapolate( + const Track& trk, + const Surface& sf, + PropDirection dir = anyDirection, + const BoundaryCheck& bcheck = true, + ParticleHypothesis particle = pion, + MaterialUpdateMode matupmode = addNoise, + Trk::ExtrapolationCache* cache = nullptr) const override final; /** 4) <b>Configured AlgTool extrapolation method</b>):*/ - virtual TrackParameters* extrapolateDirectly(const TrackParameters& parm, - const Surface& sf, - PropDirection dir = anyDirection, - const BoundaryCheck& bcheck = true, - ParticleHypothesis particle = pion) const override final; - /** 4.1) <b>Configured AlgTool extrapolation method</b>):*/ - virtual TrackParameters* extrapolateDirectly(const IPropagator& prop, - const TrackParameters& parm, - const Surface& sf, - PropDirection dir = anyDirection, - const BoundaryCheck& bcheck = true, - ParticleHypothesis particle = pion) const override final; + virtual TrackParameters* extrapolateDirectly( + const TrackParameters& parm, + const Surface& sf, + PropDirection dir = anyDirection, + const BoundaryCheck& bcheck = true, + ParticleHypothesis particle = pion) const override final; + /** 4.1) <b>Configured AlgTool extrapolation method</b>):*/ + virtual TrackParameters* extrapolateDirectly( + const IPropagator& prop, + const TrackParameters& parm, + const Surface& sf, + PropDirection dir = anyDirection, + const BoundaryCheck& bcheck = true, + ParticleHypothesis particle = pion) const override final; /** 5) <b>Configured AlgTool extrapolation method</b>):*/ - virtual TrackParametersUVector extrapolateBlindly(const TrackParameters& parm, - PropDirection dir = anyDirection, - const BoundaryCheck& bcheck = true, - ParticleHypothesis particle = pion, - const Volume* boundaryVol = nullptr) const override final; + virtual TrackParametersUVector extrapolateBlindly( + const TrackParameters& parm, + PropDirection dir = anyDirection, + const BoundaryCheck& bcheck = true, + ParticleHypothesis particle = pion, + const Volume* boundaryVol = nullptr) const override final; /** 6) <b>Configured AlgTool extrapolation method</b> ):*/ virtual std::pair<const TrackParameters*, const Layer*> extrapolateToNextActiveLayer( @@ -243,57 +250,53 @@ VERBOSE : Method call sequence with values ParticleHypothesis particle = pion, MaterialUpdateMode matupmode = addNoise) const override final; - /** 8) <b>Configured AlgTool extrapolation method</b> ):*/ - virtual std::pair<const TrackParameters*, const Layer*> extrapolateToNextStation( + /** 8) <b>Configured AlgTool extrapolation method</b> ):*/ + virtual const TrackParameters* extrapolateToVolume( const TrackParameters& parm, + const Trk::TrackingVolume& vol, PropDirection dir = anyDirection, - const BoundaryCheck& bcheck = true, - ParticleHypothesis particle = pion, - MaterialUpdateMode matupmode = addNoise) const override final; + ParticleHypothesis particle = pion) const override final; - /** 9) <b>Configured AlgTool extrapolation method</b> ):*/ - virtual const TrackParameters* extrapolateToVolume(const TrackParameters& parm, - const Trk::TrackingVolume& vol, - PropDirection dir = anyDirection, - ParticleHypothesis particle = pion) const override final; - - /** 10) <b>Configured AlgTool extrapolation method</b>: + /** 9) <b>Configured AlgTool extrapolation method</b>: - Extrapolate to a destination surface, while collecting all the material layers in between. */ - virtual std::vector<const TrackStateOnSurface*>* extrapolateM(const TrackParameters& parameters, - const Surface& sf, - PropDirection dir, - const BoundaryCheck& bcheck, - ParticleHypothesis particle=pion, - Trk::ExtrapolationCache* cache = nullptr) const override final; - - /** 11) <b>Configured AlgTool extrapolation method</b>: + virtual std::vector<const TrackStateOnSurface*>* extrapolateM( + const TrackParameters& parameters, + const Surface& sf, + PropDirection dir, + const BoundaryCheck& bcheck, + ParticleHypothesis particle = pion, + Trk::ExtrapolationCache* cache = nullptr) const override final; + + /** 10) <b>Configured AlgTool extrapolation method</b>: - Extrapolate to a destination surface, while collecting all the material layers and transport jacobians in between. */ - virtual std::vector<const TrackParameters*>* extrapolateM(const TrackParameters& parameters, - const Surface& sf, - PropDirection dir, - const BoundaryCheck& bcheck, - std::vector<MaterialEffectsOnTrack>& material, - std::vector<Trk::TransportJacobian *>& jacs, - ParticleHypothesis particle=pion, - Trk::ExtrapolationCache* cache = nullptr) const override final; - - virtual const Trk::TrackParameters* extrapolateWithPathLimit( - const Trk::TrackParameters& parm, - double& pathLim, - Trk::PropDirection dir, - Trk::ParticleHypothesis particle, - std::vector<const Trk::TrackParameters*>*& parmOnSf, - std::vector<const Trk::TrackStateOnSurface*>*& material, - const Trk::TrackingVolume* boundaryVol=nullptr, - MaterialUpdateMode matupmod=Trk::addNoise) const override final; - - /** extrapolation method collecting intersections with subdetector boundaries and active volumes/layers. - A primitive identification is provided - to be replaced with appropriate identifier, and possibly merged - with TrackParameters. Material collection in option. Destination (subdetector boundary) : geoID (+ entry, -exit) - ( default MS exit ) + virtual std::vector<const TrackParameters*>* extrapolateM( + const TrackParameters& parameters, + const Surface& sf, + PropDirection dir, + const BoundaryCheck& bcheck, + std::vector<MaterialEffectsOnTrack>& material, + std::vector<Trk::TransportJacobian*>& jacs, + ParticleHypothesis particle = pion, + Trk::ExtrapolationCache* cache = nullptr) const override final; + + virtual const Trk::TrackParameters* extrapolateWithPathLimit( + const Trk::TrackParameters& parm, + double& pathLim, + Trk::PropDirection dir, + Trk::ParticleHypothesis particle, + std::vector<const Trk::TrackParameters*>*& parmOnSf, + std::vector<const Trk::TrackStateOnSurface*>*& material, + const Trk::TrackingVolume* boundaryVol = nullptr, + MaterialUpdateMode matupmod = Trk::addNoise) const override final; + + /** extrapolation method collecting intersections with subdetector + boundaries and active volumes/layers. A primitive identification is + provided - to be replaced with appropriate identifier, and possibly merged + with TrackParameters. Material collection in option. Destination + (subdetector boundary) : geoID (+ entry, -exit) ( default MS exit ) */ virtual const std::vector<std::pair<const Trk::TrackParameters*, int>>* extrapolate( const Trk::TrackParameters& parm, @@ -448,7 +451,7 @@ VERBOSE : Method call sequence with values /** Actual heavy lifting implementation for - * C 1) <b>Configured AlgTool extrapolation method</b>): + * 1) <b>Configured AlgTool extrapolation method</b>): * */ virtual ManagedTrackParmPtr extrapolateImpl(Cache& cache, TrackParmPtr parm, @@ -460,7 +463,7 @@ VERBOSE : Method call sequence with values Trk::ExtrapolationCache* extrapolationCache = nullptr) const; /** Actual heavy lifting implementation for - * C 4) <b>Configured AlgTool extrapolation method</b>):*/ + * 4) <b>Configured AlgTool extrapolation method</b>):*/ TrackParameters* extrapolateDirectlyImpl(const IPropagator& prop, const TrackParameters& parm, const Surface& sf, @@ -469,7 +472,7 @@ VERBOSE : Method call sequence with values ParticleHypothesis particle = pion) const; /** Actual heavy lifting implementation for - * C 5) <b>Configured AlgTool extrapolation method</b>):*/ + * 5) <b>Configured AlgTool extrapolation method</b>):*/ Trk::TrackParametersUVector extrapolateBlindlyImpl(Cache& cache, const IPropagator &prop, TrackParmPtr parm, @@ -480,7 +483,7 @@ VERBOSE : Method call sequence with values /** Actual heavy lifting implementation for - * C 6) <b>Configured AlgTool extrapolation method</b>):*/ + * 6) <b>Configured AlgTool extrapolation method</b>):*/ std::pair<const TrackParameters*, const Layer*> extrapolateToNextActiveLayerImpl( const IPropagator& prop, const TrackParameters& parm, @@ -490,7 +493,7 @@ VERBOSE : Method call sequence with values MaterialUpdateMode matupmode = addNoise) const; /** Actual heavy lifting implementation for - * C 7) <b>Configured AlgTool extrapolation method</b> + * 7) <b>Configured AlgTool extrapolation method</b> */ std::pair<const TrackParameters*, const Layer*> extrapolateToNextActiveLayerMImpl( const IPropagator& prop, @@ -501,19 +504,8 @@ VERBOSE : Method call sequence with values ParticleHypothesis particle = pion, MaterialUpdateMode matupmode = addNoise) const; - /** Actual heavy lifting implementation for - * C 9) <b>Configured AlgTool extrapolation method</b> - */ - std::pair<const TrackParameters*, const Layer*> extrapolateToNextStationImpl( - const IPropagator& prop, - const TrackParameters& parm, - PropDirection dir, - const BoundaryCheck& bcheck, - ParticleHypothesis particle = pion, - MaterialUpdateMode matupmode = addNoise) const; - - /** Actual heavy lifting implementation for - * C 10) <b>Configured AlgTool extrapolation method</b> + /** Actual heavy lifting implementation for + * 8) <b>Configured AlgTool extrapolation method</b> */ const TrackParameters* extrapolateToVolumeImpl(const IPropagator& prop, const TrackParameters& parm, @@ -870,15 +862,21 @@ inline const TrackingGeometry* Extrapolator::trackingGeometry() const inline const IPropagator* Extrapolator::subPropagator(const Trk::TrackingVolume& tvol) const { - const IPropagator* currentPropagator = (tvol.geometrySignature() < m_subPropagators.size()) ? - m_subPropagators[tvol.geometrySignature()] : nullptr; - - if (tvol.geometrySignature()==Trk::Calo && m_useDenseVolumeDescription) currentPropagator= (Trk::MS < m_subPropagators.size()) ? - m_subPropagators[Trk::MS] : nullptr; - - if (!currentPropagator) - msg(MSG::ERROR) << "[!] Configuration problem: no Propagator found for volumeSignature: " << tvol.geometrySignature() << endmsg; - return currentPropagator; + const IPropagator* currentPropagator = + (tvol.geometrySignature() < m_subPropagators.size()) + ? m_subPropagators[tvol.geometrySignature()] + : nullptr; + + if (tvol.geometrySignature() == Trk::Calo && m_useDenseVolumeDescription) { + currentPropagator = + (Trk::MS < m_subPropagators.size()) ? m_subPropagators[Trk::MS] : nullptr; + } + if (!currentPropagator) { + ATH_MSG_ERROR( + "[!] Configuration problem: no Propagator found for volumeSignature: " + << tvol.geometrySignature()); + } + return currentPropagator; } inline const IMaterialEffectsUpdator* Extrapolator::subMaterialEffectsUpdator(const Trk::TrackingVolume& tvol) const diff --git a/Tracking/TrkExtrapolation/TrkExTools/src/Extrapolator.cxx b/Tracking/TrkExtrapolation/TrkExTools/src/Extrapolator.cxx index 1f43040b6d3298a0a0163ea00b74c72bacf6b3f9..2fcce11ddb67c4632dad1442e0c19775750905f4 100755 --- a/Tracking/TrkExtrapolation/TrkExTools/src/Extrapolator.cxx +++ b/Tracking/TrkExtrapolation/TrkExTools/src/Extrapolator.cxx @@ -1810,175 +1810,6 @@ Trk::Extrapolator::extrapolateInAlignableTV(Cache& cache, return ManagedTrackParmPtr(); } -std::pair<const Trk::TrackParameters*, const Trk::Layer*> -Trk::Extrapolator::extrapolateToNextStationImpl(const IPropagator& prop, - const Trk::TrackParameters& parm, - PropDirection dir, - const BoundaryCheck& bcheck, - ParticleHypothesis particle, - MaterialUpdateMode matupmode) const -{ - // material update on detached volume layer representation only - - // double tol = 0.001; - - Cache cache{}; - ++cache.m_methodSequence; - ATH_MSG_DEBUG("M-[" << cache.m_methodSequence << "] extrapolateToNextStation(...) "); - - // resolve position: static or detached ? - const Trk::TrackingVolume *currVol = m_navigator->trackingGeometry()->lowestStaticTrackingVolume(parm.position()); - const Trk::TrackingVolume *nextVol = nullptr; - if (m_navigator->atVolumeBoundary(&parm, currVol, dir, nextVol, m_tolerance) && nextVol != currVol) { - currVol = nextVol; - } - if (!cache.m_highestVolume) { - cache.m_highestVolume = m_navigator->highestVolume(); - } - - ManagedTrackParmPtr currPar(cache.manage(parm)); - double path = 0.; - while (currPar && currVol && !currVol->confinedDetachedVolumes()) { - const Trk::NavigationCell cross = m_navigator->nextDenseTrackingVolume(prop, *currPar, nullptr, dir, particle, *currVol, - path); - currPar = ManagedTrackParmPtr::recapture(currPar,cross.parametersOnBoundary); - currVol = cross.nextVolume; - } - - // no luck - if (!currPar || !currVol || !currVol->confinedDetachedVolumes()) { - return std::pair<const Trk::TrackParameters *, const Trk::Layer *>(nullptr, nullptr); - } - - // prepare vector of surfaces - if (cache.m_navigSurfs.capacity() > m_maxNavigSurf) { - cache.m_navigSurfs.reserve(m_maxNavigSurf); - } - if (cache.m_navigVols.capacity() > m_maxNavigVol) { - cache.m_navigVols.reserve(m_maxNavigVol); - } - cache.m_navigSurfs.clear(); - cache.m_navigVols.clear(); - - // retrieve static volume boundary - const std::vector< SharedObject<const BoundarySurface<TrackingVolume> > > &bounds = currVol->boundarySurfaces(); - for (unsigned int ib = 0; ib < bounds.size(); ib++) { - const Trk::Surface *nextSurface = &((bounds[ib].get())->surfaceRepresentation()); - cache.m_navigSurfs.emplace_back(nextSurface, true); - } - - // retrieve DV layer representations - const std::vector<const Trk::DetachedTrackingVolume *> *detVols = currVol->confinedDetachedVolumes(); - if (detVols) { - std::vector<const Trk::DetachedTrackingVolume *>::const_iterator dIter = detVols->begin(); - for (; dIter != detVols->end(); dIter++) { - const Trk::Layer *lay = (*dIter)->layerRepresentation(); - if (lay) { - const Trk::BoundaryCheck checkBounds = lay->layerType() > 0 ? bcheck : Trk::BoundaryCheck(true); - std::pair<const Trk::Surface *, const Trk::BoundaryCheck> newSurf(&(lay->surfaceRepresentation()), checkBounds); - cache.m_navigSurfs.push_back(newSurf); - cache.m_navigVols.push_back(*dIter); - } - } - } - // ready to propagate - // till: A/ static volume boundary (loop back) , B/ successful hit of an active layer representation - - // resolve the use of dense volumes - cache.m_dense = (currVol->geometrySignature() == Trk::MS && m_useMuonMatApprox) || - (currVol->geometrySignature() != Trk::MS && m_useDenseVolumeDescription); - - nextVol = nullptr; - double totalPath = 0.; - while (currPar) { - std::vector<unsigned int> solutions; - const Trk::TrackingVolume *propagVol = cache.m_dense ? currVol : cache.m_highestVolume; - // const Trk::TrackParameters* nextPar = - // prop.propagate(*currPar,cache.m_navigSurfs,dir,*propagVol,particle,solutions,path); - ManagedTrackParmPtr nextPar(ManagedTrackParmPtr::recapture( - currPar, - prop.propagate(*currPar, cache.m_navigSurfs, dir, m_fieldProperties, particle, - solutions, path, false, false, propagVol))); - totalPath += path; - if (nextPar) { - Amg::Vector3D gp = nextPar->position(); - // static volume boundary ? - if (m_navigator->atVolumeBoundary(nextPar.get(), currVol, dir, nextVol, m_tolerance)) { - if (nextVol != currVol) { - cache.m_parametersAtBoundary.boundaryInformation(nextVol, nextPar, nextPar); - if (!nextVol) { - return std::pair<const Trk::TrackParameters *, const Trk::Layer *>(nextPar.release(), nullptr); - } - if (nextVol && nextPar) { - if (nextVol->geometrySignature() != Trk::MS) { - return std::pair<const Trk::TrackParameters *, const Trk::Layer *>(nextPar.release(), nullptr); - } - ATH_MSG_DEBUG(" [+] Crossing to next volumat - at " << positionOutput(nextPar->position())); - return extrapolateToNextStationImpl(prop, *nextPar, dir, bcheck, particle, matupmode); - } - } - } - // next layer representation ? active(->return) or passive(->loop back) ? - std::vector<std::pair<const Trk::Surface *,Trk::BoundaryCheck > >::iterator vsIter = cache.m_navigSurfs.begin(); - for (; vsIter != cache.m_navigSurfs.end(); vsIter++) { - if ((*vsIter).first->isOnSurface(gp, bcheck, m_tolerance, m_tolerance)) { - break; - } - } - if (vsIter != cache.m_navigSurfs.end()) { - bool identified = false; - std::vector<const Trk::DetachedTrackingVolume *>::const_iterator dIter = cache.m_navigVols.begin(); - for (; dIter != cache.m_navigVols.end(); dIter++) { - if ((*dIter)->layerRepresentation()->surfaceRepresentation().isOnSurface(nextPar->position(), bcheck, - m_tolerance, m_tolerance)) { - break; - } - } - if (dIter != cache.m_navigVols.end()) { - identified = true; - } - if (!identified) { - dIter = cache.m_navigVols.begin(); - for (; dIter != cache.m_navigVols.end(); dIter++) { - if ((*dIter)->trackingVolume()->inside((*vsIter).first->center(), m_tolerance)) { - break; - } - } - if (dIter != cache.m_navigVols.end()) { - identified = true; - } - } - if (identified) { - const Trk::Layer *lay = (*dIter)->layerRepresentation(); - if (lay && lay != cache.m_lastMaterialLayer) { - // material update (from detached trackingvolume) - const IMaterialEffectsUpdator *currentUpdator = m_subupdaters[(*dIter)->geometrySignature()]; - if (currentUpdator) { - nextPar = ManagedTrackParmPtr::recapture( - nextPar, - currentUpdator->update(nextPar.get(), *lay, dir, particle, matupmode)); - } - if (m_cacheLastMatLayer) { - cache.m_lastMaterialLayer = lay; - } - if (nextPar) { - if (lay->layerType() > 0) { - return std::pair<const Trk::TrackParameters *, const Trk::Layer *>(nextPar.release(), lay); - } - } else { - return std::pair<const Trk::TrackParameters *, const Trk::Layer *>(nextPar.release(), nullptr); - } - } - } - } - } else { - ATH_MSG_DEBUG(" [!] Propagation loop fails -> return 0."); - } - currPar = std::move(nextPar); - } - return std::pair<const Trk::TrackParameters *, const Trk::Layer *>(nullptr, nullptr); -} - Trk::TrackParameters* Trk::Extrapolator::extrapolateDirectlyImpl(const IPropagator& prop, const Trk::TrackParameters& parm, @@ -2250,24 +2081,6 @@ Trk::Extrapolator::extrapolateToNextActiveLayerM(const TrackParameters& parm, return std::pair<const Trk::TrackParameters *, const Trk::Layer *>(0, 0); } -std::pair<const Trk::TrackParameters*, const Trk::Layer*> -Trk::Extrapolator::extrapolateToNextStation(const TrackParameters& parm, - PropDirection dir, - const BoundaryCheck& bcheck, - ParticleHypothesis particle, - MaterialUpdateMode matupmode) const -{ - if (m_configurationLevel < 10) { - // set propagator to the global one - can be reset inside the next methode (once volume information is there) - const IPropagator *currentPropagator = !m_subPropagators.empty() ? m_subPropagators[Trk::MS] : nullptr; - if (currentPropagator) { - return (extrapolateToNextStationImpl((*currentPropagator), parm, dir, bcheck, particle, matupmode)); - } - } - ATH_MSG_ERROR(" [!] No default Propagator is configured ! Please check jobOptions."); - return std::pair<const Trk::TrackParameters *, const Trk::Layer *>(0, 0); -} - const Trk::TrackParameters * Trk::Extrapolator::extrapolateToVolume(const Trk::TrackParameters &parm, const Trk::TrackingVolume &vol,