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
 
 Legacy2PhaseIjJThresholdDict
 
 Legacy2PhaseIgJThresholdDict
 
 Legacy2PhaseIgLJThresholdDict
 
 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 373 of file TrigJetMonitorAlgorithm.py.

373 def addFlavourTagVariables(conf, network_prefix, flavs="cub"):
374  cutname='pt20'
375  fillerTools = []
376  for f in flavs:
377  xvar = f"{network_prefix}_p{f}"
378  varname = f"ftag_p{f}"
379  fillerTools += [HistoSpec(varname, xvar=xvar, bins=(70, -0.2, 1.2), title=f"{varname};{varname};;Entries")]
380  fastDipsSelectSpec = SelectSpec(f"{network_prefix}_{cutname}", '20<pt:GeV&|eta|<3.2', path='NoTriggerSelection/'+cutname, FillerTools=fillerTools)
381  conf.appendHistos(fastDipsSelectSpec)
382 

◆ basicHIJetMonAlgSpec()

def TrigJetMonitorAlgorithm.basicHIJetMonAlgSpec (   jetcoll,
  isOnline 
)

Definition at line 724 of file TrigJetMonitorAlgorithm.py.

724 def basicHIJetMonAlgSpec(jetcoll,isOnline):
725  # we use a specialized dictionnary (JetMonAlgSpec) which will be translated into the final C++ tool
726  path = 'NoTriggerSelection' if isOnline else 'standardHistos/'
727 
728  TopLevelDir = 'HLT/JetMon/'
729  TopLevelDir += 'Online/' if isOnline else 'Offline/'
730 
731  jetcollFolder = jetcoll
732  jetcollFolder=jetcoll.replace(f"_{copySuffix}","")
733  Conf = JetMonAlgSpec(jetcoll+"Mon",JetContainerName = jetcoll, defaultPath = path, topLevelDir=TopLevelDir, bottomLevelDir=jetcollFolder, failureOnMissingContainer=False)
734 
735  # Now start filling the histo spec list
736  knownHistos['phi_tight'] = HistoSpec('phi_tight',
737  (50,-math.pi,math.pi),
738  title='#phi;#phi;Entries',
739  xvar='phi')
740  Conf.appendHistos(
741 
742  #See knownHistos in JetStandardHistoSpecs.py for the list of standard specification.
743  #or we can directly add our custom histo specification in the form of a HistoSpec:
744  #the basic call is : HistoSpec( variable, histobins, title='histotile;xtitle,ytitle')
745 
746  #Say we want a 2nd 'pt' plot but with a different binning than in the standard spec.
747  #WARNING : we can not re-use the same spec name in a given JetMonitoringAlg !!!
748  #so we give a new name AND we specify the actual variable with the argument 'xvar'
749  #(the ':GeV' means the variable is to be set at GeV scale)
750  #HistoSpec( 'lowpt', (100,0,150) , title='p_{T};p_{T} [GeV];', xvar='pt:GeV'),
751  #An equivalent solution would have been to clone the existing spec like in :
752  #knownHistos.pt.clone('lowpt',bins= (100,0,200) ),
753 
754  #2D histos are usually refered to by concatenating vars with a ';' as in 'varx;vary'
755  #if the 'vax;vary' alias doesn't exist in knownHistos but 'varx' and 'vary'
756  #do exist, then a spec fot 'vax;vary' will be automatically generated.
757 
758  #Jet multiplicity histograms can be added by using an EventHistoSpec
759  #Their specifications (pT cut, ET cut, eta cuts) must be defined in the knownEventVar dictionary within JetStandardHistoSpecs.py
760  #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):
761  #EventHistoSpec('njetsEt40Eta1_2', (10,0,10), title='NJetsEt40Eta1_2;NJetsEt40Eta1_2;Entries' ),
762 
763  #To select on multiple variables simultaneously, simply combine the selection strings via &
764  #Example below to select on ET > 100 GeV and |eta| > 3.2:
765  #SelectSpec( 'ETeta', '100<et:GeV&|eta|<3.2', path, FillerTools = ["pt","et","m","eta"] )
766 
767  #TProfile2D : just use 3 variables. For now the sytem will automatically
768  #interpret it as a TProfile2D (the 3rd variable being profiled)
769  #"phi;eta;e", --> Average Energy vs pt and eta
770 
771  #another possible selections : only sub-leading jets and highJVF
772  #SelectSpec( 'subleading',
773  # '', # no selection on variables
774  # SelectedIndex=1, # force 2nd (sub-leading) jet (we would set 0 for leading jets)
775  # path='standardHistos', # force the path where the histos are saved in the final ROOT file
776  # FillerTools = [
777  # "pt",
778  # "m",
779  # ] ),
780  #SelectSpec( 'highJVF',
781  # '0.3<JVF[0]', # JVF is a vector<float> for each jets. Here we cut on the 0th entry of this vector
782  # FillerTools = [
783  # "pt",
784  # ] ),
785 
786  #1D histos
787  "pt",
788  "m",
789  "eta",
790  "phi",
791  "et",
792 
793  #2D histos
794  "eta;phi", # phi vs eta
795  HistoSpec( 'pt:GeV;m:GeV', (100,0,400, 100,0,400) , title='p_{T} vs mass;p_{T} [GeV];m [GeV];Entries'),
796  HistoSpec( 'eta;et:GeV', (100,-5,5, 100,0,400) , title='#eta vs e_{T};#eta;E_{T} [GeV];Entries'),
797  HistoSpec( 'phi;et:GeV', (60,-math.pi,math.pi, 100,0,400) , title='#phi vs E_{T};#phi;E_{T} [GeV];Entries'),
798 
799  #Event selection
800  SelectSpec( 'central', '|eta|<3.2', path, FillerTools = ["pt","et","m"] ),
801  SelectSpec( 'forward', '3.2<|eta|', path, FillerTools = ["pt","et","m"] ),
802  SelectSpec( 'pt60', '60<pt:GeV', path, FillerTools = ["m","phi","eta","eta;phi"]),
803 
804  )
805 
806  return Conf
807 

◆ basicJetMonAlgSpec()

def TrigJetMonitorAlgorithm.basicJetMonAlgSpec (   jetcoll,
  isOnline 
)

Definition at line 630 of file TrigJetMonitorAlgorithm.py.

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

◆ getBinningFromThreshold()

def TrigJetMonitorAlgorithm.getBinningFromThreshold (   chain,
  varname 
)

Definition at line 328 of file TrigJetMonitorAlgorithm.py.

328 def getBinningFromThreshold(chain,varname):
329  #default binning if nothing below applies
330  xbins, xmin, xmax = 160,0.,800000.
331  #pt and et binning based on threshold
332  if varname == "pt" or varname == "et":
333  if 'noalg' in chain:
334  if 'jJ500' in chain or 'J400' in chain: return 160,xmin,800000
335  else: return 100,xmin,500000 # good enough for L1 jJ40 & jJ100
336  else:
337  #threshold = int(chain.split("_")[1].split('j')[1])
338  threshold = int(re.search(r'\d+',chain.split("_")[1].split('j')[1]).group())
339  if threshold < 50:
340  return 40, 0., 100000.
341  if threshold < 120:
342  return 36, 20000., 200000.
343 
344  xbins = 40
345  xmin = 50000.+100000.*(int(threshold/100)-1) #example: threshold = 330 -> 250 to 450; threshold = 420 -> 350 to 550
346  if threshold % 100 == 0: #gives enough low bins if threshold is an exact divider of 100 GeV such as 3j200
347  xmin = 1000.*(threshold - 100.)
348  xmax = xmin + 200000.
349  if "a10" in chain: # efficiency curve broader for large-R jets
350  xmin = xmin - 50000.
351  xmax = xmax + 50000.
352  if "pf" in chain:
353  xmax = xmax + 50000. # needed to include efficiency plateau for large-R PFlow chains
354  if "smc" in chain:
355  xmax = xmax + 50000. # efficiency plateau even higher for a10 pdf smc chains due to imperfect calibration
356  #mass binning for large-R smc chains
357  elif varname == "m":
358  xbins, xmin, xmax = 35, 30000., 100000.
359  return xbins, xmin, xmax
360 

◆ getChains2Monitor()

def TrigJetMonitorAlgorithm.getChains2Monitor (   inputFlags,
  monMode 
)

Definition at line 232 of file TrigJetMonitorAlgorithm.py.

