ATLAS Offline Software
TrigEgammaPrecisionElectronHypoTool.py
Go to the documentation of this file.
1 #
2 # Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3 #
4 from AthenaCommon.SystemOfUnits import GeV
5 from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
6 from AthenaConfiguration.ComponentFactory import CompFactory
7 from AthenaMonitoringKernel.GenericMonitoringTool import GenericMonitoringTool
8 
9 from ROOT import egammaPID
10 
11 def same( val , tool):
12  return [val]*( len( tool.EtaBins ) - 1 )
13 
14 #
15 # Create the hypo alg with all selectors
16 #
17 def createTrigEgammaPrecisionElectronHypoAlg(flags, name, sequenceOut):
18  acc = ComponentAccumulator()
19  monTool = GenericMonitoringTool(flags, "MonTool_"+name,
20  HistPath = 'PrecisionElectronHypo/'+name)
21 
22  acc_ElectronCBSelectorTools = TrigEgammaPrecisionElectronCBSelectorCfg(flags)
23  acc_ElectronLHSelectorTools = TrigEgammaPrecisionElectronLHSelectorCfg(flags)
24  acc_ElectronDNNSelectorTools = TrigEgammaPrecisionElectronDNNSelectorCfg(flags)
25 
26  acc.merge(acc_ElectronCBSelectorTools)
27  acc.merge(acc_ElectronLHSelectorTools)
28  acc.merge(acc_ElectronDNNSelectorTools)
29 
30  thePrecisionElectronHypo = CompFactory.TrigEgammaPrecisionElectronHypoAlg(name)
31  thePrecisionElectronHypo.Electrons = str(sequenceOut)
32  thePrecisionElectronHypo.RunInView = True
33  thePrecisionElectronHypo.ElectronCBSelectorTools = acc_ElectronCBSelectorTools.getPublicTools()
34  thePrecisionElectronHypo.ElectronLHSelectorTools = acc_ElectronLHSelectorTools.getPublicTools()
35  thePrecisionElectronHypo.ElectronDNNSelectorTools = acc_ElectronDNNSelectorTools.getPublicTools()
36  thePrecisionElectronHypo.CBNames = ["medium", "loose", "mergedtight"] # just like the pidnames
37  thePrecisionElectronHypo.LHNames = ["lhtight", "lhmedium", "lhloose", "lhvloose",
38  "lhtight_nopix", "lhmedium_nopix","lhloose_nopix","lhvloose_nopix",
39  "lhtight_nogsf", "lhmedium_nogsf","lhloose_nogsf","lhvloose_nogsf",
40  "lhtight_nogsf_nopix", "lhmedium_nogsf_nopix","lhloose_nogsf_nopix","lhvloose_nogsf_nopix"] # just like the pidnames
41  thePrecisionElectronHypo.DNNNames = ["dnntight", "dnnmedium", "dnnloose"] # just like the pidnames
42  monTool.defineHistogram('TIME_exec', type='TH1F', path='EXPERT', title="Precision Electron Hypo Algtime; time [ us ] ; Nruns", xbins=80, xmin=0.0, xmax=8000.0)
43  monTool.defineHistogram('TIME_LH_exec', type='TH1F', path='EXPERT', title="Precision Electron Hypo LH Algtime; time [ us ] ; Nruns", xbins=20, xmin=0.0, xmax=2000)
44  monTool.defineHistogram('TIME_DNN_exec', type='TH1F', path='EXPERT', title="Precision Electron Hypo DNN Algtime; time [ us ] ; Nruns", xbins=20, xmin=0.0, xmax=2000)
45 
46  thePrecisionElectronHypo.MonTool=monTool
47  #acc.addEventAlgo(thePrecisionElectronHypo)
48  return thePrecisionElectronHypo, acc
49 
50 def TrigEgammaPrecisionElectronHypoAlgCfg(flags, name, inputElectronCollection ):
51  acc = ComponentAccumulator()
52  hypo_tuple = createTrigEgammaPrecisionElectronHypoAlg( flags, name, inputElectronCollection )
53  hypo_alg = hypo_tuple[0]
54  hypo_acc = hypo_tuple[1]
55  acc.addEventAlgo( hypo_alg )
56  acc.merge(hypo_acc)
57  return acc
58 
60 
61 
62  __operation_points = [ 'tight' ,
63  'medium' ,
64  'loose' ,
65  'vloose' ,
66  'lhtight' ,
67  'lhmedium' ,
68  'lhloose' ,
69  'lhvloose' ,
70  'lhtight_nopix' ,
71  'lhmedium_nopix' ,
72  'lhloose_nopix' ,
73  'lhvloose_nopix' ,
74  'lhtight_nogsf' ,
75  'lhmedium_nogsf' ,
76  'lhloose_nogsf' ,
77  'lhvloose_nogsf' ,
78  'lhtight_nogsf_nopix' ,
79  'lhmedium_nogsf_nopix' ,
80  'lhloose_nogsf_nopix' ,
81  'lhvloose_nogsf_nopix' ,
82  'dnntight' ,
83  'dnnmedium',
84  'dnnloose' ,
85  'mergedtight',
86  'nopid',
87  ]
88 
89  __operation_points_lhInfo = [
90  'nopix'
91  ]
92 
93  __operation_points_gsfInfo = [
94  'nogsf'
95  ]
96 
97  # isolation cuts:w
98  __isolationCut = {
99  None: None,
100  'ivarloose': 0.1,
101  'ivarmedium': 0.065,
102  'ivartight': 0.05
103  }
104 
105  # LRT d0 cuts
106  __lrtD0Cut = {
107  '': -1.,
108  None: None,
109  'lrtloose':2.0,
110  'lrtmedium':3.0,
111  'lrttight':5.,
112  'lrtxtight':10.0,
113  'lrtvxtight':20.0
114  }
115 
116 
117  def __init__(self, name, monGroups, cpart, tool=None):
118 
119  from AthenaCommon.Logging import logging
120  self.__log = logging.getLogger('TrigEgammaPrecisionElectronHypoTool')
121  self.__name = name
122  self.__threshold = float(cpart['threshold'])
123  self.__sel = cpart['addInfo'][0] if cpart['addInfo'] else cpart['IDinfo']
124  self.__iso = cpart['isoInfo']
125  self.__d0 = cpart['lrtInfo']
126  self.__gsfInfo = cpart['gsfInfo']
127  self.__lhInfo = cpart['lhInfo']
128  self.__monGroups = monGroups
129 
130  if not tool:
131  from AthenaConfiguration.ComponentFactory import CompFactory
132  tool = CompFactory.TrigEgammaPrecisionElectronHypoTool( name )
133 
134  tool.EtaBins = [0.0, 0.6, 0.8, 1.15, 1.37, 1.52, 1.81, 2.01, 2.37, 2.47]
135  tool.ETthr = same( self.__threshold*GeV, tool )
136  tool.dETACLUSTERthr = 0.1
137  tool.dPHICLUSTERthr = 0.1
138  tool.RelPtConeCut = -999
139  tool.PidName = ""
140  tool.d0Cut = -1
141  tool.AcceptAll = False
142  tool.DoNoPid = False
143  self.__tool = tool
144 
145  self.__log.debug( 'Electron_Chain :%s', self.__name )
146  self.__log.debug( 'Electron_Threshold :%s', self.__threshold )
147  self.__log.debug( 'Electron_Pidname :%s', self.pidname() )
148  self.__log.debug( 'Electron_iso :%s', self.__iso )
149  self.__log.debug( 'Electron_d0 :%s', self.__d0 )
150 
151  def chain(self):
152  return self.__name
153 
154  #
155  # Get the pidname
156  #
157  def pidname( self ):
158  # if LLH, we should append the LH extra information if exist
159  pidname = self.__sel
160 
161  extra = ""
162  if 'lh' in self.__sel and self.__gsfInfo and self.__gsfInfo in self.__operation_points_gsfInfo:
163  extra += '_' + self.__gsfInfo
164  if 'lh' in self.__sel and self.__lhInfo and self.__lhInfo in self.__operation_points_lhInfo:
165  extra += '_' + self.__lhInfo
166 
167  return pidname+extra
168 
169  def etthr(self):
170  return self.__threshold
171 
172  def isoInfo(self):
173  return self.__iso
174 
175  def d0Info(self):
176  return self.__d0
177 
178  def gsfInfo(self):
179  return self.__gsfInfo
180 
181  def tool(self):
182  return self.__tool
183 
184  def nocut(self):
185 
186  self.__log.debug( 'Configure nocut' )
187  self.tool().ETthr = same( self.etthr()*GeV, self.tool())
188  self.tool().dETACLUSTERthr = 9999.
189  self.tool().dPHICLUSTERthr = 9999.
190 
191  def noPid(self):
192 
193  self.tool().DoNoPid = True
194  self.__log.debug( 'Configure noPid' )
195  self.tool().ETthr = same( self.etthr()*GeV, self.tool())
196  # No other cuts applied
197  self.tool().dETACLUSTERthr = 9999.
198  self.tool().dPHICLUSTERthr = 9999.
199 
200  #
201  # LRT extra cut
202  #
203  def addLRTCut(self):
204  if not self.d0Info() in self.__lrtD0Cut:
205  self.__log.fatal(f"Bad LRT selection name: {self.d0Info()}")
206  self.__tool.d0Cut = self.__lrtD0Cut[self.d0Info()]
207 
208  def acceptAll(self):
209  self.tool().AcceptAll = True
210  #
211  # Isolation extra cut
212  #
213  def addIsoCut(self):
214  if not self.isoInfo() in self.__isolationCut:
215  self.__log.fatal(f"Bad Iso selection name: {self.isoInfo()}")
216  self.tool().RelPtConeCut = self.__isolationCut[self.isoInfo()]
217 
218 
219 
220  def nominal(self):
221  if not self.pidname() in self.__operation_points:
222  self.__log.fatal("Bad selection name: %s" % self.pidname())
223  self.tool().PidName = self.pidname()
224 
225 
226  #
227  # Compile the chain
228  #
229  def compile(self, flags):
230 
231  if 'nocut' == self.pidname():
232  self.nocut()
233  elif 'nopid' == self.pidname():
234  self.noPid()
235  else: # nominal chain using pid selection
236  self.nominal()
237 
238 
239  # secundary cut configurations
240  if self.isoInfo() and self.isoInfo()!="":
241  self.addIsoCut()
242  if self.d0Info() and self.d0Info()!="":
243  self.addLRTCut()
244 
245 
246  if hasattr(self.tool(), "MonTool"):
247 
248  doValidationMonitoring = flags.Trigger.doValidationMonitoring # True to monitor all chains for validation purposes
249  monGroups = self.__monGroups
250 
251  if (any('egammaMon:online' in group for group in monGroups) or doValidationMonitoring):
252  self.addMonitoring(flags)
253 
254 
255  #
256  # Create the monitoring code
257  #
258  def addMonitoring(self, flags):
259 
260  monTool = GenericMonitoringTool(flags, "MonTool_"+self.chain(),
261  HistPath = 'PrecisionElectronHypo/'+self.chain())
262  monTool.defineHistogram('dEta', type='TH1F', path='EXPERT', title="PrecisionElectron Hypo #Delta#eta_{EF L1}; #Delta#eta_{EF L1}", xbins=80, xmin=-0.01, xmax=0.01)
263  monTool.defineHistogram('dPhi', type='TH1F', path='EXPERT', title="PrecisionElectron Hypo #Delta#phi_{EF L1}; #Delta#phi_{EF L1}", xbins=80, xmin=-0.01, xmax=0.01)
264  monTool.defineHistogram('Et_em', type='TH1F', path='EXPERT', title="PrecisionElectron Hypo cluster E_{T}^{EM};E_{T}^{EM} [MeV]", xbins=50, xmin=-2000, xmax=100000)
265  monTool.defineHistogram('Eta', type='TH1F', path='EXPERT', title="PrecisionElectron Hypo entries per Eta;Eta", xbins=100, xmin=-2.5, xmax=2.5)
266  monTool.defineHistogram('Phi', type='TH1F', path='EXPERT', title="PrecisionElectron Hypo entries per Phi;Phi", xbins=128, xmin=-3.2, xmax=3.2)
267  monTool.defineHistogram('EtaBin', type='TH1I', path='EXPERT', title="PrecisionElectron Hypo entries per Eta bin;Eta bin no.", xbins=11, xmin=-0.5, xmax=10.5)
268  monTool.defineHistogram('LikelihoodRatio', type='TH1F', path='EXPERT', title="PrecisionElectron Hypo LH", xbins=100, xmin=-5, xmax=5)
269  monTool.defineHistogram('mu', type='TH1F', path='EXPERT', title="Average interaction per crossing", xbins=100, xmin=0, xmax=100)
270 
271  cuts=['Input','#Delta #eta EF-L1', '#Delta #phi EF-L1','eta','E_{T}^{EM}']
272 
273  monTool.defineHistogram('CutCounter', type='TH1I', path='EXPERT', title="PrecisionElectron Hypo Passed Cuts;Cut",
274  xbins=13, xmin=-1.5, xmax=12.5, opt="kCumulative", xlabels=cuts)
275 
276 
277  if flags.Trigger.doValidationMonitoring:
278  monTool.defineHistogram('ptcone20',type='TH1F',path='EXPERT',title= "PrecisionElectron Hypo ptcone20; ptcone20;", xbins=50, xmin=0, xmax=5.0)
279  monTool.defineHistogram('relptcone20',type='TH1F',path='EXPERT',title= "PrecisionElectron Hypo; ptcone20/pt;", xbins=50, xmin=0, xmax=1)
280  monTool.defineHistogram('ptvarcone20',type='TH1F',path='EXPERT',title= "PrecisionElectron Hypo ptvarcone20; ptvarcone20;", xbins=50, xmin=0, xmax=5.0)
281  monTool.defineHistogram('relptvarcone20',type='TH1F',path='EXPERT',title= "PrecisionElectron Hypo; ptvarcone20/pt;", xbins=50, xmin=0, xmax=0.5)
282  monTool.defineHistogram('trk_d0', type="TH1F", path='EXPERT', title="PrecisionElectron Hypo Track d0; d0 [mm]", xbins=100, xmin=-1, xmax=1)
283 
284  self.tool().MonTool = monTool
285 
286 
287 def _IncTool(flags, name, monGroups, cpart, tool=None):
288  config = TrigEgammaPrecisionElectronHypoToolConfig(name, monGroups, cpart, tool=tool)
289  config.compile(flags)
290  return config.tool()
291 
292 
293 
295  """ Use menu decoded chain dictionary to configure the tool """
296  cparts = [i for i in d['chainParts'] if ((i['signature']=='Electron') or (i['signature']=='Electron'))]
297  return _IncTool( flags, d['chainName'], d['monGroups'], cparts[0] , tool=tool )
298 
299 
300 
301 
302 #
303 # Electron DNN Selectors
304 #
305 def TrigEgammaPrecisionElectronDNNSelectorCfg(flags, name='TrigEgammaPrecisionElectronDNNSelector', ConfigFilePath=None):
306  acc = ComponentAccumulator()
307  # We should include the DNN here
308  if not ConfigFilePath:
309  ConfigFilePath = flags.Trigger.egamma.dnnVersion
310 
311  import collections.abc
312  SelectorNames = collections.OrderedDict({
313  'dnntight' :'AsgElectronDNNTightSelector',
314  'dnnmedium' :'AsgElectronDNNMediumSelector',
315  'dnnloose' :'AsgElectronDNNLooseSelector',
316  })
317 
318  ElectronToolConfigFile = collections.OrderedDict({
319  'dnntight' :'ElectronDNNMulticlassTight.conf',
320  'dnnmedium' :'ElectronDNNMulticlassMedium.conf',
321  'dnnloose' :'ElectronDNNMulticlassLoose.conf',
322  })
323 
324  for dnnname, name in SelectorNames.items():
325  SelectorTool = CompFactory.AsgElectronSelectorTool(name)
326  SelectorTool.ConfigFile = ConfigFilePath + '/' + ElectronToolConfigFile[dnnname]
327  SelectorTool.skipDeltaPoverP = True
328  acc.addPublicTool(SelectorTool)
329 
330  return acc
331 
332 #
333 # Electron LH Selectors
334 #
335 def TrigEgammaPrecisionElectronLHSelectorCfg(flags, name='TrigEgammaPrecisionElectronLHSelector', ConfigFilePath=None, ConfigFileNoPixPath=None, ConfigFileNoGSFPath=None, ConfigFileNoGSFNoPixPath=None):
336 
337  # Configure the LH selectors
338  acc = ComponentAccumulator()
339 
340  # Must be careful that order matches LHNames at the start of the file!
341  import collections.abc
342  SelectorConfigFiles = collections.OrderedDict({
343  'lhtight' : 'ElectronLikelihoodTightTriggerConfig',
344  'lhmedium' : 'ElectronLikelihoodMediumTriggerConfig',
345  'lhloose' : 'ElectronLikelihoodLooseTriggerConfig',
346  'lhvloose' : 'ElectronLikelihoodVeryLooseTriggerConfig'
347  })
348 
349  VariationConfigInfos = collections.OrderedDict({
350  '_default' : {},
351  '_nopix' : {},
352  '_nogsf' : {},
353  '_nogsf_nopix' : {}
354  })
355 
356  VariationConfigInfos['_default']['postfix'] = ''
357  VariationConfigInfos['_nopix']['postfix'] = '_NoPix'
358  VariationConfigInfos['_nogsf']['postfix'] = ''
359  VariationConfigInfos['_nogsf_nopix']['postfix'] = '_NoPix'
360 
361  VariationConfigInfos['_default']['path'] = ConfigFilePath if ConfigFilePath else flags.Trigger.egamma.electronPidVersion
362  VariationConfigInfos['_nopix']['path'] = ConfigFileNoPixPath if ConfigFileNoPixPath else flags.Trigger.egamma.electronNoPixPidVersion
363  VariationConfigInfos['_nogsf']['path'] = ConfigFileNoGSFPath if ConfigFileNoGSFPath else flags.Trigger.egamma.electronNoGSFPidVersion
364  VariationConfigInfos['_nogsf_nopix']['path'] = ConfigFileNoGSFNoPixPath if ConfigFileNoGSFNoPixPath else flags.Trigger.egamma.electronNoGSFNoPixPidVersion
365 
366  from AthenaCommon.Logging import logging
367  log = logging.getLogger('TrigEgammaPrecisionElectronHypoTool')
368  log.debug( 'TrigEgammaPrecisionElectronLHSelectorCfg, order of LH tools:' )
369 
370  for pidvar, config in VariationConfigInfos.items():
371  for pidname, configfilebase in SelectorConfigFiles.items():
372  fullpidname = pidname if pidvar == '_default' else pidname + pidvar
373  toolname = 'AsgElectronSelector_' + fullpidname
374  configfile = config['path'] + '/' + configfilebase + config['postfix'] + '.conf'
375  skipdeltapcheck = True if 'nogsf' in pidvar else False
376 
377  log.debug( ' --> %s, config file: %s', fullpidname, configfile )
378 
379  SelectorTool = CompFactory.AsgElectronLikelihoodTool(toolname)
380  SelectorTool.ConfigFile = configfile
381  SelectorTool.usePVContainer = False
382  SelectorTool.skipDeltaPoverP = skipdeltapcheck
383  acc.addPublicTool(SelectorTool)
384 
385  return acc
386 
387 
388 #
389 # Electron CB Selectors
390 #
391 
392 def TrigEgammaPrecisionElectronCBSelectorCfg(flags, name='TrigEgammaPrecisionElectronCBSelector', ConfigFilePath=None):
393  acc = ComponentAccumulator()
394  from ElectronPhotonSelectorTools.TrigEGammaPIDdefs import BitDefElectron
395 
396  ElectronLooseHI = (0
397  | 1 << BitDefElectron.ClusterEtaRange_Electron
398  | 1 << BitDefElectron.ClusterHadronicLeakage_Electron
399  | 1 << BitDefElectron.ClusterMiddleEnergy_Electron
400  | 1 << BitDefElectron.ClusterMiddleEratio37_Electron
401  | 1 << BitDefElectron.ClusterMiddleWidth_Electron
402  | 1 << BitDefElectron.ClusterStripsWtot_Electron
403  )
404 
405  ElectronMediumHI = (ElectronLooseHI
406  | 1 << BitDefElectron.ClusterMiddleEratio33_Electron
407  | 1 << BitDefElectron.ClusterBackEnergyFraction_Electron
408  | 1 << BitDefElectron.ClusterStripsEratio_Electron
409  | 1 << BitDefElectron.ClusterStripsDeltaEmax2_Electron
410  | 1 << BitDefElectron.ClusterStripsDeltaE_Electron
411  | 1 << BitDefElectron.ClusterStripsFracm_Electron
412  | 1 << BitDefElectron.ClusterStripsWeta1c_Electron
413  )
414 
415  if not ConfigFilePath:
416  ConfigFilePath = flags.Trigger.egamma.electronHIPidVersion
417 
418  from collections import OrderedDict
419  SelectorNames = OrderedDict({
420  'medium': 'AsgElectronIsEMSelectorHIMedium',
421  'loose': 'AsgElectronIsEMSelectorHILoose',
422  'mergedtight' : 'AsgElectronIsEMSelectorMergedTight',
423  })
424 
425  ElectronToolConfigFile = {
426  'medium': 'ElectronIsEMMediumSelectorCutDefs.conf',
427  'loose': 'ElectronIsEMLooseSelectorCutDefs.conf',
428  'mergedtight' : 'ElectronIsEMMergedTightSelectorCutDefs.conf',
429  }
430 
431  ElectronMaskBits = {
432  'medium': ElectronMediumHI,
433  'loose': ElectronLooseHI,
434  'mergedtight' : egammaPID.ElectronTightHLT,
435  }
436 
437  for sel, name in SelectorNames.items():
438  SelectorTool = CompFactory.AsgElectronIsEMSelector(name)
439  SelectorTool.ConfigFile = ConfigFilePath + '/' + ElectronToolConfigFile[sel]
440  SelectorTool.isEMMask = ElectronMaskBits[sel]
441  acc.addPublicTool(SelectorTool)
442 
443  return acc
python.TrigEgammaPrecisionElectronHypoTool.TrigEgammaPrecisionElectronHypoToolConfig.__operation_points_lhInfo
__operation_points_lhInfo
Definition: TrigEgammaPrecisionElectronHypoTool.py:89
python.TrigEgammaPrecisionElectronHypoTool.TrigEgammaPrecisionElectronHypoToolConfig.__operation_points_gsfInfo
__operation_points_gsfInfo
Definition: TrigEgammaPrecisionElectronHypoTool.py:93
python.TrigEgammaPrecisionElectronHypoTool.TrigEgammaPrecisionElectronHypoToolConfig.__lhInfo
__lhInfo
Definition: TrigEgammaPrecisionElectronHypoTool.py:127
python.TrigEgammaPrecisionElectronHypoTool.TrigEgammaPrecisionElectronHypoToolConfig.__threshold
__threshold
Definition: TrigEgammaPrecisionElectronHypoTool.py:122
python.TrigEgammaPrecisionElectronHypoTool.TrigEgammaPrecisionElectronHypoToolConfig.tool
def tool(self)
Definition: TrigEgammaPrecisionElectronHypoTool.py:181
SystemOfUnits
python.TrigEgammaPrecisionElectronHypoTool.TrigEgammaPrecisionElectronHypoToolConfig.chain
def chain(self)
Definition: TrigEgammaPrecisionElectronHypoTool.py:151
python.TrigEgammaPrecisionElectronHypoTool.TrigEgammaPrecisionElectronHypoToolConfig.__isolationCut
__isolationCut
Definition: TrigEgammaPrecisionElectronHypoTool.py:98
python.TrigEgammaPrecisionElectronHypoTool.same
def same(val, tool)
Definition: TrigEgammaPrecisionElectronHypoTool.py:11
python.JetAnalysisCommon.ComponentAccumulator
ComponentAccumulator
Definition: JetAnalysisCommon.py:302
python.TrigEgammaPrecisionElectronHypoTool.TrigEgammaPrecisionElectronHypoToolConfig.__d0
__d0
Definition: TrigEgammaPrecisionElectronHypoTool.py:125
python.TrigEgammaPrecisionElectronHypoTool.TrigEgammaPrecisionElectronHypoToolConfig.acceptAll
def acceptAll(self)
Definition: TrigEgammaPrecisionElectronHypoTool.py:208
python.TrigEgammaPrecisionElectronHypoTool.createTrigEgammaPrecisionElectronHypoAlg
def createTrigEgammaPrecisionElectronHypoAlg(flags, name, sequenceOut)
Definition: TrigEgammaPrecisionElectronHypoTool.py:17
python.TrigEgammaPrecisionElectronHypoTool.TrigEgammaPrecisionElectronHypoToolConfig.__monGroups
__monGroups
Definition: TrigEgammaPrecisionElectronHypoTool.py:128
python.TrigEgammaPrecisionElectronHypoTool.TrigEgammaPrecisionElectronHypoToolConfig.nocut
def nocut(self)
Definition: TrigEgammaPrecisionElectronHypoTool.py:184
python.TrigEgammaPrecisionElectronHypoTool.TrigEgammaPrecisionElectronHypoToolConfig.__iso
__iso
Definition: TrigEgammaPrecisionElectronHypoTool.py:124
python.TrigEgammaPrecisionElectronHypoTool.TrigEgammaPrecisionElectronHypoToolConfig
Definition: TrigEgammaPrecisionElectronHypoTool.py:59
python.TrigEgammaPrecisionElectronHypoTool.TrigEgammaPrecisionElectronHypoToolConfig.compile
def compile(self, flags)
Definition: TrigEgammaPrecisionElectronHypoTool.py:229
python.TrigEgammaPrecisionElectronHypoTool.TrigEgammaPrecisionElectronHypoAlgCfg
def TrigEgammaPrecisionElectronHypoAlgCfg(flags, name, inputElectronCollection)
Definition: TrigEgammaPrecisionElectronHypoTool.py:50
python.TrigEgammaPrecisionElectronHypoTool.TrigEgammaPrecisionElectronHypoToolConfig.__tool
__tool
Definition: TrigEgammaPrecisionElectronHypoTool.py:143
python.TrigEgammaPrecisionElectronHypoTool.TrigEgammaPrecisionElectronHypoToolConfig.d0Info
def d0Info(self)
Definition: TrigEgammaPrecisionElectronHypoTool.py:175
python.TrigEgammaPrecisionElectronHypoTool.TrigEgammaPrecisionElectronLHSelectorCfg
def TrigEgammaPrecisionElectronLHSelectorCfg(flags, name='TrigEgammaPrecisionElectronLHSelector', ConfigFilePath=None, ConfigFileNoPixPath=None, ConfigFileNoGSFPath=None, ConfigFileNoGSFNoPixPath=None)
Definition: TrigEgammaPrecisionElectronHypoTool.py:335
python.TrigEgammaPrecisionElectronHypoTool.TrigEgammaPrecisionElectronHypoToolConfig.__lrtD0Cut
__lrtD0Cut
Definition: TrigEgammaPrecisionElectronHypoTool.py:106
python.TrigEgammaPrecisionElectronHypoTool.TrigEgammaPrecisionElectronHypoToolConfig.noPid
def noPid(self)
Definition: TrigEgammaPrecisionElectronHypoTool.py:191
python.TrigEgammaPrecisionElectronHypoTool.TrigEgammaPrecisionElectronDNNSelectorCfg
def TrigEgammaPrecisionElectronDNNSelectorCfg(flags, name='TrigEgammaPrecisionElectronDNNSelector', ConfigFilePath=None)
Definition: TrigEgammaPrecisionElectronHypoTool.py:305
python.TrigEgammaPrecisionElectronHypoTool.TrigEgammaPrecisionElectronHypoToolConfig.addIsoCut
def addIsoCut(self)
Definition: TrigEgammaPrecisionElectronHypoTool.py:213
python.TrigEgammaPrecisionElectronHypoTool.TrigEgammaPrecisionElectronHypoToolConfig.__log
__log
Definition: TrigEgammaPrecisionElectronHypoTool.py:120
python.TrigEgammaPrecisionElectronHypoTool.TrigEgammaPrecisionElectronHypoToolConfig.__sel
__sel
Definition: TrigEgammaPrecisionElectronHypoTool.py:123
python.TrigEgammaPrecisionElectronHypoTool.TrigEgammaPrecisionElectronHypoToolConfig.etthr
def etthr(self)
Definition: TrigEgammaPrecisionElectronHypoTool.py:169
python.TrigEgammaPrecisionElectronHypoTool.TrigEgammaPrecisionElectronHypoToolFromDict
def TrigEgammaPrecisionElectronHypoToolFromDict(flags, d, tool=None)
Definition: TrigEgammaPrecisionElectronHypoTool.py:294
python.TrigEgammaPrecisionElectronHypoTool.TrigEgammaPrecisionElectronHypoToolConfig.addLRTCut
def addLRTCut(self)
Definition: TrigEgammaPrecisionElectronHypoTool.py:203
GenericMonitoringTool
Definition: GenericMonitoringTool.py:1
debug
const bool debug
Definition: MakeUncertaintyPlots.cxx:53
python.TrigEgammaPrecisionElectronHypoTool.TrigEgammaPrecisionElectronHypoToolConfig.isoInfo
def isoInfo(self)
Definition: TrigEgammaPrecisionElectronHypoTool.py:172
python.TrigEgammaPrecisionElectronHypoTool.TrigEgammaPrecisionElectronHypoToolConfig.__operation_points
__operation_points
Definition: TrigEgammaPrecisionElectronHypoTool.py:62
python.TrigEgammaPrecisionElectronHypoTool._IncTool
def _IncTool(flags, name, monGroups, cpart, tool=None)
Definition: TrigEgammaPrecisionElectronHypoTool.py:287
python.TrigEgammaPrecisionElectronHypoTool.TrigEgammaPrecisionElectronHypoToolConfig.__init__
def __init__(self, name, monGroups, cpart, tool=None)
Definition: TrigEgammaPrecisionElectronHypoTool.py:117
python.TrigEgammaPrecisionElectronHypoTool.TrigEgammaPrecisionElectronCBSelectorCfg
def TrigEgammaPrecisionElectronCBSelectorCfg(flags, name='TrigEgammaPrecisionElectronCBSelector', ConfigFilePath=None)
Definition: TrigEgammaPrecisionElectronHypoTool.py:392
python.TrigEgammaPrecisionElectronHypoTool.TrigEgammaPrecisionElectronHypoToolConfig.nominal
def nominal(self)
Definition: TrigEgammaPrecisionElectronHypoTool.py:220
str
Definition: BTagTrackIpAccessor.cxx:11
python.TrigEgammaPrecisionElectronHypoTool.TrigEgammaPrecisionElectronHypoToolConfig.pidname
def pidname(self)
Definition: TrigEgammaPrecisionElectronHypoTool.py:157
python.TrigEgammaPrecisionElectronHypoTool.TrigEgammaPrecisionElectronHypoToolConfig.addMonitoring
def addMonitoring(self, flags)
Definition: TrigEgammaPrecisionElectronHypoTool.py:258
python.TrigEgammaPrecisionElectronHypoTool.TrigEgammaPrecisionElectronHypoToolConfig.__name
__name
Definition: TrigEgammaPrecisionElectronHypoTool.py:121
python.TrigEgammaPrecisionElectronHypoTool.TrigEgammaPrecisionElectronHypoToolConfig.__gsfInfo
__gsfInfo
Definition: TrigEgammaPrecisionElectronHypoTool.py:126
readCCLHist.float
float
Definition: readCCLHist.py:83
python.TrigEgammaPrecisionElectronHypoTool.TrigEgammaPrecisionElectronHypoToolConfig.gsfInfo
def gsfInfo(self)
Definition: TrigEgammaPrecisionElectronHypoTool.py:178