Loading [MathJax]/extensions/tex2jax.js
ATLAS Offline Software
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
Functions | Variables
TrigJetMonitorAlgorithm Namespace Reference

Functions

def getChains2Monitor (inputFlags, monMode)
 
def getEtaRange (chain)
 Helpful functions. More...
 
def getBinningFromThreshold (chain, varname)
 
def getHTBinning (chain, binwidth)
 
def addFlavourTagVariables (conf, network_prefix, flavs="cub")
 
def getJetCopyAlg (injets, outjets)
 
def getL1JetCopyAlg (injets, outjets)
 
def TrigJetMonConfig (inputFlags)
 
def basicJetMonAlgSpec (jetcoll, isOnline)
 
def basicHIJetMonAlgSpec (jetcoll, isOnline)
 
def jetMonitoringConfig (inputFlags, jetcoll, jetCollDict, monMode)
 
def l1JetMonitoringConfig (inputFlags, jetColl, jetDict, monMode, chain='', matched=False)
 
def jetChainMonitoringConfig (inputFlags, jetcoll, chain, onlyUsePassingJets=True)
 
def jetEfficiencyMonitoringConfig (inputFlags, onlinejetcoll, offlinejetcoll, chain, refChain)
 

Variables

 logger
 
 copySuffix
 constants More...
 
 OfflineJetCollections
 Offline jet collections to monitor. More...
 
 L1JetCollections
 L1 jet collections and chains to monitor. More...
 
 match_smallRL1_OfflineJets_List
 
 match_largeRL1_OfflineJets_List
 
 match_HIL1_OfflineJets_List
 
 items
 
 d_items
 
 errmsg
 
 l1Coll2MatcherKey
 
 Chain2L1JetCollDict
 
 JetCollections
 HLT jet collections and chains to monitor. More...
 
 ExtraOfflineHists
 
 ExtraSmallROnlineHists
 
 title
 
 ExtraLargeROnlineHists
 
 ExtraOnlineNJetHists
 
 OfflineScaleMomenta
 
 OnlineScaleMomenta
 
 parser
 
 action
 
 dest
 
 default
 
 args
 
 RunTruth
 
 GenOfflineR10PF
 
 PrintDetailedConfig
 
 inputFile
 
 flags
 
 Files
 
 isMC
 
 HISTFileName
 
 monMode
 
 Chains2Monitor
 
 cfg
 
 outputlist
 
 comp
 
 key
 
 EMPFlowCSSK
 
 label
 
 AntiKt10EMPFlowCSSK
 
 ptmin
 
 modifiers
 
 AntiKt10EMPFlowCSSKSoftDrop
 
 substrmods
 
 ZCut
 
 Beta
 
 ItemList
 
 helper
 
 scalestring
 
 name
 
 alg
 
 JetContainerName1
 
 hltColl
 
 JetContainerName2
 
 JetCalibScale
 
 sequenceName
 
 offjetColl
 
 L1JetContainerName1
 
 l1jetColl
 
 matchjetcoll
 
 MatchL1
 
 l1jetconf
 
 l1chainconf
 
 offlineMonitorConf
 
 monitorConf
 
 jetcoll
 
 chainMonitorConfT
 
 chainMonitorConfF
 
 effMonitorConf
 
 withDetails
 

Function Documentation

◆ addFlavourTagVariables()

def TrigJetMonitorAlgorithm.addFlavourTagVariables (   conf,
  network_prefix,
  flavs = "cub" 
)

Definition at line 308 of file TrigJetMonitorAlgorithm.py.

308 def addFlavourTagVariables(conf, network_prefix, flavs="cub"):
309  cutname='pt20'
310  fillerTools = []
311  for f in flavs:
312  xvar = f"{network_prefix}_p{f}"
313  varname = f"ftag_p{f}"
314  fillerTools += [HistoSpec(varname, xvar=xvar, bins=(70, -0.2, 1.2), title=f"{varname};{varname};;Entries")]
315  fastDipsSelectSpec = SelectSpec(f"{network_prefix}_{cutname}", '20<pt:GeV&|eta|<3.2', path='NoTriggerSelection/'+cutname, FillerTools=fillerTools)
316  conf.appendHistos(fastDipsSelectSpec)
317 

◆ basicHIJetMonAlgSpec()

def TrigJetMonitorAlgorithm.basicHIJetMonAlgSpec (   jetcoll,
  isOnline 
)

Definition at line 644 of file TrigJetMonitorAlgorithm.py.

644 def basicHIJetMonAlgSpec(jetcoll,isOnline):
645  # we use a specialized dictionnary (JetMonAlgSpec) which will be translated into the final C++ tool
646  path = 'NoTriggerSelection' if isOnline else 'standardHistos/'
647 
648  TopLevelDir = 'HLT/JetMon/'
649  TopLevelDir += 'Online/' if isOnline else 'Offline/'
650 
651  jetcollFolder = jetcoll
652  jetcollFolder=jetcoll.replace(f"_{copySuffix}","")
653  Conf = JetMonAlgSpec(jetcoll+"Mon",JetContainerName = jetcoll, defaultPath = path, topLevelDir=TopLevelDir, bottomLevelDir=jetcollFolder, failureOnMissingContainer=False)
654 
655  # Now start filling the histo spec list
656  Conf.appendHistos(
657 
658  #See knownHistos in JetStandardHistoSpecs.py for the list of standard specification.
659  #or we can directly add our custom histo specification in the form of a HistoSpec:
660  #the basic call is : HistoSpec( variable, histobins, title='histotile;xtitle,ytitle')
661 
662  #Say we want a 2nd 'pt' plot but with a different binning than in the standard spec.
663  #WARNING : we can not re-use the same spec name in a given JetMonitoringAlg !!!
664  #so we give a new name AND we specify the actual variable with the argument 'xvar'
665  #(the ':GeV' means the variable is to be set at GeV scale)
666  #HistoSpec( 'lowpt', (100,0,150) , title='p_{T};p_{T} [GeV];', xvar='pt:GeV'),
667  #An equivalent solution would have been to clone the existing spec like in :
668  #knownHistos.pt.clone('lowpt',bins= (100,0,200) ),
669 
670  #2D histos are usually refered to by concatenating vars with a ';' as in 'varx;vary'
671  #if the 'vax;vary' alias doesn't exist in knownHistos but 'varx' and 'vary'
672  #do exist, then a spec fot 'vax;vary' will be automatically generated.
673 
674  #Jet multiplicity histograms can be added by using an EventHistoSpec
675  #Their specifications (pT cut, ET cut, eta cuts) must be defined in the knownEventVar dictionary within JetStandardHistoSpecs.py
676  #The following line is an example for a jet multiplicity histogram with ET>40 GeV, 1.0<|eta|<2.0, and binning of (10,0,10):
677  #EventHistoSpec('njetsEt40Eta1_2', (10,0,10), title='NJetsEt40Eta1_2;NJetsEt40Eta1_2;Entries' ),
678 
679  #To select on multiple variables simultaneously, simply combine the selection strings via &
680  #Example below to select on ET > 100 GeV and |eta| > 3.2:
681  #SelectSpec( 'ETeta', '100<et:GeV&|eta|<3.2', path, FillerTools = ["pt","et","m","eta"] )
682 
683  #TProfile2D : just use 3 variables. For now the sytem will automatically
684  #interpret it as a TProfile2D (the 3rd variable being profiled)
685  #"phi;eta;e", --> Average Energy vs pt and eta
686 
687  #another possible selections : only sub-leading jets and highJVF
688  #SelectSpec( 'subleading',
689  # '', # no selection on variables
690  # SelectedIndex=1, # force 2nd (sub-leading) jet (we would set 0 for leading jets)
691  # path='standardHistos', # force the path where the histos are saved in the final ROOT file
692  # FillerTools = [
693  # "pt",
694  # "m",
695  # ] ),
696  #SelectSpec( 'highJVF',
697  # '0.3<JVF[0]', # JVF is a vector<float> for each jets. Here we cut on the 0th entry of this vector
698  # FillerTools = [
699  # "pt",
700  # ] ),
701 
702  #1D histos
703  "pt",
704  "m",
705  "eta",
706  "phi",
707  "et",
708 
709  #2D histos
710  "eta;phi", # phi vs eta
711  HistoSpec( 'pt:GeV;m:GeV', (100,0,400, 100,0,400) , title='p_{T} vs mass;p_{T} [GeV];m [GeV];Entries'),
712  HistoSpec( 'eta;et:GeV', (100,-5,5, 100,0,400) , title='#eta vs e_{T};#eta;E_{T} [GeV];Entries'),
713  HistoSpec( 'phi;et:GeV', (60,-math.pi,math.pi, 100,0,400) , title='#phi vs E_{T};#phi;E_{T} [GeV];Entries'),
714 
715  #Event selection
716  SelectSpec( 'central', '|eta|<3.2', path, FillerTools = ["pt","et","m"] ),
717  SelectSpec( 'forward', '3.2<|eta|', path, FillerTools = ["pt","et","m"] ),
718  SelectSpec( 'pt60', '60<pt:GeV', path, FillerTools = ["m","phi","eta","eta;phi"]),
719 
720  )
721 
722  return Conf
723 

◆ basicJetMonAlgSpec()

def TrigJetMonitorAlgorithm.basicJetMonAlgSpec (   jetcoll,
  isOnline 
)

Definition at line 555 of file TrigJetMonitorAlgorithm.py.

