diff --git a/Trigger/TrigMonitoring/TrigBphysMonitoring/TrigBphysMonitoring/HLTXAODBphysMonTool.h b/Trigger/TrigMonitoring/TrigBphysMonitoring/TrigBphysMonitoring/HLTXAODBphysMonTool.h index c0830ae1f34d545cbbb3693a66aeb3f8562e4353..8f6bdec2115a8e8e13a048c4e8dfb49b077ccb45 100644 --- a/Trigger/TrigMonitoring/TrigBphysMonitoring/TrigBphysMonitoring/HLTXAODBphysMonTool.h +++ b/Trigger/TrigMonitoring/TrigBphysMonitoring/TrigBphysMonitoring/HLTXAODBphysMonTool.h @@ -99,11 +99,13 @@ private: //typedef std::vector<std::pair<std::string, std::string> > Table_t; Table_t m_dedicated_chains; //! menu-independent labels with matching menu-aware chain names for dedicated monitoring Table_t m_dedicatedL1Topo_chains; //! menu-independent labels with matching menu-aware chain names for dedicated L1Topo monitoring + Table_t m_dedicatedIndividual_chains; //! Table_t m_efficiency_chains; //! menu-independent labels with matching menu-aware chain names for numerator efficiencies // patterns for the above, if generated on-the-fly from m_primary_chains list Table_t m_dedicated_chains_patterns; Table_t m_dedicatedL1Topo_chains_patterns; + Table_t m_dedicatedIndividual_chains_patterns; Table_t m_efficiency_chains_patterns; std::vector<std::string> m_containerList; //! Container list diff --git a/Trigger/TrigMonitoring/TrigBphysMonitoring/python/TrigBphysMonitCategory.py b/Trigger/TrigMonitoring/TrigBphysMonitoring/python/TrigBphysMonitCategory.py index 7c879286c968e1348e6ab01cb305205765f6fc71..bcd080533a137767597a0fd49d6f8aa7b7b465d5 100644 --- a/Trigger/TrigMonitoring/TrigBphysMonitoring/python/TrigBphysMonitCategory.py +++ b/Trigger/TrigMonitoring/TrigBphysMonitoring/python/TrigBphysMonitCategory.py @@ -3,7 +3,7 @@ from TriggerJobOpts.TriggerFlags import TriggerFlags monitoring_bphys = [ - 'HLT_mu11_mu6_bDimu', + #'HLT_mu11_mu6_bDimu', 'HLT_mu11_mu6_bBmumuxv2', 'HLT_mu6_2mu4_bJpsi', 'HLT_mu20_bJpsi_Trkloose', @@ -14,7 +14,7 @@ monitoring_bphys = [ 'HLT_mu11_mu6_bTau', 'HLT_2mu6_bDimu_L1BPH-2M9-2MU6_BPH-2DR15-2MU6', 'HLT_mu11_mu6_bDimu_novtx_noos', - 'HLT_mu11_mu6_bJpsimumu', + #'HLT_mu11_mu6_bJpsimumu', 'HLT_mu11_mu6_bBmumu', 'HLT_mu6_mu4_bUpsimumu_L1BPH-8M15-MU6MU4_BPH-0DR22-MU6MU4', 'HLT_mu6_mu4_bJpsimumu_Lxy0_L1BPH-2M9-MU6MU4_BPH-0DR15-MU6MU4', @@ -25,9 +25,27 @@ monitoring_bphys = [ 'HLT_2mu6_bBmumux_BsmumuPhi_L1BPH-2M9-2MU6_BPH-2DR15-2MU6', 'HLT_mu6_bJpsi_Trkloose', 'HLT_mu4_mu4_idperf_bJpsimumu_noid', + # For individual chain monitoring folders, to fill DetailedIndividualChains + 'HLT_2mu4_bJpsimumu', + 'HLT_2mu4_bUpsimumu', + 'HLT_2mu4_bDimu', + 'HLT_mu6_mu4_bJpsimumu', + 'HLT_mu6_mu4_bUpsimumu', + 'HLT_mu6_mu4_bDimu', + 'HLT_2mu6_bJpsimumu', + 'HLT_2mu6_bUpsimumu', + 'HLT_2mu6_bDimu', + 'HLT_mu11_mu6_bJpsimumu', + 'HLT_mu11_mu6_bUpsimumu', + 'HLT_mu11_mu6_bDimu', + 'HLT_2mu4_bBmumux_BsmumuPhi', + 'HLT_mu6_mu4_bBmumux_BsmumuPhi_delayed', + 'HLT_2mu4_bBmumux_BpmumuKp', + 'HLT_mu6_mu4_bBmumux_BpmumuKp', ] primary_bphys = [ + # first should go those for generic folders (BMuMu, MultiMu etc) 'HLT_mu11_mu6_bDimu', 'HLT_mu11_mu6_bBmumuxv2', 'HLT_mu6_2mu4_bJpsi', @@ -37,6 +55,18 @@ primary_bphys = [ 'HLT_mu11_mu6_bTau', 'HLT_2mu6_bDimu_L1BPH-2M9-2MU6_BPH-2DR15-2MU6', 'HLT_mu11_mu6_bDimu_novtx_noos', + # then others, for individual chain folders + 'HLT_2mu4_bJpsimumu', + 'HLT_2mu4_bUpsimumu', + 'HLT_mu6_mu4_bJpsimumu', + 'HLT_mu6_mu4_bUpsimumu', + 'HLT_mu6_mu4_bDimu', + 'HLT_2mu6_bJpsimumu', + 'HLT_2mu6_bUpsimumu', + 'HLT_2mu6_bDimu', + 'HLT_mu11_mu6_bJpsimumu', + 'HLT_mu11_mu6_bUpsimumu', + 'HLT_mu11_mu6_bDimu', ] if TriggerFlags.EDMDecodingVersion == 3 : @@ -44,6 +74,19 @@ if TriggerFlags.EDMDecodingVersion == 3 : 'HLT_2mu4_bJpsimumu_L12MU4', 'HLT_2mu4_bUpsimumu_L12MU4', 'HLT_2mu4_bDimu_L12MU4', + 'HLT_mu6_mu4_bJpsimumu_L1MU6_2MU4', + 'HLT_mu6_mu4_bUpsimumu_L1MU6_2MU4', + 'HLT_mu6_mu4_bDimu_L1MU6_2MU4', + 'HLT_2mu6_bJpsimumu_L12MU6', + 'HLT_2mu6_bUpsimumu_L12MU6', + 'HLT_2mu6_bDimu_L12MU6', + 'HLT_mu11_mu6_bJpsimumu_L1MU11_2MU6', + 'HLT_mu11_mu6_bUpsimumu_L1MU11_2MU6', + 'HLT_mu11_mu6_bDimu_L1MU11_2MU6', + 'HLT_2mu4_bBmumux_BsmumuPhi_L12MU4', + 'HLT_mu6_mu4_bBmumux_BsmumuPhi_L1MU6_2MU4', + 'HLT_2mu4_bBmumux_BpmumuKp_L12MU4', + 'HLT_mu6_mu4_bBmumux_BpmumuKp_L1MU6_2MU4', ] primary_bphys = [ 'HLT_2mu4_bDimu_L12MU4', diff --git a/Trigger/TrigMonitoring/TrigBphysMonitoring/python/TrigBphysMonitoringConfig.py b/Trigger/TrigMonitoring/TrigBphysMonitoring/python/TrigBphysMonitoringConfig.py index ce32dfcc1df499106aa894e08d564ad128964d49..5d3ce0d7874e4fe7c73aba1f3eb22c2a73c111b1 100644 --- a/Trigger/TrigMonitoring/TrigBphysMonitoring/python/TrigBphysMonitoringConfig.py +++ b/Trigger/TrigMonitoring/TrigBphysMonitoring/python/TrigBphysMonitoringConfig.py @@ -33,6 +33,25 @@ DetailedL1TopoChains = { "L1BPH-M-DR" : "HLT_2mu6_bUpsimumu_L1BPH-8M15-2MU6_BPH-0DR22-2MU6", #"L1BPH-M" : "HLT_2mu6_bDimu_L1BPH-8M15-2MU6" } +DetailedIndividualChains = { + # filled not from primary_bphys but from monitored_bphys + "HLT_2mu4_bJpsimumu" : "HLT_2mu4_bJpsimumu(_L1(?!BPH).*)?$", + "HLT_2mu4_bUpsimumu" : "HLT_2mu4_bUpsimumu(_L1(?!BPH).*)?$", + "HLT_2mu4_bDimu" : "HLT_2mu4_bDimu(_L1(?!BPH).*)?$", + "HLT_mu6_mu4_bJpsimumu" : "HLT_mu6_mu4_bJpsimumu(_L1(?!BPH).*)?$", + "HLT_mu6_mu4_bUpsimumu" : "HLT_mu6_mu4_bUpsimumu(_L1(?!BPH).*)?$", + "HLT_mu6_mu4_bDimu" : "HLT_mu6_mu4_bDimu(_L1(?!BPH).*)?$", + "HLT_2mu6_bJpsimumu" : "HLT_2mu6_bJpsimumu(_L1(?!BPH).*)?$", + "HLT_2mu6_bUpsimumu" : "HLT_2mu6_bUpsimumu(_L1(?!BPH).*)?$", + "HLT_2mu6_bDimu" : "HLT_2mu6_bDimu(_L1(?!BPH).*)?$", + "HLT_mu11_mu6_bJpsimumu" : "HLT_mu11_mu6_bJpsimumu(_L1(?!BPH).*)?$", + "HLT_mu11_mu6_bUpsimumu" : "HLT_mu11_mu6_bUpsimumu(_L1(?!BPH).*)?$", + "HLT_mu11_mu6_bDimu" : "HLT_mu11_mu6_bDimu(_L1(?!BPH).*)?$", + "HLT_2mu4_bBmumux_BsmumuPhi" : "HLT_2mu4_bBmumux_BsmumuPhi(_delayed)?(_L1(?!BPH).*)?$", + "HLT_mu6_mu4_bBmumux_BsmumuPhi" : "HLT_mu6_mu4_bBmumux_BsmumuPhi(_delayed)?(_L1(?!BPH).*)?$", + "HLT_2mu4_bBmumux_BpmumuKp" : "HLT_2mu4_bBmumux_BpmumuKp(_delayed)?(_L1(?!BPH).*)?$", + "HLT_mu6_mu4_bBmumux_BpmumuKp" : "HLT_mu6_mu4_bBmumux_BpmumuKp(_delayed)?(_L1(?!BPH).*)?$", + } EfficiencyChains = { "BMuMu" : "HLT_(2mu[0-9]+|mu[0-9]+_?mu[0-9]+)_(bDimu|bJpsimumu)(_L1[0-9]?MU[0-9]+)?", "BMuMuX" : "HLT_(2mu[0-9]+|mu[0-9]+_?mu[0-9]+)_bBmumuxv[23](_L1[0-9]?MU[0-9]+)?", @@ -106,6 +125,7 @@ def TrigBphysMonitoringTool(): ContainerList =containers, DetailedChains_patterns = DetailedChains, DetailedL1TopoChains_patterns = DetailedL1TopoChains, + DetailedIndividualChains_patterns = DetailedIndividualChains, EfficiencyChains_patterns = EfficiencyChains, EffTrigDenom_noVtxOS_pattern = EffTrigDenom_noVtxOS, diff --git a/Trigger/TrigMonitoring/TrigBphysMonitoring/src/HLTXAODBphysMonTool.cxx b/Trigger/TrigMonitoring/TrigBphysMonitoring/src/HLTXAODBphysMonTool.cxx index 676d4b8d3a2b218e84985b75d5f4d3687af05b2a..0c069db8bba07d5ffad4d91dbd06864a542e5af5 100644 --- a/Trigger/TrigMonitoring/TrigBphysMonitoring/src/HLTXAODBphysMonTool.cxx +++ b/Trigger/TrigMonitoring/TrigBphysMonitoring/src/HLTXAODBphysMonTool.cxx @@ -115,6 +115,7 @@ m_muonMass(105.66) declareProperty("DetailedChains" ,m_dedicated_chains , "table<string,string> of menu-idep/aware labels/chainnames"); declareProperty("DetailedL1TopoChains" ,m_dedicatedL1Topo_chains , "table<string,string> of menu-idep/aware labels/chainnames for L1Topo"); + declareProperty("DetailedIndividualChains" ,m_dedicatedIndividual_chains , "table<string,string> of individual chains"); declareProperty("EfficiencyChains" ,m_efficiency_chains, "table<string,string> of menu-idep/aware labels/eff. names"); // ID Tracking efficiency @@ -136,6 +137,7 @@ m_muonMass(105.66) // patterns for the above, if generated on-the-fly from m_primary_chains list declareProperty("DetailedChains_patterns" ,m_dedicated_chains_patterns , "table<string,string> of menu-idep/aware labels/patterns"); declareProperty("DetailedL1TopoChains_patterns" ,m_dedicatedL1Topo_chains_patterns , "table<string,string> of menu-idep/aware labels/patterns for L1Topo"); + declareProperty("DetailedIndividualChains_patterns" ,m_dedicatedIndividual_chains_patterns , "table<string,string> of individual chains"); declareProperty("EfficiencyChains_patterns" ,m_efficiency_chains_patterns, "table<string,string> of menu-idep/aware labels/eff. patterns"); declareProperty("EffTrigDenom_noVtxOS_pattern" , m_trigchain_denomnoVtxOS_pattern , "Trigger pattern for noVtxOS denominator efficiencies"); @@ -226,6 +228,7 @@ StatusCode HLTXAODBphysMonTool::init() StatusCode HLTXAODBphysMonTool::generateChainDicts() { m_dedicated_chains.clear(); m_dedicatedL1Topo_chains.clear(); + m_dedicatedIndividual_chains.clear(); m_efficiency_chains.clear(); m_trigchain_denomnoVtxOS = ""; @@ -253,6 +256,18 @@ StatusCode HLTXAODBphysMonTool::generateChainDicts() { } } + ATH_MSG_DEBUG ("Forming DetailedIndividualChains... "); + for(const auto& patternPair : m_dedicatedIndividual_chains_patterns) { + boost::regex pattern(patternPair.second.c_str()); + for(const auto& chainName : m_monitored_chains) { + if( boost::regex_match(chainName,pattern) ) { + m_dedicatedIndividual_chains.insert( Pair_t(patternPair.first,chainName) ); + ATH_MSG_INFO ("Add " << patternPair.first << " : " << chainName << " to DetailedIndividualChains dictionary"); + break; + } + } + } + ATH_MSG_INFO ("Forming EfficiencyChains... "); for(const auto& patternPair : m_efficiency_chains_patterns) { boost::regex pattern(patternPair.second.c_str()); @@ -1535,6 +1550,11 @@ StatusCode HLTXAODBphysMonTool::bookTriggerGroups() { // groupName, prefix, pathInRoot, chainName bookTrigBphysHists(trigpair.first, m_prefix, trigpair.first, trigpair.second, false); // book only limited number of histograms } // for + for (const auto& trigpair : m_dedicatedIndividual_chains) { + ATH_MSG_DEBUG("Building Dedicated Individual chain monitoring for: " << trigpair.first<< " " <<trigpair.second ); + // groupName, prefix, pathInRoot, chainName + bookTrigBphysHists(trigpair.first, m_prefix, trigpair.first, trigpair.second); + } // for return StatusCode::SUCCESS; } // bookTriggerGroups @@ -1554,6 +1574,13 @@ StatusCode HLTXAODBphysMonTool::fillTriggerGroups() { continue; } } // for + for (const auto& trigpair : m_dedicatedIndividual_chains) { + ATH_MSG_DEBUG("Filling Dedicated Individual chain monitoring for: " << trigpair.first<< " " <<trigpair.second ); + if (!fillTriggerGroup(trigpair.first,trigpair.second).isSuccess()) { + ATH_MSG_WARNING("Problems filling group/chain: " << trigpair.first<< " " <<trigpair.second); + continue; + } + } // for return StatusCode::SUCCESS; } // fillTriggerGroups