ATLAS Offline Software
ITkStripConditionsAlgorithmsConfig.py
Go to the documentation of this file.
1 
2 # Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3 from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
4 from AthenaConfiguration.ComponentFactory import CompFactory
5 from IOVDbSvc.IOVDbSvcConfig import addFoldersSplitOnline
6 from StripGeoModelXml.ITkStripGeoModelConfig import ITkStripGeoModelCfg
7 
8 
9 def ITkStripAlignCondAlgCfg(flags, name="ITkStripAlignCondAlg", **kwargs):
10  """Return a configured SCT_AlignCondAlg for ITk"""
11  acc = ITkStripGeoModelCfg(flags)
12  if flags.GeoModel.Align.Dynamic:
13  raise RuntimeError("Dynamic alignment not supported for ITk yet")
14  else:
15  if not flags.ITk.Align.useLocalDatabase:
16  acc.merge(addFoldersSplitOnline(flags, "INDET", "/Indet/Onl/Align", flags.ITk.Geometry.alignmentFolder, className="AlignableTransformContainer"))
17 
18  kwargs.setdefault("DetManagerName", "ITkStrip")
19  kwargs.setdefault("WriteKey", "ITkStripAlignmentStore")
20  kwargs.setdefault("UseDynamicAlignFolders", flags.GeoModel.Align.Dynamic)
21  kwargs.setdefault("ReadKeyStatic",flags.ITk.Geometry.alignmentFolder)
22 
23  sctAlignCondAlg = CompFactory.SCT_AlignCondAlg(name, **kwargs)
24  acc.addCondAlgo(sctAlignCondAlg)
25  return acc
26 
27 
29  return "/ITkStrip/DAQ/Config/" if flags.IOVDb.DatabaseInstance != "COMP200" else "/ITkStrip/DAQ/Configuration/"
30 
31 
32 def ITkStripConfigurationCondAlgCfg(flags, name="ITkStripConfigurationCondAlg", **kwargs):
33  acc = ComponentAccumulator()
34  folder_prefix = getITkStripDAQConfigFolder(flags)
35  channelFolder = folder_prefix + ("Chip" if flags.IOVDb.DatabaseInstance == "COMP200" else "ChipSlim")
36  kwargs.setdefault("ReadKeyChannel", channelFolder)
37  kwargs.setdefault("ReadKeyModule", f"{folder_prefix}Module")
38  kwargs.setdefault("ReadKeyMur", f"{folder_prefix}MUR")
39 
40  acc.merge(addFoldersSplitOnline(flags,
41  detDb="ITkStrip",
42  onlineFolders=channelFolder,
43  offlineFolders=channelFolder,
44  className="CondAttrListVec",
45  splitMC=True))
46  acc.merge(addFoldersSplitOnline(flags,
47  detDb="ITkStrip",
48  onlineFolders=f"{folder_prefix}Module",
49  offlineFolders=f"{folder_prefix}Module",
50  className="CondAttrListVec",
51  splitMC=True))
52  acc.merge(addFoldersSplitOnline(flags,
53  detDb="ITkStrip",
54  onlineFolders=f"{folder_prefix}MUR",
55  offlineFolders=f"{folder_prefix}MUR",
56  className="CondAttrListVec",
57  splitMC=True))
58 
59  from ITkStripCabling.ITkStripCablingConfig import ITkStripCablingToolCfg
60  kwargs.setdefault("SCT_CablingTool", acc.popToolsAndMerge(ITkStripCablingToolCfg(flags)))
61 
62  from SCT_ConditionsTools.ITkStripConditionsToolsConfig import ITkStripReadoutToolCfg
63  kwargs.setdefault("SCT_ReadoutTool", acc.popToolsAndMerge(ITkStripReadoutToolCfg(flags)))
64 
65  acc.addCondAlgo(CompFactory.SCT_ConfigurationCondAlg(name, **kwargs))
66  return acc
67 
68 
69 def ITkStripDetectorElementCondAlgCfg(flags, name="ITkStripDetectorElementCondAlg", **kwargs):
70  kwargs.setdefault("DetManagerName", "ITkStrip")
71  kwargs.setdefault("ReadKey", "ITkStripAlignmentStore")
72  kwargs.setdefault("WriteKey", "ITkStripDetectorElementCollection")
73 
74  acc = ITkStripAlignCondAlgCfg(flags)
75  acc.addCondAlgo(CompFactory.SCT_DetectorElementCondAlg(name, **kwargs))
76  return acc
77 
78 def ITkStripDetectorElementStatusCondAlgNoByteStreamErrorsCfg(flags, name = "ITkStripDetectorElementStatusCondAlgNoByteStreamErrors", **kwargs) :
79  '''
80  Condition alg to precompute the strip detector element status.
81  This algorithm does not consider the byte stream errors which are event data.
82  '''
83  acc = ComponentAccumulator()
84  if 'ConditionsSummaryTool' not in kwargs :
85  from SCT_ConditionsTools.ITkStripConditionsToolsConfig import ITkStripConditionsSummaryToolCfg
86  kwargs.setdefault("ConditionsSummaryTool", acc.popToolsAndMerge( ITkStripConditionsSummaryToolCfg(flags)))
87  kwargs.setdefault( "WriteKey", "ITkStripDetectorElementStatusNoByteStream")
88  acc.addCondAlgo( CompFactory.InDet.SiDetectorElementStatusCondAlg(name, **kwargs) )
89  return acc
90 
91 def ITkStripDetectorElementStatusAlgCfg(flags, name="ITkStripDetectorElementStatusAlg",**kwargs) :
92  '''
93  Algorithm which adds status from the strip bytestream to the strip status conditions data
94  '''
95  acc = ComponentAccumulator()
96  if 'ConditionsSummaryTool' not in kwargs :
97  from SCT_ConditionsTools.ITkStripConditionsToolsConfig import ITkStripDetectorElementStatusAddByteStreamErrorsToolCfg
98  # @TODO ITkStripDetectorElementStatusCondAlgNoByteStreamErrorsCfg should be moved to
99  # ITkStripDetectorElementStatusAddByteStreamErrorsToolCfg, but that would create
100  # circular dependencies..
102  kwargs.setdefault("ConditionsSummaryTool", acc.popToolsAndMerge(
104  SCTDetElStatusCondDataBaseKey = "ITkStripDetectorElementStatusNoByteStream",
105  SCTDetElStatusEventDataBaseKey = ""
106  )))
107  kwargs.setdefault("WriteKey", "ITkStripDetectorElementStatus")
108 
109  # not a conditions algorithm since it combines conditions data and data from the bytestream
110  acc.addEventAlgo( CompFactory.InDet.SiDetectorElementStatusAlg(name, **kwargs) )
111  return acc
ITkStripCablingConfig.ITkStripCablingToolCfg
def ITkStripCablingToolCfg(flags, name="ITkStripCablingTool")
Definition: ITkStripCablingConfig.py:13
python.JetAnalysisCommon.ComponentAccumulator
ComponentAccumulator
Definition: JetAnalysisCommon.py:302
ITkStripGeoModelConfig.ITkStripGeoModelCfg
def ITkStripGeoModelCfg(flags)
Definition: ITkStripGeoModelConfig.py:3
python.ITkStripConditionsAlgorithmsConfig.ITkStripDetectorElementCondAlgCfg
def ITkStripDetectorElementCondAlgCfg(flags, name="ITkStripDetectorElementCondAlg", **kwargs)
Definition: ITkStripConditionsAlgorithmsConfig.py:69
python.ITkStripConditionsToolsConfig.ITkStripReadoutToolCfg
def ITkStripReadoutToolCfg(flags, name="ITkStripReadoutTool", **kwargs)
Definition: ITkStripConditionsToolsConfig.py:190
python.ITkStripConditionsAlgorithmsConfig.ITkStripDetectorElementStatusAlgCfg
def ITkStripDetectorElementStatusAlgCfg(flags, name="ITkStripDetectorElementStatusAlg", **kwargs)
Definition: ITkStripConditionsAlgorithmsConfig.py:91
python.IOVDbSvcConfig.addFoldersSplitOnline
def addFoldersSplitOnline(flags, detDb, onlineFolders, offlineFolders, className=None, extensible=False, addMCString='_OFL', splitMC=False, tag=None, forceDb=None, modifiers='')
Definition: IOVDbSvcConfig.py:167
python.ITkStripConditionsAlgorithmsConfig.getITkStripDAQConfigFolder
def getITkStripDAQConfigFolder(flags)
Definition: ITkStripConditionsAlgorithmsConfig.py:28
python.ITkStripConditionsToolsConfig.ITkStripDetectorElementStatusAddByteStreamErrorsToolCfg
def ITkStripDetectorElementStatusAddByteStreamErrorsToolCfg(flags, name="ITkStripDetectorElementStatusAddByteStreamErrorsTool", **kwargs)
Definition: ITkStripConditionsToolsConfig.py:30
python.ITkStripConditionsToolsConfig.ITkStripConditionsSummaryToolCfg
def ITkStripConditionsSummaryToolCfg(flags, name="ITkStripConditionsSummaryTool", **kwargs)
Definition: ITkStripConditionsToolsConfig.py:17
python.ITkStripConditionsAlgorithmsConfig.ITkStripDetectorElementStatusCondAlgNoByteStreamErrorsCfg
def ITkStripDetectorElementStatusCondAlgNoByteStreamErrorsCfg(flags, name="ITkStripDetectorElementStatusCondAlgNoByteStreamErrors", **kwargs)
Definition: ITkStripConditionsAlgorithmsConfig.py:78
python.ITkStripConditionsAlgorithmsConfig.ITkStripConfigurationCondAlgCfg
def ITkStripConfigurationCondAlgCfg(flags, name="ITkStripConfigurationCondAlg", **kwargs)
Definition: ITkStripConditionsAlgorithmsConfig.py:32
python.ITkStripConditionsAlgorithmsConfig.ITkStripAlignCondAlgCfg
def ITkStripAlignCondAlgCfg(flags, name="ITkStripAlignCondAlg", **kwargs)
Definition: ITkStripConditionsAlgorithmsConfig.py:9