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  else:
71  beamElemContainer = ""
72  digitsContainer = ""
73  rawChannelContainer = ""
74 
75  kwargs.setdefault('TileBeamElemContainer', beamElemContainer)
76  kwargs.setdefault('TileDigitsContainer', digitsContainer)
77  kwargs.setdefault('TileRawChannelContainer', rawChannelContainer)
78 
79  if 'TileDQstatusTool' not in kwargs:
80  tileDQstatusTool = acc.popToolsAndMerge( TileDQstatusToolCfg(flags) )
81  kwargs['TileDQstatusTool'] = tileDQstatusTool
82 
83  TileDQstatusAlg=CompFactory.TileDQstatusAlg
84  acc.addEventAlgo(TileDQstatusAlg(**kwargs), primary = True)
85 
86  return acc
87 
88 
89 
90 if __name__ == "__main__":
91 
92  from AthenaConfiguration.AllConfigFlags import initConfigFlags
93  from AthenaConfiguration.TestDefaults import defaultConditionsTags, defaultGeometryTags, defaultTestFiles
94  from AthenaCommon.Logging import log
95  from AthenaCommon.Constants import DEBUG
96 
97  # Test setup
98  log.setLevel(DEBUG)
99 
100  flags = initConfigFlags()
101  flags.Input.Files = defaultTestFiles.RAW_RUN2
102  flags.GeoModel.AtlasVersion = defaultGeometryTags.RUN2
103  flags.IOVDb.GlobalTag = defaultConditionsTags.RUN2_DATA
104  flags.Tile.RunType = TileRunType.PHY
105  flags.lock()
106 
107  from AthenaConfiguration.MainServicesConfig import MainServicesCfg
108  acc = MainServicesCfg(flags)
109 
110  from TileByteStream.TileByteStreamConfig import TileRawDataReadingCfg
111  acc.merge( TileRawDataReadingCfg(flags) )
112 
113  acc.merge( TileDQstatusAlgCfg(flags) )
114 
115  flags.dump()
116  acc.printConfig(withDetails = True, summariseProps = True)
117  acc.store( open('TileDQstatus.pkl','wb') )
118 
119  sc = acc.run(maxEvents = 3)
120 
121  import sys
122  # Success should be 0
123  sys.exit(not sc.isSuccess())
124 
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
python.TileBadChannelsConfig.TileBadChannelsCondAlgCfg
def TileBadChannelsCondAlgCfg(flags, **kwargs)
Definition: TileBadChannelsConfig.py:10
python.MainServicesConfig.MainServicesCfg
def MainServicesCfg(flags, LoopMgr='AthenaEventLoopMgr')
Definition: MainServicesConfig.py:256
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