ATLAS Offline Software
Loading...
Searching...
No Matches
ITkStripConditionsToolsConfig.py
Go to the documentation of this file.
1# Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
2from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
3from AthenaConfiguration.ComponentFactory import CompFactory
4from AthenaConfiguration.Enums import Format
5from AtlasGeoModel.GeoModelConfig import GeoModelCfg
6from IOVDbSvc.IOVDbSvcConfig import addFolders, addFoldersSplitOnline
7from StripGeoModelXml.ITkStripGeoModelConfig import ITkStripReadoutGeometryCfg
8
9
10def ITkStripByteStreamErrorsToolCfg(flags, name="ITkStripByteStreamErrorsTool", **kwargs):
12 kwargs.setdefault("ConfigTool", acc.popPrivateTools())
13 acc.setPrivateTools(CompFactory.SCT_ByteStreamErrorsTool(name, **kwargs))
14 return acc
15
16
17def ITkStripConditionsSummaryToolCfg(flags, name="ITkStripConditionsSummaryTool", **kwargs):
18 acc = ComponentAccumulator()
19
20 ConditionsTools = []
21 if flags.ITk.doStripModuleVeto:
22 ConditionsTools += [ acc.popToolsAndMerge(ITkStripModuleVetoCfg(flags)) ]
23
24 kwargs.setdefault("ConditionsTools", ConditionsTools)
25 kwargs.setdefault("SCTDetEleCollKey", "ITkStripDetectorElementCollection")
26 acc.setPrivateTools(CompFactory.SCT_ConditionsSummaryTool(name, **kwargs))
27 return acc
28
29
30def ITkStripDetectorElementStatusAddByteStreamErrorsToolCfg(flags, name="ITkStripDetectorElementStatusAddByteStreamErrorsTool", **kwargs):
31 acc = ComponentAccumulator()
32 if not flags.Input.isMC and flags.Input.Format is Format.BS :
33 if "ConditionsTools" not in kwargs :
34 kwargs.setdefault("ConditionsTools", [ acc.popToolsAndMerge(ITkStripByteStreamErrorsToolCfg(flags)) ])
35
36 kwargs.setdefault("SCTDetEleCollKey", "ITkStripDetectorElementCollection")
37 acc.setPrivateTools(CompFactory.SCT_ConditionsSummaryTool(name, **kwargs))
38 return acc
39
40
41def ITkStripConfigurationConditionsToolCfg(flags, name="ITkStripConfigurationConditionsTool", **kwargs):
42 # Load conditions configuration service and load folders and algorithm for it
43 # Load folders that have to exist for both MC and Data
44 from SCT_ConditionsAlgorithms.ITkStripConditionsAlgorithmsConfig import getITkStripDAQConfigFolder, ITkStripConfigurationCondAlgCfg
45 folder_path = getITkStripDAQConfigFolder(flags)
46
47 cond_kwargs = {}
48 cond_kwargs["ChannelFolder"] = folder_path + ("Chip" if flags.IOVDb.DatabaseInstance == "COMP200" else "ChipSlim")
49 cond_kwargs["ModuleFolder"] = f"{folder_path}Module"
50 cond_kwargs["MurFolder"] = f"{folder_path}MUR"
51 cond_kwargs["dbInstance"] = "ITkStrip"
52 cond_kwargs["SCT_ConfigurationCondAlgName"] = "ITkStripConfigurationCondAlg"
53
54 acc = ITkStripReadoutGeometryCfg(flags)
55
56 if "ChannelFolderDB" not in cond_kwargs:
57 acc.merge(addFoldersSplitOnline(flags,
58 detDb=cond_kwargs["dbInstance"],
59 onlineFolders=cond_kwargs["ChannelFolder"],
60 offlineFolders=cond_kwargs["ChannelFolder"],
61 className="CondAttrListVec",
62 splitMC=True))
63 else:
64 acc.merge(addFolders(flags, [cond_kwargs["ChannelFolderDB"]], detDb=cond_kwargs["dbInstance"], className="CondAttrListVec"))
65 if "ModuleFolderDB" not in cond_kwargs:
66 acc.merge(addFoldersSplitOnline(flags,
67 detDb=cond_kwargs["dbInstance"],
68 onlineFolders=cond_kwargs["ModuleFolder"],
69 offlineFolders=cond_kwargs["ModuleFolder"],
70 className="CondAttrListVec",
71 splitMC=True))
72 else:
73 acc.merge(addFolders(flags, [cond_kwargs["ModuleFolderDB"]], detDb=cond_kwargs["dbInstance"], className="CondAttrListVec"))
74 if "MurFolderDB" not in cond_kwargs:
75 acc.merge(addFoldersSplitOnline(flags,
76 detDb=cond_kwargs["dbInstance"],
77 onlineFolders=cond_kwargs["MurFolder"],
78 offlineFolders=cond_kwargs["MurFolder"],
79 className="CondAttrListVec",
80 splitMC=True))
81 else:
82 acc.merge(addFolders(flags, [cond_kwargs["MurFolderDB"]], detDb=cond_kwargs["dbInstance"], className="CondAttrListVec"))
83
84 ConfigCondAlg_kwargs = {}
85 ConfigCondAlg_kwargs["ReadKeyChannel"] = cond_kwargs["ChannelFolder"]
86 ConfigCondAlg_kwargs["ReadKeyModule"] = cond_kwargs["ModuleFolder"]
87 ConfigCondAlg_kwargs["ReadKeyMur"] = cond_kwargs["MurFolder"]
88 acc.merge(ITkStripConfigurationCondAlgCfg(flags, name="ITkStripConfigurationCondAlg", **ConfigCondAlg_kwargs))
89
90 acc.setPrivateTools(CompFactory.SCT_ConfigurationConditionsTool(name, **kwargs))
91 return acc
92
93
94def ITkStripDCSConditionsCfg(flags, name="ITkStripDCSConditions", **kwargs):
95 """Return a ComponentAccumulator configured for ITk Strip DCS Conditions"""
96 from SCT_ConditionsTools.SCT_ConditionsToolsConfig import SCT_DCSConditionsCfg
97 return SCT_DCSConditionsCfg(flags, name, ReturnHVTemp=False, #do not use DCS conditions until they're ready for ITk
98 **kwargs)
99
100
101
102def ITkStripFlaggedConditionToolCfg(flags, name="ITkStripFlaggedConditionTool", **kwargs):
103 acc = ITkStripReadoutGeometryCfg(flags)
104 acc.setPrivateTools(CompFactory.SCT_FlaggedConditionTool(name, **kwargs))
105 return acc
106
107
108def ITkStripModuleVetoCfg(flags, name="ITkStripModuleVeto", **kwargs):
109 """Return a ComponentAccumulator configured for ITkStripModuleVetoTool
110 """
111 # For SCT_ID used in SCT_ModuleVetoTool
112 acc = GeoModelCfg(flags)
113
114
115 kwargs.setdefault("useDB", False)
116 kwargs.setdefault("BadModuleIdentifiers", [])
117
118 if kwargs["useDB"]:
119 kwargs.setdefault("BadModuleIdentifiers", ["database"])
120 # Condition folder
121 acc.merge(addFolders(flags,
122 folderStrings="/ITk/Manual/BadModules",
123 detDb="OFLP200",
124 className="AthenaAttributeList",
125 tag=kwargs["folderTag"]))
126 # Condition algorithm
127 acc.addCondAlgo(CompFactory.SCT_ModuleVetoCondAlg())
128
129 # Condition tool
130 toolArgs = {}
131 toolArgs["JsonPath"] = flags.ITk.JsonPathStripModuleVeto
132 toolArgs["BadModuleIdentifiers"] = kwargs["BadModuleIdentifiers"]
133 acc.setPrivateTools(CompFactory.SCT_ModuleVetoTool(name=f"{name}Tool", **toolArgs))
134
135 return acc
136
137
138def ITkStripMonitorConditionsToolCfg(flags, name="ITkStripMonitorConditionsTool", cond_kwargs={}, **kwargs):
139 cond_kwargs.setdefault("Folder", "/ITkStrip/Derived/Monitoring")
140 cond_kwargs.setdefault("dbInstance", "ITkStrip_OFL")
141 cond_kwargs.setdefault("MonitorCondAlgName", "ITkStripMonitorCondAlg")
142
143 kwargs.setdefault("CondKey", "ITkStripMonitorCondData")
144
145 acc = ITkStripReadoutGeometryCfg(flags)
146
147 if "FolderDb" not in cond_kwargs:
148 cond_kwargs["FolderDb"] = cond_kwargs["Folder"]
149 acc.merge(addFolders(flags, cond_kwargs["FolderDb"], cond_kwargs["dbInstance"], className="CondAttrListCollection"))
150
151 acc.addCondAlgo(CompFactory.SCT_MonitorCondAlg(name=cond_kwargs["MonitorCondAlgName"],
152 ReadKey=cond_kwargs["Folder"],
153 WriteKey=kwargs["CondKey"]))
154
155 acc.setPrivateTools(CompFactory.SCT_MonitorConditionsTool(name, **kwargs))
156 return acc
157
158
159def ITkStripReadCalibDataToolCfg(flags, name="ITkStripReadCalibDataTool", cond_kwargs={}, **kwargs):
160 acc = ITkStripReadoutGeometryCfg(flags)
161
162 cond_kwargs.setdefault("NoiseFolder","/ITkStrip/DAQ/Calibration/NoiseOccupancyDefects")
163 cond_kwargs.setdefault("GainFolder","/ITkStrip/DAQ/Calibration/NPtGainDefects")
164 cond_kwargs.setdefault("ReadCalibDataCondAlgName","ITkStripReadCalibDataCondAlg")
165
166 acc.merge(addFoldersSplitOnline(flags,
167 detDb="ITkStrip",
168 onlineFolders=cond_kwargs["NoiseFolder"],
169 offlineFolders=cond_kwargs["NoiseFolder"],
170 className="CondAttrListCollection",
171 splitMC=True))
172 acc.merge(addFoldersSplitOnline(flags,
173 detDb="ITkStrip",
174 onlineFolders=cond_kwargs["GainFolder"],
175 offlineFolders=cond_kwargs["GainFolder"],
176 className="CondAttrListCollection",
177 splitMC=True))
178
179 acc.addCondAlgo(CompFactory.SCT_ReadCalibDataCondAlg(name=cond_kwargs["ReadCalibDataCondAlgName"],
180 ReadKeyGain=cond_kwargs["GainFolder"],
181 ReadKeyNoise=cond_kwargs["NoiseFolder"]))
182
183 from ITkStripCabling.ITkStripCablingConfig import ITkStripCablingToolCfg
184 kwargs.setdefault("SCT_CablingTool", acc.popToolsAndMerge(ITkStripCablingToolCfg(flags)))
185
186 acc.setPrivateTools(CompFactory.SCT_ReadCalibDataTool(name, **kwargs))
187 return acc
188
189
190def ITkStripReadoutToolCfg(flags, name="ITkStripReadoutTool", **kwargs):
191 from ITkStripCabling.ITkStripCablingConfig import ITkStripCablingToolCfg
192 acc = ITkStripCablingToolCfg(flags)
193 kwargs.setdefault("SCT_CablingTool", acc.popPrivateTools())
194 acc.setPrivateTools(CompFactory.SCT_ReadoutTool(name, **kwargs))
195 return acc
196
197
198def ITkStripSiliconConditionsCfg(flags, name="ITkStripSilicon", **kwargs):
199 """Return a ComponentAccumulator configured for ITk Strip SiliconConditions"""
200 acc = ComponentAccumulator()
201
202 kwargs["DCSConditionsTool"] = acc.popToolsAndMerge(ITkStripDCSConditionsCfg(flags))
203
204 from SCT_ConditionsTools.SCT_ConditionsToolsConfig import SCT_SiliconConditionsCfg
205 acc.setPrivateTools(acc.popToolsAndMerge(SCT_SiliconConditionsCfg(flags, name, useDCS = False, **kwargs)))
206 return acc
207
208
209def ITkStripTdaqEnabledToolCfg(flags, name="ITkStripTdaqEnabledTool", **kwargs):
210 # For SCT_ID used in SCT_TdaqEnabledTool
211 acc = GeoModelCfg(flags)
212
213 # Folder
214 # FIXME - is there a better way to do this?
215 folder = "/TDAQ/Resources/ATLAS/ITkStrip/Robins" if flags.IOVDb.DatabaseInstance == "CONDBR2" else "/TDAQ/EnabledResources/ATLAS/ITkStrip/Robins"
216 acc.merge(addFolders(flags, [folder], detDb="TDAQ", className="CondAttrListCollection"))
217
218 # Algorithm
219 from ITkStripCabling.ITkStripCablingConfig import ITkStripCablingToolCfg
220 kwargs.setdefault("SCT_CablingTool", acc.popToolsAndMerge(ITkStripCablingToolCfg(flags)))
221 acc.addCondAlgo(CompFactory.SCT_TdaqEnabledCondAlg(**kwargs))
222
223 # Tool
224 acc.setPrivateTools(CompFactory.SCT_TdaqEnabledTool(name))
225 return acc
ITkStripFlaggedConditionToolCfg(flags, name="ITkStripFlaggedConditionTool", **kwargs)
ITkStripTdaqEnabledToolCfg(flags, name="ITkStripTdaqEnabledTool", **kwargs)
ITkStripDCSConditionsCfg(flags, name="ITkStripDCSConditions", **kwargs)
ITkStripReadoutToolCfg(flags, name="ITkStripReadoutTool", **kwargs)
ITkStripConfigurationConditionsToolCfg(flags, name="ITkStripConfigurationConditionsTool", **kwargs)
ITkStripByteStreamErrorsToolCfg(flags, name="ITkStripByteStreamErrorsTool", **kwargs)
ITkStripDetectorElementStatusAddByteStreamErrorsToolCfg(flags, name="ITkStripDetectorElementStatusAddByteStreamErrorsTool", **kwargs)
ITkStripConditionsSummaryToolCfg(flags, name="ITkStripConditionsSummaryTool", **kwargs)
ITkStripReadCalibDataToolCfg(flags, name="ITkStripReadCalibDataTool", cond_kwargs={}, **kwargs)
ITkStripSiliconConditionsCfg(flags, name="ITkStripSilicon", **kwargs)
ITkStripModuleVetoCfg(flags, name="ITkStripModuleVeto", **kwargs)
ITkStripMonitorConditionsToolCfg(flags, name="ITkStripMonitorConditionsTool", cond_kwargs={}, **kwargs)