ATLAS Offline Software
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 
5 from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
6 from AthenaConfiguration.ComponentFactory import CompFactory
7 from AthenaConfiguration.Enums import ProductionStep
8 from TileConfiguration.TileConfigFlags import TileRunType
9 
10 def 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 
96 def TileRawChannelMakerDigiHSTruthCfg(flags, **kwargs):
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 
117 def 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 
138 def 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 
152 def 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 
166 if __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 
python.OutputStreamConfig.OutputStreamCfg
def OutputStreamCfg(flags, streamName, ItemList=None, MetadataItemList=None, disableEventTag=False, trigNavThinningSvc=None, takeItemsFromInput=False, extendProvenanceRecord=True, keepProvenanceTagsRegEx=None, AcceptAlgs=None, HelperTools=None)
Definition: OutputStreamConfig.py:13
python.JetAnalysisCommon.ComponentAccumulator
ComponentAccumulator
Definition: JetAnalysisCommon.py:302
TileRawChannelMakerConfig.TileRawChannelMakerOutputCfg
def TileRawChannelMakerOutputCfg(flags, streamName='ESD', **kwargs)
Definition: TileRawChannelMakerConfig.py:138
TileRawChannelBuilderOptConfig.TileRawChannelBuilderOpt2Cfg
def TileRawChannelBuilderOpt2Cfg(flags)
Definition: TileRawChannelBuilderOptConfig.py:82
TileRawChannelBuilderOptConfig.TileRawChannelBuilderOptATLASCfg
def TileRawChannelBuilderOptATLASCfg(flags)
Definition: TileRawChannelBuilderOptConfig.py:85
python.TileInfoLoaderConfig.TileInfoLoaderCfg
def TileInfoLoaderCfg(flags, **kwargs)
Definition: TileInfoLoaderConfig.py:11
TileRawChannelMakerConfig.TileRawChannelMakerDigiHSTruthCfg
def TileRawChannelMakerDigiHSTruthCfg(flags, **kwargs)
Definition: TileRawChannelMakerConfig.py:96
TileRawChannelBuilderOptConfig.TileRawChannelBuilderOF1Cfg
def TileRawChannelBuilderOF1Cfg(flags)
Definition: TileRawChannelBuilderOptConfig.py:79
TileRawChannelBuilderFitConfig.TileRawChannelBuilderFitFilterCfg
def TileRawChannelBuilderFitFilterCfg(flags, **kwargs)
Definition: TileRawChannelBuilderFitConfig.py:9
TileRawChannelBuilderMFConfig.TileRawChannelBuilderMFCfg
def TileRawChannelBuilderMFCfg(flags, **kwargs)
Definition: TileRawChannelBuilderMFConfig.py:9
python.MainServicesConfig.MainServicesCfg
def MainServicesCfg(flags, LoopMgr='AthenaEventLoopMgr')
Definition: MainServicesConfig.py:312
Constants
some useful constants -------------------------------------------------—
TileRawChannelMaker
Definition: TileRawChannelMaker.h:42
TileRawChannelBuilderWienerConfig.TileRawChannelBuilderWienerCfg
def TileRawChannelBuilderWienerCfg(flags, **kwargs)
Definition: TileRawChannelBuilderWienerConfig.py:9
TileRawChannelBuilderFitConfig.TileRawChannelBuilderFitOverflowCfg
def TileRawChannelBuilderFitOverflowCfg(flags, **kwargs)
Definition: TileRawChannelBuilderFitConfig.py:41
Trk::open
@ open
Definition: BinningType.h:40
python.AllConfigFlags.initConfigFlags
def initConfigFlags()
Definition: AllConfigFlags.py:19
TileRawChannelMakerConfig.TileRawChannelMakerDigiHSTruthOutputCfg
def TileRawChannelMakerDigiHSTruthOutputCfg(flags, streamName='ESD', **kwargs)
Definition: TileRawChannelMakerConfig.py:152
TileRawChannelMakerConfig.TileRawChannelOutputCfg
def TileRawChannelOutputCfg(flags, tileRawChannelMaker, streamName)
Definition: TileRawChannelMakerConfig.py:117
TileByteStreamConfig.TileRawDataReadingCfg
def TileRawDataReadingCfg(flags, readDigits=True, readRawChannel=True, readMuRcv=None, readMuRcvDigits=False, readMuRcvRawCh=False, readBeamElem=None, readLaserObj=None, readDigitsFlx=False, readL2=False, stateless=False, **kwargs)
Definition: TileByteStreamConfig.py:87
TileRawChannelMakerConfig.TileRawChannelMakerCfg
def TileRawChannelMakerCfg(flags, **kwargs)
Definition: TileRawChannelMakerConfig.py:10