From c0bec59918555675a77a2714fb81464dfd0767b0 Mon Sep 17 00:00:00 2001 From: Peter Onyisi <ponyisi@utexas.edu> Date: Sat, 14 Nov 2020 19:20:40 +0100 Subject: [PATCH] Declare HighLevelBTag decorations for AthenaMT monitoring scheduling --- .../BTagAugmenterTool.h | 2 ++ .../BTagMuonAugmenter.h | 1 + .../BTagMuonAugmenterTool.h | 2 ++ .../FlavorTagDiscriminants/DL2Tool.h | 2 ++ .../ISingleJetDecorator.h | 2 ++ .../Root/BTagAugmenterTool.cxx | 5 ++++ .../Root/BTagMuonAugmenter.cxx | 25 +++++++++++++++++++ .../Root/BTagMuonAugmenterTool.cxx | 4 +++ .../FlavorTagDiscriminants/Root/DL2Tool.cxx | 4 +++ .../BTagging/BTagging/HighLevelBTagAlg.h | 1 + .../BTagging/src/HighLevelBTagAlg.cxx | 8 ++++++ .../src/JetTagMonitorAlgorithm.cxx | 24 ++++++++++++++++-- .../src/JetTagMonitorAlgorithm.h | 2 ++ 13 files changed, 80 insertions(+), 2 deletions(-) diff --git a/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/FlavorTagDiscriminants/BTagAugmenterTool.h b/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/FlavorTagDiscriminants/BTagAugmenterTool.h index 2dccea71731..9539b074c43 100644 --- a/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/FlavorTagDiscriminants/BTagAugmenterTool.h +++ b/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/FlavorTagDiscriminants/BTagAugmenterTool.h @@ -24,6 +24,8 @@ namespace FlavorTagDiscriminants { StatusCode initialize() override; virtual void decorate(const xAOD::Jet& jet) const override; + + virtual std::set<std::string> getDecoratorKeys() const override; private: std::string m_flipTagConfig; std::unique_ptr<BTagJetAugmenter> m_aug; //! diff --git a/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/FlavorTagDiscriminants/BTagMuonAugmenter.h b/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/FlavorTagDiscriminants/BTagMuonAugmenter.h index fe60ee7d813..e52024bf1aa 100644 --- a/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/FlavorTagDiscriminants/BTagMuonAugmenter.h +++ b/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/FlavorTagDiscriminants/BTagMuonAugmenter.h @@ -29,6 +29,7 @@ namespace FlavorTagDiscriminants { ~BTagMuonAugmenter(); BTagMuonAugmenter(BTagMuonAugmenter&&); void augment(const xAOD::Jet& jet) const; + std::set<std::string> getDecoratorKeys() const; private: // You'll probably have to add some accessors here BTagTrackIpAccessor m_btag_track_aug; diff --git a/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/FlavorTagDiscriminants/BTagMuonAugmenterTool.h b/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/FlavorTagDiscriminants/BTagMuonAugmenterTool.h index 3ac936f4d8a..b31a8a74c0e 100644 --- a/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/FlavorTagDiscriminants/BTagMuonAugmenterTool.h +++ b/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/FlavorTagDiscriminants/BTagMuonAugmenterTool.h @@ -24,6 +24,8 @@ namespace FlavorTagDiscriminants { // returns 0 for success virtual void decorate(const xAOD::Jet& jet) const override; + + virtual std::set<std::string> getDecoratorKeys() const override; private: std::unique_ptr<BTagMuonAugmenter> m_aug; std::string m_muonAssociationName; diff --git a/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/FlavorTagDiscriminants/DL2Tool.h b/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/FlavorTagDiscriminants/DL2Tool.h index ca12cdadd51..cbf746fefa3 100644 --- a/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/FlavorTagDiscriminants/DL2Tool.h +++ b/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/FlavorTagDiscriminants/DL2Tool.h @@ -29,6 +29,8 @@ namespace FlavorTagDiscriminants { // returns 0 for success virtual void decorate(const xAOD::Jet& jet) const override; + + virtual std::set<std::string> getDecoratorKeys() const override; private: DL2Properties m_props; //! std::unique_ptr<DL2HighLevel> m_dl2; //! diff --git a/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/FlavorTagDiscriminants/ISingleJetDecorator.h b/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/FlavorTagDiscriminants/ISingleJetDecorator.h index 2d13b4b32b5..a90885a9b44 100644 --- a/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/FlavorTagDiscriminants/ISingleJetDecorator.h +++ b/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/FlavorTagDiscriminants/ISingleJetDecorator.h @@ -20,6 +20,8 @@ public: /// Method to decorate a jet. virtual void decorate(const xAOD::Jet& jet) const = 0; + // Names of the decorations being added + virtual std::set<std::string> getDecoratorKeys() const = 0; }; diff --git a/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/Root/BTagAugmenterTool.cxx b/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/Root/BTagAugmenterTool.cxx index 5daf2dbcdad..ec0bea99966 100644 --- a/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/Root/BTagAugmenterTool.cxx +++ b/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/Root/BTagAugmenterTool.cxx @@ -27,4 +27,9 @@ namespace FlavorTagDiscriminants { m_aug->augment(jet); } + std::set<std::string> BTagAugmenterTool::getDecoratorKeys() const { + const auto keys{m_aug->getDecoratorKeys()}; + return std::set<std::string>(keys.begin(), keys.end()); + } + } diff --git a/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/Root/BTagMuonAugmenter.cxx b/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/Root/BTagMuonAugmenter.cxx index 81a2fb69963..1c20b56e699 100644 --- a/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/Root/BTagMuonAugmenter.cxx +++ b/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/Root/BTagMuonAugmenter.cxx @@ -163,4 +163,29 @@ namespace FlavorTagDiscriminants { } +std::set<std::string> BTagMuonAugmenter::getDecoratorKeys() const { + const auto& type_registry = SG::AuxTypeRegistry::instance(); + std::set<std::string> keys; + for (const auto& auxid: { + m_dec_muon_isDefaults.auxid(), + m_dec_muon_pt.auxid(), + m_dec_muon_dR.auxid(), + m_dec_muon_eta.auxid(), + m_dec_muon_phi.auxid(), + m_dec_muon_qOverPratio.auxid(), + m_dec_muon_mombalsignif.auxid(), + m_dec_muon_scatneighsignif.auxid(), + m_dec_muon_pTrel.auxid(), + m_dec_muon_ip3d_d0.auxid(), + m_dec_muon_ip3d_z0.auxid(), + m_dec_muon_ip3d_d0_significance.auxid(), + m_dec_muon_ip3d_z0_significance.auxid(), + m_dec_muon_ip3d_sigma_d0.auxid(), + m_dec_muon_ip3d_sigma_z0.auxid(), + m_dec_muon_link.auxid()}) { + keys.insert(type_registry.getName(auxid)); + } + return keys; +} + } diff --git a/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/Root/BTagMuonAugmenterTool.cxx b/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/Root/BTagMuonAugmenterTool.cxx index 8616b719b49..0b1926fd919 100644 --- a/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/Root/BTagMuonAugmenterTool.cxx +++ b/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/Root/BTagMuonAugmenterTool.cxx @@ -31,4 +31,8 @@ namespace FlavorTagDiscriminants { m_aug->augment(jet); } + std::set<std::string> BTagMuonAugmenterTool::getDecoratorKeys() const { + return m_aug->getDecoratorKeys(); + } + } diff --git a/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/Root/DL2Tool.cxx b/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/Root/DL2Tool.cxx index 818ab6c1dc4..32f219f8a82 100644 --- a/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/Root/DL2Tool.cxx +++ b/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/Root/DL2Tool.cxx @@ -32,4 +32,8 @@ namespace FlavorTagDiscriminants { m_dl2->decorate(jet); } + std::set<std::string> DL2Tool::getDecoratorKeys() const { + return m_dl2->getDataDependencyNames().bTagOutputs; + } + } diff --git a/PhysicsAnalysis/JetTagging/JetTagAlgs/BTagging/BTagging/HighLevelBTagAlg.h b/PhysicsAnalysis/JetTagging/JetTagAlgs/BTagging/BTagging/HighLevelBTagAlg.h index eec3d81b75b..8c23a51e79b 100644 --- a/PhysicsAnalysis/JetTagging/JetTagAlgs/BTagging/BTagging/HighLevelBTagAlg.h +++ b/PhysicsAnalysis/JetTagging/JetTagAlgs/BTagging/BTagging/HighLevelBTagAlg.h @@ -55,6 +55,7 @@ namespace Analysis SG::ReadDecorHandleKey< xAOD::TrackParticleContainer > m_dec_track_pos {this, "trackDisplacement","trackDisplacement","trackDisplacement of tracks" }; SG::ReadDecorHandleKey< xAOD::TrackParticleContainer > m_dec_track_mom {this, "trackMomentum","trackMomentum","trackMomentum of tracks" }; + std::vector<std::unique_ptr<SG::WriteDecorHandleKey<xAOD::BTaggingContainer>>> m_outputKeys; }; // End class diff --git a/PhysicsAnalysis/JetTagging/JetTagAlgs/BTagging/src/HighLevelBTagAlg.cxx b/PhysicsAnalysis/JetTagging/JetTagAlgs/BTagging/src/HighLevelBTagAlg.cxx index 0f88f4e5737..9aca1b66364 100644 --- a/PhysicsAnalysis/JetTagging/JetTagAlgs/BTagging/src/HighLevelBTagAlg.cxx +++ b/PhysicsAnalysis/JetTagging/JetTagAlgs/BTagging/src/HighLevelBTagAlg.cxx @@ -61,6 +61,14 @@ namespace Analysis { CHECK( m_dec_track_pos.initialize() ); CHECK( m_dec_track_mom.initialize() ); + // create and initialize write handles + for (const std::string key: m_jetDecorator->getDecoratorKeys()) { + std::string full_key = m_BTagCollectionName.key() + "." + key; + ATH_MSG_DEBUG("Adding " << full_key); + m_outputKeys.emplace_back(std::make_unique<SG::WriteDecorHandleKey<xAOD::BTaggingContainer>>(this, key, full_key, "")); + ATH_MSG_DEBUG("Initializing " << full_key); + ATH_CHECK(m_outputKeys.back()->initialize()); + } return StatusCode::SUCCESS; } diff --git a/PhysicsAnalysis/JetTagging/JetTagMonitoring/src/JetTagMonitorAlgorithm.cxx b/PhysicsAnalysis/JetTagging/JetTagMonitoring/src/JetTagMonitorAlgorithm.cxx index bffb1d02ae0..e1b1bd77bfd 100755 --- a/PhysicsAnalysis/JetTagging/JetTagMonitoring/src/JetTagMonitorAlgorithm.cxx +++ b/PhysicsAnalysis/JetTagging/JetTagMonitoring/src/JetTagMonitorAlgorithm.cxx @@ -80,6 +80,7 @@ JetTagMonitorAlgorithm::~JetTagMonitorAlgorithm() {} StatusCode JetTagMonitorAlgorithm::initialize() { + ATH_CHECK(AthMonitorAlgorithm::initialize()); ATH_CHECK(m_jetContainerKey.initialize()); ATH_CHECK(m_muonContainerKey.initialize()); ATH_CHECK(m_electronContainerKey.initialize()); @@ -87,7 +88,24 @@ StatusCode JetTagMonitorAlgorithm::initialize() { ATH_CHECK(m_vertContainerKey.initialize()); ATH_CHECK(m_trackContainerKey.initialize()); - return AthMonitorAlgorithm::initialize(); + if (m_btagLinkKey.empty()) { + m_btagLinkKey = m_jetContainerKey.key() + ".btaggingLink"; + } + ATH_CHECK(m_btagLinkKey.initialize()); + + if (m_btagResultKey.empty()) { + if (m_mv_algorithmName=="DL1" || m_mv_algorithmName=="DL1r" || m_mv_algorithmName=="DL1rnn") { + std::string rawJetContainerName = m_jetContainerKey.key(); + const size_t jetStringItr = rawJetContainerName.find("Jets"); + if (jetStringItr != std::string::npos) { + rawJetContainerName = rawJetContainerName.replace(jetStringItr, std::string::npos, ""); + } + m_btagResultKey = "BTagging_" + rawJetContainerName + "." + m_mv_algorithmName + "_pb"; + } + } + ATH_CHECK(m_btagResultKey.initialize(SG::AllowEmpty)); + + return StatusCode::SUCCESS; } @@ -745,7 +763,9 @@ double JetTagMonitorAlgorithm::getMVweight(const xAOD::Jet *jet) const { bTaggingObject->pc(m_mv_algorithmName,mv_pc); bTaggingObject->pb(m_mv_algorithmName,mv_pb); //DL1* formula (standard) - mv = log( mv_pb / ( mv_pu * ( 1 - m_mv_cFraction ) + mv_pc * m_mv_cFraction ) ); + if ( mv_pb != 0 && (mv_pu != 0 || mv_pc || 0)) { + mv = log( mv_pb / ( mv_pu * ( 1 - m_mv_cFraction ) + mv_pc * m_mv_cFraction ) ); + } //DL1*c formula (for DL1c) //mv = log( mv_pb / ( mv_pu * ( 1 - m_mv_bFraction ) + mv_pc * m_mv_bFraction ) ); } diff --git a/PhysicsAnalysis/JetTagging/JetTagMonitoring/src/JetTagMonitorAlgorithm.h b/PhysicsAnalysis/JetTagging/JetTagMonitoring/src/JetTagMonitorAlgorithm.h index 9864bd41640..d8e8ea76969 100755 --- a/PhysicsAnalysis/JetTagging/JetTagMonitoring/src/JetTagMonitorAlgorithm.h +++ b/PhysicsAnalysis/JetTagging/JetTagMonitoring/src/JetTagMonitorAlgorithm.h @@ -42,6 +42,8 @@ class JetTagMonitorAlgorithm : public AthMonitorAlgorithm { SG::ReadHandleKey<xAOD::JetContainer> m_jetContainerKey; SG::ReadHandleKey<xAOD::MuonContainer> m_muonContainerKey; SG::ReadHandleKey<xAOD::ElectronContainer> m_electronContainerKey; + SG::ReadDecorHandleKey<xAOD::JetContainer> m_btagLinkKey{this,"BTagLinkKey","","RDHK for btag links"}; + SG::ReadDecorHandleKey<xAOD::BTaggingContainer> m_btagResultKey{this,"BTagResultKey","","RDHK for monitored BTag variables"}; bool m_skipJetFilter; //true for HI/HI-p collisions, false for pp collisions std::string m_trackParticleName; -- GitLab