ATLAS Offline Software
Loading...
Searching...
No Matches
CaloRecoConfig.py
Go to the documentation of this file.
1#!/usr/bin/env athena.py
2# Copyright (C) 2002-2026 CERN for the benefit of the ATLAS collaboration
3
4from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
5from AthenaConfiguration.ComponentFactory import CompFactory
6from AthenaConfiguration.Enums import Format
7
8
9def CaloRecoCfg(flags, clustersname=None):
10 result = ComponentAccumulator()
11 if flags.Input.Format is Format.BS:
12 #Data-case: Schedule ByteStream reading for LAr & Tile
13 from LArByteStream.LArRawDataReadingConfig import LArRawDataReadingCfg
14 result.merge(LArRawDataReadingCfg(flags))
15
16 from TileByteStream.TileByteStreamConfig import TileRawDataReadingCfg
17 result.merge( TileRawDataReadingCfg(flags) )
18
19 if flags.Output.doWriteESD:
20 from TileRecAlgs.TileDigitsFilterConfig import TileDigitsFilterOutputCfg
21 result.merge(TileDigitsFilterOutputCfg(flags))
22 else: #Mostly for wrapping in RecExCommon
23 from TileRecAlgs.TileDigitsFilterConfig import TileDigitsFilterCfg
24 result.merge(TileDigitsFilterCfg(flags))
25
26 if not flags.Input.isMC: # KTJ: Take directly from MC BS
27 from LArROD.LArRawChannelBuilderAlgConfig import LArRawChannelBuilderAlgCfg
28 result.merge(LArRawChannelBuilderAlgCfg(flags))
29
30 from TileRecUtils.TileRawChannelMakerConfig import TileRawChannelMakerCfg
31 result.merge(TileRawChannelMakerCfg(flags))
32
33 if not flags.Input.isMC and not flags.Common.isOnline:
34 from LArCellRec.LArTimeVetoAlgConfig import LArTimeVetoAlgCfg
35 result.merge(LArTimeVetoAlgCfg(flags))
36
37 if not flags.Input.isMC and not flags.Overlay.DataOverlay:
38 from LArROD.LArFebErrorSummaryMakerConfig import LArFebErrorSummaryMakerCfg
39 result.merge(LArFebErrorSummaryMakerCfg(flags))
40
41
42 #Configure cell-building
43 from CaloRec.CaloCellMakerConfig import CaloCellMakerCfg
44 result.merge(CaloCellMakerCfg(flags))
45
46 #Configure cell-building for DigiHSTruth:
47 if flags.Calo.TopoCluster.doDigiHSTruthMoments:
48 result.merge(CaloCellMakerCfg(flags, doDigiHSTruth=True))
49
50 #Configure topo-cluster builder
51 from CaloRec.CaloTopoClusterConfig import CaloTopoClusterCfg
52 result.merge(CaloTopoClusterCfg(flags, clustersname=clustersname))
53
54 #Configure forward towers:
55 from CaloRec.CaloFwdTopoTowerConfig import CaloFwdTopoTowerCfg
56 result.merge(CaloFwdTopoTowerCfg(flags,CaloTopoClusterContainerKey="CaloCalTopoClusters"))
57
58 #Configure NoisyROSummary
59 from LArCellRec.LArNoisyROSummaryConfig import LArNoisyROSummaryCfg
60 result.merge(LArNoisyROSummaryCfg(flags))
61
62 #Configure TileLookForMuAlg
63 from TileMuId.TileMuIdConfig import TileLookForMuAlgCfg
64 result.merge(TileLookForMuAlgCfg(flags))
65
66 if not flags.Input.isMC and not flags.Overlay.DataOverlay:
67 #Configure LArDigitsThinner:
68 from LArROD.LArDigitThinnerConfig import LArDigitThinnerCfg
69 result.merge(LArDigitThinnerCfg(flags))
70
71 #Configure MBTSTimeDiff
72 #Clients are BackgroundWordFiller and (deprecated?) DQTBackgroundMonTool
73 #Consider moving to BackgroundWordFiller config
74 if flags.Detector.GeometryMBTS:
75 from TileRecAlgs.MBTSTimeDiffEventInfoAlgConfig import MBTSTimeDiffEventInfoAlgCfg
76 result.merge(MBTSTimeDiffEventInfoAlgCfg(flags))
77
78 # Optional: AOD Cell, rawCh, digits thinning, based on clusters, for XTalk studies
79 if flags.Calo.TopoCluster.xtalkInfoDumper and not flags.Overlay.DataOverlay:
80 from LArClusterCellDumper.CaloThinCellsInAODAlgConfig import CaloThinCellsInAODAlgCfg
81 result.merge(CaloThinCellsInAODAlgCfg(flags))
82 if not flags.HeavyIon.Egamma.doSubtractedClusters:
83 #Configure AOD Cell-Thinning based on samplings:
84 from CaloRec.CaloThinCellsBySamplingAlgConfig import CaloThinCellsBySamplingAlgCfg
85 result.merge(CaloThinCellsBySamplingAlgCfg(flags,'StreamAOD', ['TileGap3']))
86
87 return result
88
89
91 result = ComponentAccumulator()
92
93 result.addEventAlgo(CompFactory.DumpLArRawChannels(LArRawChannelContainerName="LArRawChannels_FromDigits"))
94 result.addEventAlgo(CompFactory.CaloCellDumper())
95
96 ClusterDumper = CompFactory.ClusterDumper
97 result.addEventAlgo(ClusterDumper("TopoDumper", ContainerName="CaloCalTopoClusters", FileName="TopoCluster.txt"))
98 result.addEventAlgo(ClusterDumper("FwdTopoDumper", ContainerName="CaloCalFwdTopoTowers", FileName="FwdTopoCluster.txt"))
99
100 return result
101
102# Run with python -m CaloRec.CaloRecoConfig
103def CaloRecoConfigTest(flags=None):
104
105 if flags is None:
106 from AthenaConfiguration.AllConfigFlags import initConfigFlags
107 flags = initConfigFlags()
108
109 from AthenaConfiguration.TestDefaults import defaultGeometryTags,defaultConditionsTags,defaultTestFiles
110 flags.Input.Files = defaultTestFiles.RAW_RUN3_DATA24
111 flags.IOVDb.GlobalTag = defaultConditionsTags.RUN3_DATA
112 flags.GeoModel.AtlasVersion = defaultGeometryTags.RUN3
113
114 from AthenaCommon.Constants import DEBUG,INFO
115 from AthenaCommon.Logging import log
116 log.setLevel(DEBUG)
117 flags.Exec.OutputLevel=INFO
118
119 flags.Exec.MaxEvents=10
120 flags.fillFromArgs()
121 flags.lock()
122
123 from AthenaConfiguration.MainServicesConfig import MainServicesCfg
124 acc = MainServicesCfg(flags)
125
126 acc.merge(CaloRecoCfg(flags))
127
128 CaloCellDumper = CompFactory.CaloCellDumper
129 acc.addEventAlgo(CaloCellDumper(),sequenceName="AthAlgSeq")
130
131 ClusterDumper = CompFactory.ClusterDumper
132 acc.addEventAlgo(ClusterDumper("TopoDumper",ContainerName="CaloCalTopoClusters",FileName="TopoCluster.txt"),sequenceName="AthAlgSeq")
133
134 f = open("CaloRec.pkl","wb")
135 acc.store(f)
136 f.close()
137
138 acc.run()
139
140if __name__=="__main__":
141 from AthenaConfiguration.AllConfigFlags import initConfigFlags
142 from AthenaCommon.Logging import log
143 from AthenaCommon.Constants import DEBUG
144 from AthenaConfiguration.TestDefaults import defaultGeometryTags,defaultConditionsTags,defaultTestFiles
145 log.setLevel(DEBUG)
146 flags = initConfigFlags()
147 flags.Input.Files = (defaultTestFiles.RAW_RUN3)
148 flags.IOVDb.GlobalTag = defaultConditionsTags.RUN3_DATA
149 flags.GeoModel.AtlasVersion=defaultGeometryTags.RUN3
150 flags.lock()
151 CaloRecoConfigTest(flags)
CaloRecoCfg(flags, clustersname=None)
CaloRecoConfigTest(flags=None)