ATLAS Offline Software
Loading...
Searching...
No Matches
TileRawChannelMakerConfig.py
Go to the documentation of this file.
1# Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
2
3"""Define method to construct configured Tile raw channel maker algorithm"""
4
5from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
6from AthenaConfiguration.ComponentFactory import CompFactory
7from AthenaConfiguration.Enums import ProductionStep
8from TileConfiguration.TileConfigFlags import TileRunType
9
10def TileRawChannelMakerCfg(flags, **kwargs):
11 """Return component accumulator with configured Tile raw channel maker algorithm
12
13 Arguments:
14 flags -- Athena configuration flags
15 """
16
17 acc = ComponentAccumulator()
18
19 from TileConditions.TileInfoLoaderConfig import TileInfoLoaderCfg
20 acc.merge( TileInfoLoaderCfg(flags) )
21
22 kwargs.setdefault('name', 'TileRChMaker')
23 name = kwargs['name']
24
25 if flags.Common.ProductionStep in [ProductionStep.PileUpPresampling, ProductionStep.PileUpPretracking]:
26 kwargs.setdefault('TileDigitsContainer', flags.Overlay.BkgPrefix + 'TileDigitsCnt')
27 else:
28 kwargs.setdefault('TileDigitsContainer', 'TileDigitsCnt')
29
30 from AthenaCommon.Logging import logging
31 mlog = logging.getLogger( 'TileRawChannelMakerCfg' )
32
33 if flags.Tile.doOverflowFit:
34 kwargs.setdefault('FitOverflow', True)
35 from TileRecUtils.TileRawChannelBuilderFitConfig import TileRawChannelBuilderFitOverflowCfg
36 tileRawChannelBuilderFitOverflow = acc.popToolsAndMerge( TileRawChannelBuilderFitOverflowCfg(flags) )
37 kwargs.setdefault('TileRawChannelBuilderFitOverflow', tileRawChannelBuilderFitOverflow)
38 else:
39 kwargs.setdefault('FitOverflow', False)
40
41 tileRawChannelBuilder = []
42
43 if flags.Tile.doFit:
44 from TileRecUtils.TileRawChannelBuilderFitConfig import TileRawChannelBuilderFitFilterCfg
45 tileRawChannelBuilderFitFilter = acc.popToolsAndMerge( TileRawChannelBuilderFitFilterCfg(flags) )
46 tileRawChannelBuilder += [tileRawChannelBuilderFitFilter]
47 mlog.info(" adding now TileRawChannelBuilderFitFilter with name %s to the algorithm: %s",
48 tileRawChannelBuilderFitFilter.name, name)
49
50 if flags.Tile.doMF:
51 from TileRecUtils.TileRawChannelBuilderMFConfig import TileRawChannelBuilderMFCfg
52 tileRawChannelBuilderMF = acc.popToolsAndMerge( TileRawChannelBuilderMFCfg(flags) )
53 tileRawChannelBuilder += [tileRawChannelBuilderMF]
54 mlog.info(" adding now TileRawChannelBuilderMF with name %s to the algorithm: %s",
55 tileRawChannelBuilderMF.name, name)
56
57 if flags.Tile.doOF1:
58 from TileRecUtils.TileRawChannelBuilderOptConfig import TileRawChannelBuilderOF1Cfg
59 tileRawChannelBuilderOF1 = acc.popToolsAndMerge( TileRawChannelBuilderOF1Cfg(flags) )
60 tileRawChannelBuilder += [tileRawChannelBuilderOF1]
61 mlog.info(" adding now TileRawChannelBuilderOpt2Filter with name %s to the algorithm: %s",
62 tileRawChannelBuilderOF1.name, name)
63
64 if flags.Tile.doWiener:
65 from TileRecUtils.TileRawChannelBuilderWienerConfig import TileRawChannelBuilderWienerCfg
66 tileRawChannelBuilderWiener = acc.popToolsAndMerge( TileRawChannelBuilderWienerCfg(flags) )
67 tileRawChannelBuilder += [tileRawChannelBuilderWiener]
68 mlog.info(" adding now TileRawChannelBuilderWienerFilter with name %s to the algorithm: %s",
69 tileRawChannelBuilderWiener.name, name)
70
71 if flags.Tile.doOpt2:
72 from TileRecUtils.TileRawChannelBuilderOptConfig import TileRawChannelBuilderOpt2Cfg
73 tileRawChannelBuilderOpt2 = acc.popToolsAndMerge( TileRawChannelBuilderOpt2Cfg(flags) )
74 tileRawChannelBuilder += [tileRawChannelBuilderOpt2]
75 mlog.info(" adding now TileRawChannelBuilderOpt2Filter with name %s to the algorithm: %s",
76 tileRawChannelBuilderOpt2.name, name)
77
78 if flags.Tile.doOptATLAS:
79 from TileRecUtils.TileRawChannelBuilderOptConfig import TileRawChannelBuilderOptATLASCfg
80 tileRawChannelBuilderOptATLAS = acc.popToolsAndMerge( TileRawChannelBuilderOptATLASCfg(flags) )
81 tileRawChannelBuilder += [tileRawChannelBuilderOptATLAS]
82 mlog.info(" adding now TileRawChannelBuilderOpt2Filter with name %s to the algorithm: %s",
83 tileRawChannelBuilderOptATLAS.name, name)
84
85 kwargs.setdefault('TileRawChannelBuilder', tileRawChannelBuilder)
86
87 if flags.Common.isOverlay and flags.Concurrency.NumThreads > 0:
88 kwargs.setdefault('Cardinality', flags.Concurrency.NumThreads)
89
90 TileRawChannelMaker=CompFactory.TileRawChannelMaker
91 acc.addEventAlgo(TileRawChannelMaker(**kwargs), primary = True)
92
93 return acc
94
95
97 """Return component accumulator with configured Tile raw channel maker algorithm for HS
98
99 Arguments:
100 flags -- Athena configuration flags
101 """
102
103 kwargs.setdefault('name', 'TileRChMaker_DigiHSTruth')
104 kwargs.setdefault('TileDigitsContainer', 'TileDigitsCnt_DigiHSTruth')
105
106 acc = TileRawChannelMakerCfg(flags, **kwargs)
107 rawChannelMaker = acc.getPrimary()
108
109 rawChannelbuilders = rawChannelMaker.TileRawChannelBuilder
110
111 for rawChannelBuilder in rawChannelbuilders:
112 rawChannelBuilder.TileRawChannelContainer = f'{rawChannelBuilder.TileRawChannelContainer}_DigiHSTruth'
113
114 return acc
115
116
117def TileRawChannelOutputCfg(flags, tileRawChannelMaker, streamName):
118 """Return component accumulator with configured Output stream for Tile raw channel maker algorithm
119
120 Arguments:
121 flags -- Athena configuration flags
122 tileRawChannelMaker -- Tile raw channel maker algorithm
123 streamName -- name of output stream.
124 """
125
126 outputItemList = []
127 rawChannelbuilders = tileRawChannelMaker.TileRawChannelBuilder
128
129 for rawChannelBuilder in rawChannelbuilders:
130 outputItemList += [f'TileRawChannelContainer#{rawChannelBuilder.TileRawChannelContainer}']
131
132 from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg
133 acc = OutputStreamCfg(flags, streamName, ItemList = outputItemList)
134
135 return acc
136
137
138def TileRawChannelMakerOutputCfg(flags, streamName = 'ESD', **kwargs):
139 """Return component accumulator with configured Tile raw channel maker algorithm and Output stream
140
141 Arguments:
142 flags -- Athena configuration flags
143 streamName -- name of output stream. Defaults to ESD.
144 """
145
146 acc = TileRawChannelMakerCfg(flags, **kwargs)
147 acc.merge( TileRawChannelOutputCfg(flags, acc.getPrimary(), streamName) )
148
149 return acc
150
151
152def TileRawChannelMakerDigiHSTruthOutputCfg(flags, streamName = 'ESD', **kwargs):
153 """Return component accumulator with configured Tile raw channel maker algorithm and Output stream
154
155 Arguments:
156 flags -- Athena configuration flags
157 streamName -- name of output stream. Defaults to ESD.
158 """
159
160 acc = TileRawChannelMakerDigiHSTruthCfg(flags, **kwargs)
161 acc.merge( TileRawChannelOutputCfg(flags, acc.getPrimary(), streamName) )
162
163 return acc
164
165
166if __name__ == "__main__":
167
168 from AthenaConfiguration.AllConfigFlags import initConfigFlags
169 from AthenaConfiguration.TestDefaults import defaultConditionsTags, defaultGeometryTags, defaultTestFiles
170 from AthenaCommon.Logging import log
171 from AthenaCommon.Constants import DEBUG
172
173 # Test setup
174 log.setLevel(DEBUG)
175
176 flags = initConfigFlags()
177 flags.Input.Files = defaultTestFiles.RAW_RUN2
178 flags.GeoModel.AtlasVersion = defaultGeometryTags.RUN2
179 flags.IOVDb.GlobalTag = defaultConditionsTags.RUN2_DATA
180 flags.Tile.RunType = TileRunType.PHY
181 flags.Tile.doFit = True
182 flags.Tile.doOF1 = True
183 flags.Tile.doWiener = True
184 flags.Tile.doOpt2 = True
185 flags.Tile.doOptATLAS = True
186 flags.Tile.correctTimeJumps = True
187 flags.Tile.NoiseFilter = 1
188 flags.Output.ESDFileName = "myESD.pool.root"
189 flags.Exec.MaxEvents=3
190 flags.fillFromArgs()
191
192 flags.lock()
193
194 from AthenaConfiguration.MainServicesConfig import MainServicesCfg
195 acc = MainServicesCfg(flags)
196
197 from TileByteStream.TileByteStreamConfig import TileRawDataReadingCfg
198 acc.merge( TileRawDataReadingCfg(flags, readMuRcv=False) )
199
200 acc.merge( TileRawChannelMakerOutputCfg(flags) )
201
202 flags.dump()
203 acc.printConfig(withDetails = True, summariseProps = True)
204 acc.store( open('TileRawChannelMaker.pkl','wb') )
205
206 sc = acc.run()
207
208 import sys
209 # Success should be 0
210 sys.exit(not sc.isSuccess())
211
TileRawChannelMakerDigiHSTruthOutputCfg(flags, streamName='ESD', **kwargs)
TileRawChannelOutputCfg(flags, tileRawChannelMaker, streamName)
TileRawChannelMakerOutputCfg(flags, streamName='ESD', **kwargs)
TileRawChannelMakerDigiHSTruthCfg(flags, **kwargs)