3 """ Instantiate the electron or photon isolation """
5 from AthenaCommon.Logging
import logging
6 from AthenaConfiguration.ComponentAccumulator
import ComponentAccumulator
7 from AthenaConfiguration.ComponentFactory
import CompFactory
11 mlog = logging.getLogger(name)
12 mlog.info(
'Starting '+name+
' configuration')
17 if name.find(
'photon') >= 0:
20 elif name.find(
'electron') >= 0:
24 mlog.error(
'Name '+name+
' should contain electron or photon')
27 from xAODPrimitives.xAODIso
import xAODIso
as isoPar
28 from IsolationAlgs.IsoToolsConfig
import (
29 TrackIsolationToolCfg, ElectronTrackIsolationToolCfg,
30 EGammaCaloIsolationToolCfg)
36 if flags.Detector.EnableID
or flags.Detector.EnableITk:
37 isoType.append([ isoPar.ptcone30, isoPar.ptcone20 ])
38 isoCor.append([ isoPar.coreTrackPtr ])
40 if 'TrackIsolationTool' not in kwargs:
42 kwargs[
'TrackIsolationTool'] = acc.popToolsAndMerge(
45 kwargs[
'TrackIsolationTool'] = acc.popToolsAndMerge(
48 if flags.Detector.EnableCalo
and not noCalo:
50 [ isoPar.topoetcone20, isoPar.topoetcone30, isoPar.topoetcone40 ])
52 [ isoPar.core57cells, isoPar.ptCorrection, isoPar.pileupCorrection ])
54 if flags.HeavyIon.Egamma.doSubtractedClusters:
55 isoCor[-1] = [ x
for x
in isoCor[-1]
if x != isoPar.pileupCorrection ]
57 if 'CaloTopoIsolationTool' not in kwargs:
58 kwargs[
'CaloTopoIsolationTool'] = acc.popToolsAndMerge(
61 kwargs[f
'{pref}IsoTypes'] = isoType
62 kwargs[f
'{pref}CorTypes'] = isoCor
63 kwargs[f
'{pref}CorTypesExtra'] = isoExCor
65 kwargs[
'name'] = suff+
'IsolationBuilder'
67 acc.addEventAlgo(CompFactory.IsolationBuilder(**kwargs))
69 mlog.info(suff+
" isolation configured")
75 mlog = logging.getLogger(name)
76 mlog.info(
'Starting '+name+
' configuration')
80 from xAODPrimitives.xAODIso
import xAODIso
as isoPar
81 from IsolationAlgs.IsoToolsConfig
import (
82 TrackIsolationToolCfg, MuonCaloIsolationToolCfg)
88 if flags.Detector.EnableID
or flags.Detector.EnableITk:
89 isoType.append([ isoPar.ptcone40, isoPar.ptcone30, isoPar.ptcone20 ])
90 isoCor.append([ isoPar.coreTrackPtr ])
92 if 'TrackIsolationTool' not in kwargs:
93 kwargs[
'TrackIsolationTool'] = acc.popToolsAndMerge(
96 if flags.Detector.EnableCalo
and not noCalo:
98 [ isoPar.topoetcone20, isoPar.topoetcone30, isoPar.topoetcone40 ])
99 isoCor.append([ isoPar.coreCone, isoPar.pileupCorrection ])
101 if flags.HeavyIon.Egamma.doSubtractedClusters:
102 isoCor[-1] = [ x
for x
in isoCor[-1]
if x != isoPar.pileupCorrection ]
104 if (
'CaloTopoIsolationTool' not in kwargs)
or (
105 'PFlowIsolationTool' not in kwargs):
107 if 'CaloTopoIsolationTool' not in kwargs:
108 kwargs[
'CaloTopoIsolationTool'] = cisoTool
109 if flags.Reco.EnablePFlow
and 'PFlowIsolationTool' not in kwargs:
111 [ isoPar.neflowisol20, isoPar.neflowisol30, isoPar.neflowisol40 ])
112 isoCor.append([ isoPar.coreCone, isoPar.pileupCorrection ])
115 if flags.HeavyIon.Egamma.doSubtractedClusters:
116 isoCor[-1] = [ x
for x
in isoCor[-1]
if x != isoPar.pileupCorrection ]
118 kwargs[
'PFlowIsolationTool'] = cisoTool
120 kwargs[
'MuIsoTypes'] = isoType
121 kwargs[
'MuCorTypes'] = isoCor
122 kwargs[
'MuCorTypesExtra'] = isoExCor
123 kwargs[
'name'] =
'muonIsolationBuilder'
125 acc.addEventAlgo(CompFactory.IsolationBuilder(**kwargs))
127 mlog.info(
"muon isolation configured")
132 if __name__ ==
"__main__":
133 from AthenaConfiguration.AllConfigFlags
import initConfigFlags
134 from AthenaConfiguration.ComponentAccumulator
import printProperties
135 from AthenaConfiguration.TestDefaults
import defaultTestFiles
136 from AthenaConfiguration.MainServicesConfig
import MainServicesCfg
138 flags.Input.Files = defaultTestFiles.RDO_RUN2
139 flags.Output.doWriteESD =
True
140 flags.Output.doWriteAOD =
True
143 mlog = logging.getLogger(
"isolationConfigTest")
144 mlog.info(
"Configuring photon isolation: ")
151 acc.getEventAlgo(
"photonIsolationBuilder"),
155 acc.getEventAlgo(
"electronIsolationBuilder"),
159 acc.getEventAlgo(
"muonIsolationBuilder"),
163 with open(
"isolationconfig.pkl",
"wb")
as f: