diff --git a/Trigger/TrigHypothesis/TrigBjetHypo/src/TrigBjetBtagHypoAlgMT.cxx b/Trigger/TrigHypothesis/TrigBjetHypo/src/TrigBjetBtagHypoAlgMT.cxx index ad1cd899055d16160254e4c7ea87265e41424deb..b483c121d2fcd801b0dc452983080ec0f1ea646f 100644 --- a/Trigger/TrigHypothesis/TrigBjetHypo/src/TrigBjetBtagHypoAlgMT.cxx +++ b/Trigger/TrigHypothesis/TrigBjetHypo/src/TrigBjetBtagHypoAlgMT.cxx @@ -310,61 +310,123 @@ StatusCode TrigBjetBtagHypoAlgMT::monitor_primary_vertex( const ElementLink< xAO } +ElementLinkVector<xAOD::BTaggingContainer> TrigBjetBtagHypoAlgMT::collect_valid_links( + const ElementLinkVector< xAOD::BTaggingContainer >& bTaggingEL, std::string tagger ) const { + + ElementLinkVector<xAOD::BTaggingContainer> valid_bTaggingEL; + for (const ElementLink< xAOD::BTaggingContainer >& bTagLink : bTaggingEL) { + if ( not (*bTagLink)->auxdata<char>(tagger+"_isDefaults") ) { valid_bTaggingEL.push_back( bTagLink ); } + } + return valid_bTaggingEL; +} + + StatusCode TrigBjetBtagHypoAlgMT::monitor_btagging( const ElementLinkVector< xAOD::BTaggingContainer >& bTaggingEL ) const { - // Monitor flavor probabilites - CHECK( monitor_flavor_probabilities(bTaggingEL, "IP2D") ); - CHECK( monitor_flavor_probabilities(bTaggingEL, "IP3D") ); + // Monitor high-level tagger flavor probabilites CHECK( monitor_flavor_probabilities(bTaggingEL, "DL1r") ); CHECK( monitor_flavor_probabilities(bTaggingEL, "rnnip") ); - MONITOR_BTAG_AUX_VAR(JetFitter_N2Tpair, int, bTaggingEL); - MONITOR_BTAG_AUX_VAR(JetFitter_nVTX, int, bTaggingEL); - MONITOR_BTAG_AUX_VAR(JetFitter_nSingleTracks, int, bTaggingEL); - MONITOR_BTAG_AUX_VAR(JetFitter_nTracksAtVtx, int, bTaggingEL); - MONITOR_BTAG_AUX_VAR(JetFitter_mass, float, bTaggingEL); - MONITOR_BTAG_AUX_VAR(JetFitter_energyFraction, float, bTaggingEL); - MONITOR_BTAG_AUX_VAR(JetFitter_significance3d, float, bTaggingEL); - MONITOR_BTAG_AUX_VAR(JetFitter_deltaeta, float, bTaggingEL); - MONITOR_BTAG_AUX_VAR(JetFitter_deltaphi, float, bTaggingEL); + // Monitor JetFitter MONITOR_BTAG_AUX_VAR(JetFitter_isDefaults, char, bTaggingEL); - MONITOR_BTAG_AUX_VAR(JetFitter_deltaR, float, bTaggingEL); + auto validJetFitter_bTaggingEL = collect_valid_links(bTaggingEL, "JetFitter"); + MONITOR_BTAG_AUX_VAR(JetFitter_N2Tpair, int, validJetFitter_bTaggingEL); + MONITOR_BTAG_AUX_VAR(JetFitter_nVTX, int, validJetFitter_bTaggingEL); + MONITOR_BTAG_AUX_VAR(JetFitter_nSingleTracks, int, validJetFitter_bTaggingEL); + MONITOR_BTAG_AUX_VAR(JetFitter_nTracksAtVtx, int, validJetFitter_bTaggingEL); + MONITOR_BTAG_AUX_VAR(JetFitter_mass, float, validJetFitter_bTaggingEL); + MONITOR_BTAG_AUX_VAR(JetFitter_energyFraction, float, validJetFitter_bTaggingEL); + MONITOR_BTAG_AUX_VAR(JetFitter_significance3d, float, validJetFitter_bTaggingEL); + MONITOR_BTAG_AUX_VAR(JetFitter_deltaeta, float, validJetFitter_bTaggingEL); + MONITOR_BTAG_AUX_VAR(JetFitter_deltaphi, float, validJetFitter_bTaggingEL); + MONITOR_BTAG_AUX_VAR(JetFitter_deltaR, float, validJetFitter_bTaggingEL); + auto monitor_group_for_JetFitter = Monitored::Group( m_monTool, + monitor_for_JetFitter_N2Tpair, monitor_for_JetFitter_nVTX, + monitor_for_JetFitter_nSingleTracks, monitor_for_JetFitter_nTracksAtVtx, + monitor_for_JetFitter_mass, monitor_for_JetFitter_energyFraction, + monitor_for_JetFitter_significance3d, monitor_for_JetFitter_deltaeta, + monitor_for_JetFitter_deltaphi, monitor_for_JetFitter_deltaR + ); - MONITOR_BTAG_AUX_VAR(SV1_NGTinSvx, int, bTaggingEL); - MONITOR_BTAG_AUX_VAR(SV1_masssvx, float, bTaggingEL); + // Monitor SV1 MONITOR_BTAG_AUX_VAR(SV1_isDefaults, char, bTaggingEL); - MONITOR_BTAG_AUX_VAR(SV1_N2Tpair, int, bTaggingEL); - MONITOR_BTAG_AUX_VAR(SV1_efracsvx, float, bTaggingEL); - MONITOR_BTAG_AUX_VAR(SV1_deltaR, float, bTaggingEL); - MONITOR_BTAG_AUX_VAR(SV1_Lxy, float, bTaggingEL); - MONITOR_BTAG_AUX_VAR(SV1_L3d, float, bTaggingEL); - MONITOR_BTAG_AUX_VAR(SV1_significance3d, float, bTaggingEL); + auto validSV1_bTaggingEL = collect_valid_links(bTaggingEL, "SV1"); + MONITOR_BTAG_AUX_VAR(SV1_NGTinSvx, int, validSV1_bTaggingEL); + MONITOR_BTAG_AUX_VAR(SV1_masssvx, float, validSV1_bTaggingEL); + MONITOR_BTAG_AUX_VAR(SV1_N2Tpair, int, validSV1_bTaggingEL); + MONITOR_BTAG_AUX_VAR(SV1_efracsvx, float, validSV1_bTaggingEL); + MONITOR_BTAG_AUX_VAR(SV1_deltaR, float, validSV1_bTaggingEL); + MONITOR_BTAG_AUX_VAR(SV1_Lxy, float, validSV1_bTaggingEL); + MONITOR_BTAG_AUX_VAR(SV1_L3d, float, validSV1_bTaggingEL); + MONITOR_BTAG_AUX_VAR(SV1_significance3d, float, validSV1_bTaggingEL); + auto monitor_group_for_SV1 = Monitored::Group( m_monTool, + monitor_for_SV1_NGTinSvx, monitor_for_SV1_masssvx, + monitor_for_SV1_N2Tpair, monitor_for_SV1_efracsvx, + monitor_for_SV1_deltaR, monitor_for_SV1_Lxy, + monitor_for_SV1_L3d, monitor_for_SV1_significance3d + ); + // Monitor IP2D MONITOR_BTAG_AUX_VAR(IP2D_isDefaults, char, bTaggingEL); - MONITOR_BTAG_AUX_VAR(IP2D_bu, double, bTaggingEL); - MONITOR_BTAG_AUX_VAR(IP2D_bc, double, bTaggingEL); - MONITOR_BTAG_AUX_VAR(IP2D_cu, double, bTaggingEL); + auto validIP2D_bTaggingEL = collect_valid_links(bTaggingEL, "IP2D"); + CHECK( monitor_flavor_probabilities(validIP2D_bTaggingEL, "IP2D") ); + MONITOR_BTAG_AUX_VAR(IP2D_bu, double, validIP2D_bTaggingEL); + MONITOR_BTAG_AUX_VAR(IP2D_bc, double, validIP2D_bTaggingEL); + MONITOR_BTAG_AUX_VAR(IP2D_cu, double, validIP2D_bTaggingEL); + auto monitor_group_for_IP2D = Monitored::Group( m_monTool, + monitor_for_IP2D_bu, monitor_for_IP2D_bc, monitor_for_IP2D_cu + ); + + // Monitor IP3D MONITOR_BTAG_AUX_VAR(IP3D_isDefaults, char, bTaggingEL); - MONITOR_BTAG_AUX_VAR(IP3D_bu, double, bTaggingEL); - MONITOR_BTAG_AUX_VAR(IP3D_bc, double, bTaggingEL); - MONITOR_BTAG_AUX_VAR(IP3D_cu, double, bTaggingEL); + auto validIP3D_bTaggingEL = collect_valid_links(bTaggingEL, "IP3D"); + CHECK( monitor_flavor_probabilities(validIP3D_bTaggingEL, "IP3D") ); + MONITOR_BTAG_AUX_VAR(IP3D_bu, double, validIP3D_bTaggingEL); + MONITOR_BTAG_AUX_VAR(IP3D_bc, double, validIP3D_bTaggingEL); + MONITOR_BTAG_AUX_VAR(IP3D_cu, double, validIP3D_bTaggingEL); + auto monitor_group_for_IP3D = Monitored::Group( m_monTool, + monitor_for_IP3D_bu, monitor_for_IP3D_bc, monitor_for_IP3D_cu + ); + for ( const ElementLink< xAOD::BTaggingContainer >& bTagLink : validIP3D_bTaggingEL ) { + MONITOR_BTAG_AUX_TRACK_VAR(IP3D_valD0wrtPVofTracks, float); + MONITOR_BTAG_AUX_TRACK_VAR(IP3D_sigD0wrtPVofTracks, float); + MONITOR_BTAG_AUX_TRACK_VAR(IP3D_valZ0wrtPVofTracks, float); + MONITOR_BTAG_AUX_TRACK_VAR(IP3D_sigZ0wrtPVofTracks, float); + + auto monitor_group_for_btag_track_vars = Monitored::Group( m_monTool, + monitor_for_IP3D_valD0wrtPVofTracks, monitor_for_IP3D_sigD0wrtPVofTracks, + monitor_for_IP3D_valZ0wrtPVofTracks, monitor_for_IP3D_sigZ0wrtPVofTracks + ); + } - MONITOR_BTAG_AUX_VAR(JetFitterSecondaryVertex_nTracks, int, bTaggingEL); + // Monitor JetFitterSecondaryVertex MONITOR_BTAG_AUX_VAR(JetFitterSecondaryVertex_isDefaults, char, bTaggingEL); - MONITOR_BTAG_AUX_VAR(JetFitterSecondaryVertex_mass, float, bTaggingEL); - MONITOR_BTAG_AUX_VAR(JetFitterSecondaryVertex_energy, float, bTaggingEL); - MONITOR_BTAG_AUX_VAR(JetFitterSecondaryVertex_energyFraction, float, bTaggingEL); - MONITOR_BTAG_AUX_VAR(JetFitterSecondaryVertex_displacement3d, float, bTaggingEL); - MONITOR_BTAG_AUX_VAR(JetFitterSecondaryVertex_displacement2d, float, bTaggingEL); - MONITOR_BTAG_AUX_VAR(JetFitterSecondaryVertex_maximumTrackRelativeEta, float, bTaggingEL); - MONITOR_BTAG_AUX_VAR(JetFitterSecondaryVertex_minimumTrackRelativeEta, float, bTaggingEL); - MONITOR_BTAG_AUX_VAR(JetFitterSecondaryVertex_averageTrackRelativeEta, float, bTaggingEL); + auto validJFSV_bTaggingEL = collect_valid_links(bTaggingEL, "JetFitterSecondaryVertex"); + MONITOR_BTAG_AUX_VAR(JetFitterSecondaryVertex_nTracks, int, validJFSV_bTaggingEL); + MONITOR_BTAG_AUX_VAR(JetFitterSecondaryVertex_mass, float, validJFSV_bTaggingEL); + MONITOR_BTAG_AUX_VAR(JetFitterSecondaryVertex_energy, float, validJFSV_bTaggingEL); + MONITOR_BTAG_AUX_VAR(JetFitterSecondaryVertex_energyFraction, float, validJFSV_bTaggingEL); + MONITOR_BTAG_AUX_VAR(JetFitterSecondaryVertex_displacement3d, float, validJFSV_bTaggingEL); + MONITOR_BTAG_AUX_VAR(JetFitterSecondaryVertex_displacement2d, float, validJFSV_bTaggingEL); + MONITOR_BTAG_AUX_VAR(JetFitterSecondaryVertex_maximumTrackRelativeEta, float, validJFSV_bTaggingEL); + MONITOR_BTAG_AUX_VAR(JetFitterSecondaryVertex_minimumTrackRelativeEta, float, validJFSV_bTaggingEL); + MONITOR_BTAG_AUX_VAR(JetFitterSecondaryVertex_averageTrackRelativeEta, float, validJFSV_bTaggingEL); + auto monitor_group_for_JFSV = Monitored::Group( m_monTool, + monitor_for_JetFitterSecondaryVertex_nTracks, + monitor_for_JetFitterSecondaryVertex_mass, + monitor_for_JetFitterSecondaryVertex_energy, + monitor_for_JetFitterSecondaryVertex_energyFraction, + monitor_for_JetFitterSecondaryVertex_displacement3d, + monitor_for_JetFitterSecondaryVertex_displacement2d, + monitor_for_JetFitterSecondaryVertex_maximumTrackRelativeEta, + monitor_for_JetFitterSecondaryVertex_minimumTrackRelativeEta, + monitor_for_JetFitterSecondaryVertex_averageTrackRelativeEta + ); + // Monitor general track information MONITOR_BTAG_AUX_VAR(maximumTrackRelativeEta, float, bTaggingEL); MONITOR_BTAG_AUX_VAR(minimumTrackRelativeEta, float, bTaggingEL); MONITOR_BTAG_AUX_VAR(averageTrackRelativeEta, float, bTaggingEL); - - // Monitor MV2c10 auto monitor_for_MV2c10 = Monitored::Collection( "btag_MV2c10", bTaggingEL, [](const ElementLink< xAOD::BTaggingContainer >& bTagLink) { @@ -374,64 +436,17 @@ StatusCode TrigBjetBtagHypoAlgMT::monitor_btagging( const ElementLinkVector< xAO } ); auto monitor_group_for_btagging = Monitored::Group( m_monTool, - monitor_for_JetFitter_N2Tpair, - monitor_for_JetFitter_nVTX, - monitor_for_JetFitter_nSingleTracks, - monitor_for_JetFitter_nTracksAtVtx, - monitor_for_JetFitter_mass, - monitor_for_JetFitter_energyFraction, - monitor_for_JetFitter_significance3d, - monitor_for_JetFitter_deltaeta, - monitor_for_JetFitter_deltaphi, monitor_for_JetFitter_isDefaults, - monitor_for_JetFitter_deltaR, - monitor_for_SV1_NGTinSvx, - monitor_for_SV1_masssvx, monitor_for_SV1_isDefaults, - monitor_for_SV1_N2Tpair, - monitor_for_SV1_efracsvx, - monitor_for_SV1_deltaR, - monitor_for_SV1_Lxy, - monitor_for_SV1_L3d, - monitor_for_SV1_significance3d, - monitor_for_IP2D_bu, monitor_for_IP2D_isDefaults, - monitor_for_IP2D_bc, - monitor_for_IP2D_cu, - monitor_for_IP3D_bu, monitor_for_IP3D_isDefaults, - monitor_for_IP3D_bc, - monitor_for_IP3D_cu, - monitor_for_JetFitterSecondaryVertex_nTracks, monitor_for_JetFitterSecondaryVertex_isDefaults, - monitor_for_JetFitterSecondaryVertex_mass, - monitor_for_JetFitterSecondaryVertex_energy, - monitor_for_JetFitterSecondaryVertex_energyFraction, - monitor_for_JetFitterSecondaryVertex_displacement3d, - monitor_for_JetFitterSecondaryVertex_displacement2d, - monitor_for_JetFitterSecondaryVertex_maximumTrackRelativeEta, - monitor_for_JetFitterSecondaryVertex_minimumTrackRelativeEta, - monitor_for_JetFitterSecondaryVertex_averageTrackRelativeEta, monitor_for_maximumTrackRelativeEta, monitor_for_minimumTrackRelativeEta, monitor_for_averageTrackRelativeEta, monitor_for_MV2c10 ); - - for ( const ElementLink< xAOD::BTaggingContainer >& bTagLink : bTaggingEL ) { - MONITOR_BTAG_AUX_TRACK_VAR(IP3D_valD0wrtPVofTracks, float); - MONITOR_BTAG_AUX_TRACK_VAR(IP3D_sigD0wrtPVofTracks, float); - MONITOR_BTAG_AUX_TRACK_VAR(IP3D_valZ0wrtPVofTracks, float); - MONITOR_BTAG_AUX_TRACK_VAR(IP3D_sigZ0wrtPVofTracks, float); - - auto monitor_group_for_btag_track_vars = Monitored::Group( m_monTool, - monitor_for_IP3D_valD0wrtPVofTracks, monitor_for_IP3D_sigD0wrtPVofTracks, - monitor_for_IP3D_valZ0wrtPVofTracks, monitor_for_IP3D_sigZ0wrtPVofTracks - ); - } - - return StatusCode::SUCCESS; } diff --git a/Trigger/TrigHypothesis/TrigBjetHypo/src/TrigBjetBtagHypoAlgMT.h b/Trigger/TrigHypothesis/TrigBjetHypo/src/TrigBjetBtagHypoAlgMT.h index 9b04198988673009c09e50d41d5e3c3f9ace8599..1991581b6a04f6584e36c389cd92c9eaa5746460 100644 --- a/Trigger/TrigHypothesis/TrigBjetHypo/src/TrigBjetBtagHypoAlgMT.h +++ b/Trigger/TrigHypothesis/TrigBjetHypo/src/TrigBjetBtagHypoAlgMT.h @@ -51,6 +51,8 @@ class TrigBjetBtagHypoAlgMT : public TrigBjetHypoAlgBaseMT { virtual StatusCode monitor_tracks( const ElementLinkVector< xAOD::TrackParticleContainer >& trackELs ) const; virtual StatusCode monitor_primary_vertex( const ElementLink< xAOD::VertexContainer >& primVertexEL ) const; virtual StatusCode monitor_flavor_probabilities( const ElementLinkVector< xAOD::BTaggingContainer >& bTaggingEL, const std::string& var_name) const; + virtual ElementLinkVector<xAOD::BTaggingContainer> collect_valid_links( + const ElementLinkVector< xAOD::BTaggingContainer >& bTaggingEL, std::string tagger ) const; virtual StatusCode monitor_btagging( const ElementLinkVector< xAOD::BTaggingContainer >& bTaggingEL ) const; private: