diff --git a/Tracking/TrkFitter/TrkKalmanFitter/src/KalmanSmoother.cxx b/Tracking/TrkFitter/TrkKalmanFitter/src/KalmanSmoother.cxx index 5dda04214df033816f858db57cbb777818f6c98a..3b78bd894a50611dd31bde84d9b5558f903c3164 100755 --- a/Tracking/TrkFitter/TrkKalmanFitter/src/KalmanSmoother.cxx +++ b/Tracking/TrkFitter/TrkKalmanFitter/src/KalmanSmoother.cxx @@ -6,8 +6,6 @@ // KalmanSmoother.cxx // Source file for class KalmanSmoother /////////////////////////////////////////////////////////////////// -// (c) ATLAS Detector software -/////////////////////////////////////////////////////////////////// // Markus.Elsing@cern.ch /////////////////////////////////////////////////////////////////// @@ -33,6 +31,7 @@ #include <sstream> #include <iomanip> +#include <cmath> // InterfaceID // const InterfaceID& Trk::KalmanSmoother::interfaceID() { @@ -272,7 +271,6 @@ Trk::FitterStatusCode Trk::KalmanSmoother::fit(Trk::Trajectory& tra } lastPredictedState->backwardStateChiSquared(trackQualityIncrement->chiSquared()); addChi2IncrementAndDelete(trackQualityIncrement,chi2Increment,ndofIncrement); - // Trk::Surface& testSf = fittableMeasurement->associatedSurface(); //////////////////////////////////////////////////////////////////////////////////// @@ -289,10 +287,7 @@ Trk::FitterStatusCode Trk::KalmanSmoother::fit(Trk::Trajectory& tra if (msgLvl(MSG::DEBUG)) { printGlobalParams(previousStatePosOnTraj, " start", updatedPar.get() ); - // ATH_MSG_VERBOSE << " Now trying to hit surface " << fittableMeasurement->associatedSurface() << endmsg; BoundaryCheck trackWithinSurface = true; - // if ( ! testSf.isOnSurface( updatedPar->position(), trackWithinSurface) ) - // ATH_MSG_VERBOSE << " previous updated parameters are outside surface bounds!" << endmsg; if ( ! fittableMeasurement->associatedSurface().isOnSurface( rit->forwardTrackParameters()->position(), trackWithinSurface) ) { ATH_MSG_VERBOSE (" for information: forward-filtered pars are outside surface bounds!"); @@ -392,7 +387,8 @@ Trk::FitterStatusCode Trk::KalmanSmoother::fit(Trk::Trajectory& tra if (rit == lastSmoothableState) { // at the last don't do state combination. ATH_MSG_VERBOSE ("Identified state" << (rit->positionOnTrajectory()>9? " " : " 0")<< rit->positionOnTrajectory() << " as last fittable state."); - smooPar = std::move( updatedPar ); + //clone here, as updatedPar is used on next iteration and would be invalid if moved + smooPar.reset( updatedPar->clone() ); } else { if (m_doSmoothing) { forwardTPar = rit->forwardTrackParameters(); @@ -564,7 +560,7 @@ Trk::FitterStatusCode Trk::KalmanSmoother::fitWithReference(Trk::Trajectory& ATH_MSG_VERBOSE ("mass=" << mass << ", qOverP_ref="<< std::scientific << rit->referenceParameters()->parameters()[Trk::qOverP] << ", qOverP_diff=" << (predDiffPar)(Trk::qOverP) << ", sigmaDeltaE=" << rit->materialEffects()->sigmaDeltaE() - << ", sigmaDeltaQoverP=" << sqrt(sigmaDeltaQoverPsquared) << std::fixed);//std::defaultfloat); + << ", sigmaDeltaQoverP=" << std::sqrt(sigmaDeltaQoverPsquared) << std::fixed);//std::defaultfloat); ATH_MSG_VERBOSE ("Added material effects."); } /* possibly check quality of backward "extrapolation", if not good return a @@ -596,7 +592,7 @@ Trk::FitterStatusCode Trk::KalmanSmoother::fitWithReference(Trk::Trajectory& return FitterStatusCode::UpdateFailure; } const float updatedQoverP = (rit->referenceParameters()->parameters()[Trk::qOverP]) + (updatedDifference->first[Trk::qOverP]); - if (fabs(updatedQoverP) > 0.1) { + if (std::abs(updatedQoverP) > 0.1) { delete trackQualityIncrement; if (msgLvl(MSG::INFO)) monitorTrackFits( UpdateFailure, rit->referenceParameters()->eta() ); ATH_MSG_INFO("could not update Track Parameters, momentum too low: qoverp=" << updatedQoverP); @@ -692,7 +688,7 @@ AmgSymMatrix(5)* Trk::KalmanSmoother::initialiseSmoother(const AmgSymMatrix(5)& AmgSymMatrix(5)* cov = new AmgSymMatrix(5)(); // a 5x5 0-matrix cov->setZero(); for (int i=0; i<5; ++i) { - isConstraint[i] = (m_option_relErrorLimit* sqrt(err(i,i)) < m_initialErrors[i]); + isConstraint[i] = (m_option_relErrorLimit* std::sqrt(err(i,i)) < m_initialErrors[i]); (*cov)(i,i) = isConstraint[i] ? err(i,i)*m_initialCovSeedFactor : m_initialErrors[i]*m_initialErrors[i]; } if (msgLvl(MSG::DEBUG)) { @@ -726,7 +722,7 @@ bool Trk::KalmanSmoother::straightTrackModel(const Trk::TrackParameters& TP) con + (*TP.covariance())(4,1) + (*TP.covariance())(4,2) + (*TP.covariance())(4,3); - bool straightTrackModel = (fabs(momentumCorrelnTest) < 1.0E-100); + bool straightTrackModel = (std::abs(momentumCorrelnTest) < 1.0E-100); if (straightTrackModel) { ATH_MSG_DEBUG ("Straight track model identified => reduce track's ndof to 4"); if (msgLvl(MSG::INFO)) monitorTrackFits( StraightTrackModelUsed, TP.eta() ); @@ -767,14 +763,13 @@ void Trk::KalmanSmoother::printGlobalParams(int istate, const std::string& ptype << std::setw(8) << std::setprecision(0) << param->momentum()[2] << std::setprecision(6) << endmsg; if (mefot) - // ATH_MSG_VERBOSE << "Mefot found with " << *mefot << endmsg; msg(MSG::VERBOSE) << "-S- DNA kicked in at t/X0 of " <<mefot->thicknessInX0() << " with noise " << mefot->addSigmaQoverP() << endmsg; } void Trk::KalmanSmoother::monitorTrackFits(FitStatusCodes code, const double& eta) const { ((m_fitStatistics[code])[iAll])++; - if (fabs(eta) < 0.80 ) ((m_fitStatistics[code])[iBarrel])++; - else if (fabs(eta) < 1.60) ((m_fitStatistics[code])[iTransi])++; - else if (fabs(eta) < 2.50) ((m_fitStatistics[code])[iEndcap])++; + if (std::abs(eta) < 0.80 ) ((m_fitStatistics[code])[iBarrel])++; + else if (std::abs(eta) < 1.60) ((m_fitStatistics[code])[iTransi])++; + else if (std::abs(eta) < 2.50) ((m_fitStatistics[code])[iEndcap])++; }