232 def getChains2Monitor(inputFlags, monMode):
233 
234  Chains2Monitor = dict()
235  from TrigConfigSvc.TriggerConfigAccess import getHLTMonitoringAccess
236  monAccess = getHLTMonitoringAccess(inputFlags)
237 
238  # set HLT jet collection, reference chain and offline jet collection
239  # for turn-on curves
240  ListOfMonChains = monAccess.monitoredChains(signatures="jetMon", monLevels = ["shifter","t0"])
241 
242  default_dict = {"HLTColl": "NONE", "RefChain": "NONE" ,"OfflineColl": "NONE"}
243  Chains2Monitor[monMode] = dict((chain, default_dict.copy()) for chain in ListOfMonChains)
244 
245  if monMode == 'HI':
246  for chainName in Chains2Monitor['HI']:
247  if '_ion_' in chainName:
248  Chains2Monitor['HI'][chainName]["HLTColl"] = "HLT_AntiKt4HIJets"
249  Chains2Monitor['HI'][chainName]["OfflineColl"] = "AntiKt4HIJets"
250  else:
251  Chains2Monitor['HI'][chainName]["HLTColl"] = "HLT_AntiKt4EMPFlowJets_jes_ftf"
252  if not inputFlags.Common.doExpressProcessing:
253  Chains2Monitor['HI'][chainName]["OfflineColl"] = "AntiKt4EMPFlowJets" #we do not have EMPFlowJets in HI express stream
254  else:
255  Chains2Monitor['HI'][chainName]["OfflineColl"] = "AntiKt4HIJets"
256  # only HLT_noalg get efficiency curves by default, so...
257  # these are additional hard-coded chains for efficiency monitoring
258  if Chains2Monitor['HI'].get('HLT_j60_ion_L1jJ40'): Chains2Monitor['HI']['HLT_j60_ion_L1jJ40'].update({"RefChain": "HLT_noalg_L1jTE50", "OfflineColl": "AntiKt4HIJets"})
259  if Chains2Monitor['HI'].get('HLT_j75_ion_L1jJ60'): Chains2Monitor['HI']['HLT_j75_ion_L1jJ60'].update({"RefChain": "HLT_noalg_L1jTE50", "OfflineColl": "AntiKt4HIJets"})
260  if Chains2Monitor['HI'].get('HLT_j85_ion_L1jJ60'): Chains2Monitor['HI']['HLT_j85_ion_L1jJ60'].update({"RefChain": "HLT_noalg_L1jTE50", "OfflineColl": "AntiKt4HIJets"})
261  if Chains2Monitor['HI'].get('HLT_j150_ion_L1jJ90'): Chains2Monitor['HI']['HLT_j150_ion_L1jJ90'].update({"RefChain": "HLT_noalg_L1jTE50", "OfflineColl": "AntiKt4HIJets"})
262  if Chains2Monitor['HI'].get('HLT_j200_ion_L1jJ90'): Chains2Monitor['HI']['HLT_j200_ion_L1jJ90'].update({"RefChain": "HLT_noalg_L1jTE50", "OfflineColl": "AntiKt4HIJets"})
263 
264  if Chains2Monitor['HI'].get('HLT_j50f_ion_L1jJ40p30ETA49'): Chains2Monitor['HI']['HLT_j50f_ion_L1jJ40p30ETA49'].update({"RefChain": "HLT_noalg_L1jTE50", "OfflineColl": "AntiKt4HIJets"})
265  if Chains2Monitor['HI'].get('HLT_j60f_ion_L1jJ40p30ETA49'): Chains2Monitor['HI']['HLT_j60f_ion_L1jJ40p30ETA49'].update({"RefChain": "HLT_noalg_L1jTE50", "OfflineColl": "AntiKt4HIJets"})
266 
267  elif monMode == "pp":
268  # logic to define HLTColl, RefChain, OfflineColl
269  for chainName in Chains2Monitor['pp']:
270  Chains2Monitor['pp'][chainName]["HLTColl"] = "HLT_AntiKt4EMTopoJets_subjesIS"
271  if '_pf_' in chainName and 'a10' not in chainName:
272  Chains2Monitor['pp'][chainName]["HLTColl"] = "HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf"
273  Chains2Monitor['pp'][chainName]["OfflineColl"] = "AntiKt4EMPFlowJets"
274  elif 'a10' in chainName:
275  if 'a10t' in chainName: Chains2Monitor['pp'][chainName]["HLTColl"] = "HLT_AntiKt10LCTopoTrimmedPtFrac4SmallR20Jets_jes"
276  elif 'sd_cssk_pf' in chainName: Chains2Monitor['pp'][chainName]["HLTColl"] = "HLT_AntiKt10EMPFlowCSSKSoftDropBeta100Zcut10Jets_jes_ftf"
277  elif 'a10r' in chainName: Chains2Monitor['pp'][chainName]["HLTColl"] = "HLT_AntiKt10EMTopoRCJets_subjesIS"
278  else: Chains2Monitor['pp'][chainName]["HLTColl"] = "HLT_AntiKt10LCTopoJets_subjes"
279  elif '_noalg_' in chainName:
280  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!!
281  Chains2Monitor['pp'][chainName]["OfflineColl"] = "AntiKt4EMPFlowJets"
282  if 'gLJ' in chainName: Chains2Monitor['pp'][chainName]["HLTColl"] = "HLT_AntiKt10EMPFlowCSSKSoftDropBeta100Zcut10Jets_jes_ftf"
283  else: continue
284 
285  # only HLT_noalg get efficiency curves by default, so...
286  # these are additional hard-coded chains for efficiency monitoring
287  if Chains2Monitor['pp'].get('HLT_j420_L1J100'): Chains2Monitor['pp']['HLT_j420_L1J100'].update({"RefChain": "HLT_j85_L1J20", "OfflineColl": "AntiKt4EMPFlowJets"})
288  if Chains2Monitor['pp'].get('HLT_3j200_L1J100'): Chains2Monitor['pp']['HLT_3j200_L1J100'].update({"RefChain": "HLT_j85_L1J20", "OfflineColl": "AntiKt4EMPFlowJets"})
289  if Chains2Monitor['pp'].get('HLT_4j120_L13J50'): Chains2Monitor['pp']['HLT_4j120_L13J50'].update({"RefChain": "HLT_j85_L1J20", "OfflineColl": "AntiKt4EMPFlowJets"})
290  if Chains2Monitor['pp'].get('HLT_5j80_pf_ftf_presel5j50_L14J15'): Chains2Monitor['pp']['HLT_5j80_pf_ftf_presel5j50_L14J15'].update({"RefChain": "HLT_j45_pf_ftf_preselj20_L1J15", "OfflineColl": "AntiKt4EMPFlowJets"})
291  if Chains2Monitor['pp'].get('HLT_j400_pf_ftf_L1J100'): Chains2Monitor['pp']['HLT_j400_pf_ftf_L1J100'].update({"RefChain": "HLT_j85_pf_ftf_preselj50_L1J20", "OfflineColl": "AntiKt4EMPFlowJets"})
292  if Chains2Monitor['pp'].get('HLT_j400_pf_ftf_preselj225_L1J100'): Chains2Monitor['pp']['HLT_j400_pf_ftf_preselj225_L1J100'].update({"RefChain": "HLT_j85_pf_ftf_preselj50_L1J20", "OfflineColl": "AntiKt4EMPFlowJets"})
293 
294  if Chains2Monitor['pp'].get('HLT_j420_L1jJ160'): Chains2Monitor['pp']['HLT_j420_L1jJ160'].update({"RefChain": "HLT_j85_L1jJ50", "OfflineColl": "AntiKt4EMPFlowJets"})
295  if Chains2Monitor['pp'].get('HLT_3j200_L1jJ160'): Chains2Monitor['pp']['HLT_3j200_L1jJ160'].update({"RefChain": "HLT_j85_L1jJ50", "OfflineColl": "AntiKt4EMPFlowJets"})
296  if Chains2Monitor['pp'].get('HLT_4j120_L13jJ90'): Chains2Monitor['pp']['HLT_4j120_L13jJ90'].update({"RefChain": "HLT_j85_L1jJ50", "OfflineColl": "AntiKt4EMPFlowJets"})
297  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"})
298  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"})
299  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"})
300 
301  else:
302  errmsg = 'Returned empty Chains2Monitor due to invalid monMode'
303  raise RuntimeError(errmsg)
304  return Chains2Monitor
305 

◆ getEtaRange()

def TrigJetMonitorAlgorithm.getEtaRange (   chain)

Helpful functions.

Definition at line 310 of file TrigJetMonitorAlgorithm.py.

310 def getEtaRange(chain):
311  etaMin,etaMax = 0,2.5 # central jets by default
312 
313  if 'eta490_j' in chain: #workaround for the UPC (ultra-peripheral) trigger chains
314  etaMin,etaMax = 0,4.9
315  elif 'eta' in chain:
316  etaParts = chain.split('eta')
317  etaMinTemp = etaParts[0].split('_')
318  etaMin = etaMinTemp[len(etaMinTemp)-1]
319  etaMin = int(etaMin)/10
320  etaMax = etaParts[1].split('_')[0]
321  etaMax = int(etaMax)/10
322 
323  if 'f_ion' in chain: #workaround for the HLT forward triggers
324  etaMin,etaMax = 3.2,4.9
325 
326  return etaMin,etaMax
327 

◆ getHTBinning()

def TrigJetMonitorAlgorithm.getHTBinning (   chain,
  binwidth 
)

Definition at line 361 of file TrigJetMonitorAlgorithm.py.

361 def getHTBinning(chain,binwidth):
362  parts = chain.split('HT')
363  threshold = parts[1].split('_')[0]
364  if 'XX' in threshold:
365  threshold = threshold.split('XX')[0]
366  xmin = int(0.9 * int(threshold)) # xmin to make the threshold visible
367  xmax = xmin + 500
368  xbins = int((xmax-xmin)/binwidth)-1
369  return xbins, xmin, xmax
370 
371 # Add fast flavour-tag monitoring.
372 # 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 442 of file TrigJetMonitorAlgorithm.py.

442 def getJetCopyAlg(injets,outjets):
443  '''
444  Schedules JetCopier tool to make a shallow copy of
445  the original offline/HLT jet container, for the JetMatcherAlg to decorate.
446  This prevents our jet monitoring from decorating
447  the original jet containers, which may end up being
448  persistified in AOD/ESD (ATLASRECTS-7168,ATR-27980,ATR-26076)
449  '''
450  jcopy = CompFactory.JetCopier(
451  "copier",
452  InputJets = injets,
453  DecorDeps=[],
454  ShallowCopy=True,
455  ShallowIO=True)
456 
457  jprovider = CompFactory.JetRecAlg(
458  "jetalg_copy_"+outjets,
459  Provider = jcopy,
460  Modifiers = [],
461  OutputContainer = outjets,
462  MonTool = None)
463 
464  return jprovider
465 

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

466 def getL1JetCopyAlg(injets,outjets):
467  '''
468  Schedules L1JetCopyAlgorithm to make a shallow copy of
469  the original L1 jet container, for the JetMatcherAlg to decorate.
470  This prevents our jet monitoring from decorating
471  the original jet containers, which may end up being
472  persistified in AOD/ESD (ATLASRECTS-7168,ATR-27980,ATR-26076).
473  The L1JetCopyAlgorithm is a templated class (e.g. L1JetCopyAlgorithm<JTM_JetRoIContainer>).
474  The python class name is what is generated by Athena during build time.
475  The template types are defined in JTMContainers.h.
476  '''
477  jcopy_alg = None
478  jcopy_alg_name = "l1jetcopy_alg_"+injets
479  if injets == "LVL1JetRoIs":
480  jcopy_alg = CompFactory.L1JetCopyAlgorithm_JTM_JetRoIContainer_(jcopy_alg_name)
481  elif injets == "L1_jFexSRJetRoI":
482  jcopy_alg = CompFactory.L1JetCopyAlgorithm_JTM_jFexSRJetRoIContainer_(jcopy_alg_name)
483  elif injets in ["L1_gFexSRJetRoI", "L1_gFexLRJetRoI"]:
484  jcopy_alg = CompFactory.L1JetCopyAlgorithm_JTM_gFexJetRoIContainer_(jcopy_alg_name)
485  else:
486  raise ValueError(f"L1 jet container {injets} not recognised")
487  jcopy_alg.JetInContainerName = injets
488  jcopy_alg.JetOutContainerName = outjets
489 
490  return jcopy_alg
491 

◆ jetChainMonitoringConfig()

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

Definition at line 989 of file TrigJetMonitorAlgorithm.py.

989 def jetChainMonitoringConfig(inputFlags,jetcoll,chain,onlyUsePassingJets=True):
990  '''Function to configures some algorithms in the monitoring system.'''
991 
992  jetcollFolder = jetcoll
993  chainFolder = chain
994 
995  #if not athenaMT:
996  # onlyUsePassingJets = False #does not work for legacy samples yet
997  jetMonAlgSpecName = chain+"TrigMon"
998  if not onlyUsePassingJets:
999  chainFolder = chainFolder + "/ExpertHistos"
1000  jetMonAlgSpecName = jetMonAlgSpecName + "_ExpertHistos"
1001 
1002  # Define helper functions to automatize ET & eta selection strings for NJet histograms of chains
1003  def getThreshold(parts):
1004  return parts[1].split('_')[0]
1005 
1006  def getEtaRangeString(chain):
1007  etaMin, etaMax = 0, 32
1008  if 'eta490_j' in chain: #workaround for the upc chains
1009  etaMin, etaMax = 0, 49
1010  elif 'eta' in chain:
1011  etaParts = chain.split('eta')
1012  etaMinTemp = etaParts[0].split('_')
1013  etaMin = etaMinTemp[len(etaMinTemp)-1]
1014  etaMax = etaParts[1].split('_')[0]
1015  if int(etaMin) > 0 : etaMin = str(int(int(etaMin)/10))
1016  if int(etaMax) > 0 : etaMax = str(int(int(etaMax)/10))
1017  if 'f_ion' in chain:
1018  etaMin, etaMax = 32, 49
1019  return 'Eta{}_{}'.format(etaMin,etaMax)
1020 
1021  def getNjetHistName(chain):
1022  NjetHistName = 'NONE'
1023  parts = chain.split('j')
1024  # check if it is a multi-threshold multijet chain or a single-threshold multijet chain
1025  multiplicity = parts[0].split('_')[1] # for single-threshold multijet chains
1026  if (chain.count('_j')-chain.count('_jes')) > 1 or multiplicity != '':
1027  NjetHistName = 'njetsEt{}{}'.format(getThreshold(parts),getEtaRangeString(chain))
1028  return NjetHistName
1029 
1030 
1031  trigConf = JetMonAlgSpec( # the usual JetMonAlgSpec
1032  jetMonAlgSpecName,
1033  JetContainerName = jetcoll,
1034  TriggerChain = chain,
1035  defaultPath = chainFolder,
1036  topLevelDir="HLT/JetMon/Online/",
1037  bottomLevelDir=jetcollFolder,
1038  failureOnMissingContainer=True,
1039  onlyPassingJets=onlyUsePassingJets,
1040  isExpressStreamJob=inputFlags.Common.doExpressProcessing,
1041  )
1042 
1043  trigConf.appendHistos(
1044  "pt",
1045  "m",
1046  "eta",
1047  "et",
1048  "phi",
1049  "phi_tight",
1050 
1051  )
1052  for hist in ExtraOnlineNJetHists: trigConf.appendHistos(EventHistoSpec(hist, (20,0,25), title=hist+';'+hist+';Entries'))
1053  # Add NjetEt and NjetPt histograms for simple scenarios
1054  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:
1055  NjetHistName = getNjetHistName(chain)
1056  from JetMonitoring.JetStandardHistoSpecs import knownEventVar
1057  if knownEventVar.get(NjetHistName,None) is not None and NjetHistName not in ExtraOnlineNJetHists: #avoids duplication warnings for some chains
1058  trigConf.appendHistos(
1059  EventHistoSpec(NjetHistName, (25,0,25), title=NjetHistName+';'+NjetHistName+';Entries' ),
1060  )
1061  NjetHistName = NjetHistName.replace('Et','Pt')
1062  if knownEventVar.get(NjetHistName,None) is not None and NjetHistName not in ExtraOnlineNJetHists:
1063  trigConf.appendHistos(
1064  EventHistoSpec(NjetHistName, (25,0,25), title=NjetHistName+';'+NjetHistName+';Entries' ),
1065  )
1066  if 'ftf' in chain and 'a10' not in chain: # track-based JVT variables for FTF chains
1067  trigConf.appendHistos("Jvt")
1068  trigConf.appendHistos("JVFCorr")
1069  trigConf.appendHistos("JvtRpt")
1070 
1071  if 'ht' in chain or 'HT' in chain:
1072  def defineHistoForHTChain(conf, parentAlg, monhelper , path):
1073  # create a monitoring group with the histo path starting from the parentAlg
1074  group = monhelper.addGroup(parentAlg, conf.Group, conf.topLevelDir+jetcollFolder+'/')
1075  # define the histograms
1076  xbins, xmin, xmax = getHTBinning(chain,25) # bin width in GeV
1077  group.defineHistogram("jetHT;HT",title="Jet HT;H_{T} [GeV];Entries", type="TH1F", path=chainFolder, xbins=xbins , xmin=xmin, xmax=xmax ,)
1078  trigConf.appendHistos(ToolSpec('JetHistoHTFiller','JetHistoHTFiller_'+chain,MinPt=30.,MaxEta=3.2,FailureOnMissingContainer=False,
1079  defineHistoFunc=defineHistoForHTChain,Group='jetHT_'+jetcoll))
1080 
1081  return trigConf
1082 

◆ jetEfficiencyMonitoringConfig()

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

Definition at line 1083 of file TrigJetMonitorAlgorithm.py.

1083 def jetEfficiencyMonitoringConfig(inputFlags,onlinejetcoll,offlinejetcoll,chain,refChain):
1084  '''Function to configures some algorithms in the monitoring system.'''
1085 
1086  jetcollFolder = onlinejetcoll
1087  chainFolder = chain
1088 
1089  # We schedule a new JetAlg which will be acting only when a TriggerChain fired (using the TriggerChain from the base classes).
1090  # We'll plot 1 histo build by a dedicated JetHistoTriggEfficiency tool.
1091  # So we'll have to explicitely give a specification via the generic dicionnary 'ToolSpec'
1092  # This implies defining a little function which declares to the monitoring framework which variables to histogram and how.
1093  # this is done here.
1094  def defineHistoForJetTrigg(conf, parentAlg, monhelper , path):
1095  # create a monitoring group with the histo path starting from the parentAlg
1096  group = monhelper.addGroup(parentAlg, conf.Group, conf.topLevelDir+jetcollFolder+'/')
1097  # define the histogram, give them individual names so they don't overwrite each other
1098  append = "offlineCut_"+conf.name.split("_")[-1] if "offlineCut" in conf.name else "noOfflineCut"
1099  histname = "trigEff_vs_"+conf.Var.Name+"_"+append
1100  xbins, xmin, xmax = getBinningFromThreshold(chain,conf.Var.Name)
1101  group.defineHistogram('trigPassed,jetVar;'+histname, title=histname, type="TEfficiency",
1102  path=chainFolder,
1103  xbins=xbins , xmin=xmin, xmax=xmax,)
1104 
1105  # Get jet index and eta selection for offline jets
1106  validchain = chain.replace('noalg','j0')
1107  parts = validchain.split('j')
1108  multiplicity = parts[0].split('_')[1]
1109  if multiplicity != '': index = int(multiplicity) - 1 # single-threhold multijet chains
1110  else: index = 0 # single-jet chain
1111  etaMin,etaMax = getEtaRange(chain)
1112 
1113  from JetMonitoring.JetMonitoringConfig import retrieveVarToolConf
1114  trigConf = JetMonAlgSpec( # the usual JetMonAlgSpec
1115  chain+"TrigEffMon",
1116  JetContainerName = offlinejetcoll,
1117  TriggerChain = refChain, # reference chain
1118  defaultPath = chainFolder,
1119  topLevelDir = "HLT/JetMon/Online/",
1120  bottomLevelDir = jetcollFolder,
1121  failureOnMissingContainer = True,
1122  onlyPassingJets = False,
1123  )
1124  trigConf.appendHistos(
1125  SelectSpec( 'eff', '{}<|eta|<{}'.format(etaMin,etaMax), chainFolder, SelectedIndex=index, FillerTools = [
1126  # we pass directly the ToolSpec
1127  ToolSpec('JetHistoTriggEfficiency', chain,
1128  # below we pass the Properties of this JetHistoTriggEfficiency tool :
1129  Group='jetTrigGroup_'+chain,
1130  Var=retrieveVarToolConf("pt"), # In this context we can not just pass a str alias to describe a histo variable
1131  # so we use retrieveVarToolConf("pt") which returns a full specification for the "pt" histo variable.
1132  ProbeTrigChain=chain,defineHistoFunc=defineHistoForJetTrigg),
1133  ] ),
1134  )
1135 
1136  if 'smc' in chain:
1137  trigConf.appendHistos(
1138  SelectSpec( 'm50', '50<m:GeV&{}<|eta|<{}'.format(etaMin,etaMax), chainFolder, SelectedIndex=index, FillerTools = [
1139  ToolSpec('JetHistoTriggEfficiency', chain+'_offlineCut_m50',
1140  Group='jetTrigGroup_'+chain+'_m50',
1141  Var=retrieveVarToolConf("pt"), # In this context we can not just pass a str alias to describe a histo variable
1142  ProbeTrigChain=chain,defineHistoFunc=defineHistoForJetTrigg
1143  ),
1144  ] ),
1145  SelectSpec( 'et500', '500<et:GeV&{}<|eta|<{}'.format(etaMin,etaMax), chainFolder, SelectedIndex=index, FillerTools = [
1146  ToolSpec('JetHistoTriggEfficiency', chain+'_offlineCut_et500',
1147  Group='jetTrigGroup_'+chain+'_et500',
1148  Var=retrieveVarToolConf("m"), # In this context we can not just pass a str alias to describe a histo variable
1149  SortJets=True,
1150  ProbeTrigChain=chain,defineHistoFunc=defineHistoForJetTrigg
1151  ),
1152  ] ),
1153  )
1154 
1155  return trigConf
1156 

◆ jetMonitoringConfig()

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

Definition at line 808 of file TrigJetMonitorAlgorithm.py.

808 def jetMonitoringConfig(inputFlags,jetcoll,jetCollDict,monMode):
809  '''Function to configures some algorithms in the monitoring system.'''
810 
811  isOnline = True if 'HLT' in jetcoll else False
812 
813  if monMode == 'HI': # Heavy ion jet monitoring histos
814  conf = basicHIJetMonAlgSpec(jetcoll,isOnline)
815  else:
816  conf = basicJetMonAlgSpec(jetcoll,isOnline)
817 
818  jetCollMonDetails = jetCollDict[monMode][jetcoll]
819 
820  # Declare a configuration dictionnary for a JetContainer
821  if isOnline:
822  if 'AntiKt4' in jetcoll or 'a4tcem' in jetcoll:
823  if monMode == 'pp': #Use extra histos for pp only
824  for hist in ExtraSmallROnlineHists: conf.appendHistos(hist)
825  if 'ftf' in jetcoll: # dedicated histograms for FTF chains
826  conf.appendHistos("Jvt")
827  conf.appendHistos("JVFCorr")
828  conf.appendHistos("JvtRpt")
829  conf.appendHistos("SumPtTrkPt500[0]")
830  conf.appendHistos("NumTrkPt1000[0]")
831  conf.appendHistos("TrackWidthPt1000[0]")
832  if 'PF' in jetcoll: # dedicated histograms for online PFlow jets
833  conf.appendHistos("SumPtChargedPFOPt500[0]")
834  conf.appendHistos("fCharged")
835  if "subresjesgscIS" in jetcoll:
836  addFlavourTagVariables(conf,"fastDIPS20211215")
837  addFlavourTagVariables(conf,"GN120230331")
838  addFlavourTagVariables(conf,"tlaGN220240122")
839  if 'fastftag' in jetcoll:
840  addFlavourTagVariables(conf,"fastDips")
841  addFlavourTagVariables(conf, "fastGN120230327")
842  addFlavourTagVariables(conf,"fastGN220240122")
843  addFlavourTagVariables(conf,"fastGNTau20240216", flavs=["tau", "u"])
844  if 'EMTopo' in jetcoll: #dedicated histograms for online EMTopo jets
845  conf.appendHistos("Timing")
846  else:
847  for hist in ExtraLargeROnlineHists: conf.appendHistos(hist)
848  # Add matched jets plots
849  if jetCollMonDetails['MatchTo'] != 'NONE':
850  def defineHistoForHLTJetMatch(conf, parentAlg, monhelper , path):
851  # create a monitoring group with the histo path starting from the parentAlg
852  group = monhelper.addGroup(parentAlg, conf.Group, conf.topLevelDir+'/'+conf.bottomLevelDir+'/NoTriggerSelection/')
853  # define the histograms
854  for histname in [ 'ptdiff', 'energydiff', 'massdiff' ]: #defines which variable difference will be plotted
855  group.defineHistogram(histname,title=histname, type="TH1F",
856  path='MatchedJets_{}'.format(jetCollMonDetails['MatchTo']),
857  xbins=100 , xmin=-100000., xmax=100000. ,)
858 
859  for histname in [ 'ptresp', 'energyresp', 'massresp' ]:
860  group.defineHistogram(histname,title=histname, type="TH1F",
861  path='MatchedJets_{}'.format(jetCollMonDetails['MatchTo']),
862  xbins=100 , xmin=-2., xmax=2. ,)
863 
864  group.defineHistogram('ptresp,ptref;ptresp_vs_ptRef',title='ptresponse vs ptRef', type="TH2F",
865  path='MatchedJets_{}'.format(jetCollMonDetails['MatchTo']),
866  xbins=10 , xmin=-2., xmax=2., ybins=10, ymin=0., ymax=500000.,)
867 
868  group.defineHistogram('ptresp,etaref;ptresp_vs_etaRef',title='ptresponse vs etaRef', type="TH2F",
869  path='MatchedJets_{}'.format(jetCollMonDetails['MatchTo']),
870  xbins=10 , xmin=-2., xmax=2., ybins=10, ymin=-5., ymax=5.,)
871 
872  group.defineHistogram('ptref,ptresp;ptRef_vs_ptresp',title='ptRef vs ptresponse', type="TH2F",
873  path='MatchedJets_{}'.format(jetCollMonDetails['MatchTo']),
874  xbins=100 , xmin=0., xmax=400000., ybins=80, ymin=-2., ymax=2.,)
875 
876  group.defineHistogram('etaref,ptresp;etaRef_vs_ptresp',title='etaRef vs ptresponse', type="TH2F",
877  path='MatchedJets_{}'.format(jetCollMonDetails['MatchTo']),
878  xbins=100 , xmin=-5., xmax=5., ybins=80, ymin=-2., ymax=2.,)
879 
880  matchedJetColl = jetCollMonDetails['MatchTo']
881 
882  # we can get specific calibration scales by adding e.g. '_EtaJESScale' to the strings
883  jetmatchKey = '{}.matched_{}'.format(jetcoll,matchedJetColl)
884  jetptdiffKey = '{}.ptdiff_{}'.format(jetcoll,matchedJetColl)
885  jetenergydiffKey = '{}.energydiff_{}'.format(jetcoll,matchedJetColl)
886  jetmassdiffKey = '{}.massdiff_{}'.format(jetcoll,matchedJetColl)
887  jetptrespKey = '{}.ptresp_{}'.format(jetcoll,matchedJetColl)
888  jetenergyrespKey = '{}.energyresp_{}'.format(jetcoll,matchedJetColl)
889  jetmassrespKey = '{}.massresp_{}'.format(jetcoll,matchedJetColl)
890  jetptrefKey = '{}.ptRef_{}'.format(jetcoll,matchedJetColl)
891  jetetarefKey = '{}.etaRef_{}'.format(jetcoll,matchedJetColl)
892  name = 'jetMatched_{}_{}'.format(jetcoll,matchedJetColl)
893  conf.appendHistos(ToolSpec('JetHistoMatchedFiller', name,
894  JetMatchedKey=jetmatchKey, JetPtDiffKey=jetptdiffKey,
895  JetEnergyDiffKey=jetenergydiffKey,
896  JetMassDiffKey=jetmassdiffKey, JetPtRespKey=jetptrespKey,
897  JetEnergyRespKey=jetenergyrespKey, JetMassRespKey=jetmassrespKey,
898  JetPtRefKey=jetptrefKey,JetEtaRefKey=jetetarefKey,
899  defineHistoFunc=defineHistoForHLTJetMatch,Group='matchedJets_'+jetcoll)
900  )
901  else: # offline
902  for hist in ExtraOfflineHists: conf.appendHistos(hist)
903  if 'AntiKt4' in jetcoll and monMode=="pp":
904  conf.appendHistos(SelectSpec('LooseBadFailedJets', 'LooseBad',
905  InverseJetSel=True,
906  FillerTools = ["pt",
907  "phi",
908  "phi_tight",
909  "eta"])) #cleaning variables not applicable for large-R collections
910 
911  if 'PF' in jetcoll: # dedicated histograms for offline PFlow jets
912  conf.appendHistos("SumPtChargedPFOPt500[0]")
913  conf.appendHistos("fCharged")
914  elif 'EMTopo' in jetcoll:
915  conf.appendHistos("Timing")
916  if jetCollMonDetails['MatchTo'] != 'NONE':
917  def defineHistoForOfflineJetMatch(conf, parentAlg, monhelper , path):
918  # create a monitoring group with the histo path starting from the parentAlg
919  group = monhelper.addGroup(parentAlg, conf.Group, conf.topLevelDir+'/'+conf.bottomLevelDir+'/standardHistos/')
920  # define the histograms
921  for histname in [ 'ptdiff', 'energydiff', 'massdiff' ]: #defines which variable difference will be plotted
922  group.defineHistogram(histname,title=histname, type="TH1F",
923  path='MatchedJets_{}'.format(jetCollMonDetails['MatchTo']),
924  xbins=100 , xmin=-100000., xmax=100000. ,)
925 
926  for histname in [ 'ptresp', 'energyresp', 'massresp' ]:
927  group.defineHistogram(histname,title=histname, type="TH1F",
928  path='MatchedJets_{}'.format(jetCollMonDetails['MatchTo']),
929  xbins=100 , xmin=-2., xmax=2. ,)
930 
931  group.defineHistogram('ptresp,ptref;ptresp_vs_ptRef',title='ptresp vs ptRef', type="TH2F",
932  path='MatchedJets_{}'.format(jetCollMonDetails['MatchTo']),
933  xbins=10 , xmin=-2., xmax=2., ybins=10, ymin=0., ymax=500000.,)
934 
935  group.defineHistogram('ptresp,etaref;ptresp_vs_etaRef',title='ptresp vs etaRef', type="TH2F",
936  path='MatchedJets_{}'.format(jetCollMonDetails['MatchTo']),
937  xbins=10 , xmin=-2., xmax=2., ybins=10, ymin=-5., ymax=5.,)
938 
939  group.defineHistogram('ptref,ptresp;ptRef_vs_ptresp',title='ptRef vs ptresponse', type="TH2F",
940  path='MatchedJets_{}'.format(jetCollMonDetails['MatchTo']),
941  xbins=100 , xmin=0., xmax=400000., ybins=80, ymin=-2., ymax=2.,)
942 
943  group.defineHistogram('etaref,ptresp;etaRef_vs_ptresp',title='etaRef vs ptresponse', type="TH2F",
944  path='MatchedJets_{}'.format(jetCollMonDetails['MatchTo']),
945  xbins=100 , xmin=-5., xmax=5., ybins=80, ymin=-2., ymax=2.,)
946 
947  matchedJetColl = jetCollMonDetails['MatchTo']
948  jetmatchKey = '{}.matched_{}'.format(jetcoll,matchedJetColl)
949  jetptdiffKey = '{}.ptdiff_{}'.format(jetcoll,matchedJetColl)
950  jetenergydiffKey = '{}.energydiff_{}'.format(jetcoll,matchedJetColl)
951  jetmassdiffKey = '{}.massdiff_{}'.format(jetcoll,matchedJetColl)
952  jetptrespKey = '{}.ptresp_{}'.format(jetcoll,matchedJetColl)
953  jetenergyrespKey = '{}.energyresp_{}'.format(jetcoll,matchedJetColl)
954  jetmassrespKey = '{}.massresp_{}'.format(jetcoll,matchedJetColl)
955  jetptrefKey = '{}.ptRef_{}'.format(jetcoll,matchedJetColl)
956  jetetarefKey = '{}.etaRef_{}'.format(jetcoll,matchedJetColl)
957  name = 'jetMatched_{}_{}'.format(jetcoll,matchedJetColl)
958  conf.appendHistos(ToolSpec('JetHistoMatchedFiller',name,
959  JetMatchedKey=jetmatchKey, JetPtDiffKey=jetptdiffKey,
960  JetEnergyDiffKey=jetenergydiffKey,
961  JetMassDiffKey=jetmassdiffKey, JetPtRespKey=jetptrespKey,
962  JetEnergyRespKey=jetenergyrespKey,
963  JetMassRespKey=jetmassrespKey,
964  JetPtRefKey=jetptrefKey, JetEtaRefKey=jetetarefKey,
965  defineHistoFunc=defineHistoForOfflineJetMatch,Group='matchedJets_'+jetcoll)
966  )
967 
968  return conf
969 

◆ l1JetMonitoringConfig()

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

Definition at line 970 of file TrigJetMonitorAlgorithm.py.

970 def l1JetMonitoringConfig(inputFlags,jetColl, jetDict, monMode,chain='',matched=False):
971 
972  from TrigJetMonitoring.L1JetMonitoringConfig import L1JetMonAlg
973  name = jetColl if chain=='' else jetColl+'_'+chain
974 
975  jetCollKey = jetColl
976  jetColl = jetColl.replace(f"_{copySuffix}","")
977 
978  if not jetDict[monMode][jetCollKey]['MatchTo']:
979  conf = L1JetMonAlg(name,jetColl,jetCollKey,chain)
980  else:
981  assert len(jetDict[monMode][jetCollKey]['MatchTo']) == 2
982 
983  conf = L1JetMonAlg(name,jetColl,jetCollKey,chain,
984  matched,jetDict[monMode][jetCollKey]['MatchTo'][0],
985  jetDict[monMode][jetCollKey]['MatchTo'][1])
986 
987  return conf
988 

◆ TrigJetMonConfig()

def TrigJetMonitorAlgorithm.TrigJetMonConfig (   inputFlags)

Definition at line 492 of file TrigJetMonitorAlgorithm.py.

492 def TrigJetMonConfig(inputFlags):
493 
494  from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
495  cfg = ComponentAccumulator()
496 
497  monMode = 'pp'
498  if inputFlags.Reco.EnableHI: monMode = 'HI'
499 
500  Chains2Monitor = getChains2Monitor(inputFlags, monMode)
501 
502  # Protections
503  # Add missing jet collections to JetCollections dict
504  # (this can happen if a given chain uses a jet collection that is not listed in JetCollections)
505  # TODO: make more general
506  for chain,chaindict in Chains2Monitor[monMode].items():
507  if chaindict['HLTColl'] not in JetCollections[case]: # chain will not be monitored unless HLT collection is present in JetCollections
508  JetCollections[case][chaindict['HLTColl']] = {'MatchTo': 'NONE'}
509 
510  # Match HLT jets to offline jets
511  CopiedJetCollections = copy.deepcopy(JetCollections)
512  for hltColl,collDict in JetCollections[monMode].items():
513  if collDict['MatchTo'] != 'NONE':
514  copiedhltColl = f'{hltColl}_{copySuffix}'
515  CopiedJetCollections[monMode][copiedhltColl] = CopiedJetCollections[monMode].pop(hltColl)
516  jetcopyalg = getJetCopyAlg(hltColl,copiedhltColl)
517  jetcopyalg.ExtraInputs.add(('xAOD::TrigCompositeContainer',
518  'StoreGateSvc+%s' % getRun3NavigationContainerFromInput(inputFlags)))
519  cfg.addEventAlgo(jetcopyalg)
520  for jetcalibscale in OnlineScaleMomenta:
521  scalestring = "_"+jetcalibscale if jetcalibscale != "" else ""
522  name = 'Matching_{}{}_{}'.format(hltColl,scalestring,collDict['MatchTo'])
523  alg = CompFactory.JetMatcherAlg(name,
524  JetContainerName1=copiedhltColl,
525  JetContainerName2=collDict['MatchTo'],
526  JetCalibScale=jetcalibscale)
527 
528  alg.ExtraInputs.add(('xAOD::TrigCompositeContainer',
529  'StoreGateSvc+%s' % getRun3NavigationContainerFromInput(inputFlags)))
530  cfg.addEventAlgo(alg)
531 
532  # Match offline to offline jets
533  CopiedOfflineJetCollections = copy.deepcopy(OfflineJetCollections)
534  for offjetColl,collDict in OfflineJetCollections[monMode].items():
535  if collDict['MatchTo'] != 'NONE':
536  copiedjetcoll = f'{offjetColl}_{copySuffix}'
537  CopiedOfflineJetCollections[monMode][copiedjetcoll] = CopiedOfflineJetCollections[monMode].pop(offjetColl)
538  jetcopyalg = getJetCopyAlg(offjetColl,copiedjetcoll)
539  cfg.addEventAlgo(jetcopyalg)
540  for jetcalibscale in OfflineScaleMomenta:
541  scalestring = "_"+jetcalibscale if jetcalibscale != "" else ""
542  name = 'Matching_{}{}_{}'.format(offjetColl,scalestring,collDict['MatchTo'])
543  alg = CompFactory.JetMatcherAlg(name,
544  JetContainerName1=copiedjetcoll,
545  JetContainerName2=collDict['MatchTo'],
546  JetCalibScale=jetcalibscale)
547 
548  alg.ExtraInputs.add(('xAOD::TrigCompositeContainer',
549  'StoreGateSvc+%s' % getRun3NavigationContainerFromInput(inputFlags)))
550  cfg.addEventAlgo(alg)
551 
552  # Make copy of every L1 jet collection
553  # Then match L1 to offline as well as HLT jets
554  CopiedL1JetCollections = copy.deepcopy(L1JetCollections)
555  for l1jetColl,collDict in L1JetCollections[monMode].items():
556  copiedl1jetColl = f'{l1jetColl}_{copySuffix}'
557  CopiedL1JetCollections[monMode][copiedl1jetColl] = CopiedL1JetCollections[monMode].pop(l1jetColl)
558  l1jetcopyalg = getL1JetCopyAlg(l1jetColl,copiedl1jetColl)
559  l1jetcopyalg.ExtraInputs.add(('xAOD::TrigCompositeContainer',
560  'StoreGateSvc+%s' % getRun3NavigationContainerFromInput(inputFlags)))
561  cfg.addEventAlgo(l1jetcopyalg)
562  for matchjetcoll in collDict['MatchTo']:
563 
564  kwds = {'name': 'Matching_{}_{}'.format(l1jetColl,matchjetcoll),
565  l1Coll2MatcherKey[l1jetColl]: copiedl1jetColl,
566  'JetContainerName2': matchjetcoll,
567  'MatchL1': True
568  }
569 
570  alg = CompFactory.JetMatcherAlg(**kwds)
571  alg.ExtraInputs.add(('xAOD::TrigCompositeContainer',
572  'StoreGateSvc+%s' % getRun3NavigationContainerFromInput(inputFlags)))
573  cfg.addEventAlgo(alg)
574 
575  # The following class will make a sequence, configure algorithms, and link
576  # them to GenericMonitoringTools
577  from AthenaMonitoring import AthMonitorCfgHelper
578  helper = AthMonitorCfgHelper(inputFlags,'TrigJetMonitorAlgorithm')
579  # Configure filter tools
580  from AthenaMonitoring.EventFlagFilterToolConfig import EventFlagFilterToolCfg
581  from AthenaMonitoring.BadLBFilterToolConfig import LArBadLBFilterToolCfg
582  # Loop over L1 jet collections
583  for jetcoll in CopiedL1JetCollections[monMode]:
584  l1jetconf = l1JetMonitoringConfig(inputFlags,jetcoll,CopiedL1JetCollections,monMode,'',True)
585  alg=l1jetconf.toAlg(helper)
586  alg.FilterTools = [ EventFlagFilterToolCfg(inputFlags),helper.resobj.popToolsAndMerge(LArBadLBFilterToolCfg(inputFlags))]
587 
588  # Loop over L1 jet chains
589  for chain,jetcolls in Chain2L1JetCollDict[monMode].items():
590  for jetcoll in jetcolls:
591  l1chainconf = l1JetMonitoringConfig(inputFlags,jetcoll,L1JetCollections,monMode,chain)
592  alg=l1chainconf.toAlg(helper)
593  alg.FilterTools = [ EventFlagFilterToolCfg(inputFlags),helper.resobj.popToolsAndMerge(LArBadLBFilterToolCfg(inputFlags))]
594 
595  # Loop over offline jet collections
596  for jetcoll in CopiedOfflineJetCollections[monMode]:
597  offlineMonitorConf = jetMonitoringConfig(inputFlags,jetcoll,CopiedOfflineJetCollections,monMode)
598  alg=offlineMonitorConf.toAlg(helper)
599  alg.FilterTools = [ EventFlagFilterToolCfg(inputFlags),helper.resobj.popToolsAndMerge(LArBadLBFilterToolCfg(inputFlags))]
600 
601  # Loop over HLT jet collections
602  for jetcoll in CopiedJetCollections[monMode]:
603  monitorConf = jetMonitoringConfig(inputFlags,jetcoll,CopiedJetCollections,monMode)
604  # then we turn the full specification into properly configured algorithm and tools.
605  # we use the method 'toAlg()' defined for the specialized dictionnary 'JetMonAlgSpec'
606  monitorConf.toAlg(helper)
607 
608  # Loop over HLT jet chains
609  for chain,chainDict in Chains2Monitor[monMode].items():
610  jetcoll = chainDict['HLTColl']
611  # kinematic plots
612  # only use passing jets
613  chainMonitorConfT = jetChainMonitoringConfig(inputFlags,jetcoll,chain,True)
614  alg=chainMonitorConfT.toAlg(helper)
615  alg.FilterTools = [ EventFlagFilterToolCfg(inputFlags),helper.resobj.popToolsAndMerge(LArBadLBFilterToolCfg(inputFlags))]
616  # all jets
617  chainMonitorConfF = jetChainMonitoringConfig(inputFlags,jetcoll,chain,False)
618  alg=chainMonitorConfF.toAlg(helper)
619  alg.FilterTools = [ EventFlagFilterToolCfg(inputFlags),helper.resobj.popToolsAndMerge(LArBadLBFilterToolCfg(inputFlags))]
620  # efficiency plots
621  if chainDict['RefChain'] != 'NONE' and chainDict['OfflineColl'] != 'NONE':
622  effMonitorConf = jetEfficiencyMonitoringConfig(inputFlags,jetcoll,chainDict['OfflineColl'],chain,chainDict['RefChain'])
623  effMonitorConf.toAlg(helper)
624 
625  cfg.merge(helper.result())
626  return cfg
627 
628 
629 # Basic selection of histograms common for online and offline jets

