diff --git a/MuonSpectrometer/MuonReconstruction/MuonRIO_OnTrackCreators/MdtDriftCircleOnTrackCreator/src/MdtDriftCircleOnTrackCreator.cxx b/MuonSpectrometer/MuonReconstruction/MuonRIO_OnTrackCreators/MdtDriftCircleOnTrackCreator/src/MdtDriftCircleOnTrackCreator.cxx index 832872863f906696c1144300cdbaca749a9b7676..0116974f965eefdfd00b784dee7b1881484b4db2 100644 --- a/MuonSpectrometer/MuonReconstruction/MuonRIO_OnTrackCreators/MdtDriftCircleOnTrackCreator/src/MdtDriftCircleOnTrackCreator.cxx +++ b/MuonSpectrometer/MuonReconstruction/MuonRIO_OnTrackCreators/MdtDriftCircleOnTrackCreator/src/MdtDriftCircleOnTrackCreator.cxx @@ -460,8 +460,10 @@ Muon::MdtDriftCircleOnTrack* Muon::MdtDriftCircleOnTrackCreator::correct( ATH_MSG_WARNING( " Incorrect hit type: Trk::PrepRawData not a Muon::MdtPrepData!! No rot created " ); return 0; } - - return createRIO_OnTrack(*mdtPrd,tp.position(),&tp.momentum(),0,strategy,beta,tTrack); + + Amg::Vector3D momentum = tp.momentum(); + + return createRIO_OnTrack(*mdtPrd,tp.position(),&momentum,0,strategy,beta,tTrack); } @@ -474,8 +476,10 @@ Muon::MdtDriftCircleOnTrack* Muon::MdtDriftCircleOnTrackCreator::correct( ATH_MSG_WARNING( " Incorrect hit type: Trk::PrepRawData not a Muon::MdtPrepData!! No rot created " ); return 0; } - - return createRIO_OnTrack(*mdtPrd,tp.position(),&tp.momentum()); + + Amg::Vector3D momentum = tp.momentum(); + + return createRIO_OnTrack(*mdtPrd,tp.position(),&momentum); } diff --git a/MuonSpectrometer/MuonReconstruction/MuonTrackMakers/MuonTrackMakerTools/MuonTrackFinderTools/src/MuonChamberHoleRecoveryTool.cxx b/MuonSpectrometer/MuonReconstruction/MuonTrackMakers/MuonTrackMakerTools/MuonTrackFinderTools/src/MuonChamberHoleRecoveryTool.cxx index 270031fe0f6a87b51126b4b88e40f8c5a4d0b5be..57c2b91b4fd2999349cb437bf88890b8f01807b7 100644 --- a/MuonSpectrometer/MuonReconstruction/MuonTrackMakers/MuonTrackMakerTools/MuonTrackFinderTools/src/MuonChamberHoleRecoveryTool.cxx +++ b/MuonSpectrometer/MuonReconstruction/MuonTrackMakers/MuonTrackMakerTools/MuonTrackFinderTools/src/MuonChamberHoleRecoveryTool.cxx @@ -1014,9 +1014,11 @@ namespace Muon { } parsToBeDeleted.push_back(exPars); } - + + Amg::Vector3D momentum = exPars->momentum(); + // calibrate Mdt PRD - MdtDriftCircleOnTrack* mdtROT = m_mdtRotCreator->createRIO_OnTrack(mdtPrd, exPars->position(), &(exPars->momentum())); + MdtDriftCircleOnTrack* mdtROT = m_mdtRotCreator->createRIO_OnTrack(mdtPrd, exPars->position(), &momentum); // sanity check if ( !mdtROT ) { ATH_MSG_DEBUG(" failed to calibrate MdtPrepData " << m_idHelperSvc->toString(id) ); diff --git a/MuonSpectrometer/MuonReconstruction/MuonTrackMakers/MuonTrackMakerTools/MuonTrackFinderTools/src/MuonSeededSegmentFinder.cxx b/MuonSpectrometer/MuonReconstruction/MuonTrackMakers/MuonTrackMakerTools/MuonTrackFinderTools/src/MuonSeededSegmentFinder.cxx index 2198a0e2e3363f13f7d219c4517d262e53f5eb3a..fd7f7566a6cc7a1c388e6fe145fed67840990ea5 100644 --- a/MuonSpectrometer/MuonReconstruction/MuonTrackMakers/MuonTrackMakerTools/MuonTrackFinderTools/src/MuonSeededSegmentFinder.cxx +++ b/MuonSpectrometer/MuonReconstruction/MuonTrackMakers/MuonTrackMakerTools/MuonTrackFinderTools/src/MuonSeededSegmentFinder.cxx @@ -524,8 +524,10 @@ namespace Muon { // update hole search flag, set to false if we are close to the tube edge if ( doHoleSearch && fabs(posAlongWire) < halfTubeLength + roadWidthZ ) doHoleSearch = false; + Amg::Vector3D momentum = exPars->momentum(); + // pointer to ROT - const MdtDriftCircleOnTrack* mdtROT = m_mdtRotCreator->createRIO_OnTrack(mdtPrd, exPars->position(), &(exPars->momentum())); + const MdtDriftCircleOnTrack* mdtROT = m_mdtRotCreator->createRIO_OnTrack(mdtPrd, exPars->position(), &momentum); // clean up pointers delete exPars; diff --git a/MuonSpectrometer/MuonReconstruction/MuonTrackMakers/MuonTrackMakerTools/MuonTrackSteeringTools/src/MooTrackFitter.cxx b/MuonSpectrometer/MuonReconstruction/MuonTrackMakers/MuonTrackMakerTools/MuonTrackSteeringTools/src/MooTrackFitter.cxx index 7312cbb6cafc88c7b98267210af047fb5d9843fc..494bdac4fbc5a33f0ff865709784863a153b2ecc 100644 --- a/MuonSpectrometer/MuonReconstruction/MuonTrackMakers/MuonTrackMakerTools/MuonTrackSteeringTools/src/MooTrackFitter.cxx +++ b/MuonSpectrometer/MuonReconstruction/MuonTrackMakers/MuonTrackMakerTools/MuonTrackSteeringTools/src/MooTrackFitter.cxx @@ -665,7 +665,8 @@ namespace Muon { const Trk::TrackParameters* exPars1 = m_propagator->propagate(segPars1,fitterData.measurements.front()->associatedSurface(), Trk::anyDirection,false,m_magFieldProperties); if( exPars1 ){ - const Trk::MeasurementBase* fake = createFakePhiForMeasurement(*fitterData.measurements.front(),&exPars1->position(),0,10.,garbage); + Amg::Vector3D position = exPars1->position(); + const Trk::MeasurementBase* fake = createFakePhiForMeasurement(*fitterData.measurements.front(),&position,0,10.,garbage); delete exPars1; if( fake ) { fitterData.phiHits.push_back(fake); @@ -683,7 +684,8 @@ namespace Muon { const Trk::TrackParameters* exPars2 = m_propagator->propagate(segPars2,fitterData.measurements.back()->associatedSurface(), Trk::anyDirection,false,m_magFieldProperties); if( exPars2 ){ - const Trk::MeasurementBase* fake = createFakePhiForMeasurement(*fitterData.measurements.back(),&exPars2->position(),0,10.,garbage); + Amg::Vector3D position = exPars2->position(); + const Trk::MeasurementBase* fake = createFakePhiForMeasurement(*fitterData.measurements.back(),&position,0,10.,garbage); delete exPars2; if( fake ){ fitterData.phiHits.push_back(fake); @@ -2581,8 +2583,9 @@ namespace Muon { ATH_MSG_DEBUG(" Using error of parameters " << fakeError ); } + Amg::Vector3D position = positionFirstFake->trackParameters()->position(); const Trk::MeasurementBase* fake = createFakePhiForMeasurement( *(positionFirstFake->measurementOnTrack()), - &(positionFirstFake->trackParameters()->position()), + &position, 0, fakeError, garbage ); if( fake ) { // need to clone as fake is already added to garbage collection @@ -2599,8 +2602,10 @@ namespace Muon { fakeError = Amg::error( *positionSecondFake->trackParameters()->covariance(),Trk::loc2); ATH_MSG_DEBUG(" Using error of parameters " << fakeError ); } + + Amg::Vector3D position = positionSecondFake->trackParameters()->position(); const Trk::MeasurementBase* fake = createFakePhiForMeasurement( *(positionSecondFake->measurementOnTrack()), - &(positionSecondFake->trackParameters()->position()), + &position, 0, fakeError, garbage ); if( fake ) { // need to clone as fake is already added to garbage collection diff --git a/Tracking/TrkEvent/TrkParametersBase/TrkParametersBase/CurvilinearParametersT.h b/Tracking/TrkEvent/TrkParametersBase/TrkParametersBase/CurvilinearParametersT.h index e363d9a6741bde5ebb82173a905d9fbe68606543..99684f573f54186803f36a8d08517f9c12865e76 100644 --- a/Tracking/TrkEvent/TrkParametersBase/TrkParametersBase/CurvilinearParametersT.h +++ b/Tracking/TrkEvent/TrkParametersBase/TrkParametersBase/CurvilinearParametersT.h @@ -100,10 +100,10 @@ public: virtual double charge() const override final; /** Access method for the position */ - virtual const Amg::Vector3D& position() const override final; + virtual Amg::Vector3D position() const override final; /** Access method for the momentum */ - virtual const Amg::Vector3D& momentum() const override final; + virtual Amg::Vector3D momentum() const override final; /** Test to see if there's a surface there. */ virtual bool hasSurface() const override final; diff --git a/Tracking/TrkEvent/TrkParametersBase/TrkParametersBase/CurvilinearParametersT.icc b/Tracking/TrkEvent/TrkParametersBase/TrkParametersBase/CurvilinearParametersT.icc index c7a2aaa58c08c22e93084443fba894fb8317ae24..0bef24bdb4dbbe0846c7180101a8e245217bb9f7 100644 --- a/Tracking/TrkEvent/TrkParametersBase/TrkParametersBase/CurvilinearParametersT.icc +++ b/Tracking/TrkEvent/TrkParametersBase/TrkParametersBase/CurvilinearParametersT.icc @@ -175,14 +175,14 @@ CurvilinearParametersT<DIM, T, S>::charge() const } template<int DIM, class T, class S> -const Amg::Vector3D& +Amg::Vector3D CurvilinearParametersT<DIM, T, S>::position() const { return m_position; } template<int DIM, class T, class S> -const Amg::Vector3D& +Amg::Vector3D CurvilinearParametersT<DIM, T, S>::momentum() const { return m_momentum; diff --git a/Tracking/TrkEvent/TrkParametersBase/TrkParametersBase/ParametersBase.h b/Tracking/TrkEvent/TrkParametersBase/TrkParametersBase/ParametersBase.h index 59f6816e1f42ff77492220e7bc5f63a0c10c064b..700ea2f4f76d4d28b8afa3863c601708ee390cd2 100644 --- a/Tracking/TrkEvent/TrkParametersBase/TrkParametersBase/ParametersBase.h +++ b/Tracking/TrkEvent/TrkParametersBase/TrkParametersBase/ParametersBase.h @@ -117,10 +117,10 @@ public: virtual double charge() const = 0; /** Access method for the position */ - virtual const Amg::Vector3D& position() const = 0; + virtual Amg::Vector3D position() const = 0; /** Access method for the momentum */ - virtual const Amg::Vector3D& momentum() const = 0; + virtual Amg::Vector3D momentum() const = 0; //** equality operator */ virtual bool operator==(const ParametersBase<DIM, T>&) const; diff --git a/Tracking/TrkEvent/TrkParametersBase/TrkParametersBase/ParametersT.h b/Tracking/TrkEvent/TrkParametersBase/TrkParametersBase/ParametersT.h index 19b38245dfae88af6bce46134e4089fa0bc78c3b..d0bb0c51506e1532ed6e4ea8394593a1cdf70d25 100644 --- a/Tracking/TrkEvent/TrkParametersBase/TrkParametersBase/ParametersT.h +++ b/Tracking/TrkEvent/TrkParametersBase/TrkParametersBase/ParametersT.h @@ -112,10 +112,10 @@ public: virtual double charge() const override final; /** Access method for the position */ - virtual const Amg::Vector3D& position() const override final; + virtual Amg::Vector3D position() const override final; /** Access method for the momentum */ - virtual const Amg::Vector3D& momentum() const override final; + virtual Amg::Vector3D momentum() const override final; /** Test to see if there's a surface there. */ virtual bool hasSurface() const override final; diff --git a/Tracking/TrkEvent/TrkParametersBase/TrkParametersBase/ParametersT.icc b/Tracking/TrkEvent/TrkParametersBase/TrkParametersBase/ParametersT.icc index d9a8fbed89285a3852a11273b2b4dcb24f215b31..7a4dae0911bdf2d921a763a1d47a1fbb6031e1f6 100644 --- a/Tracking/TrkEvent/TrkParametersBase/TrkParametersBase/ParametersT.icc +++ b/Tracking/TrkEvent/TrkParametersBase/TrkParametersBase/ParametersT.icc @@ -201,14 +201,14 @@ ParametersT<DIM, T, S>::charge() const } template<int DIM, class T, class S> -const Amg::Vector3D& +Amg::Vector3D ParametersT<DIM, T, S>::position() const { return m_position; } template<int DIM, class T, class S> -const Amg::Vector3D& +Amg::Vector3D ParametersT<DIM, T, S>::momentum() const { return m_momentum; diff --git a/Tracking/TrkEvent/TrkPatternParameters/TrkPatternParameters/PatternTrackParameters.h b/Tracking/TrkEvent/TrkPatternParameters/TrkPatternParameters/PatternTrackParameters.h index 054efd4bd0e1c9d5e196ca75256673625ffdae67..3411edeb473bacd96f86930f7ced56478ab21f06 100755 --- a/Tracking/TrkEvent/TrkPatternParameters/TrkPatternParameters/PatternTrackParameters.h +++ b/Tracking/TrkEvent/TrkPatternParameters/TrkPatternParameters/PatternTrackParameters.h @@ -59,8 +59,8 @@ namespace Trk { double cotTheta () const; void changeDirection () ; - virtual const Amg::Vector3D& position() const override final; - virtual const Amg::Vector3D& momentum() const override final; + virtual Amg::Vector3D position() const override final; + virtual Amg::Vector3D momentum() const override final; virtual double charge() const override final; virtual bool hasSurface() const override final; virtual Amg::RotationMatrix3D measurementFrame() const override final; @@ -403,7 +403,7 @@ namespace Trk { return (1./tan(m_parameters[3])); } - inline const Amg::Vector3D& PatternTrackParameters::momentum () const + inline Amg::Vector3D PatternTrackParameters::momentum () const { if (!m_pmomentum.isValid()) { updateMomentumCache(); diff --git a/Tracking/TrkEvent/TrkPatternParameters/src/PatternTrackParameters.cxx b/Tracking/TrkEvent/TrkPatternParameters/src/PatternTrackParameters.cxx index f9a07447372fb07b09c99f0354e6526ae424965a..0d4351e608e8db63a64dc29d5eb62b79801b1bcd 100755 --- a/Tracking/TrkEvent/TrkPatternParameters/src/PatternTrackParameters.cxx +++ b/Tracking/TrkEvent/TrkPatternParameters/src/PatternTrackParameters.cxx @@ -138,7 +138,7 @@ AmgSymMatrix(5) Trk::PatternTrackParameters::newCovarianceMatrix // Global position of simple track parameters /////////////////////////////////////////////////////////////////// -const Amg::Vector3D& Trk::PatternTrackParameters::position() const +Amg::Vector3D Trk::PatternTrackParameters::position() const { if (!m_pposition.isValid()) { updatePositionCache(); diff --git a/Tracking/TrkFitter/TrkGlobalChi2Fitter/TrkGlobalChi2Fitter/GXFTrackState.h b/Tracking/TrkFitter/TrkGlobalChi2Fitter/TrkGlobalChi2Fitter/GXFTrackState.h index 581eb4a25610d63c40a8ea59b8623e5bf885c0ba..c92fd711c83e45a219e037d0ab83a50df62c5703 100755 --- a/Tracking/TrkFitter/TrkGlobalChi2Fitter/TrkGlobalChi2Fitter/GXFTrackState.h +++ b/Tracking/TrkFitter/TrkGlobalChi2Fitter/TrkGlobalChi2Fitter/GXFTrackState.h @@ -78,7 +78,7 @@ namespace Trk { bool isRecalibrated(); void setRecalibrated(bool); - const Amg::Vector3D & position(); + Amg::Vector3D position(); void setPosition(Amg::Vector3D &); bool measuresPhi(); diff --git a/Tracking/TrkFitter/TrkGlobalChi2Fitter/src/GXFTrackState.cxx b/Tracking/TrkFitter/TrkGlobalChi2Fitter/src/GXFTrackState.cxx index 973b803de05da09e4d73b3af40995e553ad08f2a..6920de6867eff7dcb0d9bfe5ed3f48c3cf09f6bf 100644 --- a/Tracking/TrkFitter/TrkGlobalChi2Fitter/src/GXFTrackState.cxx +++ b/Tracking/TrkFitter/TrkGlobalChi2Fitter/src/GXFTrackState.cxx @@ -198,7 +198,7 @@ namespace Trk { return nmeas; } - const Amg::Vector3D & GXFTrackState::position() { + Amg::Vector3D GXFTrackState::position() { if (m_trackpar != nullptr) { return m_trackpar->position(); } if (m_measurement != nullptr) { diff --git a/graphics/VP1/VP1Systems/VP1TrackSystems/VP1TrackSystems/TrackHandleBase.h b/graphics/VP1/VP1Systems/VP1TrackSystems/VP1TrackSystems/TrackHandleBase.h index 7136304bfb7c8ea09bebed55b86578a12dd6c34b..b7ccd109b44f319f679fcf344b0b97f85d1c0a84 100644 --- a/graphics/VP1/VP1Systems/VP1TrackSystems/VP1TrackSystems/TrackHandleBase.h +++ b/graphics/VP1/VP1Systems/VP1TrackSystems/VP1TrackSystems/TrackHandleBase.h @@ -74,8 +74,8 @@ public: virtual QStringList clicked() const = 0; virtual Amg::Vector3D momentum() const { return Amg::Vector3D(0,0,0); } - virtual const Amg::Vector3D * startPoint() const;//!< returns 0 if can't find start point. - virtual const Amg::Vector3D * endPoint() const;//!< returns 0 if can't find start point. + virtual std::optional<Amg::Vector3D> startPoint() const;//!< returns 0 if can't find start point. + virtual std::optional<Amg::Vector3D> endPoint() const;//!< returns 0 if can't find start point. virtual int pdgCode() const { return 0; }//!< 0 means unknown //Default implementation of the following two methods will based on diff --git a/graphics/VP1/VP1Systems/VP1TrackSystems/src/TrackHandleBase.cxx b/graphics/VP1/VP1Systems/VP1TrackSystems/src/TrackHandleBase.cxx index 267dae53a3ee4171b19c74c518b805cec978e979..be15ef8314f9e9cc892c5b24ad84ec62fb0168ef 100644 --- a/graphics/VP1/VP1Systems/VP1TrackSystems/src/TrackHandleBase.cxx +++ b/graphics/VP1/VP1Systems/VP1TrackSystems/src/TrackHandleBase.cxx @@ -1556,7 +1556,7 @@ QStringList TrackHandleBase::baseInfo() const } //____________________________________________________________________ -const Amg::Vector3D * TrackHandleBase::startPoint() const +std::optional<Amg::Vector3D> TrackHandleBase::startPoint() const { m_d->ensureLoadPathInfo(); if (m_d->pathInfo_TrkTrack) { @@ -1566,17 +1566,17 @@ const Amg::Vector3D * TrackHandleBase::startPoint() const if (common()->trackSanityHelper()->isSafe(*tsos_iter)) { const Trk::TrackParameters* trackParam = (*tsos_iter)->trackParameters(); if (common()->trackSanityHelper()->isSafe(trackParam)) - return &(trackParam->position()); + return trackParam->position(); } } } else if (m_d->pathInfo_Points&&!m_d->pathInfo_Points->empty()) { - return &(m_d->pathInfo_Points->at(0)); + return m_d->pathInfo_Points->at(0); } - return 0; + return {}; } //____________________________________________________________________ -const Amg::Vector3D * TrackHandleBase::endPoint() const +std::optional<Amg::Vector3D> TrackHandleBase::endPoint() const { m_d->ensureLoadPathInfo(); if (m_d->pathInfo_TrkTrack) { @@ -1586,18 +1586,18 @@ const Amg::Vector3D * TrackHandleBase::endPoint() const if (common()->trackSanityHelper()->isSafe(*tsos_iter)) { const Trk::TrackParameters* trackParam = (*tsos_iter)->trackParameters(); if (common()->trackSanityHelper()->isSafe(trackParam)) - return &(trackParam->position()); + return trackParam->position(); } } } else if (m_d->pathInfo_Points&&!m_d->pathInfo_Points->empty()) { - return &(m_d->pathInfo_Points->back()); + return m_d->pathInfo_Points->back(); } - return 0; + return {}; } bool TrackHandleBase::isIDTrack() const { - const Amg::Vector3D * start = startPoint(); + std::optional<Amg::Vector3D> start = startPoint(); if (!start) return false; return start->perp()<1100 &&fabs( start->z())>3500; } diff --git a/graphics/VP1/VP1Systems/VP1TrackSystems/src/VP1TrackSystem.cxx b/graphics/VP1/VP1Systems/VP1TrackSystems/src/VP1TrackSystem.cxx index e4ed3633e90397ecd54348cca1cd560b2df8f536..91eb346e5955ad32f9aab87c82883e21732189c2 100644 --- a/graphics/VP1/VP1Systems/VP1TrackSystems/src/VP1TrackSystem.cxx +++ b/graphics/VP1/VP1Systems/VP1TrackSystems/src/VP1TrackSystem.cxx @@ -672,7 +672,7 @@ unsigned VP1TrackSystem::Imp::calcTotalMomentumOfSelectedHandles(Amg::Vector3D& if (mom.mag2()==0.0) continue; //Fixme: Get actual position of perigee!! - const Amg::Vector3D * pos = handle->startPoint(); + std::optional<Amg::Vector3D> pos = handle->startPoint(); if (!pos) continue; ++nused;