From f4dcd3dd3841cdbca4ad6cfb45eda0becfebe18e Mon Sep 17 00:00:00 2001 From: thitchin <thomas.glyn.hitchings@cern.ch> Date: Tue, 11 Jan 2022 17:26:09 +0100 Subject: [PATCH] foundTruth fix --- .../src/AnalysisConfig_Ntuple.cxx | 11 ++++++++-- .../TrigInDetAnalysisUtils/T_AnalysisConfig.h | 21 +++++++++++++++++++ 2 files changed, 30 insertions(+), 2 deletions(-) diff --git a/Trigger/TrigAnalysis/TrigInDetAnalysisExample/src/AnalysisConfig_Ntuple.cxx b/Trigger/TrigAnalysis/TrigInDetAnalysisExample/src/AnalysisConfig_Ntuple.cxx index 4464e618084e..f38f7741095e 100644 --- a/Trigger/TrigAnalysis/TrigInDetAnalysisExample/src/AnalysisConfig_Ntuple.cxx +++ b/Trigger/TrigAnalysis/TrigInDetAnalysisExample/src/AnalysisConfig_Ntuple.cxx @@ -573,6 +573,8 @@ void AnalysisConfig_Ntuple::loop() { selectorTruth.clear(); + static bool emptyContainerWarningGiven = false; // if container contains no events only print warning for first event + m_provider->msg(MSG::INFO) << "MC Truth flag " << m_mcTruth << endmsg; const TrigInDetTrackTruthMap* truthMap = 0; bool foundTruth = false; @@ -593,8 +595,13 @@ void AnalysisConfig_Ntuple::loop() { } else if (m_provider->evtStore()->contains<TruthParticleContainer>("SpclMC")) { /// AOD - selectTracks<TruthParticleContainer>( &selectorTruth, "SpclMC"); - foundTruth = true; + if (selectTracksNotEmpty<TruthParticleContainer>( &selectorTruth, "SpclMC")) { // added for muon sample bug + foundTruth = true; + m_provider->msg(MSG::DEBUG) << "SpclMC" << endmsg; + } else if (!emptyContainerWarningGiven) { + emptyContainerWarningGiven = true; + m_provider->msg(MSG::WARNING) << "SpclMC Container empty" << endmsg; + } } else if (m_provider->evtStore()->contains<TruthParticleContainer>("")) { /// anything else? diff --git a/Trigger/TrigAnalysis/TrigInDetAnalysisUtils/TrigInDetAnalysisUtils/T_AnalysisConfig.h b/Trigger/TrigAnalysis/TrigInDetAnalysisUtils/TrigInDetAnalysisUtils/T_AnalysisConfig.h index d7ce721f511e..69babd59d451 100644 --- a/Trigger/TrigAnalysis/TrigInDetAnalysisUtils/TrigInDetAnalysisUtils/T_AnalysisConfig.h +++ b/Trigger/TrigAnalysis/TrigInDetAnalysisUtils/TrigInDetAnalysisUtils/T_AnalysisConfig.h @@ -595,6 +595,27 @@ protected: + template<class Collection> + bool selectTracksNotEmpty( TrigTrackSelector* selector, const std::string& key ) { + const Collection* collection = nullptr; + if ( key.empty() ) return false; + if ( !m_provider->evtStore()->template contains<Collection>( key ) ) return false; + + StatusCode sc = m_provider->evtStore()->retrieve( collection, key ); + m_provider->msg(MSG::DEBUG) << "SG Collection->size() " << collection->size() << " (" << key << ")" << endmsg; + + if ( !( sc.isSuccess() && collection ) ) return false; + + // added to fix muon samples bug + if ( collection->size() == 0 ) { + m_provider->msg(MSG::WARNING) << "no particles in collection" << endmsg; + return false; + } + + selector->selectTracks( collection ); + return true; + } + -- GitLab