Variable Documentation

◆ action

TrigJetMonitorAlgorithm.action

Definition at line 1163 of file TrigJetMonitorAlgorithm.py.

◆ alg

TrigJetMonitorAlgorithm.alg

Definition at line 1259 of file TrigJetMonitorAlgorithm.py.

◆ AntiKt10EMPFlowCSSK

TrigJetMonitorAlgorithm.AntiKt10EMPFlowCSSK

Definition at line 1226 of file TrigJetMonitorAlgorithm.py.

◆ AntiKt10EMPFlowCSSKSoftDrop

TrigJetMonitorAlgorithm.AntiKt10EMPFlowCSSKSoftDrop

Definition at line 1230 of file TrigJetMonitorAlgorithm.py.

◆ args

TrigJetMonitorAlgorithm.args

Definition at line 1167 of file TrigJetMonitorAlgorithm.py.

◆ Beta

TrigJetMonitorAlgorithm.Beta

Definition at line 1230 of file TrigJetMonitorAlgorithm.py.

◆ cfg

TrigJetMonitorAlgorithm.cfg

Definition at line 1207 of file TrigJetMonitorAlgorithm.py.

◆ Chain2L1JetCollDict

TrigJetMonitorAlgorithm.Chain2L1JetCollDict

Definition at line 120 of file TrigJetMonitorAlgorithm.py.

◆ chainMonitorConfF

TrigJetMonitorAlgorithm.chainMonitorConfF

Definition at line 1312 of file TrigJetMonitorAlgorithm.py.

◆ chainMonitorConfT

TrigJetMonitorAlgorithm.chainMonitorConfT

Definition at line 1309 of file TrigJetMonitorAlgorithm.py.

◆ Chains2Monitor

TrigJetMonitorAlgorithm.Chains2Monitor

Definition at line 1194 of file TrigJetMonitorAlgorithm.py.

◆ comp

TrigJetMonitorAlgorithm.comp

Definition at line 1216 of file TrigJetMonitorAlgorithm.py.

◆ copySuffix

TrigJetMonitorAlgorithm.copySuffix

constants

Definition at line 26 of file TrigJetMonitorAlgorithm.py.

◆ d_items

TrigJetMonitorAlgorithm.d_items

Definition at line 85 of file TrigJetMonitorAlgorithm.py.

◆ default

TrigJetMonitorAlgorithm.default

Definition at line 1163 of file TrigJetMonitorAlgorithm.py.

◆ dest

TrigJetMonitorAlgorithm.dest

Definition at line 1163 of file TrigJetMonitorAlgorithm.py.

◆ effMonitorConf

TrigJetMonitorAlgorithm.effMonitorConf

Definition at line 1316 of file TrigJetMonitorAlgorithm.py.

◆ EMPFlowCSSK

TrigJetMonitorAlgorithm.EMPFlowCSSK

Definition at line 1225 of file TrigJetMonitorAlgorithm.py.

◆ errmsg

TrigJetMonitorAlgorithm.errmsg

Definition at line 90 of file TrigJetMonitorAlgorithm.py.

◆ ExtraLargeROnlineHists

TrigJetMonitorAlgorithm.ExtraLargeROnlineHists

Definition at line 414 of file TrigJetMonitorAlgorithm.py.

◆ ExtraOfflineHists

TrigJetMonitorAlgorithm.ExtraOfflineHists

Definition at line 390 of file TrigJetMonitorAlgorithm.py.

◆ ExtraOnlineNJetHists

TrigJetMonitorAlgorithm.ExtraOnlineNJetHists

Definition at line 417 of file TrigJetMonitorAlgorithm.py.

◆ ExtraSmallROnlineHists

TrigJetMonitorAlgorithm.ExtraSmallROnlineHists

Definition at line 402 of file TrigJetMonitorAlgorithm.py.

◆ Files

TrigJetMonitorAlgorithm.Files

Definition at line 1186 of file TrigJetMonitorAlgorithm.py.

◆ flags

TrigJetMonitorAlgorithm.flags

Definition at line 1185 of file TrigJetMonitorAlgorithm.py.

◆ GenOfflineR10PF

TrigJetMonitorAlgorithm.GenOfflineR10PF

Definition at line 1169 of file TrigJetMonitorAlgorithm.py.

◆ helper

TrigJetMonitorAlgorithm.helper

Definition at line 1250 of file TrigJetMonitorAlgorithm.py.

◆ HISTFileName

TrigJetMonitorAlgorithm.HISTFileName

Definition at line 1188 of file TrigJetMonitorAlgorithm.py.

◆ hltColl

TrigJetMonitorAlgorithm.hltColl

Definition at line 1259 of file TrigJetMonitorAlgorithm.py.

◆ inputFile

TrigJetMonitorAlgorithm.inputFile

Definition at line 1173 of file TrigJetMonitorAlgorithm.py.

◆ isMC

TrigJetMonitorAlgorithm.isMC

Definition at line 1187 of file TrigJetMonitorAlgorithm.py.

◆ ItemList

TrigJetMonitorAlgorithm.ItemList

Definition at line 1243 of file TrigJetMonitorAlgorithm.py.

◆ items

TrigJetMonitorAlgorithm.items

Definition at line 79 of file TrigJetMonitorAlgorithm.py.

◆ JetCalibScale

TrigJetMonitorAlgorithm.JetCalibScale

Definition at line 1259 of file TrigJetMonitorAlgorithm.py.

◆ jetcoll

TrigJetMonitorAlgorithm.jetcoll

Definition at line 1306 of file TrigJetMonitorAlgorithm.py.

◆ JetCollections

TrigJetMonitorAlgorithm.JetCollections

HLT jet collections and chains to monitor.

Definition at line 209 of file TrigJetMonitorAlgorithm.py.

◆ JetContainerName1

TrigJetMonitorAlgorithm.JetContainerName1

Definition at line 1259 of file TrigJetMonitorAlgorithm.py.

◆ JetContainerName2

TrigJetMonitorAlgorithm.JetContainerName2

Definition at line 1259 of file TrigJetMonitorAlgorithm.py.

◆ key

TrigJetMonitorAlgorithm.key

Definition at line 1219 of file TrigJetMonitorAlgorithm.py.

◆ l1chainconf

TrigJetMonitorAlgorithm.l1chainconf

Definition at line 1289 of file TrigJetMonitorAlgorithm.py.

