4 from AthenaMonitoringKernel.GenericMonitoringTool
import GenericMonitoringTool
5 from ElectronPhotonSelectorTools.EgammaPIDdefs
import egammaPID
6 from AthenaConfiguration.ComponentAccumulator
import ComponentAccumulator
7 from AthenaConfiguration.ComponentFactory
import CompFactory
14 from ElectronPhotonSelectorTools.AsgPhotonIsEMSelectorsConfig
import (AsgPhotonIsEMSelectorCfg)
15 from TriggerMenuMT.HLT.Photon.TriggerPhotonIsEMSelectorMapping
import (triggerPhotonPIDmenu)
17 if "PhotonIsEMSelectorTools" not in kwargs:
18 LoosePhotonSelector = acc.popToolsAndMerge(
AsgPhotonIsEMSelectorCfg(flags,
"LoosePhotonSelector", egammaPID.PhotonIDLoose, triggerPhotonPIDmenu.menuCurrentCuts, trigger =
True))
19 MediumPhotonSelector = acc.popToolsAndMerge(
AsgPhotonIsEMSelectorCfg(flags,
"MediumPhotonSelector", egammaPID.PhotonIDMedium, triggerPhotonPIDmenu.menuCurrentCuts, trigger =
True))
20 TightPhotonSelector = acc.popToolsAndMerge(
AsgPhotonIsEMSelectorCfg(flags,
"TightPhotonSelector", egammaPID.PhotonIDTight, triggerPhotonPIDmenu.menuCurrentCuts, trigger =
True))
21 kwargs[
"PhotonIsEMSelectorTools"] = [TightPhotonSelector, MediumPhotonSelector, LoosePhotonSelector]
22 if "IsEMNames" not in kwargs:
23 kwargs[
"IsEMNames"]=[
'tight',
'medium',
'loose']
25 if "Photons" not in kwargs:
26 kwargs[
"Photons"] = sequenceOut
28 hypoAlg = CompFactory.TrigEgammaPrecisionPhotonHypoAlg(name, **kwargs)
29 acc.addEventAlgo( hypoAlg )
34 return [val]*( len( tool.EtaBins ) - 1 )
42 __operation_points = [
'tight' ,
48 def __init__(self, name, monGroups, cpart, tool=None):
50 from AthenaCommon.Logging
import logging
51 self.
__log = logging.getLogger(
'TrigEgammaPrecisionPhotonHypoTool')
54 self.
__sel = cpart[
'addInfo'][0]
if cpart[
'addInfo']
else cpart[
'IDinfo']
58 tool = CompFactory.TrigEgammaPrecisionPhotonHypoTool( name )
60 tool.EtaBins = [0.0, 0.6, 0.8, 1.15, 1.37, 1.52, 1.81, 2.01, 2.37, 2.47]
62 tool.dETACLUSTERthr = 0.1
63 tool.dPHICLUSTERthr = 0.1
90 self.
tool().dETACLUSTERthr = 9999.
91 self.
tool().dPHICLUSTERthr = 9999.
94 self.
tool().DoNoPid =
True
98 self.
tool().dETACLUSTERthr = 9999.
99 self.
tool().dPHICLUSTERthr = 9999.
103 self.
__log.fatal(
"Bad selection name: %s" % self.
pidname())
114 elif 'nopid' == self.
pidname():
120 if hasattr(self.
tool(),
"MonTool"):
122 doValidationMonitoring = flags.Trigger.doValidationMonitoring
125 if (any(
'egammaMon:online' in group
for group
in monGroups)
or doValidationMonitoring):
135 HistPath =
'PrecisionPhotonHypo/'+self.
__name)
136 monTool.defineHistogram(
'dEta', type=
'TH1F', path=
'EXPERT', title=
"PrecisionPhoton Hypo #Delta#eta_{EF L1}; #Delta#eta_{EF L1}", xbins=80, xmin=-0.01, xmax=0.01)
137 monTool.defineHistogram(
'dPhi', type=
'TH1F', path=
'EXPERT', title=
"PrecisionPhoton Hypo #Delta#phi_{EF L1}; #Delta#phi_{EF L1}", xbins=80, xmin=-0.01, xmax=0.01)
138 monTool.defineHistogram(
'Et_em', type=
'TH1F', path=
'EXPERT', title=
"PrecisionPhoton Hypo cluster E_{T}^{EM};E_{T}^{EM} [MeV]", xbins=50, xmin=-2000, xmax=100000)
139 monTool.defineHistogram(
'Eta', type=
'TH1F', path=
'EXPERT', title=
"PrecisionPhoton Hypo entries per Eta;Eta", xbins=100, xmin=-2.5, xmax=2.5)
140 monTool.defineHistogram(
'Phi', type=
'TH1F', path=
'EXPERT', title=
"PrecisionPhoton Hypo entries per Phi;Phi", xbins=128, xmin=-3.2, xmax=3.2)
141 monTool.defineHistogram(
'EtaBin', type=
'TH1I', path=
'EXPERT', title=
"PrecisionPhoton Hypo entries per Eta bin;Eta bin no.", xbins=11, xmin=-0.5, xmax=10.5)
143 cuts=[
'Input',
'#Delta #eta EF-L1',
'#Delta #phi EF-L1',
'eta',
'E_{T}^{EM}']
145 monTool.defineHistogram(
'CutCounter', type=
'TH1I', path=
'EXPERT', title=
"PrecisionPhoton Hypo Passed Cuts;Cut",
146 xbins=13, xmin=-1.5, xmax=12.5, opt=
"kCumulative", xlabels=cuts)
148 if flags.Trigger.doValidationMonitoring:
149 monTool.defineHistogram(
'etcone20',type=
'TH1F',path=
'EXPERT',title=
"PrecisionPhoton Hypo etcone20; etcone20;", xbins=50, xmin=0, xmax=5.0)
150 monTool.defineHistogram(
'topoetcone20',type=
'TH1F',path=
'EXPERT',title=
"PrecisionPhoton Hypo; topoetcone20;", xbins=50, xmin=-10, xmax=10)
151 monTool.defineHistogram(
'reletcone20',type=
'TH1F',path=
'EXPERT',title=
"PrecisionPhoton Hypo etcone20/et; etcone20/et;", xbins=50, xmin=-0.5, xmax=0.5)
152 monTool.defineHistogram(
'reltopoetcone20',type=
'TH1F',path=
'EXPERT',title=
"PrecisionPhoton Hypo; topoetcone20/pt;", xbins=50, xmin=-0.5, xmax=0.5)
154 self.
tool().MonTool = monTool
158 def _IncTool( flags, name, monGroups, cpart, tool=None ):
160 config.compile(flags)
166 """ Use menu decoded chain dictionary to configure the tool """
167 cparts = [i
for i
in d[
'chainParts']
if ((i[
'signature']==
'Electron')
or (i[
'signature']==
'Photon'))]
168 return _IncTool( flags, d[
'chainName'], d[
'monGroups'], cparts[0], tool=tool )