555 def basicJetMonAlgSpec(jetcoll,isOnline):
556  # we use a specialized dictionnary (JetMonAlgSpec) which will be translated into the final C++ tool
557  path = 'NoTriggerSelection' if isOnline else 'standardHistos/'
558  minNjetBin = 1 if isOnline else 0
559 
560  TopLevelDir = 'HLT/JetMon/'
561  TopLevelDir += 'Online/' if isOnline else 'Offline/'
562 
563  jetcollFolder = jetcoll
564  jetcollFolder=jetcoll.replace(f"_{copySuffix}","")
565  Conf = JetMonAlgSpec(jetcoll+"Mon",JetContainerName = jetcoll, defaultPath = path, topLevelDir=TopLevelDir, bottomLevelDir=jetcollFolder, failureOnMissingContainer=False)
566 
567  # Now start filling the histo spec list
568  Conf.appendHistos(
569 
570  #See knownHistos in JetStandardHistoSpecs.py for the list of standard specification.
571  #or we can directly add our custom histo specification in the form of a HistoSpec:
572  #the basic call is : HistoSpec( variable, histobins, title='histotile;xtitle,ytitle')
573 
574  #Say we want a 2nd 'pt' plot but with a different binning than in the standard spec.
575  #WARNING : we can not re-use the same spec name in a given JetMonitoringAlg !!!
576  #so we give a new name AND we specify the actual variable with the argument 'xvar'
577  #(the ':GeV' means the variable is to be set at GeV scale)
578  #HistoSpec( 'lowpt', (100,0,150) , title='p_{T};p_{T} [GeV];', xvar='pt:GeV'),
579  #An equivalent solution would have been to clone the existing spec like in :
580  #knownHistos.pt.clone('lowpt',bins= (100,0,200) ),
581 
582  #2D histos are usually refered to by concatenating vars with a ';' as in 'varx;vary'
583  #if the 'vax;vary' alias doesn't exist in knownHistos but 'varx' and 'vary'
584  #do exist, then a spec fot 'vax;vary' will be automatically generated.
585 
586 
587  #Jet multiplicity histograms can be added by using an EventHistoSpec
588  #Their specifications (pT cut, ET cut, eta cuts) must be defined in the knownEventVar dictionary within JetStandardHistoSpecs.py
589  #The following line is an example for a jet multiplicity histogram with ET>40 GeV, 1.0<|eta|<2.0, and binning of (10,0,10):
590  #EventHistoSpec('njetsEt40Eta1_2', (10,0,10), title='NJetsEt40Eta1_2;NJetsEt40Eta1_2;Entries' ),
591 
592  #To select on multiple variables simultaneously, simply combine the selection strings via &
593  #Example below to select on ET > 100 GeV and |eta| > 3.2:
594  #SelectSpec( 'ETeta', '100<et:GeV&|eta|<3.2', path, FillerTools = ["pt","et","m","eta"] )
595 
596  #TProfile2D : just use 3 variables. For now the sytem will automatically
597  #interpret it as a TProfile2D (the 3rd variable being profiled)
598  #"phi;eta;e", --> Average Energy vs pt and eta
599 
600  #another possible selections : only sub-leading jets and highJVF
601  #SelectSpec( 'subleading',
602  # '', # no selection on variables
603  # SelectedIndex=1, # force 2nd (sub-leading) jet (we would set 0 for leading jets)
604  # path='standardHistos', # force the path where the histos are saved in the final ROOT file
605  # FillerTools = [
606  # "pt",
607  # "m",
608  # ] ),
609  #SelectSpec( 'highJVF',
610  # '0.3<JVF[0]', # JVF is a vector<float> for each jets. Here we cut on the 0th entry of this vector
611  # FillerTools = [
612  # "pt",
613  # ] ),
614 
615  #1D histos
616  "pt",
617  "m",
618  "eta",
619  "phi",
620  "e",
621  "et",
622 
623  #2D histos
624  "pt;m", # mass vs pt
625  "eta;phi", # phi vs eta
626  "eta;e", # energy vs eta
627  "phi;e", # energy vs phi
628 
629  #Event selection
630  SelectSpec( 'central', '|eta|<3.2', path, FillerTools = ["pt","et","m"] ),
631  SelectSpec( 'forward', '3.2<|eta|', path, FillerTools = ["pt","et","m"] ),
632  SelectSpec( 'lowmu', 'avgMu<30', path, isEventVariable=True, FillerTools = ["pt","et","m","phi","eta"]),
633  SelectSpec( 'highmu', '30<avgMu', path, isEventVariable=True, FillerTools = ["pt","et","m","phi","eta"]),
634 
635  EventHistoSpec('njets', (25,minNjetBin,25), title='NJets;NJets;Entries' ),
636  EventHistoSpec('njetsPt20', (25,minNjetBin,25), title='NJetsPt20;NJetsPt20;Entries' ),
637  EventHistoSpec('njetsPt50', (25,minNjetBin,25), title='NJetsPt50;NJetsPt50;Entries' ),
638 
639  )
640 
641  return Conf
642 
643 # Basic selection of histograms common for heavy ion online and offline jets

◆ getBinningFromThreshold()

def TrigJetMonitorAlgorithm.getBinningFromThreshold (   chain,
  varname 
)

Definition at line 263 of file TrigJetMonitorAlgorithm.py.

263 def getBinningFromThreshold(chain,varname):
264  #default binning if nothing below applies
265  xbins, xmin, xmax = 160,0.,800000.
266  #pt and et binning based on threshold
267  if varname == "pt" or varname == "et":
268  if 'noalg' in chain:
269  if 'jJ500' in chain or 'J400' in chain: return 160,xmin,800000
270  else: return 100,xmin,500000 # good enough for L1 jJ40 & jJ100
271  else:
272  #threshold = int(chain.split("_")[1].split('j')[1])
273  threshold = int(re.search(r'\d+',chain.split("_")[1].split('j')[1]).group())
274  if threshold < 50:
275  return 40, 0., 100000.
276  if threshold < 120:
277  return 36, 20000., 200000.
278 
279  xbins = 40
280  xmin = 50000.+100000.*(int(threshold/100)-1) #example: threshold = 330 -> 250 to 450; threshold = 420 -> 350 to 550
281  if threshold % 100 == 0: #gives enough low bins if threshold is an exact divider of 100 GeV such as 3j200
282  xmin = 1000.*(threshold - 100.)
283  xmax = xmin + 200000.
284  if "a10" in chain: # efficiency curve broader for large-R jets
285  xmin = xmin - 50000.
286  xmax = xmax + 50000.
287  if "pf" in chain:
288  xmax = xmax + 50000. # needed to include efficiency plateau for large-R PFlow chains
289  if "smc" in chain:
290  xmax = xmax + 50000. # efficiency plateau even higher for a10 pdf smc chains due to imperfect calibration
291  #mass binning for large-R smc chains
292  elif varname == "m":
293  xbins, xmin, xmax = 35, 30000., 100000.
294  return xbins, xmin, xmax
295 

◆ getChains2Monitor()

def TrigJetMonitorAlgorithm.getChains2Monitor (   inputFlags,
  monMode 
)

Definition at line 175 of file TrigJetMonitorAlgorithm.py.

175 def getChains2Monitor(inputFlags, monMode):
176 
177  Chains2Monitor = dict()
178  from TrigConfigSvc.TriggerConfigAccess import getHLTMonitoringAccess
179  monAccess = getHLTMonitoringAccess(inputFlags)
180 
181  # set HLT jet collection, reference chain and offline jet collection
182  # for turn-on curves
183  ListOfMonChains = monAccess.monitoredChains(signatures="jetMon", monLevels = ["shifter","t0"])
184 
185  default_dict = {"HLTColl": "NONE", "RefChain": "NONE" ,"OfflineColl": "NONE"}
186  Chains2Monitor[monMode] = dict((chain, default_dict.copy()) for chain in ListOfMonChains)
187 
188  if monMode == 'HI':
189  for chainName in Chains2Monitor['HI']:
190  if '_ion_' in chainName:
191  Chains2Monitor['HI'][chainName]["HLTColl"] = "HLT_AntiKt4HIJets"
192  Chains2Monitor['HI'][chainName]["OfflineColl"] = "AntiKt4HIJets"
193  else:
194  Chains2Monitor['HI'][chainName]["HLTColl"] = "HLT_AntiKt4EMPFlowJets_jes_ftf"
195  if not inputFlags.Common.doExpressProcessing:
196  Chains2Monitor['HI'][chainName]["OfflineColl"] = "AntiKt4EMPFlowJets" #we do not have EMPFlowJets in HI express stream
197  else:
198  Chains2Monitor['HI'][chainName]["OfflineColl"] = "AntiKt4HIJets"
199  # only HLT_noalg get efficiency curves by default, so...
200  # these are additional hard-coded chains for efficiency monitoring
201  if Chains2Monitor['HI'].get('HLT_j60_ion_L1jJ40'): Chains2Monitor['HI']['HLT_j60_ion_L1jJ40'].update({"RefChain": "HLT_noalg_L1jTE50", "OfflineColl": "AntiKt4HIJets"})
202  if Chains2Monitor['HI'].get('HLT_j75_ion_L1jJ60'): Chains2Monitor['HI']['HLT_j75_ion_L1jJ60'].update({"RefChain": "HLT_noalg_L1jTE50", "OfflineColl": "AntiKt4HIJets"})
203  if Chains2Monitor['HI'].get('HLT_j85_ion_L1jJ60'): Chains2Monitor['HI']['HLT_j85_ion_L1jJ60'].update({"RefChain": "HLT_noalg_L1jTE50", "OfflineColl": "AntiKt4HIJets"})
204  if Chains2Monitor['HI'].get('HLT_j150_ion_L1jJ90'): Chains2Monitor['HI']['HLT_j150_ion_L1jJ90'].update({"RefChain": "HLT_noalg_L1jTE50", "OfflineColl": "AntiKt4HIJets"})
205  if Chains2Monitor['HI'].get('HLT_j200_ion_L1jJ90'): Chains2Monitor['HI']['HLT_j200_ion_L1jJ90'].update({"RefChain": "HLT_noalg_L1jTE50", "OfflineColl": "AntiKt4HIJets"})
206 
207  if Chains2Monitor['HI'].get('HLT_j50f_ion_L1jJ40p30ETA49'): Chains2Monitor['HI']['HLT_j50f_ion_L1jJ40p30ETA49'].update({"RefChain": "HLT_noalg_L1jTE50", "OfflineColl": "AntiKt4HIJets"})
208  if Chains2Monitor['HI'].get('HLT_j60f_ion_L1jJ40p30ETA49'): Chains2Monitor['HI']['HLT_j60f_ion_L1jJ40p30ETA49'].update({"RefChain": "HLT_noalg_L1jTE50", "OfflineColl": "AntiKt4HIJets"})
209 
210  elif monMode == "pp":
211  # logic to define HLTColl, RefChain, OfflineColl
212  for chainName in Chains2Monitor['pp']:
213  Chains2Monitor['pp'][chainName]["HLTColl"] = "HLT_AntiKt4EMTopoJets_subjesIS"
214  if '_pf_' in chainName and 'a10' not in chainName:
215  Chains2Monitor['pp'][chainName]["HLTColl"] = "HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf"
216  Chains2Monitor['pp'][chainName]["OfflineColl"] = "AntiKt4EMPFlowJets"
217  elif 'a10' in chainName:
218  if 'a10t' in chainName: Chains2Monitor['pp'][chainName]["HLTColl"] = "HLT_AntiKt10LCTopoTrimmedPtFrac4SmallR20Jets_jes"
219  elif 'sd_cssk_pf' in chainName: Chains2Monitor['pp'][chainName]["HLTColl"] = "HLT_AntiKt10EMPFlowCSSKSoftDropBeta100Zcut10Jets_jes_ftf"
220  elif 'a10r' in chainName: Chains2Monitor['pp'][chainName]["HLTColl"] = "HLT_AntiKt10EMTopoRCJets_subjesIS"
221  else: Chains2Monitor['pp'][chainName]["HLTColl"] = "HLT_AntiKt10LCTopoJets_subjes"
222  elif '_noalg_' in chainName:
223  Chains2Monitor['pp'][chainName]["RefChain"] = "HLT_j45_pf_ftf_preselj20_L1jJ40" # temporarily modify to using small-R jet in turn-on for both small and large-R jets to fix tier0 jet mon crash ATR-25800!!
224  Chains2Monitor['pp'][chainName]["OfflineColl"] = "AntiKt4EMPFlowJets"
225  if 'gLJ' in chainName: Chains2Monitor['pp'][chainName]["HLTColl"] = "HLT_AntiKt10EMPFlowCSSKSoftDropBeta100Zcut10Jets_jes_ftf"
226  else: continue
227 
228 
229  if Chains2Monitor['pp'].get('HLT_j420_L1jJ160'): Chains2Monitor['pp']['HLT_j420_L1jJ160'].update({"RefChain": "HLT_j85_L1jJ50", "OfflineColl": "AntiKt4EMPFlowJets"})
230  if Chains2Monitor['pp'].get('HLT_3j200_L1jJ160'): Chains2Monitor['pp']['HLT_3j200_L1jJ160'].update({"RefChain": "HLT_j85_L1jJ50", "OfflineColl": "AntiKt4EMPFlowJets"})
231  if Chains2Monitor['pp'].get('HLT_4j120_L13jJ90'): Chains2Monitor['pp']['HLT_4j120_L13jJ90'].update({"RefChain": "HLT_j85_L1jJ50", "OfflineColl": "AntiKt4EMPFlowJets"})
232  if Chains2Monitor['pp'].get('HLT_5j80_pf_ftf_presel5j50_L14jJ40'): Chains2Monitor['pp']['HLT_5j80_pf_ftf_presel5j50_L14jJ40'].update({"RefChain": "HLT_j45_pf_ftf_preselj20_L1jJ40", "OfflineColl": "AntiKt4EMPFlowJets"})
233  if Chains2Monitor['pp'].get('HLT_j400_pf_ftf_L1jJ160'): Chains2Monitor['pp']['HLT_j400_pf_ftf_L1jJ160'].update({"RefChain": "HLT_j85_pf_ftf_preselj50_L1jJ50", "OfflineColl": "AntiKt4EMPFlowJets"})
234  if Chains2Monitor['pp'].get('HLT_j400_pf_ftf_preselj225_L1jJ160'): Chains2Monitor['pp']['HLT_j400_pf_ftf_preselj225_L1jJ160'].update({"RefChain": "HLT_j85_pf_ftf_preselj50_L1jJ50", "OfflineColl": "AntiKt4EMPFlowJets"})
235 
236  else:
237  errmsg = 'Returned empty Chains2Monitor due to invalid monMode'
238  raise RuntimeError(errmsg)
239  return Chains2Monitor
240 

◆ getEtaRange()

def TrigJetMonitorAlgorithm.getEtaRange (   chain)

Helpful functions.

Definition at line 245 of file TrigJetMonitorAlgorithm.py.

245 def getEtaRange(chain):
246  etaMin,etaMax = 0,2.5 # central jets by default
247 
248  if 'eta490_j' in chain: #workaround for the UPC (ultra-peripheral) trigger chains
249  etaMin,etaMax = 0,4.9
250  elif 'eta' in chain:
251  etaParts = chain.split('eta')
252  etaMinTemp = etaParts[0].split('_')
253  etaMin = etaMinTemp[len(etaMinTemp)-1]
254  etaMin = int(etaMin)/10
255  etaMax = etaParts[1].split('_')[0]
256  etaMax = int(etaMax)/10
257 
258  if 'f_ion' in chain: #workaround for the HLT forward triggers
259  etaMin,etaMax = 3.2,4.9
260 
261  return etaMin,etaMax
262 

◆ getHTBinning()

def TrigJetMonitorAlgorithm.getHTBinning (   chain,
  binwidth 
)

Definition at line 296 of file TrigJetMonitorAlgorithm.py.

296 def getHTBinning(chain,binwidth):
297  parts = chain.split('HT')
298  threshold = parts[1].split('_')[0]
299  if 'XX' in threshold:
300  threshold = threshold.split('XX')[0]
301  xmin = int(0.9 * int(threshold)) # xmin to make the threshold visible
302  xmax = xmin + 500
303  xbins = int((xmax-xmin)/binwidth)-1
304  return xbins, xmin, xmax
305 
306 # Add fast flavour-tag monitoring.
307 # Adds a 20 GeV jet pT cut to avoid FPE WARNINGS from jets below min jet pT for RoI track association

◆ getJetCopyAlg()

def TrigJetMonitorAlgorithm.getJetCopyAlg (   injets,
  outjets 
)
  Schedules JetCopier tool to make a shallow copy of
  the original offline/HLT jet container, for the JetMatcherAlg to decorate.
  This prevents our jet monitoring from decorating
  the original jet containers, which may end up being
  persistified in AOD/ESD (ATLASRECTS-7168,ATR-27980,ATR-26076)

Definition at line 369 of file TrigJetMonitorAlgorithm.py.

369 def getJetCopyAlg(injets,outjets):
370  '''
371  Schedules JetCopier tool to make a shallow copy of
372  the original offline/HLT jet container, for the JetMatcherAlg to decorate.
373  This prevents our jet monitoring from decorating
374  the original jet containers, which may end up being
375  persistified in AOD/ESD (ATLASRECTS-7168,ATR-27980,ATR-26076)
376  '''
377  jcopy = CompFactory.JetCopier(
378  "copier",
379  InputJets = injets,
380  DecorDeps=[],
381  ShallowCopy=True,
382  ShallowIO=True)
383 
384  jprovider = CompFactory.JetRecAlg(
385  "jetalg_copy_"+outjets,
386  Provider = jcopy,
387  Modifiers = [],
388  OutputContainer = outjets,
389  MonTool = None)
390 
391  return jprovider
392 

◆ getL1JetCopyAlg()

def TrigJetMonitorAlgorithm.getL1JetCopyAlg (   injets,
  outjets 
)
  Schedules L1JetCopyAlgorithm to make a shallow copy of
  the original L1 jet container, for the JetMatcherAlg to decorate.
  This prevents our jet monitoring from decorating
  the original jet containers, which may end up being
  persistified in AOD/ESD (ATLASRECTS-7168,ATR-27980,ATR-26076).
  The L1JetCopyAlgorithm is a templated class (e.g. L1JetCopyAlgorithm<JTM_JetRoIContainer>).
  The python class name is what is generated by Athena during build time.
  The template types are defined in JTMContainers.h.

Definition at line 393 of file TrigJetMonitorAlgorithm.py.

393 def getL1JetCopyAlg(injets,outjets):
394  '''
395  Schedules L1JetCopyAlgorithm to make a shallow copy of
396  the original L1 jet container, for the JetMatcherAlg to decorate.
397  This prevents our jet monitoring from decorating
398  the original jet containers, which may end up being
399  persistified in AOD/ESD (ATLASRECTS-7168,ATR-27980,ATR-26076).
400  The L1JetCopyAlgorithm is a templated class (e.g. L1JetCopyAlgorithm<JTM_JetRoIContainer>).
401  The python class name is what is generated by Athena during build time.
402  The template types are defined in JTMContainers.h.
403  '''
404  jcopy_alg = None
405  jcopy_alg_name = "l1jetcopy_alg_"+injets
406  if injets == "L1_jFexSRJetRoI":
407  jcopy_alg = CompFactory.L1JetCopyAlgorithm_JTM_jFexSRJetRoIContainer_(jcopy_alg_name)
408  elif injets in ["L1_gFexSRJetRoI", "L1_gFexLRJetRoI"]:
409  jcopy_alg = CompFactory.L1JetCopyAlgorithm_JTM_gFexJetRoIContainer_(jcopy_alg_name)
410  else:
411  raise ValueError(f"L1 jet container {injets} not recognised")
412  jcopy_alg.JetInContainerName = injets
413  jcopy_alg.JetOutContainerName = outjets
414 
415  return jcopy_alg
416 

◆ jetChainMonitoringConfig()

def TrigJetMonitorAlgorithm.jetChainMonitoringConfig (   inputFlags,
  jetcoll,
  chain,
  onlyUsePassingJets = True 
)
Function to configures some algorithms in the monitoring system.

Definition at line 904 of file TrigJetMonitorAlgorithm.py.

904 def jetChainMonitoringConfig(inputFlags,jetcoll,chain,onlyUsePassingJets=True):
905  '''Function to configures some algorithms in the monitoring system.'''
906 
907  jetcollFolder = jetcoll
908  chainFolder = chain
909 
910  #if not athenaMT:
911  # onlyUsePassingJets = False #does not work for legacy samples yet
912  jetMonAlgSpecName = chain+"TrigMon"
913  if not onlyUsePassingJets:
914  chainFolder = chainFolder + "/ExpertHistos"
915  jetMonAlgSpecName = jetMonAlgSpecName + "_ExpertHistos"
916 
917  # Define helper functions to automatize ET & eta selection strings for NJet histograms of chains
918  def getThreshold(parts):
919  return parts[1].split('_')[0]
920 
921  def getEtaRangeString(chain):
922  etaMin, etaMax = 0, 32
923  if 'eta490_j' in chain: #workaround for the upc chains
924  etaMin, etaMax = 0, 49
925  elif 'eta' in chain:
926  etaParts = chain.split('eta')
927  etaMinTemp = etaParts[0].split('_')
928  etaMin = etaMinTemp[len(etaMinTemp)-1]
929  etaMax = etaParts[1].split('_')[0]
930  if int(etaMin) > 0 : etaMin = str(int(int(etaMin)/10))
931  if int(etaMax) > 0 : etaMax = str(int(int(etaMax)/10))
932  if 'f_ion' in chain:
933  etaMin, etaMax = 32, 49
934  return 'Eta{}_{}'.format(etaMin,etaMax)
935 
936  def getNjetHistName(chain):
937  NjetHistName = 'NONE'
938  parts = chain.split('j')
939  # check if it is a multi-threshold multijet chain or a single-threshold multijet chain
940  multiplicity = parts[0].split('_')[1] # for single-threshold multijet chains
941  if (chain.count('_j')-chain.count('_jes')) > 1 or multiplicity != '':
942  NjetHistName = 'njetsEt{}{}'.format(getThreshold(parts),getEtaRangeString(chain))
943  return NjetHistName
944 
945 
946  trigConf = JetMonAlgSpec( # the usual JetMonAlgSpec
947  jetMonAlgSpecName,
948  JetContainerName = jetcoll,
949  TriggerChain = chain,
950  defaultPath = chainFolder,
951  topLevelDir="HLT/JetMon/Online/",
952  bottomLevelDir=jetcollFolder,
953  failureOnMissingContainer=True,
954  onlyPassingJets=onlyUsePassingJets,
955  isExpressStreamJob=inputFlags.Common.doExpressProcessing,
956  )
957 
958  trigConf.appendHistos(
959  "pt",
960  "m",
961  "eta",
962  "et",
963  "phi",
964  )
965  for hist in ExtraOnlineNJetHists: trigConf.appendHistos(EventHistoSpec(hist, (20,0,25), title=hist+';'+hist+';Entries'))
966  # Add NjetEt and NjetPt histograms for simple scenarios
967  if 'ht' not in chain and 'HT' not in chain and 'dijet' not in chain and 'DIJET' not in chain and 'fbdj' not in chain and 'noalg' not in chain:
968  NjetHistName = getNjetHistName(chain)
969  from JetMonitoring.JetStandardHistoSpecs import knownEventVar
970  if knownEventVar.get(NjetHistName,None) is not None and NjetHistName not in ExtraOnlineNJetHists: #avoids duplication warnings for some chains
971  trigConf.appendHistos(
972  EventHistoSpec(NjetHistName, (25,0,25), title=NjetHistName+';'+NjetHistName+';Entries' ),
973  )
974  NjetHistName = NjetHistName.replace('Et','Pt')
975  if knownEventVar.get(NjetHistName,None) is not None and NjetHistName not in ExtraOnlineNJetHists:
976  trigConf.appendHistos(
977  EventHistoSpec(NjetHistName, (25,0,25), title=NjetHistName+';'+NjetHistName+';Entries' ),
978  )
979  if 'ftf' in chain and 'a10' not in chain: # track-based JVT variables for FTF chains
980  trigConf.appendHistos("Jvt")
981  trigConf.appendHistos("JVFCorr")
982  trigConf.appendHistos("JvtRpt")
983 
984  if 'ht' in chain or 'HT' in chain:
985  def defineHistoForHTChain(conf, parentAlg, monhelper , path):
986  # create a monitoring group with the histo path starting from the parentAlg
987  group = monhelper.addGroup(parentAlg, conf.Group, conf.topLevelDir+jetcollFolder+'/')
988  # define the histograms
989  xbins, xmin, xmax = getHTBinning(chain,25) # bin width in GeV
990  group.defineHistogram("jetHT;HT",title="Jet HT;H_{T} [GeV];Entries", type="TH1F", path=chainFolder, xbins=xbins , xmin=xmin, xmax=xmax ,)
991  trigConf.appendHistos(ToolSpec('JetHistoHTFiller','JetHistoHTFiller_'+chain,MinPt=30.,MaxEta=3.2,FailureOnMissingContainer=False,
992  defineHistoFunc=defineHistoForHTChain,Group='jetHT_'+jetcoll))
993 
994  return trigConf
995 

◆ jetEfficiencyMonitoringConfig()

def TrigJetMonitorAlgorithm.jetEfficiencyMonitoringConfig (   inputFlags,
  onlinejetcoll,
  offlinejetcoll,
  chain,
  refChain 
)
Function to configures some algorithms in the monitoring system.

Definition at line 996 of file TrigJetMonitorAlgorithm.py.

996 def jetEfficiencyMonitoringConfig(inputFlags,onlinejetcoll,offlinejetcoll,chain,refChain):
997  '''Function to configures some algorithms in the monitoring system.'''
998 
999  jetcollFolder = onlinejetcoll
1000  chainFolder = chain
1001 
1002  # We schedule a new JetAlg which will be acting only when a TriggerChain fired (using the TriggerChain from the base classes).
1003  # We'll plot 1 histo build by a dedicated JetHistoTriggEfficiency tool.
1004  # So we'll have to explicitely give a specification via the generic dicionnary 'ToolSpec'
1005  # This implies defining a little function which declares to the monitoring framework which variables to histogram and how.
1006  # this is done here.
1007  def defineHistoForJetTrigg(conf, parentAlg, monhelper , path):
1008  # create a monitoring group with the histo path starting from the parentAlg
1009  group = monhelper.addGroup(parentAlg, conf.Group, conf.topLevelDir+jetcollFolder+'/')
1010  # define the histogram, give them individual names so they don't overwrite each other
1011  append = "offlineCut_"+conf.name.split("_")[-1] if "offlineCut" in conf.name else "noOfflineCut"
1012  histname = "trigEff_vs_"+conf.Var.Name+"_"+append
1013  xbins, xmin, xmax = getBinningFromThreshold(chain,conf.Var.Name)
1014  group.defineHistogram('trigPassed,jetVar;'+histname, title=histname, type="TEfficiency",
1015  path=chainFolder,
1016  xbins=xbins , xmin=xmin, xmax=xmax,)
1017 
1018  # Get jet index and eta selection for offline jets
1019  validchain = chain.replace('noalg','j0')
1020  parts = validchain.split('j')
1021  multiplicity = parts[0].split('_')[1]
1022  if multiplicity != '': index = int(multiplicity) - 1 # single-threhold multijet chains
1023  else: index = 0 # single-jet chain
1024  etaMin,etaMax = getEtaRange(chain)
1025 
1026  from JetMonitoring.JetMonitoringConfig import retrieveVarToolConf
1027  trigConf = JetMonAlgSpec( # the usual JetMonAlgSpec
1028  chain+"TrigEffMon",
1029  JetContainerName = offlinejetcoll,
1030  TriggerChain = refChain, # reference chain
1031  defaultPath = chainFolder,
1032  topLevelDir = "HLT/JetMon/Online/",
1033  bottomLevelDir = jetcollFolder,
1034  failureOnMissingContainer = True,
1035  onlyPassingJets = False,
1036  )
1037  trigConf.appendHistos(
1038  SelectSpec( 'eff', '{}<|eta|<{}'.format(etaMin,etaMax), chainFolder, SelectedIndex=index, FillerTools = [
1039  # we pass directly the ToolSpec
1040  ToolSpec('JetHistoTriggEfficiency', chain,
1041  # below we pass the Properties of this JetHistoTriggEfficiency tool :
1042  Group='jetTrigGroup_'+chain,
1043  Var=retrieveVarToolConf("pt"), # In this context we can not just pass a str alias to describe a histo variable
1044  # so we use retrieveVarToolConf("pt") which returns a full specification for the "pt" histo variable.
1045  ProbeTrigChain=chain,defineHistoFunc=defineHistoForJetTrigg),
1046  ] ),
1047  )
1048 
1049  if 'smc' in chain:
1050  trigConf.appendHistos(
1051  SelectSpec( 'm50', '50<m:GeV&{}<|eta|<{}'.format(etaMin,etaMax), chainFolder, SelectedIndex=index, FillerTools = [
1052  ToolSpec('JetHistoTriggEfficiency', chain+'_offlineCut_m50',
1053  Group='jetTrigGroup_'+chain+'_m50',
1054  Var=retrieveVarToolConf("pt"), # In this context we can not just pass a str alias to describe a histo variable
1055  ProbeTrigChain=chain,defineHistoFunc=defineHistoForJetTrigg
1056  ),
1057  ] ),
1058  SelectSpec( 'et500', '500<et:GeV&{}<|eta|<{}'.format(etaMin,etaMax), chainFolder, SelectedIndex=index, FillerTools = [
1059  ToolSpec('JetHistoTriggEfficiency', chain+'_offlineCut_et500',
1060  Group='jetTrigGroup_'+chain+'_et500',
1061  Var=retrieveVarToolConf("m"), # In this context we can not just pass a str alias to describe a histo variable
1062  SortJets=True,
1063  ProbeTrigChain=chain,defineHistoFunc=defineHistoForJetTrigg
1064  ),
1065  ] ),
1066  )
1067 
1068  return trigConf
1069 

◆ jetMonitoringConfig()

def TrigJetMonitorAlgorithm.jetMonitoringConfig (   inputFlags,
  jetcoll,
  jetCollDict,
  monMode 
)
Function to configures some algorithms in the monitoring system.

Definition at line 724 of file TrigJetMonitorAlgorithm.py.

724 def jetMonitoringConfig(inputFlags,jetcoll,jetCollDict,monMode):
725  '''Function to configures some algorithms in the monitoring system.'''
726 
727  isOnline = True if 'HLT' in jetcoll else False
728 
729  if monMode == 'HI': # Heavy ion jet monitoring histos
730  conf = basicHIJetMonAlgSpec(jetcoll,isOnline)
731  else:
732  conf = basicJetMonAlgSpec(jetcoll,isOnline)
733 
734  jetCollMonDetails = jetCollDict[monMode][jetcoll]
735 
736  # Declare a configuration dictionnary for a JetContainer
737  if isOnline:
738  if 'AntiKt4' in jetcoll or 'a4tcem' in jetcoll:
739  if monMode == 'pp': #Use extra histos for pp only
740  for hist in ExtraSmallROnlineHists: conf.appendHistos(hist)
741  if 'ftf' in jetcoll: # dedicated histograms for FTF chains
742  conf.appendHistos("Jvt")
743  conf.appendHistos("JVFCorr")
744  conf.appendHistos("JvtRpt")
745  conf.appendHistos("SumPtTrkPt500[0]")
746  conf.appendHistos("NumTrkPt1000[0]")
747  conf.appendHistos("TrackWidthPt1000[0]")
748  if 'PF' in jetcoll: # dedicated histograms for online PFlow jets
749  conf.appendHistos("SumPtChargedPFOPt500[0]")
750  conf.appendHistos("fCharged")
751  if "subresjesgscIS" in jetcoll:
752  addFlavourTagVariables(conf,"fastDIPS20211215")
753  addFlavourTagVariables(conf,"GN120230331")
754  addFlavourTagVariables(conf,"tlaGN220240122")
755  if 'fastftag' in jetcoll:
756  addFlavourTagVariables(conf,"fastDips")
757  addFlavourTagVariables(conf, "fastGN120230327")
758  addFlavourTagVariables(conf,"fastGN220240122")
759  addFlavourTagVariables(conf,"fastGNTau20240216", flavs=["tau", "u"])
760  if 'EMTopo' in jetcoll: #dedicated histograms for online EMTopo jets
761  conf.appendHistos("Timing")
762  else:
763  for hist in ExtraLargeROnlineHists: conf.appendHistos(hist)
764  # Add matched jets plots
765  if jetCollMonDetails['MatchTo'] != 'NONE':
766  def defineHistoForHLTJetMatch(conf, parentAlg, monhelper , path):
767  # create a monitoring group with the histo path starting from the parentAlg
768  group = monhelper.addGroup(parentAlg, conf.Group, conf.topLevelDir+'/'+conf.bottomLevelDir+'/NoTriggerSelection/')
769  # define the histograms
770  for histname in [ 'ptdiff', 'energydiff', 'massdiff' ]: #defines which variable difference will be plotted
771  group.defineHistogram(histname,title=histname, type="TH1F",
772  path='MatchedJets_{}'.format(jetCollMonDetails['MatchTo']),
773  xbins=100 , xmin=-100000., xmax=100000. ,)
774 
775  for histname in [ 'ptresp', 'energyresp', 'massresp' ]:
776  group.defineHistogram(histname,title=histname, type="TH1F",
777  path='MatchedJets_{}'.format(jetCollMonDetails['MatchTo']),
778  xbins=100 , xmin=-2., xmax=2. ,)
779 
780  group.defineHistogram('ptresp,ptref;ptresp_vs_ptRef',title='ptresponse vs ptRef', type="TH2F",
781  path='MatchedJets_{}'.format(jetCollMonDetails['MatchTo']),
782  xbins=10 , xmin=-2., xmax=2., ybins=10, ymin=0., ymax=500000.,)
783 
784  group.defineHistogram('ptresp,etaref;ptresp_vs_etaRef',title='ptresponse vs etaRef', type="TH2F",
785  path='MatchedJets_{}'.format(jetCollMonDetails['MatchTo']),
786  xbins=10 , xmin=-2., xmax=2., ybins=10, ymin=-5., ymax=5.,)
787 
788  group.defineHistogram('ptref,ptresp;ptRef_vs_ptresp',title='ptRef vs ptresponse', type="TH2F",
789  path='MatchedJets_{}'.format(jetCollMonDetails['MatchTo']),
790  xbins=100 , xmin=0., xmax=400000., ybins=80, ymin=-2., ymax=2.,)
791 
792  group.defineHistogram('etaref,ptresp;etaRef_vs_ptresp',title='etaRef vs ptresponse', type="TH2F",
793  path='MatchedJets_{}'.format(jetCollMonDetails['MatchTo']),
794  xbins=100 , xmin=-5., xmax=5., ybins=80, ymin=-2., ymax=2.,)
795 
796  matchedJetColl = jetCollMonDetails['MatchTo']
797 
798  # we can get specific calibration scales by adding e.g. '_EtaJESScale' to the strings
799  jetmatchKey = '{}.matched_{}'.format(jetcoll,matchedJetColl)
800  jetptdiffKey = '{}.ptdiff_{}'.format(jetcoll,matchedJetColl)
801  jetenergydiffKey = '{}.energydiff_{}'.format(jetcoll,matchedJetColl)
802  jetmassdiffKey = '{}.massdiff_{}'.format(jetcoll,matchedJetColl)
803  jetptrespKey = '{}.ptresp_{}'.format(jetcoll,matchedJetColl)
804  jetenergyrespKey = '{}.energyresp_{}'.format(jetcoll,matchedJetColl)
805  jetmassrespKey = '{}.massresp_{}'.format(jetcoll,matchedJetColl)
806  jetptrefKey = '{}.ptRef_{}'.format(jetcoll,matchedJetColl)
807  jetetarefKey = '{}.etaRef_{}'.format(jetcoll,matchedJetColl)
808  name = 'jetMatched_{}_{}'.format(jetcoll,matchedJetColl)
809  conf.appendHistos(ToolSpec('JetHistoMatchedFiller', name,
810  JetMatchedKey=jetmatchKey, JetPtDiffKey=jetptdiffKey,
811  JetEnergyDiffKey=jetenergydiffKey,
812  JetMassDiffKey=jetmassdiffKey, JetPtRespKey=jetptrespKey,
813  JetEnergyRespKey=jetenergyrespKey, JetMassRespKey=jetmassrespKey,
814  JetPtRefKey=jetptrefKey,JetEtaRefKey=jetetarefKey,
815  defineHistoFunc=defineHistoForHLTJetMatch,Group='matchedJets_'+jetcoll)
816  )
817  else: # offline
818  for hist in ExtraOfflineHists: conf.appendHistos(hist)
819  if 'AntiKt4' in jetcoll and monMode=="pp":
820  conf.appendHistos(SelectSpec('LooseBadFailedJets', 'LooseBad',
821  InverseJetSel=True,
822  FillerTools = ["pt",
823  "phi",
824  "eta"])) #cleaning variables not applicable for large-R collections
825 
826  if 'PF' in jetcoll: # dedicated histograms for offline PFlow jets
827  conf.appendHistos("SumPtChargedPFOPt500[0]")
828  conf.appendHistos("fCharged")
829  elif 'EMTopo' in jetcoll:
830  conf.appendHistos("Timing")
831  if jetCollMonDetails['MatchTo'] != 'NONE':
832  def defineHistoForOfflineJetMatch(conf, parentAlg, monhelper , path):
833  # create a monitoring group with the histo path starting from the parentAlg
834  group = monhelper.addGroup(parentAlg, conf.Group, conf.topLevelDir+'/'+conf.bottomLevelDir+'/standardHistos/')
835  # define the histograms
836  for histname in [ 'ptdiff', 'energydiff', 'massdiff' ]: #defines which variable difference will be plotted
837  group.defineHistogram(histname,title=histname, type="TH1F",
838  path='MatchedJets_{}'.format(jetCollMonDetails['MatchTo']),
839  xbins=100 , xmin=-100000., xmax=100000. ,)
840 
841  for histname in [ 'ptresp', 'energyresp', 'massresp' ]:
842  group.defineHistogram(histname,title=histname, type="TH1F",
843  path='MatchedJets_{}'.format(jetCollMonDetails['MatchTo']),
844  xbins=100 , xmin=-2., xmax=2. ,)
845 
846  group.defineHistogram('ptresp,ptref;ptresp_vs_ptRef',title='ptresp vs ptRef', type="TH2F",
847  path='MatchedJets_{}'.format(jetCollMonDetails['MatchTo']),
848  xbins=10 , xmin=-2., xmax=2., ybins=10, ymin=0., ymax=500000.,)
849 
850  group.defineHistogram('ptresp,etaref;ptresp_vs_etaRef',title='ptresp vs etaRef', type="TH2F",
851  path='MatchedJets_{}'.format(jetCollMonDetails['MatchTo']),
852  xbins=10 , xmin=-2., xmax=2., ybins=10, ymin=-5., ymax=5.,)
853 
854  group.defineHistogram('ptref,ptresp;ptRef_vs_ptresp',title='ptRef vs ptresponse', type="TH2F",
855  path='MatchedJets_{}'.format(jetCollMonDetails['MatchTo']),
856  xbins=100 , xmin=0., xmax=400000., ybins=80, ymin=-2., ymax=2.,)
857 
858  group.defineHistogram('etaref,ptresp;etaRef_vs_ptresp',title='etaRef vs ptresponse', type="TH2F",
859  path='MatchedJets_{}'.format(jetCollMonDetails['MatchTo']),
860  xbins=100 , xmin=-5., xmax=5., ybins=80, ymin=-2., ymax=2.,)
861 
862  matchedJetColl = jetCollMonDetails['MatchTo']
863  jetmatchKey = '{}.matched_{}'.format(jetcoll,matchedJetColl)
864  jetptdiffKey = '{}.ptdiff_{}'.format(jetcoll,matchedJetColl)
865  jetenergydiffKey = '{}.energydiff_{}'.format(jetcoll,matchedJetColl)
866  jetmassdiffKey = '{}.massdiff_{}'.format(jetcoll,matchedJetColl)
867  jetptrespKey = '{}.ptresp_{}'.format(jetcoll,matchedJetColl)
868  jetenergyrespKey = '{}.energyresp_{}'.format(jetcoll,matchedJetColl)
869  jetmassrespKey = '{}.massresp_{}'.format(jetcoll,matchedJetColl)
870  jetptrefKey = '{}.ptRef_{}'.format(jetcoll,matchedJetColl)
871  jetetarefKey = '{}.etaRef_{}'.format(jetcoll,matchedJetColl)
872  name = 'jetMatched_{}_{}'.format(jetcoll,matchedJetColl)
873  conf.appendHistos(ToolSpec('JetHistoMatchedFiller',name,
874  JetMatchedKey=jetmatchKey, JetPtDiffKey=jetptdiffKey,
875  JetEnergyDiffKey=jetenergydiffKey,
876  JetMassDiffKey=jetmassdiffKey, JetPtRespKey=jetptrespKey,
877  JetEnergyRespKey=jetenergyrespKey,
878  JetMassRespKey=jetmassrespKey,
879  JetPtRefKey=jetptrefKey, JetEtaRefKey=jetetarefKey,
880  defineHistoFunc=defineHistoForOfflineJetMatch,Group='matchedJets_'+jetcoll)
881  )
882 
883  return conf
884 

◆ l1JetMonitoringConfig()

def TrigJetMonitorAlgorithm.l1JetMonitoringConfig (   inputFlags,
  jetColl,
  jetDict,
  monMode,
  chain = '',
  matched = False 
)

Definition at line 885 of file TrigJetMonitorAlgorithm.py.

885 def l1JetMonitoringConfig(inputFlags,jetColl, jetDict, monMode,chain='',matched=False):
886 
887  from TrigJetMonitoring.L1JetMonitoringConfig import L1JetMonAlg
888  name = jetColl if chain=='' else jetColl+'_'+chain
889 
890  jetCollKey = jetColl
891  jetColl = jetColl.replace(f"_{copySuffix}","")
892 
893  if not jetDict[monMode][jetCollKey]['MatchTo']:
894  conf = L1JetMonAlg(name,jetColl,jetCollKey,chain)
895  else:
896  assert len(jetDict[monMode][jetCollKey]['MatchTo']) == 2
897 
898  conf = L1JetMonAlg(name,jetColl,jetCollKey,chain,
899  matched,jetDict[monMode][jetCollKey]['MatchTo'][0],
900  jetDict[monMode][jetCollKey]['MatchTo'][1])
901 
902  return conf
903 

◆ TrigJetMonConfig()

def TrigJetMonitorAlgorithm.TrigJetMonConfig (   inputFlags)

Definition at line 417 of file TrigJetMonitorAlgorithm.py.

417 def TrigJetMonConfig(inputFlags):
418 
419  from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
420  cfg = ComponentAccumulator()
421 
422  monMode = 'pp'
423  if inputFlags.Reco.EnableHI: monMode = 'HI'
424 
425  Chains2Monitor = getChains2Monitor(inputFlags, monMode)
426 
427  # Protections
428  # Add missing jet collections to JetCollections dict
429  # (this can happen if a given chain uses a jet collection that is not listed in JetCollections)
430  # TODO: make more general
431  for chain,chaindict in Chains2Monitor[monMode].items():
432  if chaindict['HLTColl'] not in JetCollections[case]: # chain will not be monitored unless HLT collection is present in JetCollections
433  JetCollections[case][chaindict['HLTColl']] = {'MatchTo': 'NONE'}
434 
435  # Match HLT jets to offline jets
436  CopiedJetCollections = copy.deepcopy(JetCollections)
437  for hltColl,collDict in JetCollections[monMode].items():
438  if collDict['MatchTo'] != 'NONE':
439  copiedhltColl = f'{hltColl}_{copySuffix}'
440  CopiedJetCollections[monMode][copiedhltColl] = CopiedJetCollections[monMode].pop(hltColl)
441  jetcopyalg = getJetCopyAlg(hltColl,copiedhltColl)
442  jetcopyalg.ExtraInputs.add(('xAOD::TrigCompositeContainer',
443  'StoreGateSvc+%s' % getRun3NavigationContainerFromInput(inputFlags)))
444  cfg.addEventAlgo(jetcopyalg)
445  for jetcalibscale in OnlineScaleMomenta:
446  scalestring = "_"+jetcalibscale if jetcalibscale != "" else ""
447  name = 'Matching_{}{}_{}'.format(hltColl,scalestring,collDict['MatchTo'])
448  alg = CompFactory.JetMatcherAlg(name,
449  JetContainerName1=copiedhltColl,
450  JetContainerName2=collDict['MatchTo'],
451  JetCalibScale=jetcalibscale)
452 
453  alg.ExtraInputs.add(('xAOD::TrigCompositeContainer',
454  'StoreGateSvc+%s' % getRun3NavigationContainerFromInput(inputFlags)))
455  cfg.addEventAlgo(alg)
456 
457  # Match offline to offline jets
458  CopiedOfflineJetCollections = copy.deepcopy(OfflineJetCollections)
459  for offjetColl,collDict in OfflineJetCollections[monMode].items():
460  if collDict['MatchTo'] != 'NONE':
461  copiedjetcoll = f'{offjetColl}_{copySuffix}'
462  CopiedOfflineJetCollections[monMode][copiedjetcoll] = CopiedOfflineJetCollections[monMode].pop(offjetColl)
463  jetcopyalg = getJetCopyAlg(offjetColl,copiedjetcoll)
464  cfg.addEventAlgo(jetcopyalg)
465  for jetcalibscale in OfflineScaleMomenta:
466  scalestring = "_"+jetcalibscale if jetcalibscale != "" else ""
467  name = 'Matching_{}{}_{}'.format(offjetColl,scalestring,collDict['MatchTo'])
468  alg = CompFactory.JetMatcherAlg(name,
469  JetContainerName1=copiedjetcoll,
470  JetContainerName2=collDict['MatchTo'],
471  JetCalibScale=jetcalibscale)
472 
473  alg.ExtraInputs.add(('xAOD::TrigCompositeContainer',
474  'StoreGateSvc+%s' % getRun3NavigationContainerFromInput(inputFlags)))
475  cfg.addEventAlgo(alg)
476 
477  # Make copy of every L1 jet collection
478  # Then match L1 to offline as well as HLT jets
479  CopiedL1JetCollections = copy.deepcopy(L1JetCollections)
480  for l1jetColl,collDict in L1JetCollections[monMode].items():
481  copiedl1jetColl = f'{l1jetColl}_{copySuffix}'
482  CopiedL1JetCollections[monMode][copiedl1jetColl] = CopiedL1JetCollections[monMode].pop(l1jetColl)
483  l1jetcopyalg = getL1JetCopyAlg(l1jetColl,copiedl1jetColl)
484  l1jetcopyalg.ExtraInputs.add(('xAOD::TrigCompositeContainer',
485  'StoreGateSvc+%s' % getRun3NavigationContainerFromInput(inputFlags)))
486  cfg.addEventAlgo(l1jetcopyalg)
487  for matchjetcoll in collDict['MatchTo']:
488 
489  kwds = {'name': 'Matching_{}_{}'.format(l1jetColl,matchjetcoll),
490  l1Coll2MatcherKey[l1jetColl]: copiedl1jetColl,
491  'JetContainerName2': matchjetcoll,
492  'MatchL1': True
493  }
494 
495  alg = CompFactory.JetMatcherAlg(**kwds)
496  alg.ExtraInputs.add(('xAOD::TrigCompositeContainer',
497  'StoreGateSvc+%s' % getRun3NavigationContainerFromInput(inputFlags)))
498  cfg.addEventAlgo(alg)
499 
500  # The following class will make a sequence, configure algorithms, and link
501  # them to GenericMonitoringTools
502  from AthenaMonitoring import AthMonitorCfgHelper
503  helper = AthMonitorCfgHelper(inputFlags,'TrigJetMonitorAlgorithm')
504  # Configure filter tools
505  from AthenaMonitoring.EventFlagFilterToolConfig import EventFlagFilterToolCfg
506  from AthenaMonitoring.BadLBFilterToolConfig import LArBadLBFilterToolCfg
507  # Loop over L1 jet collections
508  for jetcoll in CopiedL1JetCollections[monMode]:
509  l1jetconf = l1JetMonitoringConfig(inputFlags,jetcoll,CopiedL1JetCollections,monMode,'',True)
510  alg=l1jetconf.toAlg(helper)
511  alg.FilterTools = [ EventFlagFilterToolCfg(inputFlags),helper.resobj.popToolsAndMerge(LArBadLBFilterToolCfg(inputFlags))]
512 
513  # Loop over L1 jet chains
514  for chain,jetcolls in Chain2L1JetCollDict[monMode].items():
515  for jetcoll in jetcolls:
516  l1chainconf = l1JetMonitoringConfig(inputFlags,jetcoll,L1JetCollections,monMode,chain)
517  alg=l1chainconf.toAlg(helper)
518  alg.FilterTools = [ EventFlagFilterToolCfg(inputFlags),helper.resobj.popToolsAndMerge(LArBadLBFilterToolCfg(inputFlags))]
519 
520  # Loop over offline jet collections
521  for jetcoll in CopiedOfflineJetCollections[monMode]:
522  offlineMonitorConf = jetMonitoringConfig(inputFlags,jetcoll,CopiedOfflineJetCollections,monMode)
523  alg=offlineMonitorConf.toAlg(helper)
524  alg.FilterTools = [ EventFlagFilterToolCfg(inputFlags),helper.resobj.popToolsAndMerge(LArBadLBFilterToolCfg(inputFlags))]
525 
526  # Loop over HLT jet collections
527  for jetcoll in CopiedJetCollections[monMode]:
528  monitorConf = jetMonitoringConfig(inputFlags,jetcoll,CopiedJetCollections,monMode)
529  # then we turn the full specification into properly configured algorithm and tools.
530  # we use the method 'toAlg()' defined for the specialized dictionnary 'JetMonAlgSpec'
531  monitorConf.toAlg(helper)
532 
533  # Loop over HLT jet chains
534  for chain,chainDict in Chains2Monitor[monMode].items():
535  jetcoll = chainDict['HLTColl']
536  # kinematic plots
537  # only use passing jets
538  chainMonitorConfT = jetChainMonitoringConfig(inputFlags,jetcoll,chain,True)
539  alg=chainMonitorConfT.toAlg(helper)
540  alg.FilterTools = [ EventFlagFilterToolCfg(inputFlags),helper.resobj.popToolsAndMerge(LArBadLBFilterToolCfg(inputFlags))]
541  # all jets
542  chainMonitorConfF = jetChainMonitoringConfig(inputFlags,jetcoll,chain,False)
543  alg=chainMonitorConfF.toAlg(helper)
544  alg.FilterTools = [ EventFlagFilterToolCfg(inputFlags),helper.resobj.popToolsAndMerge(LArBadLBFilterToolCfg(inputFlags))]
545  # efficiency plots
546  if chainDict['RefChain'] != 'NONE' and chainDict['OfflineColl'] != 'NONE':
547  effMonitorConf = jetEfficiencyMonitoringConfig(inputFlags,jetcoll,chainDict['OfflineColl'],chain,chainDict['RefChain'])
548  effMonitorConf.toAlg(helper)
549 
550  cfg.merge(helper.result())
551  return cfg
552 
553 
554 # Basic selection of histograms common for online and offline jets

Variable Documentation

◆ action

TrigJetMonitorAlgorithm.action

Definition at line 1076 of file TrigJetMonitorAlgorithm.py.

◆ alg

TrigJetMonitorAlgorithm.alg

Definition at line 1172 of file TrigJetMonitorAlgorithm.py.

◆ AntiKt10EMPFlowCSSK

TrigJetMonitorAlgorithm.AntiKt10EMPFlowCSSK

Definition at line 1139 of file TrigJetMonitorAlgorithm.py.

◆ AntiKt10EMPFlowCSSKSoftDrop

TrigJetMonitorAlgorithm.AntiKt10EMPFlowCSSKSoftDrop

Definition at line 1143 of file TrigJetMonitorAlgorithm.py.

◆ args

TrigJetMonitorAlgorithm.args

Definition at line 1080 of file TrigJetMonitorAlgorithm.py.

◆ Beta

TrigJetMonitorAlgorithm.Beta

Definition at line 1143 of file TrigJetMonitorAlgorithm.py.

◆ cfg

TrigJetMonitorAlgorithm.cfg

Definition at line 1120 of file TrigJetMonitorAlgorithm.py.

◆ Chain2L1JetCollDict

TrigJetMonitorAlgorithm.Chain2L1JetCollDict

Definition at line 111 of file TrigJetMonitorAlgorithm.py.

◆ chainMonitorConfF

TrigJetMonitorAlgorithm.chainMonitorConfF

Definition at line 1225 of file TrigJetMonitorAlgorithm.py.

◆ chainMonitorConfT

TrigJetMonitorAlgorithm.chainMonitorConfT

Definition at line 1222 of file TrigJetMonitorAlgorithm.py.

◆ Chains2Monitor

TrigJetMonitorAlgorithm.Chains2Monitor

Definition at line 1107 of file TrigJetMonitorAlgorithm.py.

◆ comp

TrigJetMonitorAlgorithm.comp

Definition at line 1129 of file TrigJetMonitorAlgorithm.py.

◆ copySuffix

TrigJetMonitorAlgorithm.copySuffix

constants

Definition at line 25 of file TrigJetMonitorAlgorithm.py.

◆ d_items

TrigJetMonitorAlgorithm.d_items

Definition at line 77 of file TrigJetMonitorAlgorithm.py.

◆ default

TrigJetMonitorAlgorithm.default

Definition at line 1076 of file TrigJetMonitorAlgorithm.py.

◆ dest

TrigJetMonitorAlgorithm.dest

Definition at line 1076 of file TrigJetMonitorAlgorithm.py.

◆ effMonitorConf

TrigJetMonitorAlgorithm.effMonitorConf

Definition at line 1229 of file TrigJetMonitorAlgorithm.py.

◆ EMPFlowCSSK

TrigJetMonitorAlgorithm.EMPFlowCSSK

Definition at line 1138 of file TrigJetMonitorAlgorithm.py.

◆ errmsg

TrigJetMonitorAlgorithm.errmsg

Definition at line 82 of file TrigJetMonitorAlgorithm.py.

◆ ExtraLargeROnlineHists

TrigJetMonitorAlgorithm.ExtraLargeROnlineHists

Definition at line 349 of file TrigJetMonitorAlgorithm.py.

◆ ExtraOfflineHists

TrigJetMonitorAlgorithm.ExtraOfflineHists

Definition at line 325 of file TrigJetMonitorAlgorithm.py.

◆ ExtraOnlineNJetHists

TrigJetMonitorAlgorithm.ExtraOnlineNJetHists

Definition at line 352 of file TrigJetMonitorAlgorithm.py.

◆ ExtraSmallROnlineHists

TrigJetMonitorAlgorithm.ExtraSmallROnlineHists

Definition at line 337 of file TrigJetMonitorAlgorithm.py.

◆ Files

TrigJetMonitorAlgorithm.Files

Definition at line 1099 of file TrigJetMonitorAlgorithm.py.

◆ flags

TrigJetMonitorAlgorithm.flags

Definition at line 1098 of file TrigJetMonitorAlgorithm.py.

◆ GenOfflineR10PF

TrigJetMonitorAlgorithm.GenOfflineR10PF

Definition at line 1082 of file TrigJetMonitorAlgorithm.py.

◆ helper

TrigJetMonitorAlgorithm.helper

Definition at line 1163 of file TrigJetMonitorAlgorithm.py.

◆ HISTFileName

TrigJetMonitorAlgorithm.HISTFileName

Definition at line 1101 of file TrigJetMonitorAlgorithm.py.

◆ hltColl

TrigJetMonitorAlgorithm.hltColl

Definition at line 1172 of file TrigJetMonitorAlgorithm.py.

◆ inputFile

TrigJetMonitorAlgorithm.inputFile

Definition at line 1086 of file TrigJetMonitorAlgorithm.py.

◆ isMC

TrigJetMonitorAlgorithm.isMC

Definition at line 1100 of file TrigJetMonitorAlgorithm.py.

◆ ItemList

TrigJetMonitorAlgorithm.ItemList

Definition at line 1156 of file TrigJetMonitorAlgorithm.py.

◆ items

TrigJetMonitorAlgorithm.items

Definition at line 71 of file TrigJetMonitorAlgorithm.py.

◆ JetCalibScale

TrigJetMonitorAlgorithm.JetCalibScale

Definition at line 1172 of file TrigJetMonitorAlgorithm.py.

◆ jetcoll

TrigJetMonitorAlgorithm.jetcoll

Definition at line 1219 of file TrigJetMonitorAlgorithm.py.

◆ JetCollections

TrigJetMonitorAlgorithm.JetCollections

HLT jet collections and chains to monitor.

Definition at line 152 of file TrigJetMonitorAlgorithm.py.

◆ JetContainerName1

TrigJetMonitorAlgorithm.JetContainerName1

Definition at line 1172 of file TrigJetMonitorAlgorithm.py.

◆ JetContainerName2

TrigJetMonitorAlgorithm.JetContainerName2

Definition at line 1172 of file TrigJetMonitorAlgorithm.py.

◆ key

TrigJetMonitorAlgorithm.key

Definition at line 1132 of file TrigJetMonitorAlgorithm.py.

◆ l1chainconf

TrigJetMonitorAlgorithm.l1chainconf

Definition at line 1202 of file TrigJetMonitorAlgorithm.py.

◆ l1Coll2MatcherKey

