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