ATLAS Offline Software
Loading...
Searching...
No Matches
TileByteStreamConfig.py
Go to the documentation of this file.
1# Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
2
3from AthenaConfiguration.ComponentFactory import CompFactory
4from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
5from TileConfiguration.TileConfigFlags import TileRunType
6
7def _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
22def TileRawChannelContByteStreamToolConfig(name='TileRawChannelContByteStreamTool', InitializeForWriting=False, stream=None, **kwargs):
23 from TileByteStream.TileByteStreamConf import TileRawChannelContByteStreamTool
24 return _createTileContByteStreamToolsConfig(name, TileRawChannelContByteStreamTool, InitializeForWriting, stream, **kwargs)
25
26def 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
34def _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
82def 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
87def 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
150if __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())
Condition algorithm to prepare TileHid2RESrcID conditions object and put it into conditions store.
Class for Tile raw data reading from BS.
_createTileContByteStreamToolCfg(flags, name, InitializeForWriting=False, **kwargs)
TileLaserObjByteStreamToolCfg(flags, name="TileLaserObjByteStreamTool", InitializeForWriting=False, **kwargs)
addTileReadAlg(cfg, name, **kwargs)
TileL2ContByteStreamToolCfg(flags, name="TileL2ContByteStreamTool", InitializeForWriting=False, **kwargs)
TileRawDataReadingCfg(flags, readDigits=True, readRawChannel=True, readMuRcv=None, readMuRcvDigits=False, readMuRcvRawCh=False, readBeamElem=None, readLaserObj=None, readDigitsFlx=False, readL2=False, stateless=False, **kwargs)
TileRawChannelContByteStreamToolConfig(name='TileRawChannelContByteStreamTool', InitializeForWriting=False, stream=None, **kwargs)
TileDigitsContByteStreamToolCfg(flags, name="TileDigitsContByteStreamTool", InitializeForWriting=False, **kwargs)
TileL2ContByteStreamToolConfig(name='TileL2ContByteStreamTool', InitializeForWriting=False, stream=None, **kwargs)
TileMuRcvContByteStreamToolCfg(flags, name="TileMuRcvContByteStreamTool", InitializeForWriting=False, **kwargs)
_createTileContByteStreamToolsConfig(name, TileContByteStreamTool, InitializeForWriting=False, stream=None, **kwargs)
TileRawChannelContByteStreamToolCfg(flags, name="TileRawChannelContByteStreamTool", InitializeForWriting=False, **kwargs)