ATLAS Offline Software
TileJiveXMLConfig.py
Go to the documentation of this file.
1 #
2 # Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3 #
4 
5 from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
6 from AthenaConfiguration.ComponentFactory import CompFactory
7 from AthenaConfiguration.Enums import Format
8 import os
9 
10 '''
11 @file TileAtlantisConfig.py
12 @brief Python configuration of Atlantis algorithm for Tile for the Run III
13 '''
14 
15 
17  ''' Function to get Tile digits container to be used in Atlantis.'''
18 
19  tileDigitsContainer = "TileDigitsCnt"
20 
21  if flags.Input.Format is Format.POOL:
22  if "TileDigitsCnt" in flags.Input.Collections:
23  tileDigitsContainer = "TileDigitsCnt"
24  elif "TileDigitsFlt" in flags.Input.Collections:
25  tileDigitsContainer = "TileDigitsFlt"
26 
27  return tileDigitsContainer
28 
29 
31  ''' Function to get Tile raw channel container to be used in Atlantis.'''
32 
33  tileRawChannelContainer = ""
34 
35  if flags.Input.Format is Format.BS and flags.Tile.readDigits:
36  if flags.Tile.doOpt2:
37  tileRawChannelContainer = 'TileRawChannelOpt2'
38  elif flags.Tile.doOptATLAS:
39  tileRawChannelContainer = 'TileRawChannelFixed'
40  elif flags.Tile.doFitCOOL:
41  tileRawChannelContainer = 'TileRawChannelFitCool'
42  elif flags.Tile.doFit:
43  tileRawChannelContainer = 'TileRawChannelFit'
44  else:
45  if "TileRawChannelOpt2" in flags.Input.Collections:
46  tileRawChannelContainer = 'TileRawChannelOpt2'
47  elif "TileRawChannelFitCool" in flags.Input.Collections:
48  tileRawChannelContainer = 'TileRawChannelFitCool'
49  elif "TileRawChannelFit" in flags.Input.Collections:
50  tileRawChannelContainer = 'TileRawChannelFit'
51  elif "TileRawChannelCnt" in flags.Input.Collections:
52  tileRawChannelContainer = 'TileRawChannelCnt'
53 
54  return tileRawChannelContainer
55 
56 
57 def TileAlgoJiveXMLCfg(flags, TileDigitsContainer=None, TileRawChannelContainer=None,
58  CaloClusterContainer='TileTopoCluster', **kwargs):
59  """
60  Function to configure AlgoJiveXML algorithm for Tile.
61 
62  Arguments:
63  TileDigitsContainer -- name of Tile digits container (default: None).
64  In the case of None it will be autoconfigured.
65  In the case of empty string it will not be used.
66  TileRawChannelContainer -- name of Tile raw channel container (default: None).
67  In the case of None it will be autoconfigured.
68  In the case of empty string it will not be used.
69  CaloClusterContainer -- name of Calo cluster container (default: TileTopoCluster).
70  In the case of empty string it will not be used.
71  """
72 
73  data_types = [] # These data types need to match the tools added later
74 
75  if TileDigitsContainer is None:
76  digitsContainer = getTileDigitsContainer(flags)
77  else:
78  digitsContainer = TileDigitsContainer
79 
80  if TileRawChannelContainer is None:
81  rawChannelContainer = getTileRawChannelContainer(flags)
82  else:
83  rawChannelContainer = TileRawChannelContainer
84 
85  useDigits = digitsContainer != ""
86  useRawChannels = rawChannelContainer != ""
87  useClusters = CaloClusterContainer != ""
88 
89  from AthenaCommon.Logging import logging
90  msg = logging.getLogger('TileAlgoJiveXMLCfg')
91 
92  if useDigits:
93  msg.info(f'Use TileDigitsContainer [{digitsContainer}]')
94  else:
95  msg.info('TileDigitsContainer is not configured => no use of digits')
96 
97  if useRawChannels:
98  msg.info(f'Use TileRawChannelContainer [{rawChannelContainer}] for detailed information')
99  else:
100  msg.info('TileRawChannelContainer is not configured => no detailed cell information')
101 
102  if useClusters:
103  msg.info(f'Use CaloClusterContainer [{CaloClusterContainer}]')
104  else:
105  msg.info('CaloClusterContainer is not configured => no clusters information')
106 
107  acc = ComponentAccumulator()
108 
109  from TileGeoModel.TileGMConfig import TileGMCfg
110  acc.merge(TileGMCfg(flags))
111 
112  from LArGeoAlgsNV.LArGMConfig import LArGMCfg
113  acc.merge(LArGMCfg(flags))
114 
115  from TileConditions.TileCablingSvcConfig import TileCablingSvcCfg
116  acc.merge( TileCablingSvcCfg(flags) )
117 
118  from TileConditions.TileInfoLoaderConfig import TileInfoLoaderCfg
119  acc.merge( TileInfoLoaderCfg(flags) )
120 
121  from TileConditions.TileBadChannelsConfig import TileBadChannelsCondAlgCfg
122  acc.merge( TileBadChannelsCondAlgCfg(flags) )
123 
124  from TileConditions.TileEMScaleConfig import TileEMScaleCondAlgCfg
125  acc.merge( TileEMScaleCondAlgCfg(flags) )
126 
127  from TileConditions.TileTimingConfig import TileTimingCondAlgCfg
128  acc.merge( TileTimingCondAlgCfg(flags) )
129 
130  if useClusters:
131  from TileMonitoring.TileTopoClusterConfig import TileTopoClusterCfg
132  acc.merge( TileTopoClusterCfg(flags) )
133 
134  data_types += ["JiveXML::CaloTileRetriever/CaloTileRetriever"]
135  acc.addPublicTool(
136  CompFactory.JiveXML.CaloTileRetriever(
137  name="CaloTileRetriever",
138  TileDigitsContainer=digitsContainer,
139  TileRawChannelContainer=rawChannelContainer,
140  DoTileCellDetails=useRawChannels,
141  DoTileDigit=useDigits,
142  DoBadTile=False,
143  CellThreshold=50.0
144  )
145  )
146 
147  data_types += ["JiveXML::CaloMBTSRetriever/CaloMBTSRetriever"]
148  acc.addPublicTool(
149  CompFactory.JiveXML.CaloMBTSRetriever(
150  name="CaloMBTSRetriever",
151  TileDigitsContainer=digitsContainer,
152  TileRawChannelContainer=rawChannelContainer,
153  DoMBTSDigits=useDigits,
154  DoMBTSCellDetails=useRawChannels,
155  MBTSThreshold=0.05
156  )
157  )
158 
159  if useClusters:
160  data_types += ["JiveXML::CaloClusterRetriever/CaloClusterRetriever"]
161  acc.addPublicTool(
162  CompFactory.JiveXML.CaloClusterRetriever(
163  name="CaloClusterRetriever",
164  FavouriteClusterCollection="TileTopoCluster",
165  OtherClusterCollections=["TileTopoCluster"]
166  )
167  )
168 
169  kwargs.setdefault("AtlasRelease", os.environ.get("AtlasVersion", "Unknown"))
170  kwargs.setdefault("WriteToFile", True)
171  kwargs.setdefault("OnlineMode", False)
172  kwargs.setdefault("StreamToServerTool", None)
173 
174  kwargs.setdefault("WriteGeometry", False)
175  kwargs.setdefault("DataTypes", data_types)
176 
177  AlgoJiveXML = CompFactory.JiveXML.AlgoJiveXML
178  acc.addEventAlgo(AlgoJiveXML(name="AlgoJiveXML", **kwargs), primary=True)
179 
180  return acc
181 
182 
183 if __name__ == '__main__':
184 
185  # Setup logs
186  from AthenaCommon.Logging import log
187  from AthenaCommon.Constants import INFO
188  log.setLevel(INFO)
189 
190  # Set the Athena configuration flags
191  from AthenaConfiguration.AllConfigFlags import initConfigFlags
192  from AthenaConfiguration.TestDefaults import defaultTestFiles
193  flags = initConfigFlags()
194  flags.Input.Files = defaultTestFiles.ESD
195  flags.Exec.MaxEvents = 3
196  flags.fillFromArgs()
197  flags.lock()
198 
199  # Initialize configuration object, add accumulator, merge, and run.
200  from AthenaConfiguration.MainServicesConfig import MainServicesCfg
201  from AthenaPoolCnvSvc.PoolReadConfig import PoolReadCfg
202  cfg = MainServicesCfg(flags)
203  cfg.merge(PoolReadCfg(flags))
204 
205  cfg.merge( TileAlgoJiveXMLCfg(flags) )
206 
207  cfg.printConfig(withDetails=True, summariseProps=True)
208  flags.dump()
209 
210  sc = cfg.run()
211 
212  import sys
213  # Success should be 0
214  sys.exit(not sc.isSuccess())
TileJiveXMLConfig.getTileRawChannelContainer
def getTileRawChannelContainer(flags)
Definition: TileJiveXMLConfig.py:30
python.JetAnalysisCommon.ComponentAccumulator
ComponentAccumulator
Definition: JetAnalysisCommon.py:302
TileJiveXMLConfig.TileAlgoJiveXMLCfg
def TileAlgoJiveXMLCfg(flags, TileDigitsContainer=None, TileRawChannelContainer=None, CaloClusterContainer='TileTopoCluster', **kwargs)
Definition: TileJiveXMLConfig.py:57
python.TileTimingConfig.TileTimingCondAlgCfg
def TileTimingCondAlgCfg(flags, **kwargs)
Definition: TileTimingConfig.py:9
python.TileInfoLoaderConfig.TileInfoLoaderCfg
def TileInfoLoaderCfg(flags, **kwargs)
Definition: TileInfoLoaderConfig.py:12
python.TileBadChannelsConfig.TileBadChannelsCondAlgCfg
def TileBadChannelsCondAlgCfg(flags, **kwargs)
Definition: TileBadChannelsConfig.py:10
python.MainServicesConfig.MainServicesCfg
def MainServicesCfg(flags, LoopMgr='AthenaEventLoopMgr')
Definition: MainServicesConfig.py:256
TileJiveXMLConfig.getTileDigitsContainer
def getTileDigitsContainer(flags)
Definition: TileJiveXMLConfig.py:16
Constants
some useful constants -------------------------------------------------—
TileTopoClusterConfig.TileTopoClusterCfg
def TileTopoClusterCfg(flags, **kwargs)
Definition: TileTopoClusterConfig.py:11
LArGMConfig.LArGMCfg
def LArGMCfg(flags)
Definition: LArGMConfig.py:8
python.TileEMScaleConfig.TileEMScaleCondAlgCfg
def TileEMScaleCondAlgCfg(flags, **kwargs)
Definition: TileEMScaleConfig.py:10
python.AllConfigFlags.initConfigFlags
def initConfigFlags()
Definition: AllConfigFlags.py:19
python.PoolReadConfig.PoolReadCfg
def PoolReadCfg(flags)
Definition: PoolReadConfig.py:69
python.TileCablingSvcConfig.TileCablingSvcCfg
def TileCablingSvcCfg(flags)
Definition: TileCablingSvcConfig.py:11
TileGMConfig.TileGMCfg
def TileGMCfg(flags)
Definition: TileGMConfig.py:7