diff --git a/Reconstruction/MuonIdentification/CombinedMuonRefit/src/ExtrapolateMuonToIPTool.cxx b/Reconstruction/MuonIdentification/CombinedMuonRefit/src/ExtrapolateMuonToIPTool.cxx index 86fa21fd6a749c8a313448f3564231700c510938..9d829730e8c392a52b91c8081e7b10b1fb4b42bb 100644 --- a/Reconstruction/MuonIdentification/CombinedMuonRefit/src/ExtrapolateMuonToIPTool.cxx +++ b/Reconstruction/MuonIdentification/CombinedMuonRefit/src/ExtrapolateMuonToIPTool.cxx @@ -1,24 +1,12 @@ /* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ -/////////////////////////////////////////////////////////////////// -// ExtrapolateMuonToIPTool.cxx -// Implementation file for class ExtrapolateMuonToIP -/////////////////////////////////////////////////////////////////// -// Niels van Eldik -/////////////////////////////////////////////////////////////////// - #include "ExtrapolateMuonToIPTool.h" #include "TrkParameters/TrackParameters.h" -#include "MuonRecHelperTools/IMuonEDMHelperSvc.h" -#include "MuonRecHelperTools/MuonEDMPrinterTool.h" -#include "TrkExInterfaces/IExtrapolator.h" #include <vector> - - ExtrapolateMuonToIPTool::ExtrapolateMuonToIPTool(const std::string& t, const std::string& n,const IInterface* p) : AthAlgTool(t,n,p), m_extrapolator("Trk::Extrapolator/AtlasExtrapolator"), @@ -34,41 +22,20 @@ ExtrapolateMuonToIPTool::ExtrapolateMuonToIPTool(const std::string& t, const std } -ExtrapolateMuonToIPTool::~ExtrapolateMuonToIPTool() { - -} - // Initialize method: StatusCode ExtrapolateMuonToIPTool::initialize() { - - if( m_extrapolator.retrieve().isFailure() ){ - ATH_MSG_ERROR( "failed to retrieve " << m_extrapolator ); - return StatusCode::FAILURE; - } - - if( m_muonExtrapolator.retrieve().isFailure() ){ - ATH_MSG_ERROR( "failed to retrieve " << m_muonExtrapolator ); - return StatusCode::FAILURE; - } - + ATH_CHECK(m_extrapolator.retrieve()); + ATH_CHECK(m_muonExtrapolator.retrieve()); if(!m_edmHelperSvc.empty()) { - if(m_edmHelperSvc.retrieve().isFailure()) { - ATH_MSG_ERROR("Failed to retrieve helper " << m_edmHelperSvc); - return StatusCode::FAILURE; - }else { - ATH_MSG_DEBUG( "Retrieved helper " << m_edmHelperSvc ); - } + ATH_CHECK(m_edmHelperSvc.retrieve()); + ATH_MSG_DEBUG( "Retrieved helper " << m_edmHelperSvc ); } - if(!m_printer.empty()) { - if(m_printer.retrieve().isFailure()) { - ATH_MSG_ERROR( "Failed to retrieve printer " << m_printer ); - return StatusCode::FAILURE; - }else { - ATH_MSG_DEBUG("Retrieved printer " << m_printer); - } + ATH_CHECK(m_printer.retrieve()); + ATH_MSG_DEBUG("Retrieved printer " << m_printer); } + ATH_CHECK(m_trackSummary.retrieve()); return StatusCode::SUCCESS; } @@ -107,7 +74,7 @@ TrackCollection* ExtrapolateMuonToIPTool::extrapolate(const TrackCollection& muo if( !extrapolateTrack ) { if (msgLvl(MSG::DEBUG)) msg(MSG::DEBUG) <<MSG::DEBUG <<"Extrapolation of muon to IP failed" << endmsg; continue; - } + } if (msgLvl(MSG::DEBUG)) msg(MSG::DEBUG) << " Extrapolated track " << m_printer->print(*extrapolateTrack) << endmsg; @@ -235,7 +202,8 @@ Trk::Track* ExtrapolateMuonToIPTool::extrapolate(const Trk::Track& track) const info.setPatternRecognitionInfo( Trk::TrackInfo::MuidStandAlone ); // create new track Trk::Track* extrapolateTrack = new Trk::Track( info, trackStateOnSurfaces, track.fitQuality() ? track.fitQuality()->clone():0); - + // create track summary + m_trackSummary->updateTrack(*extrapolateTrack); return extrapolateTrack; } diff --git a/Reconstruction/MuonIdentification/CombinedMuonRefit/src/ExtrapolateMuonToIPTool.h b/Reconstruction/MuonIdentification/CombinedMuonRefit/src/ExtrapolateMuonToIPTool.h index 34b9a7bed04b4d4e88fbca200c2474c985993ff1..a3fc351b2d1cb3525b26b1ba8889a4e4bb1c509d 100644 --- a/Reconstruction/MuonIdentification/CombinedMuonRefit/src/ExtrapolateMuonToIPTool.h +++ b/Reconstruction/MuonIdentification/CombinedMuonRefit/src/ExtrapolateMuonToIPTool.h @@ -1,26 +1,22 @@ /* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ #ifndef EXTRAPOLATEMUONTOIPTOOL_H #define EXTRAPOLATEMUONTOIPTOOL_H -#include "MuonRecHelperTools/IMuonEDMHelperSvc.h" #include "MuonRecToolInterfaces/IMuonTrackExtrapolationTool.h" #include "AthenaBaseComps/AthAlgTool.h" - #include "GaudiKernel/ServiceHandle.h" #include "GaudiKernel/ToolHandle.h" -#include <atomic> +#include "MuonRecHelperTools/IMuonEDMHelperSvc.h" +#include "TrkToolInterfaces/ITrackSummaryTool.h" +#include "MuonRecHelperTools/MuonEDMPrinterTool.h" +#include "TrkExInterfaces/IExtrapolator.h" -namespace Trk{ - class IExtrapolator; -} -namespace Muon{ - class MuonEDMPrinterTool; -} +#include <atomic> /** Tool to extrapolate tracks in the muon system to the IP. Internally uses IMuonTrackThroughCalo for @@ -35,7 +31,7 @@ class ExtrapolateMuonToIPTool : virtual public Muon::IMuonTrackExtrapolationTool ExtrapolateMuonToIPTool(const std::string&, const std::string&, const IInterface*); /** Destructor */ - virtual ~ExtrapolateMuonToIPTool(); + virtual ~ExtrapolateMuonToIPTool()=default; /** initialize */ virtual StatusCode initialize(); @@ -68,6 +64,7 @@ class ExtrapolateMuonToIPTool : virtual public Muon::IMuonTrackExtrapolationTool "Muon::MuonEDMHelperSvc/MuonEDMHelperSvc", "Handle to the service providing the IMuonEDMHelperSvc interface" }; //!< muon EDM helper tool ToolHandle<Muon::MuonEDMPrinterTool> m_printer; //!< muon EDM printer tool + ToolHandle<Trk::ITrackSummaryTool> m_trackSummary {this,"TrackSummaryTool","Trk::TrackSummaryTool/MuidTrackSummaryTool"}; mutable std::atomic_uint m_nextrapolations; mutable std::atomic_uint m_failedClosestPars; diff --git a/Reconstruction/MuonIdentification/MuonCombinedBaseTools/src/MuonCandidateTool.cxx b/Reconstruction/MuonIdentification/MuonCombinedBaseTools/src/MuonCandidateTool.cxx index e3e5845b7051398c1bd1080c522eaf189ca52196..9317c22cf425b7c6505d1ba8369730f4451c28e0 100644 --- a/Reconstruction/MuonIdentification/MuonCombinedBaseTools/src/MuonCandidateTool.cxx +++ b/Reconstruction/MuonIdentification/MuonCombinedBaseTools/src/MuonCandidateTool.cxx @@ -23,10 +23,10 @@ namespace MuonCombined { MuonCandidateTool::MuonCandidateTool (const std::string& type, const std::string& name, const IInterface* parent) : AthAlgTool(type, name, parent), - m_printer("Muon::MuonEDMPrinterTool/MuonEDMPrinterTool"), + m_printer("Muon::MuonEDMPrinterTool/MuonEDMPrinterTool", this), m_trackBuilder("Rec::CombinedMuonTrackBuilder/CombinedMuonTrackBuilder", this), - m_trackExtrapolationTool("ExtrapolateMuonToIPTool/ExtrapolateMuonToIPTool"), - m_ambiguityProcessor("Trk::TrackSelectionProcessorTool/MuonAmbiProcessor") + m_trackExtrapolationTool("ExtrapolateMuonToIPTool/ExtrapolateMuonToIPTool", this), + m_ambiguityProcessor("Trk::TrackSelectionProcessorTool/MuonAmbiProcessor", this) { declareInterface<IMuonCandidateTool>(this); declareProperty("Printer",m_printer ); diff --git a/Reconstruction/MuonIdentification/MuonCombinedConfig/python/MuonCombinedRecToolsConfig.py b/Reconstruction/MuonIdentification/MuonCombinedConfig/python/MuonCombinedRecToolsConfig.py index 25cbb870294d14f0996d6adbbe6a2d2151d64298..4963ff9e169801013fe748478b79d5c60cc61bb4 100644 --- a/Reconstruction/MuonIdentification/MuonCombinedConfig/python/MuonCombinedRecToolsConfig.py +++ b/Reconstruction/MuonIdentification/MuonCombinedConfig/python/MuonCombinedRecToolsConfig.py @@ -181,7 +181,8 @@ def MuonCreatorToolCfg(flags, name="MuonCreatorTool", **kwargs): def ExtrapolateMuonToIPToolCfg(flags, name="ExtrapolateMuonToIPTool", **kwargs): #FIXME complete this configuration - result = ComponentAccumulator() + result = MuonCombinedTrackSummaryToolCfg(flags) + kwargs.setdefault("TrackSummaryTool", result.popPrivateTools() ) result.setPrivateTools(CompFactory.ExtrapolateMuonToIPTool(name,**kwargs)) return result @@ -189,10 +190,11 @@ def MuonCandidateToolCfg(flags, name="MuonCandidateTool",**kwargs): from MuonConfig.MuonRecToolsConfig import MuonAmbiProcessorCfg result = CombinedMuonTrackBuilderCfg(flags) kwargs.setdefault("TrackBuilder", result.popPrivateTools() ) - acc = ExtrapolateMuonToIPToolCfg(flags) - extrapolator = acc.popPrivateTools() - result.addPublicTool(extrapolator) - kwargs.setdefault("TrackExtrapolationTool", extrapolator ) + if flags.Beam.Type=="cosmics": + acc = ExtrapolateMuonToIPToolCfg(flags) + extrapolator = acc.popPrivateTools() + result.addPublicTool(extrapolator) + kwargs.setdefault("TrackExtrapolationTool", extrapolator ) result.merge(acc) acc = MuonAmbiProcessorCfg(flags) diff --git a/Reconstruction/MuonIdentification/MuonCombinedRecExample/python/MuonCombinedRecExampleConfigDb.py b/Reconstruction/MuonIdentification/MuonCombinedRecExample/python/MuonCombinedRecExampleConfigDb.py index bf962778503471fc0c3eacf3022033df095fdca1..f6b1adae137247723aeec47aa83f8ee147faf13f 100644 --- a/Reconstruction/MuonIdentification/MuonCombinedRecExample/python/MuonCombinedRecExampleConfigDb.py +++ b/Reconstruction/MuonIdentification/MuonCombinedRecExample/python/MuonCombinedRecExampleConfigDb.py @@ -64,6 +64,7 @@ addTool("MuonCombinedRecExample.MuonCombinedTools.MuonCombinedParticleCreator"," addTool("MuonCombinedRecExample.MuonCombinedTools.MuonCaloParticleCreator","MuonCaloParticleCreator") addTool("MuonCombinedRecExample.MuonCombinedTools.MuonCreatorTool","MuonCreatorTool") addTool("MuonCombinedRecExample.MuonCombinedTools.MuonCreatorTool","StauCreatorTool",BuildStauContainer=True) +addTool("MuonCombinedRecExample.MuonCombinedTools.ExtrapolateMuonToIPTool","ExtrapolateMuonToIPTool") addTool("MuonCombinedRecExample.MuonCombinedTools.MuonCandidateTool","MuonCandidateTool") addTool("MuonCombinedRecExample.MuonCombinedTools.MuonCombinedTrackSummaryTool","MuonCombinedTrackSummaryTool") diff --git a/Reconstruction/MuonIdentification/MuonCombinedRecExample/python/MuonCombinedTools.py b/Reconstruction/MuonIdentification/MuonCombinedRecExample/python/MuonCombinedTools.py index 3a008181d67422a8baf8f4fdcc33d3c4d693f88b..5507eb2c7cfce670249f6bfdfe3cbf072408f324 100644 --- a/Reconstruction/MuonIdentification/MuonCombinedRecExample/python/MuonCombinedTools.py +++ b/Reconstruction/MuonIdentification/MuonCombinedRecExample/python/MuonCombinedTools.py @@ -1,4 +1,4 @@ -# Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration from MuonCombinedRecExample.MuonCombinedRecFlags import muonCombinedRecFlags from MuonCombinedRecExample.MuonCombinedKeys import MuonCombinedKeys as MuonCbKeys @@ -92,10 +92,19 @@ def MuonCreatorTool(name="MuonCreatorTool",**kwargs): kwargs.setdefault("ParticleCaloExtensionTool", getPublicTool("MuonParticleCaloExtensionTool") ) return CfgMgr.MuonCombined__MuonCreatorTool(name,**kwargs) +def ExtrapolateMuonToIPTool(name="ExtrapolateMuonToIPTool",**kwargs): + if TriggerFlags.MuonSlice.doTrigMuonConfig: + kwargs.setdefault("TrackSummaryTool", getPublicTool("MuonTrackSummaryTool")) + else: + import MuonCombinedRecExample.CombinedMuonTrackSummary + from AthenaCommon.AppMgr import ToolSvc + kwargs.setdefault("TrackSummaryTool", ToolSvc.CombinedMuonTrackSummary) + return CfgMgr.ExtrapolateMuonToIPTool(name,**kwargs) + def MuonCandidateTool(name="MuonCandidateTool",**kwargs): if beamFlags.beamType() == 'cosmics': kwargs.setdefault("ExtrapolationStrategy", 1 ) - + kwargs.setdefault("TrackExtrapolationTool", getPublicTool("ExtrapolateMuonToIPTool")) if TriggerFlags.MuonSlice.doTrigMuonConfig: trigTrackBuilder = getPublicToolClone("TrigCombinedMuonTrackBuilder","CombinedMuonTrackBuilder", TrackSummaryTool=getPublicTool("MuonTrackSummaryTool")) diff --git a/Trigger/TrigAlgorithms/TrigMuonEF/python/TrigMuonEFConfig.py b/Trigger/TrigAlgorithms/TrigMuonEF/python/TrigMuonEFConfig.py index 5e099306652b0616b5db60bf5f2451059a2b80a7..aabe79b81d738e99fd6c59a15b819f905f4e0a31 100755 --- a/Trigger/TrigAlgorithms/TrigMuonEF/python/TrigMuonEFConfig.py +++ b/Trigger/TrigAlgorithms/TrigMuonEF/python/TrigMuonEFConfig.py @@ -25,6 +25,9 @@ from TrkDetDescrSvc.AtlasTrackingGeometrySvc import AtlasTrackingGeometrySvc from MuonRecExample.MuonRecFlags import muonRecFlags from AtlasGeoModel.MuonGMJobProperties import MuonGeometryFlags +from AthenaCommon.BeamFlags import jobproperties +beamFlags = jobproperties.Beam + #Offline calorimeter isolation tool #from TrackInCaloTools import TrackInCaloTools #TMEFTrackInCaloTools = TrackInCaloTools.TrackInCaloTools(name='MuonIsoTrackInCaloTools') @@ -345,6 +348,8 @@ def TMEF_MuonCombinedFitTagTool(name="TMEF_MuonCombinedFitTagTool",**kwargs): def TMEF_MuonCandidateTool(name="TMEF_MuonCandidateTool",**kwargs): kwargs.setdefault("TrackBuilder","TMEF_CombinedMuonTrackBuilder") + if beamFlags.beamType() == 'cosmics': + kwargs.setdefault("TrackExtrapolationTool", CfgGetter.getPublicTool("ExtrapolateMuonToIPTool")) return CfgMgr.MuonCombined__MuonCandidateTool(name,**kwargs) def TrigMuonAmbiProcessor(name="TrigMuonAmbiProcessor",**kwargs) : diff --git a/Trigger/TrigAlgorithms/TrigmuComb/python/TrigmuCombConfig.py b/Trigger/TrigAlgorithms/TrigmuComb/python/TrigmuCombConfig.py index 378340b25f3cc58fd33d5dd1870964c6e6834127..d4db9d3d766f2ece783ac905d06a439769a42093 100755 --- a/Trigger/TrigAlgorithms/TrigmuComb/python/TrigmuCombConfig.py +++ b/Trigger/TrigAlgorithms/TrigmuComb/python/TrigmuCombConfig.py @@ -1,4 +1,4 @@ -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration from TrigmuComb.TrigmuCombConf import * from TrigmuComb.TrigmuCombMonitoring import * @@ -7,14 +7,7 @@ from AthenaCommon.GlobalFlags import globalflags from AthenaCommon.AppMgr import ServiceMgr from TrigTimeMonitor.TrigTimeHistToolConfig import TrigTimeHistToolConfig from MuonByteStream.MuonByteStreamFlags import muonByteStreamFlags -#from TrigMuonBackExtrapolator.TrigMuonBackExtrapolatorConfig import * from AthenaCommon.AppMgr import ToolSvc -#from CombinedMuonRefit.CombinedMuonRefitConf import ExtrapolateMuonToIPTool - -#ToolSvc += MuonBackExtrapolatorForAlignedDet() -#ToolSvc += MuonBackExtrapolatorForMisalignedDet() -#ToolSvc += MuonBackExtrapolatorForData() -#ToolSvc += ExtrapolateMuonToIPTool() class TrigmuCombConfig (muComb):