diff --git a/Trigger/TrigSteer/DecisionHandling/src/ComboHypo.cxx b/Trigger/TrigSteer/DecisionHandling/src/ComboHypo.cxx index e8c12dba231d7449720a6e2dbf4e325230fbf07d..1c52ba93e2db06f795e5712ebde9c28e4141ed48 100644 --- a/Trigger/TrigSteer/DecisionHandling/src/ComboHypo.cxx +++ b/Trigger/TrigSteer/DecisionHandling/src/ComboHypo.cxx @@ -117,7 +117,8 @@ StatusCode ComboHypo::copyDecisions( const DecisionIDContainer& passing, const E return StatusCode::SUCCESS; } -void ComboHypo::fillDecisionsMap( std::vector< MultiplicityMap >& dmap, const EventContext& context) const { +void ComboHypo::fillDecisionsMap( std::vector< MultiplicityMap >& dmap, std::map<TrigCompositeUtils::DecisionID,std::map<int,int>>& featureMap, const EventContext& context) const { + for ( size_t i = 0; i < m_inputs.size(); ++i ) { auto inputHandle = SG::makeHandle( m_inputs.at(i), context ); if ( inputHandle.isValid() ) { @@ -128,6 +129,22 @@ void ComboHypo::fillDecisionsMap( std::vector< MultiplicityMap >& dmap, const E for ( DecisionID id: decisionIDs( decision ) ) { ATH_MSG_DEBUG( " +++ " << HLT::Identifier( id ) ); thisInputDmap[id] ++; + //Map features to make sure we are considering unique objects. decision->linkColKeys()[idx] + //is the feature collection's name-hash, which is unique per-RoI. Adding the object index + //allows to correctly identify different objects within the same RoI (example: EF muons) + //or different objects produced per event (example: MET) as being unique + auto features = decision->linkColNames(); + int idx=-1; + for(uint i=0; i<features.size(); i++){ + if(features[i]==featureString()){ + idx=i; + break; + } + } + if(idx>=0){ + featureMap[id][decision->linkColKeys()[idx]+decision->linkColIndices()[idx]] ++; + } + else ATH_MSG_DEBUG("Did not find "<<featureString()); } } dmap[i]= thisInputDmap; @@ -147,7 +164,7 @@ void ComboHypo::fillDecisionsMap( std::vector< MultiplicityMap >& dmap, const E ATH_MSG_DEBUG(" +++ " << HLT::Identifier( m.first ) <<" mult: "<<m.second); } i++; - } + } } StatusCode ComboHypo::execute(const EventContext& context ) const { @@ -158,14 +175,19 @@ StatusCode ComboHypo::execute(const EventContext& context ) const { // this map is filled with the count of positive decisions from each input std::vector< MultiplicityMap > dmap( m_inputs.size() ); - fillDecisionsMap( dmap, context ); + std::map<TrigCompositeUtils::DecisionID,std::map<int, int>> dmapFeatures; + uint nRequiredUnique; + fillDecisionsMap( dmap, dmapFeatures, context ); for ( auto m: m_multiplicitiesReqMap ) { + nRequiredUnique=0; const DecisionID requiredDecisionID = HLT::Identifier( m.first ).numeric(); bool overallDecision = true; for ( size_t inputContainerIndex = 0; inputContainerIndex < m.second.size(); ++inputContainerIndex ) { const int requiredMultiplicity = m.second[ inputContainerIndex ]; + nRequiredUnique += requiredMultiplicity; + //check each leg of the chain passes with required multiplicity const int observedMultiplicity = dmap[ inputContainerIndex ][ requiredDecisionID ]; ATH_MSG_DEBUG( "Required multiplicity " << requiredMultiplicity << " for chain " << m.first<< ": observed multiplicity " << observedMultiplicity << " in container " << inputContainerIndex ); if ( observedMultiplicity < requiredMultiplicity ) { @@ -173,6 +195,12 @@ StatusCode ComboHypo::execute(const EventContext& context ) const { break; } } + + //check that the multiplicity of unique features is high enough + ATH_MSG_DEBUG("Number of unique decisions: "<<(dmapFeatures[HLT::Identifier(m.first)]).size()<<", number of required unique decisions: "<<nRequiredUnique); + if((dmapFeatures[HLT::Identifier(m.first)]).size()<nRequiredUnique) overallDecision=false; + + //Overall chain decision ATH_MSG_DEBUG( "Chain " << m.first << ( overallDecision ? " is accepted" : " is rejected") ); if ( overallDecision == true ) { passing.insert( requiredDecisionID ); diff --git a/Trigger/TrigSteer/DecisionHandling/src/ComboHypo.h b/Trigger/TrigSteer/DecisionHandling/src/ComboHypo.h index 73879a2ce883a782d2d2eea1a73feba573e91583..d1049152811755317baaf7e9f9793da4a9559425 100644 --- a/Trigger/TrigSteer/DecisionHandling/src/ComboHypo.h +++ b/Trigger/TrigSteer/DecisionHandling/src/ComboHypo.h @@ -43,7 +43,8 @@ private: //!< iterates over all inputs filling the multiplicity map for each input collection typedef std::map<TrigCompositeUtils::DecisionID, int> MultiplicityMap; - void fillDecisionsMap( std::vector< MultiplicityMap >& dmap, const EventContext& context) const; + void fillDecisionsMap( std::vector< MultiplicityMap >& dmap, std::map<TrigCompositeUtils::DecisionID,std::map<int,int>>& featureMap, const EventContext& context) const; + }; #endif // DECISIONHANDLING_COMBOHYPO_H diff --git a/Trigger/TrigValidation/TrigAnalysisTest/share/q221_RDOtoRDOTrig_mt1_build.ref b/Trigger/TrigValidation/TrigAnalysisTest/share/q221_RDOtoRDOTrig_mt1_build.ref index e51838dd88b7c4ddd505ffafe61ca22a81576318..52dae6c7e22e2765e93e5e0ad6d6b71cf549ee86 100644 --- a/Trigger/TrigValidation/TrigAnalysisTest/share/q221_RDOtoRDOTrig_mt1_build.ref +++ b/Trigger/TrigValidation/TrigAnalysisTest/share/q221_RDOtoRDOTrig_mt1_build.ref @@ -46,8 +46,8 @@ TrigSignatureMoniMT INFO HLT_mu6_ivarmedium_L1MU6 TrigSignatureMoniMT INFO HLT_mu6_ivarmedium_L1MU6 decisions 14 13 16 16 4 TrigSignatureMoniMT INFO HLT_mu6_msonly_L1MU6 10 10 10 0 10 0 0 10 TrigSignatureMoniMT INFO HLT_mu6_msonly_L1MU6 decisions 14 0 17 0 0 -TrigSignatureMoniMT INFO HLT_mu6_mu4_L12MU4 4 4 4 4 4 4 0 4 -TrigSignatureMoniMT INFO HLT_mu6_mu4_L12MU4 decisions 24 22 32 30 0 +TrigSignatureMoniMT INFO HLT_mu6_mu4_L12MU4 4 4 4 4 4 4 0 3 +TrigSignatureMoniMT INFO HLT_mu6_mu4_L12MU4 decisions 24 22 32 29 0 TrigSignatureMoniMT INFO HLT_mu6fast_L1MU6 10 10 10 0 0 0 0 10 TrigSignatureMoniMT INFO HLT_mu6fast_L1MU6 decisions 14 0 0 0 0 TrigSignatureMoniMT INFO HLT_mu6noL1_L1MU6 10 10 10 10 0 0 0 10 diff --git a/Trigger/TrigValidation/TrigUpgradeTest/share/full_menu_build.ref b/Trigger/TrigValidation/TrigUpgradeTest/share/full_menu_build.ref index 28eee11ecb9e497f39c1d20119612b13d872cbeb..69fb9cb90012fc159031fa1672cf43329d316b34 100644 --- a/Trigger/TrigValidation/TrigUpgradeTest/share/full_menu_build.ref +++ b/Trigger/TrigValidation/TrigUpgradeTest/share/full_menu_build.ref @@ -94,7 +94,6 @@ TriggerSummaryStep1 5 0 DEBUG +++ HLT_mu6Comb_L1MU6 I TriggerSummaryStep1 5 0 DEBUG +++ HLT_e3_etcut1step_L1EM3 ID#999988353 TriggerSummaryStep1 5 0 DEBUG +++ HLT_mu6_ivarmedium_L1MU6 ID#1012713062 TriggerSummaryStep1 5 0 DEBUG +++ HLT_xe30_cell_L1XE10 ID#1649696554 -TriggerSummaryStep1 5 0 DEBUG +++ HLT_mu6_mu4_L12MU4 ID#1713982776 TriggerSummaryStep1 5 0 DEBUG +++ HLT_e7_etcut_L1EM3 ID#1959043579 TriggerSummaryStep1 5 0 DEBUG +++ HLT_mu20_ivar_L1MU6 ID#2083734526 TriggerSummaryStep1 5 0 DEBUG +++ HLT_e3_etcut1step_mu6fast_L1EM8I_MU10 ID#2086577378 @@ -106,7 +105,6 @@ TriggerSummaryStep2 5 0 DEBUG +++ HLT_g5_etcut_L1EM3 TriggerSummaryStep2 5 0 DEBUG +++ HLT_e3_etcut_L1EM3 ID#683953566 TriggerSummaryStep2 5 0 DEBUG +++ HLT_mu6Comb_L1MU6 ID#996392590 TriggerSummaryStep2 5 0 DEBUG +++ HLT_mu6_ivarmedium_L1MU6 ID#1012713062 -TriggerSummaryStep2 5 0 DEBUG +++ HLT_mu6_mu4_L12MU4 ID#1713982776 TriggerSummaryStep2 5 0 DEBUG +++ HLT_e7_etcut_L1EM3 ID#1959043579 TriggerSummaryStep2 5 0 DEBUG +++ HLT_mu6_L1MU6 ID#2560542253 TriggerSummaryStep2 5 0 DEBUG +++ HLT_mu6_msonly_L1MU6 ID#3895421032 @@ -122,7 +120,6 @@ TriggerSummaryStep1 6 0 DEBUG +++ HLT_e3_etcut1step_L TriggerSummaryStep1 6 0 DEBUG +++ HLT_mu6_ivarmedium_L1MU6 ID#1012713062 TriggerSummaryStep1 6 0 DEBUG +++ HLT_mu6noL1_L1MU6 ID#1631468602 TriggerSummaryStep1 6 0 DEBUG +++ HLT_xe30_cell_L1XE10 ID#1649696554 -TriggerSummaryStep1 6 0 DEBUG +++ HLT_mu6_mu4_L12MU4 ID#1713982776 TriggerSummaryStep1 6 0 DEBUG +++ HLT_e7_etcut_L1EM3 ID#1959043579 TriggerSummaryStep1 6 0 DEBUG +++ HLT_mu20_ivar_L1MU6 ID#2083734526 TriggerSummaryStep1 6 0 DEBUG +++ HLT_mu6_L1MU6 ID#2560542253 @@ -134,7 +131,6 @@ TriggerSummaryStep2 6 0 DEBUG +++ HLT_e3_etcut_L1EM3 TriggerSummaryStep2 6 0 DEBUG +++ HLT_mu6Comb_L1MU6 ID#996392590 TriggerSummaryStep2 6 0 DEBUG +++ HLT_mu6_ivarmedium_L1MU6 ID#1012713062 TriggerSummaryStep2 6 0 DEBUG +++ HLT_mu6noL1_L1MU6 ID#1631468602 -TriggerSummaryStep2 6 0 DEBUG +++ HLT_mu6_mu4_L12MU4 ID#1713982776 TriggerSummaryStep2 6 0 DEBUG +++ HLT_e7_etcut_L1EM3 ID#1959043579 TriggerSummaryStep2 6 0 DEBUG +++ HLT_mu20_ivar_L1MU6 ID#2083734526 TriggerSummaryStep2 6 0 DEBUG +++ HLT_mu6_L1MU6 ID#2560542253 @@ -143,12 +139,10 @@ TriggerSummaryStep3 6 0 DEBUG +++ HLT_e5_etcut_L1EM3 TriggerSummaryStep3 6 0 DEBUG +++ HLT_g5_etcut_L1EM3 ID#471243435 TriggerSummaryStep3 6 0 DEBUG +++ HLT_e3_etcut_L1EM3 ID#683953566 TriggerSummaryStep3 6 0 DEBUG +++ HLT_mu6_ivarmedium_L1MU6 ID#1012713062 -TriggerSummaryStep3 6 0 DEBUG +++ HLT_mu6_mu4_L12MU4 ID#1713982776 TriggerSummaryStep3 6 0 DEBUG +++ HLT_mu20_ivar_L1MU6 ID#2083734526 TriggerSummaryStep3 6 0 DEBUG +++ HLT_mu6_L1MU6 ID#2560542253 TriggerSummaryStep3 6 0 DEBUG +++ HLT_mu6_msonly_L1MU6 ID#3895421032 TriggerSummaryStep4 6 0 DEBUG +++ HLT_mu6_ivarmedium_L1MU6 ID#1012713062 -TriggerSummaryStep4 6 0 DEBUG +++ HLT_mu6_mu4_L12MU4 ID#1713982776 TriggerSummaryStep4 6 0 DEBUG +++ HLT_mu6_L1MU6 ID#2560542253 TriggerSummaryStep1 7 0 DEBUG +++ HLT_e5_etcut_L1EM3 ID#324908483 TriggerSummaryStep1 7 0 DEBUG +++ HLT_g5_etcut_L1EM3 ID#471243435 @@ -252,7 +246,6 @@ TriggerSummaryStep3 14 0 DEBUG +++ HLT_e3_etcut_L1EM3 TriggerSummaryStep1 15 0 DEBUG +++ HLT_mu6Comb_L1MU6 ID#996392590 TriggerSummaryStep1 15 0 DEBUG +++ HLT_mu6_ivarmedium_L1MU6 ID#1012713062 TriggerSummaryStep1 15 0 DEBUG +++ HLT_mu6noL1_L1MU6 ID#1631468602 -TriggerSummaryStep1 15 0 DEBUG +++ HLT_mu6_mu4_L12MU4 ID#1713982776 TriggerSummaryStep1 15 0 DEBUG +++ HLT_mu20_ivar_L1MU6 ID#2083734526 TriggerSummaryStep1 15 0 DEBUG +++ HLT_mu6_L1MU6 ID#2560542253 TriggerSummaryStep1 15 0 DEBUG +++ HLT_mu6fast_L1MU6 ID#3518031697 @@ -368,8 +361,8 @@ TrigSignatureMoniMT INFO HLT_mu6_ivarmedium_L1MU6 TrigSignatureMoniMT INFO HLT_mu6_ivarmedium_L1MU6 decisions 3 2 1 1 0 TrigSignatureMoniMT INFO HLT_mu6_msonly_L1MU6 20 20 3 0 2 0 0 2 TrigSignatureMoniMT INFO HLT_mu6_msonly_L1MU6 decisions 3 0 2 0 0 -TrigSignatureMoniMT INFO HLT_mu6_mu4_L12MU4 20 20 4 2 2 1 0 1 -TrigSignatureMoniMT INFO HLT_mu6_mu4_L12MU4 decisions 10 6 4 3 0 +TrigSignatureMoniMT INFO HLT_mu6_mu4_L12MU4 20 20 4 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_mu6_mu4_L12MU4 decisions 7 0 0 0 0 TrigSignatureMoniMT INFO HLT_mu6fast_L1MU6 20 20 3 0 0 0 0 3 TrigSignatureMoniMT INFO HLT_mu6fast_L1MU6 decisions 3 0 0 0 0 TrigSignatureMoniMT INFO HLT_mu6noL1_L1MU6 20 20 4 1 0 0 0 1 diff --git a/Trigger/TrigValidation/TrigUpgradeTest/share/slice_mu.ref b/Trigger/TrigValidation/TrigUpgradeTest/share/slice_mu.ref index 259dfa92bb817cec7876f2c5cfb355874aa7363b..1a8fb7229fd08cd5f1845ccbbfa6716dbd3d1f65 100644 --- a/Trigger/TrigValidation/TrigUpgradeTest/share/slice_mu.ref +++ b/Trigger/TrigValidation/TrigUpgradeTest/share/slice_mu.ref @@ -1,13 +1,11 @@ TriggerSummaryStep1 4 0 DEBUG +++ HLT_mu6Comb_L1MU6 ID#996392590 TriggerSummaryStep1 4 0 DEBUG +++ HLT_mu6_ivarmedium_L1MU6 ID#1012713062 -TriggerSummaryStep1 4 0 DEBUG +++ HLT_mu6_mu4_L12MU4 ID#1713982776 TriggerSummaryStep1 4 0 DEBUG +++ HLT_mu20_ivar_L1MU6 ID#2083734526 TriggerSummaryStep1 4 0 DEBUG +++ HLT_mu6_L1MU6 ID#2560542253 TriggerSummaryStep1 4 0 DEBUG +++ HLT_mu6fast_L1MU6 ID#3518031697 TriggerSummaryStep1 4 0 DEBUG +++ HLT_mu6_msonly_L1MU6 ID#3895421032 TriggerSummaryStep2 4 0 DEBUG +++ HLT_mu6Comb_L1MU6 ID#996392590 TriggerSummaryStep2 4 0 DEBUG +++ HLT_mu6_ivarmedium_L1MU6 ID#1012713062 -TriggerSummaryStep2 4 0 DEBUG +++ HLT_mu6_mu4_L12MU4 ID#1713982776 TriggerSummaryStep2 4 0 DEBUG +++ HLT_mu20_ivar_L1MU6 ID#2083734526 TriggerSummaryStep2 4 0 DEBUG +++ HLT_mu6_L1MU6 ID#2560542253 TriggerSummaryStep2 4 0 DEBUG +++ HLT_mu6_msonly_L1MU6 ID#3895421032 @@ -51,8 +49,8 @@ TrigSignatureMoniMT INFO HLT_mu6_ivarmedium_L1MU6 TrigSignatureMoniMT INFO HLT_mu6_ivarmedium_L1MU6 decisions 3 3 2 1 1 TrigSignatureMoniMT INFO HLT_mu6_msonly_L1MU6 10 10 2 0 1 0 0 1 TrigSignatureMoniMT INFO HLT_mu6_msonly_L1MU6 decisions 3 0 2 0 0 -TrigSignatureMoniMT INFO HLT_mu6_mu4_L12MU4 10 10 2 2 1 1 0 1 -TrigSignatureMoniMT INFO HLT_mu6_mu4_L12MU4 decisions 9 9 6 4 0 +TrigSignatureMoniMT INFO HLT_mu6_mu4_L12MU4 10 10 2 1 1 1 0 1 +TrigSignatureMoniMT INFO HLT_mu6_mu4_L12MU4 decisions 8 6 6 4 0 TrigSignatureMoniMT INFO HLT_mu6fast_L1MU6 10 10 2 0 0 0 0 2 TrigSignatureMoniMT INFO HLT_mu6fast_L1MU6 decisions 3 0 0 0 0 TrigSignatureMoniMT INFO HLT_mu6noL1_L1MU6 10 10 1 0 0 0 0 0 diff --git a/Trigger/TrigValidation/TrigUpgradeTest/share/slice_mu_mc.ref b/Trigger/TrigValidation/TrigUpgradeTest/share/slice_mu_mc.ref index 15e3ffef9e11dc977b481abd03fcfa0fcb11c600..07d2aced2bb9176786c632ef5dfbd841eb92ea24 100644 --- a/Trigger/TrigValidation/TrigUpgradeTest/share/slice_mu_mc.ref +++ b/Trigger/TrigValidation/TrigUpgradeTest/share/slice_mu_mc.ref @@ -69,7 +69,6 @@ TriggerSummaryStep2 3 0 DEBUG +++ HLT_mu6_msonly_L1MU TriggerSummaryStep1 5 0 DEBUG +++ HLT_mu6Comb_L1MU6 ID#996392590 TriggerSummaryStep1 5 0 DEBUG +++ HLT_mu6_ivarmedium_L1MU6 ID#1012713062 TriggerSummaryStep1 5 0 DEBUG +++ HLT_mu6noL1_L1MU6 ID#1631468602 -TriggerSummaryStep1 5 0 DEBUG +++ HLT_mu6_mu4_L12MU4 ID#1713982776 TriggerSummaryStep1 5 0 DEBUG +++ HLT_mu20_ivar_L1MU6 ID#2083734526 TriggerSummaryStep1 5 0 DEBUG +++ HLT_mu6_L1MU6 ID#2560542253 TriggerSummaryStep1 5 0 DEBUG +++ HLT_mu6fast_L1MU6 ID#3518031697 @@ -77,15 +76,12 @@ TriggerSummaryStep1 5 0 DEBUG +++ HLT_mu6_msonly_L1MU TriggerSummaryStep2 5 0 DEBUG +++ HLT_mu6Comb_L1MU6 ID#996392590 TriggerSummaryStep2 5 0 DEBUG +++ HLT_mu6_ivarmedium_L1MU6 ID#1012713062 TriggerSummaryStep2 5 0 DEBUG +++ HLT_mu6noL1_L1MU6 ID#1631468602 -TriggerSummaryStep2 5 0 DEBUG +++ HLT_mu6_mu4_L12MU4 ID#1713982776 TriggerSummaryStep2 5 0 DEBUG +++ HLT_mu6_L1MU6 ID#2560542253 TriggerSummaryStep2 5 0 DEBUG +++ HLT_mu6_msonly_L1MU6 ID#3895421032 TriggerSummaryStep3 5 0 DEBUG +++ HLT_mu6_ivarmedium_L1MU6 ID#1012713062 -TriggerSummaryStep3 5 0 DEBUG +++ HLT_mu6_mu4_L12MU4 ID#1713982776 TriggerSummaryStep3 5 0 DEBUG +++ HLT_mu6_L1MU6 ID#2560542253 TriggerSummaryStep3 5 0 DEBUG +++ HLT_mu6_msonly_L1MU6 ID#3895421032 TriggerSummaryStep4 5 0 DEBUG +++ HLT_mu6_ivarmedium_L1MU6 ID#1012713062 -TriggerSummaryStep4 5 0 DEBUG +++ HLT_mu6_mu4_L12MU4 ID#1713982776 TriggerSummaryStep4 5 0 DEBUG +++ HLT_mu6_L1MU6 ID#2560542253 TriggerSummaryStep5 5 0 DEBUG +++ HLT_mu6_ivarmedium_L1MU6 ID#1012713062 TriggerSummaryStep1 6 0 DEBUG +++ HLT_mu6Comb_L1MU6 ID#996392590 @@ -124,8 +120,8 @@ TrigSignatureMoniMT INFO HLT_mu6_ivarmedium_L1MU6 TrigSignatureMoniMT INFO HLT_mu6_ivarmedium_L1MU6 decisions 9 9 7 7 5 TrigSignatureMoniMT INFO HLT_mu6_msonly_L1MU6 10 10 5 0 4 0 0 4 TrigSignatureMoniMT INFO HLT_mu6_msonly_L1MU6 decisions 9 0 7 0 0 -TrigSignatureMoniMT INFO HLT_mu6_mu4_L12MU4 10 10 5 5 4 4 0 4 -TrigSignatureMoniMT INFO HLT_mu6_mu4_L12MU4 decisions 28 28 21 21 0 +TrigSignatureMoniMT INFO HLT_mu6_mu4_L12MU4 10 10 5 4 3 3 0 3 +TrigSignatureMoniMT INFO HLT_mu6_mu4_L12MU4 decisions 27 25 18 18 0 TrigSignatureMoniMT INFO HLT_mu6fast_L1MU6 10 10 5 0 0 0 0 5 TrigSignatureMoniMT INFO HLT_mu6fast_L1MU6 decisions 9 0 0 0 0 TrigSignatureMoniMT INFO HLT_mu6noL1_L1MU6 10 10 4 4 0 0 0 4