diff --git a/MuonSpectrometer/MuonValidation/MuonDQA/MuonTrackMonitoring/CMakeLists.txt b/MuonSpectrometer/MuonValidation/MuonDQA/MuonTrackMonitoring/CMakeLists.txt index 788cdaa1d065027272466aa76e2e39413965efc3..dd595bcefd8c62fc6700fdf9b941517a77066d6c 100644 --- a/MuonSpectrometer/MuonValidation/MuonDQA/MuonTrackMonitoring/CMakeLists.txt +++ b/MuonSpectrometer/MuonValidation/MuonDQA/MuonTrackMonitoring/CMakeLists.txt @@ -45,6 +45,5 @@ atlas_add_component( MuonTrackMonitoring LINK_LIBRARIES ${ROOT_LIBRARIES} ${EIGEN_LIBRARIES} AthenaMonitoringLib StoreGateLib SGtests GeoPrimitives EventPrimitives FourMomUtils xAODEventInfo xAODMuon xAODTracking GaudiKernel MuonIdHelpersLib MuonPrepRawData MuonRecHelperToolsLib MuonRecToolInterfaces MuonHistUtils MuonResonanceToolsLib MuonSelectorToolsLib TrkEventPrimitives TrkParameters TrkTrack TrkToolInterfaces TrkValHistUtils TrigConfL1Data TrkMeasurementBase TrkMultiComponentStateOnSurface ) # Install files from the package: -atlas_install_headers( MuonTrackMonitoring ) atlas_install_python_modules( python/*.py ) diff --git a/MuonSpectrometer/MuonValidation/MuonDQA/MuonTrackMonitoring/python/MuonTrackMonitorAlgorithm.py b/MuonSpectrometer/MuonValidation/MuonDQA/MuonTrackMonitoring/python/MuonTrackMonitorAlgorithm.py index 86c8791e77ff8c643d005bae86b0ebcd715f7cb1..17a556f53384d59e7ad59a9381badecf759662ca 100644 --- a/MuonSpectrometer/MuonValidation/MuonDQA/MuonTrackMonitoring/python/MuonTrackMonitorAlgorithm.py +++ b/MuonSpectrometer/MuonValidation/MuonDQA/MuonTrackMonitoring/python/MuonTrackMonitorAlgorithm.py @@ -16,7 +16,7 @@ def MuonTrackConfig(inputFlags, isOld=False): helper = AthMonitorCfgHelper(inputFlags, "MuonTrackMonitoringConfig") - muonTrackAlg = helper.addAlgorithm(MuonTrackMonitorAlgorithm, "MuonTrackMonitorAlgorithmAlg") + muonTrackAlg = helper.addAlgorithm(MuonTrackMonitorAlgorithm, "MuonTrackMonitorAlgorithm") myGroup = helper.addGroup(muonTrackAlg, "MuonTrackMonitorAlgorithm", "MuonPhysics/") diff --git a/MuonSpectrometer/MuonValidation/MuonDQA/MuonTrackMonitoring/src/MuonTrackMonitorAlgorithm.cxx b/MuonSpectrometer/MuonValidation/MuonDQA/MuonTrackMonitoring/src/MuonTrackMonitorAlgorithm.cxx index a3d50de4a89eeb792c9021cac919858303768ca4..90589d86d63a2a347f5d42511cc8627a5de3642e 100644 --- a/MuonSpectrometer/MuonValidation/MuonDQA/MuonTrackMonitoring/src/MuonTrackMonitorAlgorithm.cxx +++ b/MuonSpectrometer/MuonValidation/MuonDQA/MuonTrackMonitoring/src/MuonTrackMonitorAlgorithm.cxx @@ -3,7 +3,7 @@ 2020 Matthias Schott - Uni Mainz */ -#include "MuonTrackMonitoring/MuonTrackMonitorAlgorithm.h" +#include "MuonTrackMonitorAlgorithm.h" MuonTrackMonitorAlgorithm::MuonTrackMonitorAlgorithm (const std::string& name, ISvcLocator* pSvcLocator) :AthMonitorAlgorithm(name,pSvcLocator){} @@ -11,8 +11,9 @@ MuonTrackMonitorAlgorithm::MuonTrackMonitorAlgorithm (const std::string& name, I StatusCode MuonTrackMonitorAlgorithm::initialize() { + ATH_CHECK(AthMonitorAlgorithm::initialize()); ATH_CHECK(m_MuonContainerKey.initialize()); - return AthMonitorAlgorithm::initialize(); + return StatusCode::SUCCESS; } StatusCode MuonTrackMonitorAlgorithm::FillMuonInformation(std::string sIdentifier, std::vector<const xAOD::Muon*> &vecMuons) const @@ -103,7 +104,7 @@ StatusCode MuonTrackMonitorAlgorithm::FillMuonInformation(std::string sIdentifie } //======================================================================================================== -StatusCode MuonTrackMonitorAlgorithm::analyseLowLevelMuonFeatures(const xAOD::MuonContainer* Muons, int lumiBlockID) const +StatusCode MuonTrackMonitorAlgorithm::analyseLowLevelMuonFeatures(const xAOD::MuonContainer& Muons, uint32_t lumiBlockID) const { using namespace Monitored; /// Declaring all variables that are initialized via Python will be plotted @@ -125,7 +126,7 @@ StatusCode MuonTrackMonitorAlgorithm::analyseLowLevelMuonFeatures(const xAOD::Mu auto MSLumiBlockNumberOfSegments = Monitored::Scalar<float>("MSLumiBlockNumberOfSegments", 0); /// Loop over all muons - for(const auto& muon : *Muons) { + for(const auto& muon : Muons) { xAOD::Muon::Quality muonQuality = muon->quality(); xAOD::Muon::MuonType muonType = muon->muonType(); xAOD::Muon::Author muonAuthor = muon->author(); @@ -171,7 +172,7 @@ StatusCode MuonTrackMonitorAlgorithm::analyseLowLevelMuonFeatures(const xAOD::Mu //======================================================================================================== -StatusCode MuonTrackMonitorAlgorithm::analyseCombinedTracks(const xAOD::MuonContainer* Muons, int lumiBlockID) const { +StatusCode MuonTrackMonitorAlgorithm::analyseCombinedTracks(const xAOD::MuonContainer& Muons, uint32_t lumiBlockID) const { using namespace Monitored; /// Declaring all variables that are initialized via Python will be plotted @@ -188,7 +189,7 @@ StatusCode MuonTrackMonitorAlgorithm::analyseCombinedTracks(const xAOD::MuonCont std::vector<const xAOD::Muon*> vecCombinedMuonsHighPT; std::vector<const xAOD::Muon*> vecCombinedMuons; - for(const auto& muon : *Muons) { + for(const auto& muon : Muons) { xAOD::Muon::MuonType muonType = muon->muonType(); if (muonType==xAOD::Muon::Combined) { CBMuonLumiBlock = lumiBlockID; @@ -222,7 +223,7 @@ StatusCode MuonTrackMonitorAlgorithm::analyseCombinedTracks(const xAOD::MuonCont bool isTriggered = false; for(const auto& chain : m_hltchainList){ - if(getTrigDecisionTool()->isPassed( chain ) ){ + if(!getTrigDecisionTool().empty() && getTrigDecisionTool()->isPassed( chain ) ){ isTriggered = true; } } @@ -239,7 +240,7 @@ StatusCode MuonTrackMonitorAlgorithm::analyseCombinedTracks(const xAOD::MuonCont //======================================================================================================== -StatusCode MuonTrackMonitorAlgorithm::analyseZBosonCandidates(const xAOD::MuonContainer* Muons, int lumiBlockID) const { +StatusCode MuonTrackMonitorAlgorithm::analyseZBosonCandidates(const xAOD::MuonContainer& Muons, uint32_t lumiBlockID) const { using namespace Monitored; /// Declaring all variables that are initialized via Python will be plotted @@ -257,7 +258,7 @@ StatusCode MuonTrackMonitorAlgorithm::analyseZBosonCandidates(const xAOD::MuonCo std::vector<const xAOD::Muon*> vecMuons_ZBoson_Candidates; /// Select Muons Relevant for Z - for(const auto& muon : *Muons) { + for(const auto& muon : Muons) { xAOD::Muon::MuonType muonType = muon->muonType(); if (muonType==xAOD::Muon::Combined) { const xAOD::TrackParticle *cbtp = nullptr; @@ -318,7 +319,7 @@ StatusCode MuonTrackMonitorAlgorithm::analyseZBosonCandidates(const xAOD::MuonCo //======================================================================================================== -StatusCode MuonTrackMonitorAlgorithm::analyseJPsiCandidates(const xAOD::MuonContainer* Muons, int lumiBlockID) const { +StatusCode MuonTrackMonitorAlgorithm::analyseJPsiCandidates(const xAOD::MuonContainer& Muons, uint32_t lumiBlockID) const { using namespace Monitored; /// Declaring all variables that are initialized via Python will be plotted @@ -336,7 +337,7 @@ StatusCode MuonTrackMonitorAlgorithm::analyseJPsiCandidates(const xAOD::MuonCont std::vector<const xAOD::Muon*> vecMuons_JPsi_Candidates; /// JPsi Muon Selection - for(const auto& muon : *Muons) { + for(const auto& muon : Muons) { xAOD::Muon::MuonType muonType = muon->muonType(); if (muonType==xAOD::Muon::Combined) { const xAOD::TrackParticle *cbtp = nullptr; @@ -401,20 +402,18 @@ StatusCode MuonTrackMonitorAlgorithm::fillHistograms(const EventContext& ctx) co using namespace Monitored; //Declare the quantities which should be monitored - auto run = Monitored::Scalar<int>("run", 0); - run = GetEventInfo(ctx)->runNumber(); - - const xAOD::EventInfo* eventInfo = nullptr; - ATH_CHECK(evtStore()->retrieve(eventInfo)); - int lumiBlockID = (int)eventInfo->lumiBlock(); + uint32_t lumiBlockID = GetEventInfo(ctx)->lumiBlock(); - const xAOD::MuonContainer* Muons = nullptr; - ATH_CHECK(evtStore()->retrieve(Muons, "Muons")); + SG::ReadHandle<xAOD::MuonContainer> Muons{m_MuonContainerKey, ctx}; + if (ATH_UNLIKELY(! Muons.isValid())) { + ATH_MSG_ERROR("Unable to retrieve muon container " << m_MuonContainerKey); + return StatusCode::FAILURE; + } - ATH_CHECK( analyseLowLevelMuonFeatures(Muons, lumiBlockID) ); - ATH_CHECK( analyseCombinedTracks(Muons, lumiBlockID) ); - ATH_CHECK( analyseZBosonCandidates(Muons, lumiBlockID) ); - ATH_CHECK( analyseJPsiCandidates(Muons, lumiBlockID) ); + ATH_CHECK( analyseLowLevelMuonFeatures(*Muons, lumiBlockID) ); + ATH_CHECK( analyseCombinedTracks(*Muons, lumiBlockID) ); + ATH_CHECK( analyseZBosonCandidates(*Muons, lumiBlockID) ); + ATH_CHECK( analyseJPsiCandidates(*Muons, lumiBlockID) ); return StatusCode::SUCCESS; } diff --git a/MuonSpectrometer/MuonValidation/MuonDQA/MuonTrackMonitoring/MuonTrackMonitoring/MuonTrackMonitorAlgorithm.h b/MuonSpectrometer/MuonValidation/MuonDQA/MuonTrackMonitoring/src/MuonTrackMonitorAlgorithm.h similarity index 91% rename from MuonSpectrometer/MuonValidation/MuonDQA/MuonTrackMonitoring/MuonTrackMonitoring/MuonTrackMonitorAlgorithm.h rename to MuonSpectrometer/MuonValidation/MuonDQA/MuonTrackMonitoring/src/MuonTrackMonitorAlgorithm.h index 2787d39214e1b6f78fbbc1605ba5da87e2ddaaca..95e056cdf1499f678035ea1cc44f10cceff650ea 100644 --- a/MuonSpectrometer/MuonValidation/MuonDQA/MuonTrackMonitoring/MuonTrackMonitoring/MuonTrackMonitorAlgorithm.h +++ b/MuonSpectrometer/MuonValidation/MuonDQA/MuonTrackMonitoring/src/MuonTrackMonitorAlgorithm.h @@ -37,16 +37,16 @@ class MuonTrackMonitorAlgorithm : public AthMonitorAlgorithm StatusCode FillMuonInformation(std::string sIdentifier, std::vector<const xAOD::Muon*> &vecMuons) const; /// Function to create performance plots for muon standalone tracks with some detailed informatiom - StatusCode analyseLowLevelMuonFeatures(const xAOD::MuonContainer* Muons, int lumiBlockID) const; + StatusCode analyseLowLevelMuonFeatures(const xAOD::MuonContainer& Muons, uint32_t lumiBlockID) const; /// Function to create performance plots for all combined muons - StatusCode analyseCombinedTracks(const xAOD::MuonContainer* Muons, int lumiBlockID) const; + StatusCode analyseCombinedTracks(const xAOD::MuonContainer& Muons, uint32_t lumiBlockID) const; /// Function to create performance plots for all combined muons that lead to a Z Boson Candidate event - StatusCode analyseZBosonCandidates(const xAOD::MuonContainer* Muons, int lumiBlockID) const; + StatusCode analyseZBosonCandidates(const xAOD::MuonContainer& Muons, uint32_t lumiBlockID) const; /// Function to create performance plots for all combined muons that lead to a JPsi Meson Candidate event - StatusCode analyseJPsiCandidates(const xAOD::MuonContainer* Muons, int lumiBlockID) const; + StatusCode analyseJPsiCandidates(const xAOD::MuonContainer& Muons, uint32_t lumiBlockID) const; Gaudi::Property< std::vector<std::string> > m_hltchainList{ this, "HLTTriggerList", {"HLT_2mu14", "HLT_mu26_ivarmedium"}, "High-level triggers used" }; diff --git a/MuonSpectrometer/MuonValidation/MuonDQA/MuonTrackMonitoring/src/components/MuonTrackMonitoring_entries.cxx b/MuonSpectrometer/MuonValidation/MuonDQA/MuonTrackMonitoring/src/components/MuonTrackMonitoring_entries.cxx index 725709de61b4f2b7b8ec97689c76b53a7b357e41..0d32f41b0e62f165d58d649f40d45f3989e57538 100644 --- a/MuonSpectrometer/MuonValidation/MuonDQA/MuonTrackMonitoring/src/components/MuonTrackMonitoring_entries.cxx +++ b/MuonSpectrometer/MuonValidation/MuonDQA/MuonTrackMonitoring/src/components/MuonTrackMonitoring_entries.cxx @@ -3,6 +3,6 @@ 2020 Matthias Schott - Uni Mainz */ -#include "MuonTrackMonitoring/MuonTrackMonitorAlgorithm.h" +#include "../MuonTrackMonitorAlgorithm.h" DECLARE_COMPONENT( MuonTrackMonitorAlgorithm )