ATLAS Offline Software
Loading...
Searching...
No Matches
TileDQstatusConfig.py
Go to the documentation of this file.
1# Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
2
3"""Define method to construct configured Tile DQ status tool and algorithm"""
4
5from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
6from AthenaConfiguration.ComponentFactory import CompFactory
7from AthenaConfiguration.Enums import Format
8from TileConfiguration.TileConfigFlags import TileRunType
9
10def TileDQstatusToolCfg(flags, **kwargs):
11 """Return component accumulator with configured private Tile DQ status tool
12
13 Arguments:
14 flags -- Athena configuration flags
15 SimulateTrips - flag to simulate drawer trips. Defaults to False.
16 """
17
18 acc = ComponentAccumulator()
19
20 kwargs.setdefault('SimulateTrips', False)
21
22 from TileConditions.TileBadChannelsConfig import TileBadChannelsCondAlgCfg
23 acc.merge( TileBadChannelsCondAlgCfg(flags) )
24
25 TileDQstatusTool=CompFactory.TileDQstatusTool
26 acc.setPrivateTools( TileDQstatusTool(**kwargs) )
27
28 return acc
29
30
31def TileDQstatusAlgCfg(flags, **kwargs):
32 """Return component accumulator with configured Tile DQ status algorithm
33
34 Arguments:
35 flags -- Athena configuration flags
36 TileDQstatus - name of Tile DQ status produced
37 TileDigitsContainer - name of Tile digits container, provided it will be used,
38 otherwise it will be determined automatically depending on flags.
39 TileRawChannelContainer - name of Tile raw channel container, provided it will be used,
40 otherwise it will be determined automatically depending on flags.
41 TileBeamElemContainer - name of Tile beam elements container, provided it will be used,
42 otherwise it will be determined automatically depending on flags.
43 """
44
45
46 acc = ComponentAccumulator()
47 kwargs.setdefault('TileDQstatus', 'TileDQstatus')
48
49 name = kwargs['TileDQstatus'] + 'Alg'
50 kwargs.setdefault('name', name)
51
52 if not (flags.Input.isMC or flags.Overlay.DataOverlay or flags.Input.Format is Format.POOL):
53 if flags.Tile.RunType in [TileRunType.PHY, TileRunType.GAPLAS, TileRunType.GAPCIS]:
54 beamElemContainer = ""
55 else:
56 beamElemContainer = 'TileBeamElemCnt'
57
58 if flags.Tile.readDigits:
59 digitsContainer = 'TileDigitsCnt'
60 else:
61 digitsContainer = ""
62
63 rawChannelContainer = 'TileRawChannelCnt'
64
65 elif flags.Common.isOverlay and flags.Overlay.DataOverlay:
66 beamElemContainer = ''
67 digitsContainer = flags.Overlay.BkgPrefix + 'TileDigitsCnt'
68 rawChannelContainer = flags.Overlay.BkgPrefix + 'TileRawChannelCnt'
69
70 if not flags.Overlay.ByteStream:
71 from SGComps.SGInputLoaderConfig import SGInputLoaderCfg
72 acc.merge(SGInputLoaderCfg(flags, [f'TileDigitsContainer#{digitsContainer}']))
73 acc.merge(SGInputLoaderCfg(flags, [f'TileRawChannelContainer#{rawChannelContainer}']))
74 else:
75 beamElemContainer = ""
76 digitsContainer = ""
77 rawChannelContainer = ""
78
79 kwargs.setdefault('TileBeamElemContainer', beamElemContainer)
80 kwargs.setdefault('TileDigitsContainer', digitsContainer)
81 kwargs.setdefault('TileRawChannelContainer', rawChannelContainer)
82
83 if 'TileDQstatusTool' not in kwargs:
84 tileDQstatusTool = acc.popToolsAndMerge( TileDQstatusToolCfg(flags) )
85 kwargs['TileDQstatusTool'] = tileDQstatusTool
86
87 TileDQstatusAlg=CompFactory.TileDQstatusAlg
88 acc.addEventAlgo(TileDQstatusAlg(**kwargs), primary = True)
89
90 return acc
91
92
93
94if __name__ == "__main__":
95
96 from AthenaConfiguration.AllConfigFlags import initConfigFlags
97 from AthenaConfiguration.TestDefaults import defaultConditionsTags, defaultGeometryTags, defaultTestFiles
98 from AthenaCommon.Logging import log
99 from AthenaCommon.Constants import DEBUG
100
101 # Test setup
102 log.setLevel(DEBUG)
103
104 flags = initConfigFlags()
105 flags.Input.Files = defaultTestFiles.RAW_RUN2
106 flags.GeoModel.AtlasVersion = defaultGeometryTags.RUN2
107 flags.IOVDb.GlobalTag = defaultConditionsTags.RUN2_DATA
108 flags.Tile.RunType = TileRunType.PHY
109 flags.lock()
110
111 from AthenaConfiguration.MainServicesConfig import MainServicesCfg
112 acc = MainServicesCfg(flags)
113
114 from TileByteStream.TileByteStreamConfig import TileRawDataReadingCfg
115 acc.merge( TileRawDataReadingCfg(flags) )
116
117 acc.merge( TileDQstatusAlgCfg(flags) )
118
119 flags.dump()
120 acc.printConfig(withDetails = True, summariseProps = True)
121 acc.store( open('TileDQstatus.pkl','wb') )
122
123 sc = acc.run(maxEvents = 3)
124
125 import sys
126 # Success should be 0
127 sys.exit(not sc.isSuccess())
128
Produce a TileDQstatus object.
TileDQstatusAlgCfg(flags, **kwargs)
TileDQstatusToolCfg(flags, **kwargs)