ATLAS Offline Software
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 
5 from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
6 from AthenaConfiguration.ComponentFactory import CompFactory
7 from AthenaConfiguration.Enums import Format
8 from TileConfiguration.TileConfigFlags import TileRunType
9 
10 def 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 
31 def 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 
94 if __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 
python.JetAnalysisCommon.ComponentAccumulator
ComponentAccumulator
Definition: JetAnalysisCommon.py:302
TileDQstatusConfig.TileDQstatusToolCfg
def TileDQstatusToolCfg(flags, **kwargs)
Definition: TileDQstatusConfig.py:10
TileDQstatusTool
Definition: TileDQstatusTool.h:30
TileDQstatusAlg
Produce a TileDQstatus object.
Definition: TileDQstatusAlg.h:41
TileDQstatusConfig.TileDQstatusAlgCfg
def TileDQstatusAlgCfg(flags, **kwargs)
Definition: TileDQstatusConfig.py:31
SGInputLoaderConfig.SGInputLoaderCfg
def SGInputLoaderCfg(flags, Load=None, **kwargs)
Definition: SGInputLoaderConfig.py:7
python.TileBadChannelsConfig.TileBadChannelsCondAlgCfg
def TileBadChannelsCondAlgCfg(flags, **kwargs)
Definition: TileBadChannelsConfig.py:10
python.MainServicesConfig.MainServicesCfg
def MainServicesCfg(flags, LoopMgr='AthenaEventLoopMgr')
Definition: MainServicesConfig.py:312
Constants
some useful constants -------------------------------------------------—
Trk::open
@ open
Definition: BinningType.h:40
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