◆ l1Coll2MatcherKey

TrigJetMonitorAlgorithm.l1Coll2MatcherKey

Definition at line 101 of file TrigJetMonitorAlgorithm.py.

◆ l1jetColl

TrigJetMonitorAlgorithm.l1jetColl

Definition at line 1278 of file TrigJetMonitorAlgorithm.py.

◆ L1JetCollections

TrigJetMonitorAlgorithm.L1JetCollections

L1 jet collections and chains to monitor.

Definition at line 52 of file TrigJetMonitorAlgorithm.py.

◆ l1jetconf

TrigJetMonitorAlgorithm.l1jetconf

Definition at line 1284 of file TrigJetMonitorAlgorithm.py.

◆ L1JetContainerName1

TrigJetMonitorAlgorithm.L1JetContainerName1

Definition at line 1278 of file TrigJetMonitorAlgorithm.py.

◆ label

TrigJetMonitorAlgorithm.label

Definition at line 1225 of file TrigJetMonitorAlgorithm.py.

◆ Legacy2PhaseIgJThresholdDict

TrigJetMonitorAlgorithm.Legacy2PhaseIgJThresholdDict

Definition at line 179 of file TrigJetMonitorAlgorithm.py.

◆ Legacy2PhaseIgLJThresholdDict

TrigJetMonitorAlgorithm.Legacy2PhaseIgLJThresholdDict

Definition at line 198 of file TrigJetMonitorAlgorithm.py.

◆ Legacy2PhaseIjJThresholdDict

TrigJetMonitorAlgorithm.Legacy2PhaseIjJThresholdDict

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

◆ match_largeRL1_OfflineJets_List

TrigJetMonitorAlgorithm.match_largeRL1_OfflineJets_List

Definition at line 56 of file TrigJetMonitorAlgorithm.py.

◆ match_smallRL1_OfflineJets_List

TrigJetMonitorAlgorithm.match_smallRL1_OfflineJets_List

Definition at line 54 of file TrigJetMonitorAlgorithm.py.

◆ matchjetcoll

TrigJetMonitorAlgorithm.matchjetcoll

Definition at line 1278 of file TrigJetMonitorAlgorithm.py.

◆ MatchL1

TrigJetMonitorAlgorithm.MatchL1

Definition at line 1278 of file TrigJetMonitorAlgorithm.py.

◆ modifiers

TrigJetMonitorAlgorithm.modifiers

Definition at line 1227 of file TrigJetMonitorAlgorithm.py.

◆ monitorConf

TrigJetMonitorAlgorithm.monitorConf

Definition at line 1299 of file TrigJetMonitorAlgorithm.py.

◆ monMode

TrigJetMonitorAlgorithm.monMode

Definition at line 1191 of file TrigJetMonitorAlgorithm.py.

◆ name

TrigJetMonitorAlgorithm.name

Definition at line 1258 of file TrigJetMonitorAlgorithm.py.

◆ offjetColl

TrigJetMonitorAlgorithm.offjetColl

Definition at line 1269 of file TrigJetMonitorAlgorithm.py.

◆ OfflineJetCollections

TrigJetMonitorAlgorithm.OfflineJetCollections

Offline jet collections to monitor.

Definition at line 32 of file TrigJetMonitorAlgorithm.py.

◆ offlineMonitorConf

TrigJetMonitorAlgorithm.offlineMonitorConf

Definition at line 1294 of file TrigJetMonitorAlgorithm.py.

◆ OfflineScaleMomenta

TrigJetMonitorAlgorithm.OfflineScaleMomenta

Definition at line 430 of file TrigJetMonitorAlgorithm.py.

◆ OnlineScaleMomenta

TrigJetMonitorAlgorithm.OnlineScaleMomenta

Definition at line 431 of file TrigJetMonitorAlgorithm.py.

◆ outputlist

TrigJetMonitorAlgorithm.outputlist

Definition at line 1210 of file TrigJetMonitorAlgorithm.py.

◆ parser

TrigJetMonitorAlgorithm.parser

Definition at line 1162 of file TrigJetMonitorAlgorithm.py.

◆ PrintDetailedConfig

TrigJetMonitorAlgorithm.PrintDetailedConfig

Definition at line 1170 of file TrigJetMonitorAlgorithm.py.

◆ ptmin

TrigJetMonitorAlgorithm.ptmin

Definition at line 1226 of file TrigJetMonitorAlgorithm.py.

◆ RunTruth

TrigJetMonitorAlgorithm.RunTruth

Definition at line 1168 of file TrigJetMonitorAlgorithm.py.

◆ scalestring

TrigJetMonitorAlgorithm.scalestring

Definition at line 1257 of file TrigJetMonitorAlgorithm.py.

◆ sequenceName

TrigJetMonitorAlgorithm.sequenceName

Definition at line 1261 of file TrigJetMonitorAlgorithm.py.

◆ substrmods

TrigJetMonitorAlgorithm.substrmods

Definition at line 1230 of file TrigJetMonitorAlgorithm.py.

◆ title

TrigJetMonitorAlgorithm.title

Definition at line 403 of file TrigJetMonitorAlgorithm.py.

◆ withDetails

TrigJetMonitorAlgorithm.withDetails

Definition at line 1324 of file TrigJetMonitorAlgorithm.py.

◆ ZCut

TrigJetMonitorAlgorithm.ZCut

Definition at line 1230 of file TrigJetMonitorAlgorithm.py.

TrigJetMonitorAlgorithm.getEtaRange
def getEtaRange(chain)
Helpful functions.
Definition: TrigJetMonitorAlgorithm.py:310
TrigJetMonitorAlgorithm.getJetCopyAlg
def getJetCopyAlg(injets, outjets)
Definition: TrigJetMonitorAlgorithm.py:442
python.JetAnalysisCommon.ComponentAccumulator
ComponentAccumulator
Definition: JetAnalysisCommon.py:302
vtune_athena.format
format
Definition: vtune_athena.py:14
CaloCellPos2Ntuple.int
int
Definition: CaloCellPos2Ntuple.py:24
python.TriggerConfigAccess.getHLTMonitoringAccess
HLTMonitoringAccess getHLTMonitoringAccess(flags=None)
Definition: TriggerConfigAccess.py:256
TrigJetMonitorAlgorithm.getHTBinning
def getHTBinning(chain, binwidth)
Definition: TrigJetMonitorAlgorithm.py:361
TrigJetMonitorAlgorithm.jetChainMonitoringConfig
def jetChainMonitoringConfig(inputFlags, jetcoll, chain, onlyUsePassingJets=True)
Definition: TrigJetMonitorAlgorithm.py:989
TrigJetMonitorAlgorithm.getChains2Monitor
def getChains2Monitor(inputFlags, monMode)
Definition: TrigJetMonitorAlgorithm.py:232
TrigJetMonitorAlgorithm.l1JetMonitoringConfig
def l1JetMonitoringConfig(inputFlags, jetColl, jetDict, monMode, chain='', matched=False)
Definition: TrigJetMonitorAlgorithm.py:970
TrigJetMonitorAlgorithm.TrigJetMonConfig
def TrigJetMonConfig(inputFlags)
Definition: TrigJetMonitorAlgorithm.py:492
TrigJetMonitorAlgorithm.jetMonitoringConfig
def jetMonitoringConfig(inputFlags, jetcoll, jetCollDict, monMode)
Definition: TrigJetMonitorAlgorithm.py:808
TrigJetMonitorAlgorithm.getBinningFromThreshold
def getBinningFromThreshold(chain, varname)
Definition: TrigJetMonitorAlgorithm.py:328
TrigJetMonitorAlgorithm.addFlavourTagVariables
def addFlavourTagVariables(conf, network_prefix, flavs="cub")
Definition: TrigJetMonitorAlgorithm.py:373
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:1083
TrigJetMonitorAlgorithm.items
items
Definition: TrigJetMonitorAlgorithm.py:79
TrigJetMonitorAlgorithm.basicJetMonAlgSpec
def basicJetMonAlgSpec(jetcoll, isOnline)
Definition: TrigJetMonitorAlgorithm.py:630
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:724
WriteBchToCool.update
update
Definition: WriteBchToCool.py:67
Trk::split
@ split
Definition: LayerMaterialProperties.h:38
TrigJetMonitorAlgorithm.getL1JetCopyAlg
def getL1JetCopyAlg(injets, outjets)
Definition: TrigJetMonitorAlgorithm.py:466