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 ITkStripConfigurationCondAlgCfg
45
46 #For the SCT, folders are added for the following items and passed to the tools as below. None of these folders exist for ITkStrip
47 #Once equivalent folders exist, these should be added here
48
49 #cond_kwargs = {}
50 #folder_path = getITkStripDAQConfigFolder(flags)
51 #cond_kwargs["ChannelFolder"] = f"{folder_path}Chip"
52 #cond_kwargs["ModuleFolder"] = f"{folder_path}Module"
53 #cond_kwargs["MurFolder"] = f"{folder_path}MUR"
54 #cond_kwargs["dbInstance"] = "ITkStrip"
55
56 acc = ITkStripReadoutGeometryCfg(flags)
57
58 #if "ChannelFolderDB" not in cond_kwargs:
59 # acc.merge(addFoldersSplitOnline(flags,
60 # detDb=cond_kwargs["dbInstance"],
61 # onlineFolders=cond_kwargs["ChannelFolder"],
62 # offlineFolders=cond_kwargs["ChannelFolder"],
63 # className="CondAttrListVec",
64 # splitMC=True))
65 #else:
66 # acc.merge(addFolders(flags, [cond_kwargs["ChannelFolderDB"]], detDb=cond_kwargs["dbInstance"], className="CondAttrListVec"))
67
68 ConfigCondAlg_kwargs = {}
69 #ConfigCondAlg_kwargs["ReadKeyChannel"] = cond_kwargs["ChannelFolder"]
70 #ConfigCondAlg_kwargs["ReadKeyModule"] = cond_kwargs["ModuleFolder"]
71 #ConfigCondAlg_kwargs["ReadKeyMur"] = cond_kwargs["MurFolder"]
72 acc.merge(ITkStripConfigurationCondAlgCfg(flags, name="ITkStripConfigurationCondAlg", **ConfigCondAlg_kwargs))
73
74 acc.setPrivateTools(CompFactory.SCT_ConfigurationConditionsTool(name, **kwargs))
75 return acc
76
77
78def ITkStripDCSConditionsCfg(flags, name="ITkStripDCSConditions", **kwargs):
79 """Return a ComponentAccumulator configured for ITk Strip DCS Conditions"""
80 from SCT_ConditionsTools.SCT_ConditionsToolsConfig import SCT_DCSConditionsCfg
81 return SCT_DCSConditionsCfg(flags, name, ReturnHVTemp=False, #do not use DCS conditions until they're ready for ITk
82 **kwargs)
83
84
85
86def ITkStripFlaggedConditionToolCfg(flags, name="ITkStripFlaggedConditionTool", **kwargs):
87 acc = ITkStripReadoutGeometryCfg(flags)
88 acc.setPrivateTools(CompFactory.SCT_FlaggedConditionTool(name, **kwargs))
89 return acc
90
91
92def ITkStripModuleVetoCfg(flags, name="ITkStripModuleVeto", **kwargs):
93 """Return a ComponentAccumulator configured for ITkStripModuleVetoTool
94 """
95 # For SCT_ID used in SCT_ModuleVetoTool
96 acc = GeoModelCfg(flags)
97
98
99 kwargs.setdefault("useDB", False)
100 kwargs.setdefault("BadModuleIdentifiers", [])
101
102 if kwargs["useDB"]:
103 kwargs.setdefault("BadModuleIdentifiers", ["database"])
104 # Condition folder
105 acc.merge(addFolders(flags,
106 folderStrings="/ITk/Manual/BadModules",
107 detDb="OFLP200",
108 className="AthenaAttributeList",
109 tag=kwargs["folderTag"]))
110 # Condition algorithm
111 acc.addCondAlgo(CompFactory.SCT_ModuleVetoCondAlg())
112
113 # Condition tool
114 toolArgs = {}
115 toolArgs["JsonPath"] = flags.ITk.JsonPathStripModuleVeto
116 toolArgs["BadModuleIdentifiers"] = kwargs["BadModuleIdentifiers"]
117 acc.setPrivateTools(CompFactory.SCT_ModuleVetoTool(name=f"{name}Tool", **toolArgs))
118
119 return acc
120
121
122def ITkStripMonitorConditionsToolCfg(flags, name="ITkStripMonitorConditionsTool", cond_kwargs={}, **kwargs):
123 cond_kwargs.setdefault("Folder", "/ITkStrip/Derived/Monitoring")
124 cond_kwargs.setdefault("dbInstance", "ITkStrip_OFL")
125 cond_kwargs.setdefault("MonitorCondAlgName", "ITkStripMonitorCondAlg")
126
127 kwargs.setdefault("CondKey", "ITkStripMonitorCondData")
128
129 acc = ITkStripReadoutGeometryCfg(flags)
130
131 if "FolderDb" not in cond_kwargs:
132 cond_kwargs["FolderDb"] = cond_kwargs["Folder"]
133 acc.merge(addFolders(flags, cond_kwargs["FolderDb"], cond_kwargs["dbInstance"], className="CondAttrListCollection"))
134
135 acc.addCondAlgo(CompFactory.SCT_MonitorCondAlg(name=cond_kwargs["MonitorCondAlgName"],
136 ReadKey=cond_kwargs["Folder"],
137 WriteKey=kwargs["CondKey"]))
138
139 acc.setPrivateTools(CompFactory.SCT_MonitorConditionsTool(name, **kwargs))
140 return acc
141
142
143def ITkStripReadCalibDataToolCfg(flags, name="ITkStripReadCalibDataTool", cond_kwargs={}, **kwargs):
144 acc = ITkStripReadoutGeometryCfg(flags)
145
146 cond_kwargs.setdefault("NoiseFolder","/ITkStrip/DAQ/Calibration/NoiseOccupancyDefects")
147 cond_kwargs.setdefault("GainFolder","/ITkStrip/DAQ/Calibration/NPtGainDefects")
148 cond_kwargs.setdefault("ReadCalibDataCondAlgName","ITkStripReadCalibDataCondAlg")
149
150 acc.merge(addFoldersSplitOnline(flags,
151 detDb="ITkStrip",
152 onlineFolders=cond_kwargs["NoiseFolder"],
153 offlineFolders=cond_kwargs["NoiseFolder"],
154 className="CondAttrListCollection",
155 splitMC=True))
156 acc.merge(addFoldersSplitOnline(flags,
157 detDb="ITkStrip",
158 onlineFolders=cond_kwargs["GainFolder"],
159 offlineFolders=cond_kwargs["GainFolder"],
160 className="CondAttrListCollection",
161 splitMC=True))
162
163 acc.addCondAlgo(CompFactory.SCT_ReadCalibDataCondAlg(name=cond_kwargs["ReadCalibDataCondAlgName"],
164 ReadKeyGain=cond_kwargs["GainFolder"],
165 ReadKeyNoise=cond_kwargs["NoiseFolder"]))
166
167 from ITkStripCabling.ITkStripCablingConfig import ITkStripCablingToolCfg
168 kwargs.setdefault("SCT_CablingTool", acc.popToolsAndMerge(ITkStripCablingToolCfg(flags)))
169
170 acc.setPrivateTools(CompFactory.SCT_ReadCalibDataTool(name, **kwargs))
171 return acc
172
173
174def ITkStripReadoutToolCfg(flags, name="ITkStripReadoutTool", **kwargs):
175 from ITkStripCabling.ITkStripCablingConfig import ITkStripCablingToolCfg
176 acc = ITkStripCablingToolCfg(flags)
177 kwargs.setdefault("SCT_CablingTool", acc.popPrivateTools())
178 acc.setPrivateTools(CompFactory.SCT_ReadoutTool(name, **kwargs))
179 return acc
180
181
182def ITkStripSiliconConditionsCfg(flags, name="ITkStripSilicon", **kwargs):
183 """Return a ComponentAccumulator configured for ITk Strip SiliconConditions"""
184 acc = ComponentAccumulator()
185
186 kwargs["DCSConditionsTool"] = acc.popToolsAndMerge(ITkStripDCSConditionsCfg(flags))
187
188 from SCT_ConditionsTools.SCT_ConditionsToolsConfig import SCT_SiliconConditionsCfg
189 acc.setPrivateTools(acc.popToolsAndMerge(SCT_SiliconConditionsCfg(flags, name, useDCS = False, **kwargs)))
190 return acc
191
192
193def ITkStripTdaqEnabledToolCfg(flags, name="ITkStripTdaqEnabledTool", **kwargs):
194 # For SCT_ID used in SCT_TdaqEnabledTool
195 acc = GeoModelCfg(flags)
196
197 # Folder
198 # FIXME - is there a better way to do this?
199 folder = "/TDAQ/Resources/ATLAS/ITkStrip/Robins" if flags.IOVDb.DatabaseInstance == "CONDBR2" else "/TDAQ/EnabledResources/ATLAS/ITkStrip/Robins"
200 acc.merge(addFolders(flags, [folder], detDb="TDAQ", className="CondAttrListCollection"))
201
202 # Algorithm
203 from ITkStripCabling.ITkStripCablingConfig import ITkStripCablingToolCfg
204 kwargs.setdefault("SCT_CablingTool", acc.popToolsAndMerge(ITkStripCablingToolCfg(flags)))
205 acc.addCondAlgo(CompFactory.SCT_TdaqEnabledCondAlg(**kwargs))
206
207 # Tool
208 acc.setPrivateTools(CompFactory.SCT_TdaqEnabledTool(name))
209 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)