Skip to content
Snippets Groups Projects
Commit 8f9ee323 authored by Frank Winklmeier's avatar Frank Winklmeier
Browse files

Merge branch 'master-dq-muontrackmonfixes' into 'master'

MuonTrackMonitoring: test if trigger tool is valid before using it

Closes ATLASRECTS-5510

See merge request atlas/athena!33132
parents 884a3313 cd666433
No related branches found
No related tags found
No related merge requests found
......@@ -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 )
......@@ -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/")
......
......@@ -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;
}
......@@ -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" };
......
......@@ -3,6 +3,6 @@
2020 Matthias Schott - Uni Mainz
*/
#include "MuonTrackMonitoring/MuonTrackMonitorAlgorithm.h"
#include "../MuonTrackMonitorAlgorithm.h"
DECLARE_COMPONENT( MuonTrackMonitorAlgorithm )
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment