ATLAS Offline Software
Loading...
Searching...
No Matches
egammaReconstructionConfig.py
Go to the documentation of this file.
1# Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
2
3""" Instantiate the EGamma reconstruction.
4"""
5
6from AthenaCommon.Logging import logging
7from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
8
9
10def egammaReconstructionCfg(flags, name="egammaReconstruction"):
11
12 mlog = logging.getLogger(name)
13 mlog.info('Starting EGamma reconstruction configuration')
14
15 acc = ComponentAccumulator()
16
17 # In case it has not be added upstream already
18 from egammaAlgs.egammaTopoClusterCopierConfig import (
19 egammaTopoClusterCopierCfg)
20 acc.merge(egammaTopoClusterCopierCfg(flags))
21
22 # Add e/gamma tracking algorithms
23 if flags.Egamma.doTracking:
24
25 if flags.Acts.GsfRefitActs:
26
27 # === TODO === : Acts EM extrapolator is missing.
28
29 # from egammaAlgs.egammaSelectedTrackCopyConfig import (
30 # egammaSelectedTrackCopyCfg)
31 # acc.merge(egammaSelectedTrackCopyCfg(flags))
32
33 from egammaAlgs.ActsEMBremCollectionBuilderConfig import (
34 ActsEMBremCollectionBuilderCfg)
35 acc.merge(ActsEMBremCollectionBuilderCfg(flags))
36
37 else:
38 from egammaAlgs.egammaSelectedTrackCopyConfig import (
39 egammaSelectedTrackCopyCfg)
40 acc.merge(egammaSelectedTrackCopyCfg(flags))
41
42 from egammaAlgs.EMBremCollectionBuilderConfig import (
43 EMBremCollectionBuilderCfg)
44 acc.merge(EMBremCollectionBuilderCfg(flags))
45
46 if (flags.Tracking.writeExtendedSi_PRDInfo or
47 flags.Tracking.writeExtendedTRT_PRDInfo):
48 from DerivationFrameworkInDet.InDetToolsConfig import (
49 GSFTSOS_CommonKernelCfg)
50 acc.merge(GSFTSOS_CommonKernelCfg(flags))
51
52 # Add e/gamma conversion finding
53 if flags.Egamma.doConversionBuilding:
54 from egammaAlgs.EMVertexBuilderConfig import (
55 EMVertexBuilderCfg)
56 acc.merge(EMVertexBuilderCfg(flags))
57
58 # Add algorithms to produce
59 # xAOD Electrons and Photons
60 if flags.Egamma.doCentral:
61 from egammaAlgs.egammaRecBuilderConfig import (
62 egammaRecBuilderCfg)
63 acc.merge(egammaRecBuilderCfg(flags))
64
65 from egammaAlgs.egammaSuperClusterBuilderConfig import (
66 electronSuperClusterBuilderCfg, photonSuperClusterBuilderCfg)
67 acc.merge(electronSuperClusterBuilderCfg(flags))
68 acc.merge(photonSuperClusterBuilderCfg(flags))
69
70 from egammaAlgs.xAODEgammaBuilderConfig import (
71 xAODEgammaBuilderCfg)
72 acc.merge(xAODEgammaBuilderCfg(flags))
73
74 from egammaAlgs.egammaLargeClusterMakerAlgConfig import (
75 egammaLargeClusterMakerAlgCfg)
76 acc.merge(egammaLargeClusterMakerAlgCfg(flags))
77
78 # Add calo seeded forward algorithms to produce xAOD Forward Electrons.
79 if flags.Egamma.doForward:
80 from egammaAlgs.egammaForwardBuilderConfig import (
81 egammaForwardBuilderCfg)
82 acc.merge(egammaForwardBuilderCfg(flags))
83
84 from egammaAlgs.egammaLargeFWDClusterMakerAlgConfig import (
85 egammaLargeFWDClusterMakerAlgCfg)
86 acc.merge(egammaLargeFWDClusterMakerAlgCfg(flags))
87
88 # Add truth association.
89 if flags.Egamma.doTruthAssociation:
90 from egammaAlgs.egammaTruthAssociationConfig import (
91 egammaTruthAssociationCfg)
92 acc.merge(egammaTruthAssociationCfg(flags))
93
94 mlog.info("EGamma reconstruction configured")
95
96 return acc
97
98
99if __name__ == "__main__":
100 from AthenaConfiguration.AllConfigFlags import initConfigFlags
101 from AthenaConfiguration.TestDefaults import defaultTestFiles
102 from AthenaConfiguration.MainServicesConfig import MainServicesCfg
103 flags = initConfigFlags()
104 flags.Input.Files = defaultTestFiles.RDO_RUN2
105 flags.Output.doWriteESD = True # To test the ESD parts.
106 flags.Output.doWriteAOD = True # To test the AOD parts.
107 flags.lock()
108
109 acc = MainServicesCfg(flags)
110 acc.merge(egammaReconstructionCfg(flags))
111 acc.printConfig(withDetails=True, printDefaults=True)
112
113 with open("egammareconstructionconfig.pkl", "wb") as f:
114 acc.store(f)
egammaReconstructionCfg(flags, name="egammaReconstruction")