Loading [MathJax]/extensions/tex2jax.js
ATLAS Offline Software
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
TileByteStreamConfig.py
Go to the documentation of this file.
1 # Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
2 
3 from AthenaConfiguration.ComponentFactory import CompFactory
4 from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
5 from TileConfiguration.TileConfigFlags import TileRunType
6 
7 def _createTileContByteStreamToolsConfig (name, TileContByteStreamTool, InitializeForWriting=False, stream=None, **kwargs):
8 
9  kwargs['name'] = name
10  kwargs['InitializeForWriting'] = InitializeForWriting
11  tool = TileContByteStreamTool(**kwargs)
12 
13  if InitializeForWriting:
14  from TileByteStream.TileHid2RESrcIDConfig import TileHid2RESrcIDCondAlg
15  TileHid2RESrcIDCondAlg(ForHLT=True)
16 
17  if stream:
18  stream.ExtraInputs |= {('TileHid2RESrcID', 'ConditionStore+TileHid2RESrcIDHLT')}
19 
20  return tool
21 
22 def TileRawChannelContByteStreamToolConfig(name='TileRawChannelContByteStreamTool', InitializeForWriting=False, stream=None, **kwargs):
23  from TileByteStream.TileByteStreamConf import TileRawChannelContByteStreamTool
24  return _createTileContByteStreamToolsConfig(name, TileRawChannelContByteStreamTool, InitializeForWriting, stream, **kwargs)
25 
26 def TileL2ContByteStreamToolConfig(name='TileL2ContByteStreamTool', InitializeForWriting=False, stream=None, **kwargs):
27  from TileByteStream.TileByteStreamConf import TileL2ContByteStreamTool
28  return _createTileContByteStreamToolsConfig(name, TileL2ContByteStreamTool, InitializeForWriting, stream, **kwargs)
29 
30 
31 
32 # ComponentAccumulator version
33 
34 def _createTileContByteStreamToolCfg (flags, name, InitializeForWriting=False, **kwargs):
35 
36  acc = ComponentAccumulator()
37  TileContByteStreamTool = CompFactory.getComp(name)
38  tool = TileContByteStreamTool(name, **kwargs)
39  tool.InitializeForWriting = InitializeForWriting
40  acc.addPublicTool(tool)
41 
42  extraOutputs = []
43  if InitializeForWriting:
44  from TileByteStream.TileHid2RESrcIDConfig import TileHid2RESrcIDCondAlgCfg
45  acc.merge( TileHid2RESrcIDCondAlgCfg(flags, ForHLT=True) )
46 
47  extraOutputs = [('TileHid2RESrcID', 'ConditionStore+TileHid2RESrcIDHLT')]
48 
49  return acc, extraOutputs
50 
51 
53  name="TileDigitsContByteStreamTool",
54  InitializeForWriting=False,
55  **kwargs):
56  return _createTileContByteStreamToolCfg(flags, name, InitializeForWriting, **kwargs)
57 
59  name="TileRawChannelContByteStreamTool",
60  InitializeForWriting=False,
61  **kwargs):
62  return _createTileContByteStreamToolCfg(flags, name, InitializeForWriting, **kwargs)
63 
65  name="TileMuRcvContByteStreamTool",
66  InitializeForWriting=False,
67  **kwargs):
68  return _createTileContByteStreamToolCfg(flags, name, InitializeForWriting, **kwargs)
69 
71  name="TileL2ContByteStreamTool",
72  InitializeForWriting=False,
73  **kwargs):
74  return _createTileContByteStreamToolCfg(flags, name, InitializeForWriting, **kwargs)
75 
77  name="TileLaserObjByteStreamTool",
78  InitializeForWriting=False,
79  **kwargs):
80  return _createTileContByteStreamToolCfg(flags, name, InitializeForWriting, **kwargs)
81 
82 def addTileReadAlg(cfg, name, **kwargs):
83  decoder = CompFactory.TileROD_Decoder(TileBadChanTool="", TileCondToolEmscale="")
84  TileRawDataReadingAlg = CompFactory.TileRawDataReadingAlg
85  cfg.addEventAlgo(TileRawDataReadingAlg(name, TileROD_Decoder=decoder, **kwargs))
86 
87 def TileRawDataReadingCfg(flags, readDigits=True, readRawChannel=True,
88  readMuRcv=None, readMuRcvDigits=False, readMuRcvRawCh=False,
89  readBeamElem=None, readLaserObj=None, readDigitsFlx=False,
90  readL2=False, stateless=False, **kwargs):
91  """
92  Configure reading the Tile BS files
93 
94  Arguments:
95  read[...] -- flag to read the corresponding Tile data from BS.
96  Possible values: None (default), True, False.
97  In the case of None it will be autoconfigured.
98  stateless -- read online Tile data using emon BS service.
99  """
100 
101  isPhysicsRun = flags.Tile.RunType is TileRunType.PHY
102  isLaserRun = flags.Tile.RunType in [TileRunType.LAS, TileRunType.BILAS]
103  isCalibRun = not isPhysicsRun
104 
105  # Set up default data
106  readMuRcv = isPhysicsRun if readMuRcv is None else readMuRcv
107  readBeamElem = isCalibRun if readBeamElem is None else readBeamElem
108  readLaserObj = isLaserRun if readLaserObj is None else readLaserObj
109 
110  typeNames = kwargs.pop('type_names', [])
111 
112  prefix = flags.Overlay.BkgPrefix if flags.Overlay.ByteStream else ''
113 
114  cfg = ComponentAccumulator()
115  from TileConditions.TileCablingSvcConfig import TileCablingSvcCfg
116  cfg.merge(TileCablingSvcCfg(flags))
117 
118  if stateless:
119  from ByteStreamEmonSvc.EmonByteStreamConfig import EmonByteStreamCfg
120  cfg.merge( EmonByteStreamCfg(flags, type_names=typeNames) )
121  else:
122  from ByteStreamCnvSvc.ByteStreamConfig import ByteStreamReadCfg
123  cfg.merge( ByteStreamReadCfg(flags, type_names=typeNames) )
124 
125  from TileByteStream.TileHid2RESrcIDConfig import TileHid2RESrcIDCondAlgCfg
126  cfg.merge( TileHid2RESrcIDCondAlgCfg(flags, ROD2ROBmap=['-1']) )
127 
128  if readDigits:
129  addTileReadAlg(cfg, 'TileDigitsReadAlg', TileDigitsContainer=f'{prefix}TileDigitsCnt')
130  if readRawChannel:
131  addTileReadAlg(cfg, 'TileRawChannelReadAlg', TileRawChannelContainer=f'{prefix}TileRawChannelCnt')
132  if readMuRcv:
133  addTileReadAlg(cfg, 'TileMuRcvReadAlg', TileMuonReceiverContainer='TileMuRcvCnt')
134  if readMuRcvDigits:
135  addTileReadAlg(cfg, 'MuRcvDigitsReadAlg', MuRcvDigitsContainer=f'{prefix}MuRcvDigitsCnt')
136  if readMuRcvRawCh:
137  addTileReadAlg(cfg, 'TileMuRcvRawChReadAlg', MuRcvRawChannelContainer='MuRcvRawChCnt')
138  if readLaserObj:
139  addTileReadAlg(cfg, 'TileLaserObjReadAlg', TileLaserObject='TileLaserObj')
140  if readBeamElem:
141  addTileReadAlg(cfg, 'TileBeamElemReadAlg', TileBeamElemContainer='TileBeamElemCnt')
142  if readDigitsFlx:
143  addTileReadAlg(cfg, 'TileDigitsFlxReadAlg', TileDigitsFlxContainer='TileDigitsFlxCnt')
144  if readL2:
145  addTileReadAlg(cfg, 'TileL2ReadAlg', TileL2Container='TileL2Cnt')
146 
147  return cfg
148 
149 
150 if __name__ == "__main__":
151 
152  from AthenaConfiguration.AllConfigFlags import initConfigFlags
153  from AthenaConfiguration.TestDefaults import defaultGeometryTags, defaultTestFiles
154  from AthenaCommon.Logging import log
155  from AthenaCommon.Constants import INFO
156 
157  # Test setup
158  log.setLevel(INFO)
159 
160  flags = initConfigFlags()
161  flags.Input.Files = defaultTestFiles.RAW_RUN2
162  flags.GeoModel.AtlasVersion = defaultGeometryTags.RUN2
163  flags.Exec.MaxEvents = 3
164  flags.fillFromArgs()
165  flags.lock()
166 
167  # Initialize configuration object, add accumulator, merge, and run.
168  from AthenaConfiguration.MainServicesConfig import MainServicesCfg
169  cfg = MainServicesCfg(flags)
170 
171  cfg.merge( TileRawDataReadingCfg(flags) )
172 
173  cfg.printConfig(withDetails = True, summariseProps = True)
174  cfg.store( open('TileRawChannelReadAlg.pkl','wb') )
175 
176  sc = cfg.run()
177 
178  import sys
179  # Success should be 0
180  sys.exit(not sc.isSuccess())
TileByteStreamConfig.TileLaserObjByteStreamToolCfg
def TileLaserObjByteStreamToolCfg(flags, name="TileLaserObjByteStreamTool", InitializeForWriting=False, **kwargs)
Definition: TileByteStreamConfig.py:76
EmonByteStreamConfig.EmonByteStreamCfg
def EmonByteStreamCfg(flags, type_names=[])
Definition: EmonByteStreamConfig.py:12
python.JetAnalysisCommon.ComponentAccumulator
ComponentAccumulator
Definition: JetAnalysisCommon.py:302
TileByteStreamConfig._createTileContByteStreamToolCfg
def _createTileContByteStreamToolCfg(flags, name, InitializeForWriting=False, **kwargs)
Definition: TileByteStreamConfig.py:34
python.ByteStreamConfig.ByteStreamReadCfg
def ByteStreamReadCfg(flags, type_names=None)
Definition: Event/ByteStreamCnvSvc/python/ByteStreamConfig.py:25
TileHid2RESrcIDCondAlg
Condition algorithm to prepare TileHid2RESrcID conditions object and put it into conditions store.
Definition: TileHid2RESrcIDCondAlg.h:27
TileRawDataReadingAlg
Class for Tile raw data reading from BS.
Definition: TileRawDataReadingAlg.h:30
TileByteStreamConfig.TileDigitsContByteStreamToolCfg
def TileDigitsContByteStreamToolCfg(flags, name="TileDigitsContByteStreamTool", InitializeForWriting=False, **kwargs)
Definition: TileByteStreamConfig.py:52
python.MainServicesConfig.MainServicesCfg
def MainServicesCfg(flags, LoopMgr='AthenaEventLoopMgr')
Definition: MainServicesConfig.py:260
Constants
some useful constants -------------------------------------------------—
TileByteStreamConfig.addTileReadAlg
def addTileReadAlg(cfg, name, **kwargs)
Definition: TileByteStreamConfig.py:82
TileByteStreamConfig.TileL2ContByteStreamToolCfg
def TileL2ContByteStreamToolCfg(flags, name="TileL2ContByteStreamTool", InitializeForWriting=False, **kwargs)
Definition: TileByteStreamConfig.py:70
TileByteStreamConfig.TileRawChannelContByteStreamToolCfg
def TileRawChannelContByteStreamToolCfg(flags, name="TileRawChannelContByteStreamTool", InitializeForWriting=False, **kwargs)
Definition: TileByteStreamConfig.py:58
TileByteStreamConfig.TileRawChannelContByteStreamToolConfig
def TileRawChannelContByteStreamToolConfig(name='TileRawChannelContByteStreamTool', InitializeForWriting=False, stream=None, **kwargs)
Definition: TileByteStreamConfig.py:22
TileHid2RESrcIDConfig.TileHid2RESrcIDCondAlgCfg
def TileHid2RESrcIDCondAlgCfg(flags, source='COOL', **kwargs)
Definition: TileHid2RESrcIDConfig.py:24
Trk::open
@ open
Definition: BinningType.h:40
TileByteStreamConfig._createTileContByteStreamToolsConfig
def _createTileContByteStreamToolsConfig(name, TileContByteStreamTool, InitializeForWriting=False, stream=None, **kwargs)
Definition: TileByteStreamConfig.py:7
python.AllConfigFlags.initConfigFlags
def initConfigFlags()
Definition: AllConfigFlags.py:19
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
TileByteStreamConfig.TileL2ContByteStreamToolConfig
def TileL2ContByteStreamToolConfig(name='TileL2ContByteStreamTool', InitializeForWriting=False, stream=None, **kwargs)
Definition: TileByteStreamConfig.py:26
python.TileCablingSvcConfig.TileCablingSvcCfg
def TileCablingSvcCfg(flags)
Definition: TileCablingSvcConfig.py:11
TileByteStreamConfig.TileMuRcvContByteStreamToolCfg
def TileMuRcvContByteStreamToolCfg(flags, name="TileMuRcvContByteStreamTool", InitializeForWriting=False, **kwargs)
Definition: TileByteStreamConfig.py:64