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-2024 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 topo-cluster builder
47 from CaloRec.CaloTopoClusterConfig import CaloTopoClusterCfg
48 result.merge(CaloTopoClusterCfg(flags, clustersname=clustersname))
49
50 #Configure forward towers:
51 from CaloRec.CaloFwdTopoTowerConfig import CaloFwdTopoTowerCfg
52 result.merge(CaloFwdTopoTowerCfg(flags,CaloTopoClusterContainerKey="CaloCalTopoClusters"))
53
54 #Configure NoisyROSummary
55 from LArCellRec.LArNoisyROSummaryConfig import LArNoisyROSummaryCfg
56 result.merge(LArNoisyROSummaryCfg(flags))
57
58 #Configure TileLookForMuAlg
59 from TileMuId.TileMuIdConfig import TileLookForMuAlgCfg
60 result.merge(TileLookForMuAlgCfg(flags))
61
62 if not flags.Input.isMC and not flags.Overlay.DataOverlay:
63 #Configure LArDigitsThinner:
64 from LArROD.LArDigitThinnerConfig import LArDigitThinnerCfg
65 result.merge(LArDigitThinnerCfg(flags))
66
67 #Configure MBTSTimeDiff
68 #Clients are BackgroundWordFiller and (deprecated?) DQTBackgroundMonTool
69 #Consider moving to BackgroundWordFiller config
70 if flags.Detector.GeometryMBTS:
71 from TileRecAlgs.MBTSTimeDiffEventInfoAlgConfig import MBTSTimeDiffEventInfoAlgCfg
72 result.merge(MBTSTimeDiffEventInfoAlgCfg(flags))
73
74 # Optional: AOD Cell, rawCh, digits thinning, based on clusters, for XTalk studies
75 if flags.Calo.TopoCluster.xtalkInfoDumper and not flags.Overlay.DataOverlay:
76 from LArClusterCellDumper.CaloThinCellsInAODAlgConfig import CaloThinCellsInAODAlgCfg
77 result.merge(CaloThinCellsInAODAlgCfg(flags))
78 if not flags.HeavyIon.Egamma.doSubtractedClusters:
79 #Configure AOD Cell-Thinning based on samplings:
80 from CaloRec.CaloThinCellsBySamplingAlgConfig import CaloThinCellsBySamplingAlgCfg
81 result.merge(CaloThinCellsBySamplingAlgCfg(flags,'StreamAOD', ['TileGap3']))
82
83 return result
84
85
87 result = ComponentAccumulator()
88
89 result.addEventAlgo(CompFactory.DumpLArRawChannels(LArRawChannelContainerName="LArRawChannels_FromDigits"))
90 result.addEventAlgo(CompFactory.CaloCellDumper())
91
92 ClusterDumper = CompFactory.ClusterDumper
93 result.addEventAlgo(ClusterDumper("TopoDumper", ContainerName="CaloCalTopoClusters", FileName="TopoCluster.txt"))
94 result.addEventAlgo(ClusterDumper("FwdTopoDumper", ContainerName="CaloCalFwdTopoTowers", FileName="FwdTopoCluster.txt"))
95
96 return result
97
98# Run with python -m CaloRec.CaloRecoConfig
99def CaloRecoConfigTest(flags=None):
100
101 if flags is None:
102 from AthenaConfiguration.AllConfigFlags import initConfigFlags
103 flags = initConfigFlags()
104
105 from AthenaConfiguration.TestDefaults import defaultGeometryTags,defaultConditionsTags,defaultTestFiles
106 flags.Input.Files = defaultTestFiles.RAW_RUN3_DATA24
107 flags.IOVDb.GlobalTag = defaultConditionsTags.RUN3_DATA
108 flags.GeoModel.AtlasVersion = defaultGeometryTags.RUN3
109
110 from AthenaCommon.Constants import DEBUG,INFO
111 from AthenaCommon.Logging import log
112 log.setLevel(DEBUG)
113 flags.Exec.OutputLevel=INFO
114
115 flags.Exec.MaxEvents=10
116 flags.fillFromArgs()
117 flags.lock()
118
119 from AthenaConfiguration.MainServicesConfig import MainServicesCfg
120 acc = MainServicesCfg(flags)
121
122 acc.merge(CaloRecoCfg(flags))
123
124 CaloCellDumper = CompFactory.CaloCellDumper
125 acc.addEventAlgo(CaloCellDumper(),sequenceName="AthAlgSeq")
126
127 ClusterDumper = CompFactory.ClusterDumper
128 acc.addEventAlgo(ClusterDumper("TopoDumper",ContainerName="CaloCalTopoClusters",FileName="TopoCluster.txt"),sequenceName="AthAlgSeq")
129
130 f = open("CaloRec.pkl","wb")
131 acc.store(f)
132 f.close()
133
134 acc.run()
135
136if __name__=="__main__":
137 from AthenaConfiguration.AllConfigFlags import initConfigFlags
138 from AthenaCommon.Logging import log
139 from AthenaCommon.Constants import DEBUG
140 from AthenaConfiguration.TestDefaults import defaultGeometryTags,defaultConditionsTags,defaultTestFiles
141 log.setLevel(DEBUG)
142 flags = initConfigFlags()
143 flags.Input.Files = (defaultTestFiles.RAW_RUN3)
144 flags.IOVDb.GlobalTag = defaultConditionsTags.RUN3_DATA
145 flags.GeoModel.AtlasVersion=defaultGeometryTags.RUN3
146 flags.lock()
147 CaloRecoConfigTest(flags)
CaloRecoConfigTest(flags=None)
CaloRecoCfg(flags, clustersname=None)