From db968c1edb38fc2c2388034055ea6f996724264c Mon Sep 17 00:00:00 2001 From: Patrick Scholer <patick.scholer@cern.ch> Date: Wed, 17 Jun 2020 12:33:38 +0200 Subject: [PATCH] update the MuonTrackCleaner on behalf of @kluit --- .../MuonTrackFinderTools/src/MuonTrackCleaner.cxx | 12 +++++++++--- .../MuonTrackFinderTools/src/MuonTrackCleaner.h | 2 ++ 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/MuonSpectrometer/MuonReconstruction/MuonTrackMakers/MuonTrackMakerTools/MuonTrackFinderTools/src/MuonTrackCleaner.cxx b/MuonSpectrometer/MuonReconstruction/MuonTrackMakers/MuonTrackMakerTools/MuonTrackFinderTools/src/MuonTrackCleaner.cxx index e56dcfd2f6a5..b8bbf1674966 100644 --- a/MuonSpectrometer/MuonReconstruction/MuonTrackMakers/MuonTrackMakerTools/MuonTrackFinderTools/src/MuonTrackCleaner.cxx +++ b/MuonSpectrometer/MuonReconstruction/MuonTrackMakers/MuonTrackMakerTools/MuonTrackFinderTools/src/MuonTrackCleaner.cxx @@ -74,7 +74,9 @@ namespace Muon { m_idHelper("Muon::MuonIdHelperTool/MuonIdHelperTool"), m_magFieldSvc("AtlasFieldSvc",na), m_extrapolator("Trk::Extrapolator/AtlasExtrapolator"), - m_slFit(false) { + m_slextrapolator("Trk::Extrapolator/MuonStraightLineExtrapolator"), + m_slFit(false), + m_use_slFit(false) { declareInterface<IMuonTrackCleaner>(this); declareProperty("IdHelper",m_idHelper); @@ -102,6 +104,7 @@ namespace Muon { declareProperty("OnlyUseHitErrorInRecovery", m_onlyUseHitErrorInRecovery = true ); declareProperty("AdcCut", m_adcCut = 50 ); declareProperty("Iterate", m_iterate = true ); + declareProperty("UseSLFit", m_use_slFit = false); // if true always use the SLFit (whatever the field etc. says) } @@ -117,6 +120,7 @@ namespace Muon { ATH_CHECK( m_helper.retrieve() ); ATH_CHECK( m_printer.retrieve() ); ATH_CHECK( m_extrapolator.retrieve() ); + ATH_CHECK( m_slextrapolator.retrieve() ); ATH_CHECK( m_pullCalculator.retrieve() ); ATH_CHECK( m_mdtRotCreator.retrieve() ); ATH_CHECK( m_compRotCreator.retrieve() ); @@ -1120,6 +1124,8 @@ namespace Muon { cleanUp(); m_slFit = !m_magFieldSvc->toroidOn() || m_helper->isSLTrack( track ); +// if joboption says to use SL fit always use it + if(m_use_slFit) m_slFit = true; m_fitter = m_slFit ? &*m_slTrackFitter : &*m_trackFitter; // init @@ -1455,7 +1461,7 @@ namespace Muon { if( updatedCompRot ){ info.cleanedCompROT = updatedCompRot; if( updatedCompRot->associatedSurface() != meas->associatedSurface() ){ - const Trk::TrackParameters* exPars = m_extrapolator->extrapolate(*pars,updatedCompRot->associatedSurface(),Trk::anyDirection,false,Trk::muon); + const Trk::TrackParameters* exPars = m_slFit ? m_slextrapolator->extrapolate(*pars,updatedCompRot->associatedSurface(),Trk::anyDirection,false,Trk::muon) : m_extrapolator->extrapolate(*pars,updatedCompRot->associatedSurface(),Trk::anyDirection,false,Trk::muon); if( !exPars ){ ATH_MSG_WARNING("Update of comp rot parameters failed, keeping old ones" ); info.cleanedCompROT = 0; @@ -1597,7 +1603,7 @@ namespace Muon { } // update sl fit configuration if track has ID hits or vertex constraint - if( m_slFit && (m_hasVertexConstraint || m_nIdHits > 0 ) && m_magFieldSvc->solenoidOn() ) { + if( !m_use_slFit && m_slFit && (m_hasVertexConstraint || m_nIdHits > 0 ) && m_magFieldSvc->solenoidOn() ) { m_slFit = false; m_fitter = &*m_trackFitter; } diff --git a/MuonSpectrometer/MuonReconstruction/MuonTrackMakers/MuonTrackMakerTools/MuonTrackFinderTools/src/MuonTrackCleaner.h b/MuonSpectrometer/MuonReconstruction/MuonTrackMakers/MuonTrackMakerTools/MuonTrackFinderTools/src/MuonTrackCleaner.h index 1289b3b7dc11..0fbd7a19fd0d 100644 --- a/MuonSpectrometer/MuonReconstruction/MuonTrackMakers/MuonTrackMakerTools/MuonTrackFinderTools/src/MuonTrackCleaner.h +++ b/MuonSpectrometer/MuonReconstruction/MuonTrackMakers/MuonTrackMakerTools/MuonTrackFinderTools/src/MuonTrackCleaner.h @@ -232,6 +232,7 @@ namespace Muon { ToolHandle<Muon::MuonIdHelperTool> m_idHelper; ServiceHandle<MagField::IMagFieldSvc> m_magFieldSvc; ToolHandle<Trk::IExtrapolator> m_extrapolator; + ToolHandle<Trk::IExtrapolator> m_slextrapolator; bool m_useMdtResiCut; double m_chi2Cut; @@ -274,6 +275,7 @@ namespace Muon { mutable unsigned int m_nIdHits; mutable unsigned int m_nPseudoMeasurements; mutable unsigned int m_nPhiConstraints; + bool m_use_slFit; struct ChamberPullInfo { ChamberPullInfo() : pullSum(0.),maxPull(0.),nhits(0) {} -- GitLab