From 7082ae16ae1da9903ff5cc2adaa514e09d151d77 Mon Sep 17 00:00:00 2001 From: Jonathan Bossio <jonathan.bossio@cern.ch> Date: Tue, 25 Aug 2020 14:48:57 +0200 Subject: [PATCH] Monitor Online PFlow jets/chains --- .../python/TrigJetMonitorAlgorithm.py | 129 +++++++++++------- 1 file changed, 80 insertions(+), 49 deletions(-) diff --git a/Trigger/TrigMonitoring/TrigJetMonitoring/python/TrigJetMonitorAlgorithm.py b/Trigger/TrigMonitoring/TrigJetMonitoring/python/TrigJetMonitorAlgorithm.py index 9e66019343ac..771577e14d30 100644 --- a/Trigger/TrigMonitoring/TrigJetMonitoring/python/TrigJetMonitorAlgorithm.py +++ b/Trigger/TrigMonitoring/TrigJetMonitoring/python/TrigJetMonitorAlgorithm.py @@ -10,29 +10,45 @@ import sys,argparse -# Jet collection for each HLT jet -Chain2JetCollDict = dict() -# Jet collections for AthenaMT and Legacy -JetCollections = dict() # HLT jet collections +##################################### +# Offline jet collections to monitor +##################################### + OfflineJetCollections = [ 'AntiKt4EMTopoJets', 'AntiKt4EMPFlowJets', ] -# L1 monitoring +########################################### +# L1 jet collections and chains to monitor +########################################### + L1JetCollections = ['LVL1JetRoIs'] -Chain2L1JetCollDict = { +Chain2L1JetCollDict = { # set L1 jet collection name for L1 jet chains 'L1_J15' : 'LVL1JetRoIs', 'L1_J20' : 'LVL1JetRoIs', 'L1_J100' : 'LVL1JetRoIs', } + +############################################ +# HLT jet collections and chains to monitor +############################################ + +Chain2JetCollDict = dict() # set HLT jet collection for AT and legacy master HLT jet chains +JetCollections = dict() # List of HLT jet collections for AT and legacy master + # AthenaMT -JetCollections['MT'] = [ - 'HLT_AntiKt4EMTopoJets_subjesIS', # default small-R +JetCollections['MT'] = [ + 'HLT_AntiKt4EMTopoJets_subjesIS', # default small-R EM 'HLT_AntiKt10JetRCJets_subjesIS', # a10r 'HLT_AntiKt10LCTopoJets_subjes', # a10 'HLT_AntiKt10LCTopoTrimmedPtFrac5SmallR20Jets_jes', # a10t + 'HLT_AntiKt4EMPFlowJets_subjesIS_ftf', # pflow w/o calo+track GSC + 'HLT_AntiKt4EMPFlowJets_subjesgscIS_ftf', # pflow w/ calo+track GSC + 'HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf', # pflow w/ residual + calo+track GSC + 'HLT_AntiKt4EMPFlowJets_nojcalib_ftf', # pflow nojcalib + 'HLT_AntiKt4EMPFlowCSSKJets_nojcalib_ftf', # pflow cssk nojcalib ] Chain2JetCollDict['MT'] = { 'HLT_j420_L1J100' : 'HLT_AntiKt4EMTopoJets_subjesIS', @@ -43,10 +59,16 @@ Chain2JetCollDict['MT'] = { 'HLT_j460_a10_lcw_subjes_L1J100' : 'HLT_AntiKt10LCTopoJets_subjes', 'HLT_j460_a10t_lcw_jes_L1J100' : 'HLT_AntiKt10LCTopoTrimmedPtFrac5SmallR20Jets_jes', 'HLT_2j330_a10t_lcw_jes_35smcINF_L1J100' : 'HLT_AntiKt10LCTopoTrimmedPtFrac5SmallR20Jets_jes', + 'HLT_j45_ftf_pf_L1J20' : 'HLT_AntiKt4EMPFlowJets_subjesIS_ftf', + 'HLT_j45_ftf_subjesgscIS_pf_L1J20' : 'HLT_AntiKt4EMPFlowJets_subjesgscIS_ftf', + 'HLT_j45_ftf_subresjesgscIS_pf_L1J20' : 'HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf', + 'HLT_j85_ftf_pf_L1J20' : 'HLT_AntiKt4EMPFlowJets_subjesIS_ftf', + 'HLT_j45_ftf_pf_nojcalib_L1J20' : 'HLT_AntiKt4EMPFlowJets_nojcalib_ftf', + 'HLT_j45_ftf_csskpf_nojcalib_L1J20' : 'HLT_AntiKt4EMPFlowCSSKJets_nojcalib_ftf', } - + # Legacy -JetCollections['Legacy'] = [ +JetCollections['Legacy'] = [ 'HLT_xAOD__JetContainer_a4tcemsubjesISFS', # default small-R 'HLT_xAOD__JetContainer_a10r_tcemsubjesISFS', # a10r 'HLT_xAOD__JetContainer_a10tclcwsubjesFS', # a10 @@ -63,7 +85,49 @@ Chain2JetCollDict['Legacy'] = { 'HLT_3j200' : 'HLT_xAOD__JetContainer_a4tcemsubjesISFS', } +######################################################### +# Schedule more histograms for dedicated jet collections +######################################################### from JetMonitoring.JetMonitoringConfig import JetMonAlgSpec, HistoSpec, EventHistoSpec, SelectSpec, ToolSpec #VarSpec can be added to define specific/custom variables + +# All offline jet collections +ExtraOfflineHists = [ + HistoSpec('HECFrac', (50,0,1), title="HECFrac;HEC fraction;Entries" ), + HistoSpec('EMFrac', (50,0,1), title="EMFrac;EM fraction;Entries" ), + HistoSpec('Jvt', (50,-0.1,1), title="JVT;JVT;Entries" ), + "JVFCorr", + "JvtRpt", + "NumTrkPt1000[0]", + "TrackWidthPt1000[0]", + "SumPtTrkPt500[0]", + SelectSpec( 'LooseBadFailedJets', 'LooseBad', InverseJetSel=True, FillerTools = ["pt","phi","eta"]), +] + +# All online small-R jet collections +ExtraSmallROnlineHists = [ + HistoSpec('HECFrac', (50,0,1), title="HECFrac;HEC fraction;Entries" ), + HistoSpec('EMFrac', (50,0,1), title="EMFrac;EM fraction;Entries" ), + HistoSpec('DetectorEta', (100,-5,5), title="DetectorEta;Detector #eta;Entries" ), + HistoSpec('ActiveArea', (80,0,0.8), title="ActiveArea;Active Area;Entries" ), + HistoSpec('et:GeV;eta', (100,0,750, 50,-5,5) , title='#eta vs E_{T};E_{T} [GeV];#eta;Entries'), + "EM3Frac", + "Tile0Frac", +] + +# All online large-R jet collections +ExtraLargeROnlineHists = [ +] + +# Kinematics at different scales for offline and small-R online jet collections +OfflineScaleMomenta = [ "ConstitScale", "EMScale", "PileupScale", "EtaJESScale"] +OnlineScaleMomenta = [ "ConstitScale" ] +for var in [ "pt", "eta", "m" ]: + for offlinescale in OfflineScaleMomenta: + ExtraOfflineHists.append("Jet"+offlinescale+"Momentum_"+var) + for onlinescale in OnlineScaleMomenta: + ExtraSmallROnlineHists.append("Jet"+onlinescale+"Momentum_"+var) + + from AthenaConfiguration.AllConfigFlags import ConfigFlags def TrigJetMonConfig(inputFlags): @@ -110,6 +174,7 @@ def TrigJetMonConfig(inputFlags): # the AthMonitorCfgHelper returns an accumulator to be used by the general configuration system. return helper.result() + # Basic selection of histograms common for online and offline jets def basicJetMonAlgSpec(jetcoll,isOnline,athenaMT): # we use a specialized dictionnary (JetMonAlgSpec) which will be translated into the final C++ tool @@ -186,43 +251,6 @@ def basicJetMonAlgSpec(jetcoll,isOnline,athenaMT): return Conf -# Additional histograms for offline jets -ExtraOfflineHists = [ - HistoSpec('HECFrac', (50,0,1), title="HECFrac;HEC fraction;Entries" ), - HistoSpec('EMFrac', (50,0,1), title="EMFrac;EM fraction;Entries" ), - HistoSpec('Jvt', (50,-0.1,1), title="JVT;JVT;Entries" ), - "JVFCorr", - "JvtRpt", - "NumTrkPt1000[0]", - "TrackWidthPt1000[0]", - "SumPtTrkPt500[0]", - SelectSpec( 'LooseBadFailedJets', 'LooseBad', InverseJetSel=True, FillerTools = ["pt","phi","eta"]), -] - -# Additional histograms for online jets -ExtraSmallROnlineHists = [ - HistoSpec('HECFrac', (50,0,1), title="HECFrac;HEC fraction;Entries" ), - HistoSpec('EMFrac', (50,0,1), title="EMFrac;EM fraction;Entries" ), - HistoSpec('DetectorEta', (100,-5,5), title="DetectorEta;Detector #eta;Entries" ), - HistoSpec('ActiveArea', (80,0,0.8), title="ActiveArea;Active Area;Entries" ), - HistoSpec('et:GeV;eta', (100,0,750, 50,-5,5) , title='#eta vs E_{T};E_{T} [GeV];#eta;Entries'), - "EM3Frac", - "Tile0Frac", -] - -ExtraLargeROnlineHists = [ -] - -#Additional online & offline histograms to include kinematics at various jet calibration scales -OfflineScaleMomenta = [ "ConstitScale", "EMScale", "PileupScale", "EtaJESScale"] -OnlineScaleMomenta = [ "ConstitScale" ] - -for var in [ "pt", "eta", "m" ]: - for offlinescale in OfflineScaleMomenta: - ExtraOfflineHists.append("Jet"+offlinescale+"Momentum_"+var) - for onlinescale in OnlineScaleMomenta: - ExtraSmallROnlineHists.append("Jet"+onlinescale+"Momentum_"+var) - def jetMonitoringConfig(inputFlags,jetcoll,athenaMT): '''Function to configures some algorithms in the monitoring system.''' @@ -233,17 +261,20 @@ def jetMonitoringConfig(inputFlags,jetcoll,athenaMT): if isOnline: if 'AntiKt4' in jetcoll or 'a4tcem' in jetcoll: for hist in ExtraSmallROnlineHists: conf.appendHistos(hist) - if 'ftf' in jetcoll: + if 'ftf' in jetcoll: # dedicated histograms for FTF chains conf.appendHistos("JVFCorr") conf.appendHistos("JvtRpt") conf.appendHistos("SumPtTrkPt500[0]") conf.appendHistos("NumTrkPt1000[0]") conf.appendHistos("TrackWidthPt1000[0]") + if 'PF' in jetcoll: # dedicated histograms for online PFlow jets + conf.appendHistos("SumPtChargedPFOPt500[0]") + conf.appendHistos("fCharged") else: for hist in ExtraLargeROnlineHists: conf.appendHistos(hist) else: # offline for hist in ExtraOfflineHists: conf.appendHistos(hist) - if 'pf' in jetcoll or 'PF' in jetcoll: + if 'PF' in jetcoll: # dedicated histograms for offline PFlow jets conf.appendHistos("SumPtChargedPFOPt500[0]") conf.appendHistos("fCharged") -- GitLab