9def IsolationSteeringDerivCfg(flags, name = 'IsolationSteeringDeriv', inType = 'EMPFlow'):
10
11 includeFwdElectrons = "ForwardElectrons" in flags.Input.Collections
12 mlog = logging.getLogger(name)
13 mlog.info('Starting Isolation steering')
14
15 acc = ComponentAccumulator()
16
17 suff = 'CSSK' if inType.find('CSSK') >= 0 else ''
18 from IsolationAlgs.IsoDensityConfig import NFlowInputAlgCfg
19 acc.merge(NFlowInputAlgCfg(flags,InputType = inType))
20
21 if not flags.HeavyIon.Egamma.doSubtractedClusters:
22 from IsolationAlgs.IsoDensityConfig import DensityForIsoAlgCfg
23 acc.merge(DensityForIsoAlgCfg(flags,name='CentralDensityFor'+suff+'NFlowIso'))
24 acc.merge(DensityForIsoAlgCfg(flags,name='ForwardDensityFor'+suff+'NFlowIso'))
25
26
27 kwargs = dict()
28 margs = dict()
29 margs['FlowElementsInConeTool'] = CompFactory.xAOD.FlowElementsInConeTool(
30 name=suff+'FlowElementsInConeTool')
31 if len(suff) > 0:
32 kwargs['CustomConfigurationNameEl'] = suff
33 kwargs['CustomConfigurationNamePh'] = suff
34 margs['EFlowEDCentralContainer'] = 'NeutralParticle'+suff+'FlowIsoCentralEventShape'
35 margs['EFlowEDForwardContainer'] = 'NeutralParticle'+suff+'FlowIsoForwardEventShape'
36 margs['FlowElementsInConeTool'].PFlowKey=suff+'NeutralParticleFlowObjects'
37 from IsolationAlgs.IsoToolsConfig import EGammaCaloIsolationToolCfg
38 kwargs['PFlowIsolationTool'] = acc.popToolsAndMerge(EGammaCaloIsolationToolCfg(flags,**margs))
39
40
41 from xAODPrimitives.xAODIso import xAODIso as isoPar
42 isoType = [ [ isoPar.neflowisol20, isoPar.neflowisol30, isoPar.neflowisol40 ] ]
43 isoCor = [ [ isoPar.coreCone ] ]
44 if not flags.HeavyIon.Egamma.doSubtractedClusters:
45 isoCor[0].append(isoPar.pileupCorrection)
46 isoExCor = [ [ isoPar.coreConeSC ] ]
47 kwargs['ElIsoTypes'] = isoType
48 kwargs['ElCorTypes'] = isoCor
49 kwargs['ElCorTypesExtra'] = isoExCor
50 kwargs['PhIsoTypes'] = isoType
51 kwargs['PhCorTypes'] = isoCor
52 kwargs['PhCorTypesExtra'] = isoExCor
53 if includeFwdElectrons:
54 kwargs['FwdElIsoTypes'] = isoType
55 kwargs['FwdElCorTypes'] = isoCor
56 kwargs['FwdElCorTypesExtra'] = isoExCor
57
58 kwargs['name'] = suff+'PFlowIsolationBuilder'
59
60 acc.addEventAlgo(CompFactory.IsolationBuilder(**kwargs))
61
62 mlog.info("PFlow isolation configured")
63
64 return acc
65