TrigJetMonitorAlgorithm.l1Coll2MatcherKey

Definition at line 93 of file TrigJetMonitorAlgorithm.py.

◆ l1jetColl

TrigJetMonitorAlgorithm.l1jetColl

Definition at line 1191 of file TrigJetMonitorAlgorithm.py.

◆ L1JetCollections

TrigJetMonitorAlgorithm.L1JetCollections

L1 jet collections and chains to monitor.

Definition at line 51 of file TrigJetMonitorAlgorithm.py.

◆ l1jetconf

TrigJetMonitorAlgorithm.l1jetconf

Definition at line 1197 of file TrigJetMonitorAlgorithm.py.

◆ L1JetContainerName1

TrigJetMonitorAlgorithm.L1JetContainerName1

Definition at line 1191 of file TrigJetMonitorAlgorithm.py.

◆ label

TrigJetMonitorAlgorithm.label

Definition at line 1138 of file TrigJetMonitorAlgorithm.py.

◆ logger

TrigJetMonitorAlgorithm.logger

Definition at line 12 of file TrigJetMonitorAlgorithm.py.

◆ match_HIL1_OfflineJets_List

TrigJetMonitorAlgorithm.match_HIL1_OfflineJets_List

Definition at line 56 of file TrigJetMonitorAlgorithm.py.

◆ match_largeRL1_OfflineJets_List

TrigJetMonitorAlgorithm.match_largeRL1_OfflineJets_List

Definition at line 55 of file TrigJetMonitorAlgorithm.py.

◆ match_smallRL1_OfflineJets_List

TrigJetMonitorAlgorithm.match_smallRL1_OfflineJets_List

Definition at line 53 of file TrigJetMonitorAlgorithm.py.

◆ matchjetcoll

TrigJetMonitorAlgorithm.matchjetcoll

Definition at line 1191 of file TrigJetMonitorAlgorithm.py.

◆ MatchL1

TrigJetMonitorAlgorithm.MatchL1

Definition at line 1191 of file TrigJetMonitorAlgorithm.py.

◆ modifiers

TrigJetMonitorAlgorithm.modifiers

Definition at line 1140 of file TrigJetMonitorAlgorithm.py.

◆ monitorConf

TrigJetMonitorAlgorithm.monitorConf

Definition at line 1212 of file TrigJetMonitorAlgorithm.py.

◆ monMode

TrigJetMonitorAlgorithm.monMode

Definition at line 1104 of file TrigJetMonitorAlgorithm.py.

◆ name

TrigJetMonitorAlgorithm.name

Definition at line 1171 of file TrigJetMonitorAlgorithm.py.

◆ offjetColl

TrigJetMonitorAlgorithm.offjetColl

Definition at line 1182 of file TrigJetMonitorAlgorithm.py.

◆ OfflineJetCollections

TrigJetMonitorAlgorithm.OfflineJetCollections

Offline jet collections to monitor.

Definition at line 31 of file TrigJetMonitorAlgorithm.py.

◆ offlineMonitorConf

TrigJetMonitorAlgorithm.offlineMonitorConf

Definition at line 1207 of file TrigJetMonitorAlgorithm.py.

◆ OfflineScaleMomenta

TrigJetMonitorAlgorithm.OfflineScaleMomenta

Definition at line 357 of file TrigJetMonitorAlgorithm.py.

◆ OnlineScaleMomenta

TrigJetMonitorAlgorithm.OnlineScaleMomenta

Definition at line 358 of file TrigJetMonitorAlgorithm.py.

◆ outputlist

TrigJetMonitorAlgorithm.outputlist

Definition at line 1123 of file TrigJetMonitorAlgorithm.py.

◆ parser

TrigJetMonitorAlgorithm.parser

Definition at line 1075 of file TrigJetMonitorAlgorithm.py.

◆ PrintDetailedConfig

TrigJetMonitorAlgorithm.PrintDetailedConfig

Definition at line 1083 of file TrigJetMonitorAlgorithm.py.

◆ ptmin

TrigJetMonitorAlgorithm.ptmin

Definition at line 1139 of file TrigJetMonitorAlgorithm.py.

◆ RunTruth

TrigJetMonitorAlgorithm.RunTruth

Definition at line 1081 of file TrigJetMonitorAlgorithm.py.

◆ scalestring

TrigJetMonitorAlgorithm.scalestring

Definition at line 1170 of file TrigJetMonitorAlgorithm.py.

◆ sequenceName

TrigJetMonitorAlgorithm.sequenceName

Definition at line 1174 of file TrigJetMonitorAlgorithm.py.

◆ substrmods

TrigJetMonitorAlgorithm.substrmods

Definition at line 1143 of file TrigJetMonitorAlgorithm.py.

◆ title

TrigJetMonitorAlgorithm.title

Definition at line 338 of file TrigJetMonitorAlgorithm.py.

◆ withDetails

TrigJetMonitorAlgorithm.withDetails

Definition at line 1237 of file TrigJetMonitorAlgorithm.py.

◆ ZCut

TrigJetMonitorAlgorithm.ZCut

Definition at line 1143 of file TrigJetMonitorAlgorithm.py.

TrigJetMonitorAlgorithm.getEtaRange
def getEtaRange(chain)
Helpful functions.
Definition: TrigJetMonitorAlgorithm.py:245
TrigJetMonitorAlgorithm.getJetCopyAlg
def getJetCopyAlg(injets, outjets)
Definition: TrigJetMonitorAlgorithm.py:369
python.JetAnalysisCommon.ComponentAccumulator
ComponentAccumulator
Definition: JetAnalysisCommon.py:302
vtune_athena.format
format
Definition: vtune_athena.py:14
python.TriggerConfigAccess.getHLTMonitoringAccess
HLTMonitoringAccess getHLTMonitoringAccess(flags=None)
Definition: TriggerConfigAccess.py:256
TrigJetMonitorAlgorithm.getHTBinning
def getHTBinning(chain, binwidth)
Definition: TrigJetMonitorAlgorithm.py:296
TrigJetMonitorAlgorithm.jetChainMonitoringConfig
def jetChainMonitoringConfig(inputFlags, jetcoll, chain, onlyUsePassingJets=True)
Definition: TrigJetMonitorAlgorithm.py:904
TrigJetMonitorAlgorithm.getChains2Monitor
def getChains2Monitor(inputFlags, monMode)
Definition: TrigJetMonitorAlgorithm.py:175
TrigJetMonitorAlgorithm.l1JetMonitoringConfig
def l1JetMonitoringConfig(inputFlags, jetColl, jetDict, monMode, chain='', matched=False)
Definition: TrigJetMonitorAlgorithm.py:885
TrigJetMonitorAlgorithm.TrigJetMonConfig
def TrigJetMonConfig(inputFlags)
Definition: TrigJetMonitorAlgorithm.py:417
TrigJetMonitorAlgorithm.jetMonitoringConfig
def jetMonitoringConfig(inputFlags, jetcoll, jetCollDict, monMode)
Definition: TrigJetMonitorAlgorithm.py:724
TrigJetMonitorAlgorithm.getBinningFromThreshold
def getBinningFromThreshold(chain, varname)
Definition: TrigJetMonitorAlgorithm.py:263
TrigJetMonitorAlgorithm.addFlavourTagVariables
def addFlavourTagVariables(conf, network_prefix, flavs="cub")
Definition: TrigJetMonitorAlgorithm.py:308
JetMonitoringConfig.retrieveVarToolConf
def retrieveVarToolConf(alias)
Definition: JetMonitoringConfig.py:584
python.BadLBFilterToolConfig.LArBadLBFilterToolCfg
def LArBadLBFilterToolCfg(inputFlags, origDbTag=None)
Definition: BadLBFilterToolConfig.py:100
python.TrigDecisionToolConfig.getRun3NavigationContainerFromInput
def getRun3NavigationContainerFromInput(flags)
Definition: TrigDecisionToolConfig.py:63
TrigJetMonitorAlgorithm.jetEfficiencyMonitoringConfig
def jetEfficiencyMonitoringConfig(inputFlags, onlinejetcoll, offlinejetcoll, chain, refChain)
Definition: TrigJetMonitorAlgorithm.py:996
python.LArMinBiasAlgConfig.int
int
Definition: LArMinBiasAlgConfig.py:59
TrigJetMonitorAlgorithm.items
items
Definition: TrigJetMonitorAlgorithm.py:71
TrigJetMonitorAlgorithm.basicJetMonAlgSpec
def basicJetMonAlgSpec(jetcoll, isOnline)
Definition: TrigJetMonitorAlgorithm.py:555
CaloLCW_tf.group
group
Definition: CaloLCW_tf.py:28
python.EventFlagFilterToolConfig.EventFlagFilterToolCfg
def EventFlagFilterToolCfg(flags, name="EventFlagFilter", doLAr=True, doTile=True, doSCT=True, doCore=True, alwaysReturnTrue=False)
Definition: EventFlagFilterToolConfig.py:5
get
T * get(TKey *tobj)
get a TObject* from a TKey* (why can't a TObject be a TKey?)
Definition: hcg.cxx:127
getThreshold
CP::CorrectionCode getThreshold(Int_t &threshold, const std::string &trigger)
Definition: MuonTriggerSFRootCoreTest.cxx:48
str
Definition: BTagTrackIpAccessor.cxx:11
TrigJetMonitorAlgorithm.basicHIJetMonAlgSpec
def basicHIJetMonAlgSpec(jetcoll, isOnline)
Definition: TrigJetMonitorAlgorithm.py:644
Trk::split
@ split
Definition: LayerMaterialProperties.h:38
TrigJetMonitorAlgorithm.getL1JetCopyAlg
def getL1JetCopyAlg(injets, outjets)
Definition: TrigJetMonitorAlgorithm.py:393