ATLAS Offline Software
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 312 of file TrigJetMonitorAlgorithm.py.

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

◆ basicHIJetMonAlgSpec()

def TrigJetMonitorAlgorithm.basicHIJetMonAlgSpec (   jetcoll,
  isOnline 
)

Definition at line 650 of file TrigJetMonitorAlgorithm.py.

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

◆ basicJetMonAlgSpec()

def TrigJetMonitorAlgorithm.basicJetMonAlgSpec (   jetcoll,
  isOnline 
)

Definition at line 561 of file TrigJetMonitorAlgorithm.py.

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

◆ getBinningFromThreshold()

def TrigJetMonitorAlgorithm.getBinningFromThreshold (   chain,
  varname 
)

Definition at line 267 of file TrigJetMonitorAlgorithm.py.

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

◆ getChains2Monitor()

def TrigJetMonitorAlgorithm.getChains2Monitor (   inputFlags,
  monMode 
)

Definition at line 176 of file TrigJetMonitorAlgorithm.py.

176 def getChains2Monitor(inputFlags, monMode):
177 
178  Chains2Monitor = dict()
179  from TrigConfigSvc.TriggerConfigAccess import getHLTMonitoringAccess
180  monAccess = getHLTMonitoringAccess(inputFlags)
181 
182  # set HLT jet collection, reference chain and offline jet collection
183  # for turn-on curves
184  ListOfMonChains = monAccess.monitoredChains(signatures="jetMon", monLevels = ["shifter","t0"])
185 
186  default_dict = {"HLTColl": "NONE", "RefChain": "NONE" ,"OfflineColl": "NONE"}
187  Chains2Monitor[monMode] = dict((chain, default_dict.copy()) for chain in ListOfMonChains)
188 
189  if monMode == 'HI':
190  for chainName in Chains2Monitor['HI']:
191  if '_ion_' in chainName:
192  Chains2Monitor['HI'][chainName]["HLTColl"] = "HLT_AntiKt4HIJets"
193  Chains2Monitor['HI'][chainName]["OfflineColl"] = "AntiKt4HIJets"
194  else:
195  Chains2Monitor['HI'][chainName]["HLTColl"] = "HLT_AntiKt4EMPFlowJets_jes_ftf"
196  Chains2Monitor['HI'][chainName]["OfflineColl"] = "AntiKt4EMPFlowJets"
197 
198  # only HLT_noalg get efficiency curves by default, so...
199  # these are additional hard-coded chains for efficiency monitoring
200  #Standard HI chains (obsolete for O+O)
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_L1jJ55'): Chains2Monitor['HI']['HLT_j75_ion_L1jJ55'].update({"RefChain": "HLT_noalg_L1jTE50", "OfflineColl": "AntiKt4HIJets"})
203  if Chains2Monitor['HI'].get('HLT_j85_ion_L1jJ55'): Chains2Monitor['HI']['HLT_j85_ion_L1jJ55'].update({"RefChain": "HLT_noalg_L1jTE50", "OfflineColl": "AntiKt4HIJets"})
204  if Chains2Monitor['HI'].get('HLT_j150_ion_L1jJ80'): Chains2Monitor['HI']['HLT_j150_ion_L1jJ80'].update({"RefChain": "HLT_noalg_L1jTE50", "OfflineColl": "AntiKt4HIJets"})
205  if Chains2Monitor['HI'].get('HLT_j200_ion_L1jJ80'): Chains2Monitor['HI']['HLT_j200_ion_L1jJ80'].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  # Check for 2-3 digit number before f_ for forward triggers
259  if re.search(r'\d{2,3}f_', chain): #workaround for the HLT forward triggers with 2-3 digit numbers
260  etaMin,etaMax = 3.2,4.9
261 
262  if 'a_' in chain: #new full eta range triggers
263  etaMin,etaMax = 0,4.9
264 
265  return etaMin,etaMax
266 

◆ getHTBinning()

def TrigJetMonitorAlgorithm.getHTBinning (   chain,
  binwidth 
)

Definition at line 300 of file TrigJetMonitorAlgorithm.py.

300 def getHTBinning(chain,binwidth):
301  parts = chain.split('HT')
302  threshold = parts[1].split('_')[0]
303  if 'XX' in threshold:
304  threshold = threshold.split('XX')[0]
305  xmin = int(0.9 * int(threshold)) # xmin to make the threshold visible
306  xmax = xmin + 500
307  xbins = int((xmax-xmin)/binwidth)-1
308  return xbins, xmin, xmax
309 
310 # Add fast flavour-tag monitoring.
311 # 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 373 of file TrigJetMonitorAlgorithm.py.

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

◆ 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 397 of file TrigJetMonitorAlgorithm.py.

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

◆ jetChainMonitoringConfig()

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

Definition at line 910 of file TrigJetMonitorAlgorithm.py.

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

◆ jetEfficiencyMonitoringConfig()

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

Definition at line 1002 of file TrigJetMonitorAlgorithm.py.

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

◆ jetMonitoringConfig()

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

Definition at line 730 of file TrigJetMonitorAlgorithm.py.

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

◆ l1JetMonitoringConfig()

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

Definition at line 891 of file TrigJetMonitorAlgorithm.py.

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

◆ TrigJetMonConfig()

def TrigJetMonitorAlgorithm.TrigJetMonConfig (   inputFlags)

Definition at line 421 of file TrigJetMonitorAlgorithm.py.

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

Variable Documentation

◆ action

TrigJetMonitorAlgorithm.action

Definition at line 1082 of file TrigJetMonitorAlgorithm.py.

◆ alg

TrigJetMonitorAlgorithm.alg

Definition at line 1178 of file TrigJetMonitorAlgorithm.py.

◆ AntiKt10EMPFlowCSSK

TrigJetMonitorAlgorithm.AntiKt10EMPFlowCSSK

Definition at line 1145 of file TrigJetMonitorAlgorithm.py.

◆ AntiKt10EMPFlowCSSKSoftDrop

TrigJetMonitorAlgorithm.AntiKt10EMPFlowCSSKSoftDrop

Definition at line 1149 of file TrigJetMonitorAlgorithm.py.

◆ args

TrigJetMonitorAlgorithm.args

Definition at line 1086 of file TrigJetMonitorAlgorithm.py.

◆ Beta

TrigJetMonitorAlgorithm.Beta

Definition at line 1149 of file TrigJetMonitorAlgorithm.py.

◆ cfg

TrigJetMonitorAlgorithm.cfg

Definition at line 1126 of file TrigJetMonitorAlgorithm.py.

◆ Chain2L1JetCollDict

TrigJetMonitorAlgorithm.Chain2L1JetCollDict

Definition at line 111 of file TrigJetMonitorAlgorithm.py.

◆ chainMonitorConfF

TrigJetMonitorAlgorithm.chainMonitorConfF

Definition at line 1233 of file TrigJetMonitorAlgorithm.py.

◆ chainMonitorConfT

TrigJetMonitorAlgorithm.chainMonitorConfT

Definition at line 1230 of file TrigJetMonitorAlgorithm.py.

◆ Chains2Monitor

TrigJetMonitorAlgorithm.Chains2Monitor

Definition at line 1113 of file TrigJetMonitorAlgorithm.py.

◆ comp

TrigJetMonitorAlgorithm.comp

Definition at line 1135 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 1082 of file TrigJetMonitorAlgorithm.py.

◆ dest

TrigJetMonitorAlgorithm.dest

Definition at line 1082 of file TrigJetMonitorAlgorithm.py.

◆ effMonitorConf

TrigJetMonitorAlgorithm.effMonitorConf

Definition at line 1237 of file TrigJetMonitorAlgorithm.py.

◆ EMPFlowCSSK

TrigJetMonitorAlgorithm.EMPFlowCSSK

Definition at line 1144 of file TrigJetMonitorAlgorithm.py.

◆ errmsg

TrigJetMonitorAlgorithm.errmsg

Definition at line 82 of file TrigJetMonitorAlgorithm.py.

◆ ExtraLargeROnlineHists

TrigJetMonitorAlgorithm.ExtraLargeROnlineHists

Definition at line 353 of file TrigJetMonitorAlgorithm.py.

◆ ExtraOfflineHists

TrigJetMonitorAlgorithm.ExtraOfflineHists

Definition at line 329 of file TrigJetMonitorAlgorithm.py.

◆ ExtraOnlineNJetHists

TrigJetMonitorAlgorithm.ExtraOnlineNJetHists

Definition at line 356 of file TrigJetMonitorAlgorithm.py.

◆ ExtraSmallROnlineHists

TrigJetMonitorAlgorithm.ExtraSmallROnlineHists

Definition at line 341 of file TrigJetMonitorAlgorithm.py.

◆ Files

TrigJetMonitorAlgorithm.Files

Definition at line 1105 of file TrigJetMonitorAlgorithm.py.

◆ flags

TrigJetMonitorAlgorithm.flags

Definition at line 1104 of file TrigJetMonitorAlgorithm.py.

◆ GenOfflineR10PF

TrigJetMonitorAlgorithm.GenOfflineR10PF

Definition at line 1088 of file TrigJetMonitorAlgorithm.py.

◆ helper

TrigJetMonitorAlgorithm.helper

Definition at line 1169 of file TrigJetMonitorAlgorithm.py.

◆ HISTFileName

TrigJetMonitorAlgorithm.HISTFileName

Definition at line 1107 of file TrigJetMonitorAlgorithm.py.

◆ hltColl

TrigJetMonitorAlgorithm.hltColl

Definition at line 1178 of file TrigJetMonitorAlgorithm.py.

◆ inputFile

TrigJetMonitorAlgorithm.inputFile

Definition at line 1092 of file TrigJetMonitorAlgorithm.py.

◆ isMC

TrigJetMonitorAlgorithm.isMC

Definition at line 1106 of file TrigJetMonitorAlgorithm.py.

◆ ItemList

TrigJetMonitorAlgorithm.ItemList

Definition at line 1162 of file TrigJetMonitorAlgorithm.py.

◆ items

TrigJetMonitorAlgorithm.items

Definition at line 71 of file TrigJetMonitorAlgorithm.py.

◆ JetCalibScale

TrigJetMonitorAlgorithm.JetCalibScale

Definition at line 1178 of file TrigJetMonitorAlgorithm.py.

◆ jetcoll

TrigJetMonitorAlgorithm.jetcoll

Definition at line 1225 of file TrigJetMonitorAlgorithm.py.

◆ JetCollections

TrigJetMonitorAlgorithm.JetCollections

HLT jet collections and chains to monitor.

Definition at line 153 of file TrigJetMonitorAlgorithm.py.

◆ JetContainerName1

TrigJetMonitorAlgorithm.JetContainerName1

Definition at line 1178 of file TrigJetMonitorAlgorithm.py.

◆ JetContainerName2

TrigJetMonitorAlgorithm.JetContainerName2

Definition at line 1178 of file TrigJetMonitorAlgorithm.py.

◆ key

TrigJetMonitorAlgorithm.key

Definition at line 1138 of file TrigJetMonitorAlgorithm.py.

◆ l1chainconf

TrigJetMonitorAlgorithm.l1chainconf

Definition at line 1208 of file TrigJetMonitorAlgorithm.py.

◆ l1Coll2MatcherKey

TrigJetMonitorAlgorithm.l1Coll2MatcherKey

Definition at line 93 of file TrigJetMonitorAlgorithm.py.

◆ l1jetColl

TrigJetMonitorAlgorithm.l1jetColl

Definition at line 1197 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 1203 of file TrigJetMonitorAlgorithm.py.

◆ L1JetContainerName1

TrigJetMonitorAlgorithm.L1JetContainerName1

Definition at line 1197 of file TrigJetMonitorAlgorithm.py.

◆ label

TrigJetMonitorAlgorithm.label

Definition at line 1144 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 1197 of file TrigJetMonitorAlgorithm.py.

◆ MatchL1

TrigJetMonitorAlgorithm.MatchL1

Definition at line 1197 of file TrigJetMonitorAlgorithm.py.

◆ modifiers

TrigJetMonitorAlgorithm.modifiers

Definition at line 1146 of file TrigJetMonitorAlgorithm.py.

◆ monitorConf

TrigJetMonitorAlgorithm.monitorConf

Definition at line 1218 of file TrigJetMonitorAlgorithm.py.

◆ monMode

TrigJetMonitorAlgorithm.monMode

Definition at line 1110 of file TrigJetMonitorAlgorithm.py.

◆ name

TrigJetMonitorAlgorithm.name

Definition at line 1177 of file TrigJetMonitorAlgorithm.py.

◆ offjetColl

TrigJetMonitorAlgorithm.offjetColl

Definition at line 1188 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 1213 of file TrigJetMonitorAlgorithm.py.

◆ OfflineScaleMomenta

TrigJetMonitorAlgorithm.OfflineScaleMomenta

Definition at line 361 of file TrigJetMonitorAlgorithm.py.

◆ OnlineScaleMomenta

TrigJetMonitorAlgorithm.OnlineScaleMomenta

Definition at line 362 of file TrigJetMonitorAlgorithm.py.

◆ outputlist

TrigJetMonitorAlgorithm.outputlist

Definition at line 1129 of file TrigJetMonitorAlgorithm.py.

◆ parser

TrigJetMonitorAlgorithm.parser

Definition at line 1081 of file TrigJetMonitorAlgorithm.py.

◆ PrintDetailedConfig

TrigJetMonitorAlgorithm.PrintDetailedConfig

Definition at line 1089 of file TrigJetMonitorAlgorithm.py.

◆ ptmin

TrigJetMonitorAlgorithm.ptmin

Definition at line 1145 of file TrigJetMonitorAlgorithm.py.

◆ RunTruth

TrigJetMonitorAlgorithm.RunTruth

Definition at line 1087 of file TrigJetMonitorAlgorithm.py.

◆ scalestring

TrigJetMonitorAlgorithm.scalestring

Definition at line 1176 of file TrigJetMonitorAlgorithm.py.

◆ sequenceName

TrigJetMonitorAlgorithm.sequenceName

Definition at line 1180 of file TrigJetMonitorAlgorithm.py.

◆ substrmods

TrigJetMonitorAlgorithm.substrmods

Definition at line 1149 of file TrigJetMonitorAlgorithm.py.

◆ title

TrigJetMonitorAlgorithm.title

Definition at line 342 of file TrigJetMonitorAlgorithm.py.

◆ withDetails

TrigJetMonitorAlgorithm.withDetails

Definition at line 1245 of file TrigJetMonitorAlgorithm.py.

◆ ZCut

TrigJetMonitorAlgorithm.ZCut

Definition at line 1149 of file TrigJetMonitorAlgorithm.py.

TrigJetMonitorAlgorithm.getEtaRange
def getEtaRange(chain)
Helpful functions.
Definition: TrigJetMonitorAlgorithm.py:245
TrigJetMonitorAlgorithm.getJetCopyAlg
def getJetCopyAlg(injets, outjets)
Definition: TrigJetMonitorAlgorithm.py:373
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:300
TrigJetMonitorAlgorithm.jetChainMonitoringConfig
def jetChainMonitoringConfig(inputFlags, jetcoll, chain, onlyUsePassingJets=True)
Definition: TrigJetMonitorAlgorithm.py:910
TrigJetMonitorAlgorithm.getChains2Monitor
def getChains2Monitor(inputFlags, monMode)
Definition: TrigJetMonitorAlgorithm.py:176
TrigJetMonitorAlgorithm.l1JetMonitoringConfig
def l1JetMonitoringConfig(inputFlags, jetColl, jetDict, monMode, chain='', matched=False)
Definition: TrigJetMonitorAlgorithm.py:891
TrigJetMonitorAlgorithm.TrigJetMonConfig
def TrigJetMonConfig(inputFlags)
Definition: TrigJetMonitorAlgorithm.py:421
TrigJetMonitorAlgorithm.jetMonitoringConfig
def jetMonitoringConfig(inputFlags, jetcoll, jetCollDict, monMode)
Definition: TrigJetMonitorAlgorithm.py:730
TrigJetMonitorAlgorithm.getBinningFromThreshold
def getBinningFromThreshold(chain, varname)
Definition: TrigJetMonitorAlgorithm.py:267
TrigJetMonitorAlgorithm.addFlavourTagVariables
def addFlavourTagVariables(conf, network_prefix, flavs="cub")
Definition: TrigJetMonitorAlgorithm.py:312
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:1002
TrigJetMonitorAlgorithm.items
items
Definition: TrigJetMonitorAlgorithm.py:71
TrigJetMonitorAlgorithm.basicJetMonAlgSpec
def basicJetMonAlgSpec(jetcoll, isOnline)
Definition: TrigJetMonitorAlgorithm.py:561
CaloLCW_tf.group
group
Definition: CaloLCW_tf.py:28
python.CaloAddPedShiftConfig.int
int
Definition: CaloAddPedShiftConfig.py:45
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:650
Trk::split
@ split
Definition: LayerMaterialProperties.h:38
TrigJetMonitorAlgorithm.getL1JetCopyAlg
def getL1JetCopyAlg(injets, outjets)
Definition: TrigJetMonitorAlgorithm.py:397