ATLAS Offline Software
Loading...
Searching...
No Matches
PixelConditionsConfig.py
Go to the documentation of this file.
1"""Define functions to configure Pixel conditions algorithms
2
3Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
4"""
5from AthenaConfiguration.AccumulatorCache import AccumulatorCache
6from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
7from AthenaConfiguration.ComponentFactory import CompFactory
8from AthenaConfiguration.Enums import BeamType, LHCPeriod, Format
9from IOVDbSvc.IOVDbSvcConfig import addFolders,addFoldersSplitOnline
10
11def PixelConfigCondAlgCfg(flags, name="PixelConfigCondAlg", **kwargs):
12 """Return a ComponentAccumulator with configured PixelConfigCondAlg"""
13 acc = ComponentAccumulator()
14
15 # FIXME commented properties are not currently accepted by PixelConfigCondAlg
16 CondArgs = {}
17 if flags.Beam.Type is BeamType.Cosmics:
18 CondArgs.update(
19 BarrelTimeJitter=[25.0,25.0,25.0,25.0],
20 EndcapTimeJitter=[25.0,25.0,25.0],
21 DBMTimeJitter=[25.0,25.0,25.0],
22 BarrelNumberOfBCID=[8,8,8,8],
23 EndcapNumberOfBCID=[8,8,8],
24 DBMNumberOfBCID=[8,8,8],
25 BarrelTimeOffset=[100.0,100.0,100.0,100.0],
26 EndcapTimeOffset=[100.0,100.0,100.0],
27 DBMTimeOffset=[100.0,100.0,100.0]
28 )
29
30 CondArgs.update(
31 PixelParameterConditionsFolder=flags.InDet.PixelConfig.version,
32 UsePrivateFileName=flags.InDet.PixelConfig.UserInputFileName
33 )
34
35 # Cabling parameters
36 IdMappingDat="PixelCabling/Pixels_Atlas_IdMapping_2016.dat"
37 if flags.Input.isMC:
38 # ITk:
39 if flags.GeoModel.Run >= LHCPeriod.Run4: # RUN4 and beyond
40 IdMappingDat = "ITk_Atlas_IdMapping.dat"
41 elif flags.GeoModel.Run in [LHCPeriod.Run2, LHCPeriod.Run3]:
42 # Planar IBL
43 if flags.GeoModel.IBLLayout == "planar":
44 if flags.GeoModel.Run is LHCPeriod.Run2:
45 IdMappingDat="PixelCabling/Pixels_Atlas_IdMapping_inclIBL_DBM.dat"
46 else:
47 IdMappingDat="PixelCabling/Pixels_Atlas_IdMapping_inclIBL.dat"
48 # Hybrid IBL plus DBM
49 elif flags.GeoModel.IBLLayout == "3D":
50 IdMappingDat="PixelCabling/Pixels_Atlas_IdMapping_Run2.dat"
51 else:
52 IdMappingDat="PixelCabling/Pixels_Atlas_IdMapping.dat"
53 elif not flags.Input.RunNumbers:
54 IdMappingDat="PixelCabling/Pixels_Atlas_IdMapping_344494.dat"
55 else:
56 runNum = flags.Input.RunNumbers[0]
57 if runNum < 222222:
58 IdMappingDat="PixelCabling/Pixels_Atlas_IdMapping_May08.dat"
59 else:
60 # Even though we are reading from COOL, set the correct fallback map.
61 if (runNum >= 344494):
62 IdMappingDat="PixelCabling/Pixels_Atlas_IdMapping_344494.dat"
63 elif (runNum >= 314940 and runNum < 344494):
64 IdMappingDat="PixelCabling/Pixels_Atlas_IdMapping_314940.dat"
65 elif (runNum >= 289350 and runNum < 314940): # 2016
66 IdMappingDat="PixelCabling/Pixels_Atlas_IdMapping_2016.dat"
67 elif (runNum >= 222222 and runNum < 289350): # 2015
68 IdMappingDat="PixelCabling/Pixels_Atlas_IdMapping_Run2.dat"
69 else:
70 IdMappingDat="PixelCabling/Pixels_Atlas_IdMapping_344494.dat"
71
72 CondArgs.update(
73 CablingMapFileName=IdMappingDat
74 )
75
76 # set default kwargs
77 CondArgs.update(kwargs)
78 acc.addCondAlgo(CompFactory.PixelConfigCondAlg(name, **CondArgs))
79 return acc
80
81@AccumulatorCache
82def PixelAlignCondAlgCfg(flags, name="PixelAlignCondAlg", **kwargs):
83 """Return a ComponentAccumulator with configured PixelAlignCondAlg"""
84 from PixelGeoModel.PixelGeoModelConfig import PixelGeoModelCfg
85 acc = PixelGeoModelCfg(flags)
86
87 if flags.GeoModel.Align.Dynamic:
88 acc.merge(addFoldersSplitOnline(flags,"INDET",
89 ["/Indet/Onl/AlignL1/ID","/Indet/Onl/AlignL2/PIX"],
90 ["/Indet/AlignL1/ID","/Indet/AlignL2/PIX"],
91 className="CondAttrListCollection"))
92 acc.merge(addFoldersSplitOnline(flags,"INDET","/Indet/Onl/AlignL3","/Indet/AlignL3",className="AlignableTransformContainer"))
93 else:
94 acc.merge(addFoldersSplitOnline(flags,"INDET","/Indet/Onl/Align","/Indet/Align",className="AlignableTransformContainer"))
95
96 acc.merge(addFoldersSplitOnline(flags,"INDET","/Indet/Onl/IBLDist","/Indet/IBLDist",className="CondAttrListCollection"))
97
98 kwargs.setdefault("UseDynamicAlignFolders", flags.GeoModel.Align.Dynamic)
99 kwargs.setdefault("ReadKeyStatic", "/Indet/Align")
100 kwargs.setdefault("ReadKeyDynamicL1", "/Indet/AlignL1/ID")
101 kwargs.setdefault("ReadKeyDynamicL2", "/Indet/AlignL2/PIX")
102 kwargs.setdefault("ReadKeyDynamicL3", "/Indet/AlignL3")
103 kwargs.setdefault("ReadKeyIBLDist", "/Indet/IBLDist")
104 kwargs.setdefault("WriteKey", "PixelAlignmentStore")
105
106 acc.addCondAlgo(CompFactory.PixelAlignCondAlg(name, **kwargs))
107 return acc
108
109def PixelCablingCondAlgCfg(flags, name="PixelCablingCondAlg", **kwargs):
110 """Return a ComponentAccumulator with configured PixelCablingCondAlg"""
111 acc = ComponentAccumulator()
112 acc.merge(PixelConfigCondAlgCfg(flags))
113 acc.merge(PixelReadoutSpeedAlgCfg(flags))
114
115 from AthenaConfiguration.Enums import LHCPeriod
116
117 if not flags.Input.isMC and not flags.GeoModel.Run < LHCPeriod.Run2:
118 acc.merge(addFoldersSplitOnline(flags, "PIXEL", "/PIXEL/Onl/CablingMap","/PIXEL/CablingMap", className="AthenaAttributeList"))
119 kwargs.setdefault("ReadKey", "/PIXEL/CablingMap")
120 if flags.Input.RunNumbers and flags.Input.RunNumbers[0]<222222:
121 kwargs.setdefault("ReadKey", "")
122 else:
123 kwargs.setdefault("ReadKey", "")
124 kwargs.setdefault("PixelModuleData", "PixelModuleData")
125 kwargs.setdefault("PixelReadoutSpeedData", "PixelReadoutSpeedData")
126 kwargs.setdefault("WriteKey", "PixelCablingCondData")
127 acc.addCondAlgo(CompFactory.PixelCablingCondAlg(name, **kwargs))
128 return acc
129
130def PixelChargeCalibCondAlgCfg(flags, name="PixelChargeCalibCondAlg", **kwargs):
131 """Return a ComponentAccumulator with configured PixelChargeCalibCondAlg"""
132 acc = ComponentAccumulator()
133 acc.merge(PixelConfigCondAlgCfg(flags))
134 PixCalibFolder = 'ChargeCalibration'
135 from PixelGeoModel.PixelGeoModelConfig import PixelReadoutGeometryCfg
136 acc.merge(PixelReadoutGeometryCfg(flags))
137 kwargs.setdefault("PixelDetEleCollKey", "PixelDetectorElementCollection")
138 kwargs.setdefault("PixelModuleData", "PixelModuleData")
139 if flags.GeoModel.Run is LHCPeriod.Run2:
140 acc.merge(addFoldersSplitOnline(flags, "PIXEL", "/PIXEL/Onl/"+PixCalibFolder, "/PIXEL/"+PixCalibFolder, className="CondAttrListCollection"))
141 kwargs.setdefault("ReadKey", "/PIXEL/"+PixCalibFolder)
142 else:
143 kwargs.setdefault("ReadKey", "") # FIXME: temporarily disabling DB access for Run 1 due to crashes
144 kwargs.setdefault("WriteKey", "PixelChargeCalibCondData")
145 acc.addCondAlgo(CompFactory.PixelChargeCalibCondAlg(name, **kwargs))
146 return acc
147
148def PixelChargeLUTCalibCondAlgCfg(flags, name="PixelChargeLUTCalibCondAlg", **kwargs):
149 """Return a ComponentAccumulator with configured PixelChargeLUTCalibCondAlg"""
150 acc = ComponentAccumulator()
151 acc.merge(PixelConfigCondAlgCfg(flags))
152 acc.merge(addFoldersSplitOnline(flags, "PIXEL", "/PIXEL/Onl/ChargeCalibration", "/PIXEL/ChargeCalibration", className="CondAttrListCollection"))
153 from PixelGeoModel.PixelGeoModelConfig import PixelReadoutGeometryCfg
154 acc.merge(PixelReadoutGeometryCfg(flags))
155 kwargs.setdefault("PixelDetEleCollKey", "PixelDetectorElementCollection")
156 kwargs.setdefault("PixelModuleData", "PixelModuleData")
157 kwargs.setdefault("ReadKey", "/PIXEL/ChargeCalibration")
158 kwargs.setdefault("WriteKey", "PixelChargeCalibCondData")
159 acc.addCondAlgo(CompFactory.PixelChargeLUTCalibCondAlg(name, **kwargs))
160 return acc
161
162def PixelDCSCondHVAlgCfg(flags, name="PixelDCSCondHVAlg", **kwargs):
163 """Return a ComponentAccumulator with configured PixelDCSCondHVAlg"""
164 acc = ComponentAccumulator()
165 acc.merge(PixelConfigCondAlgCfg(flags))
166 if flags.Common.isOnline:
167 kwargs.update( ReadKey="/PIXEL/HLT/DCS/HV")
168 acc.merge(addFolders(flags, kwargs["ReadKey"], "PIXEL_ONL", className="CondAttrListCollection"))
169 else:
170 kwargs.update( ReadKey="/PIXEL/DCS/HV")
171 acc.merge(addFolders(flags, kwargs["ReadKey"], "DCS_OFL", className="CondAttrListCollection"))
172
173 kwargs.setdefault("WriteKey", "PixelDCSHVCondData")
174 acc.addCondAlgo(CompFactory.PixelDCSCondHVAlg(name, **kwargs))
175 return acc
176
177def PixelDCSCondStateAlgCfg(flags, name="PixelDCSCondStateAlg", **kwargs):
178 """Return a ComponentAccumulator with configured PixelDCSCondStateAlg"""
179 acc = ComponentAccumulator()
180 if not flags.Input.isMC and flags.InDet.usePixelDCS:
181 acc.merge(addFolders(flags, "/PIXEL/DCS/FSMSTATE", "DCS_OFL", className="CondAttrListCollection"))
182 kwargs.setdefault("ReadKeyState", "/PIXEL/DCS/FSMSTATE")
183 else:
184 kwargs.setdefault("ReadKeyState", "")
185 kwargs.setdefault("WriteKeyState", "PixelDCSStateCondData")
186 acc.addCondAlgo(CompFactory.PixelDCSCondStateAlg(name, **kwargs))
187 return acc
188
189def PixelDCSCondStatusAlgCfg(flags, name="PixelDCSCondStatusAlg", **kwargs):
190 """Return a ComponentAccumulator with configured PixelDCSCondStatusAlg"""
191 acc = ComponentAccumulator()
192 if not flags.Input.isMC and flags.InDet.usePixelDCS:
193 acc.merge(addFolders(flags, "/PIXEL/DCS/FSMSTATUS", "DCS_OFL", className="CondAttrListCollection"))
194 kwargs.setdefault("ReadKeyStatus", "/PIXEL/DCS/FSMSTATUS")
195 else:
196 kwargs.setdefault("ReadKeyStatus", "")
197 kwargs.setdefault("WriteKeyStatus", "PixelDCSStatusCondData")
198 acc.addCondAlgo(CompFactory.PixelDCSCondStatusAlg(name, **kwargs))
199 return acc
200
201def PixelDCSCondTempAlgCfg(flags, name="PixelDCSCondTempAlg", **kwargs):
202 """Return a ComponentAccumulator with configured PixelDCSCondTempAlg"""
203 acc = ComponentAccumulator()
204 acc.merge(PixelConfigCondAlgCfg(flags))
205 if flags.Common.isOnline:
206 kwargs.setdefault("ReadKey", "/PIXEL/HLT/DCS/TEMPERATURE")
207 acc.merge(addFolders(flags, kwargs["ReadKey"], "PIXEL_ONL", className="CondAttrListCollection"))
208 else:
209 kwargs.setdefault("ReadKey", "/PIXEL/DCS/TEMPERATURE")
210 acc.merge(addFolders(flags, kwargs["ReadKey"], "DCS_OFL", className="CondAttrListCollection"))
211 kwargs.setdefault("WriteKey", "PixelDCSTempCondData")
212 acc.addCondAlgo(CompFactory.PixelDCSCondTempAlg(name, **kwargs))
213 return acc
214
215def PixelDeadMapCondAlgCfg(flags, name="PixelDeadMapCondAlg", **kwargs):
216 """Return a ComponentAccumulator with configured PixelDeadMapCondAlg"""
217 acc = ComponentAccumulator()
218 acc.merge(PixelConfigCondAlgCfg(flags))
219 if flags.InDet.JsonPathPixelModuleVeto:
220 kwargs.setdefault("ReadKey", "")
221 kwargs.setdefault("JsonPath", flags.InDet.JsonPathPixelModuleVeto)
222 elif flags.GeoModel.Run is LHCPeriod.Run1:
223 kwargs.setdefault("ReadKey", "")
224 else:
225 kwargs.setdefault("ReadKey", "/PIXEL/PixelModuleFeMask")
226 acc.merge(addFoldersSplitOnline(flags, "PIXEL", "/PIXEL/Onl/PixelModuleFeMask", "/PIXEL/PixelModuleFeMask", className="CondAttrListCollection"))
227 kwargs.setdefault("WriteKey", "PixelDeadMapCondData")
228 acc.addCondAlgo(CompFactory.PixelDeadMapCondAlg(name, **kwargs))
229 return acc
230
231def PixelDetectorElementCondAlgCfg(flags, name="PixelDetectorElementCondAlg", **kwargs):
232 """Return a ComponentAccumulator with configured PixelDetectorElementCondAlg"""
233 acc = ComponentAccumulator()
234 acc.merge(PixelAlignCondAlgCfg(flags))
235
236 kwargs.setdefault("PixelAlignmentStore", "PixelAlignmentStore")
237 kwargs.setdefault("WriteKey", "PixelDetectorElementCollection")
238
239 # FIXME
240 # add artifical dependencies to SCT, TRT and Muon
241 # conditions algs to ensure that the IOV
242 # is identical to the IOV of the tracking geometry
243 if flags.Detector.GeometryMuon and flags.Muon.enableAlignment:
244 from MuonConfig.MuonGeometryConfig import MuonGeoModelCfg
245 acc.merge(MuonGeoModelCfg(flags))
246 kwargs.setdefault("MuonManagerKey", "MuonDetectorManager")
247 if flags.Detector.GeometryTRT:
248 from TRT_GeoModel.TRT_GeoModelConfig import TRT_ReadoutGeometryCfg
249 acc.merge(TRT_ReadoutGeometryCfg(flags))
250 kwargs.setdefault("TRT_DetEltContKey", "TRT_DetElementContainer")
251 if not flags.GeoModel.Align.LegacyConditionsAccess and flags.Detector.GeometrySCT:
252 from SCT_GeoModel.SCT_GeoModelConfig import SCT_AlignmentCfg
253 acc.merge(SCT_AlignmentCfg(flags))
254 kwargs.setdefault("SCTAlignmentStore", "SCTAlignmentStore")
255 # end of hack
256
257 acc.addCondAlgo(CompFactory.PixelDetectorElementCondAlg(name, **kwargs))
258 return acc
259
260def PixelDistortionAlgCfg(flags, name="PixelDistortionAlg", **kwargs):
261 """Return a ComponentAccumulator with configured PixelDistortionAlg"""
262 acc = ComponentAccumulator()
263 acc.merge(PixelConfigCondAlgCfg(flags))
264 acc.merge(addFoldersSplitOnline(flags,"INDET","/Indet/Onl/PixelDist","/Indet/PixelDist",className="DetCondCFloat"))
265 kwargs.setdefault("ReadKey", "/Indet/PixelDist")
266 kwargs.setdefault("WriteKey", "PixelDistortionData")
267 from RngComps.RngCompsConfig import AthRNGSvcCfg
268 kwargs.setdefault("RndmSvc", acc.getPrimaryAndMerge(AthRNGSvcCfg(flags)))
269 acc.addCondAlgo(CompFactory.PixelDistortionAlg(name, **kwargs))
270 return acc
271
272def PixelHitDiscCnfgAlgCfg(flags, name="PixelHitDiscCnfgAlg", **kwargs):
273 """Return a ComponentAccumulator with configured PixelHitDiscCnfgAlg"""
274 acc = ComponentAccumulator()
275 acc.merge(PixelConfigCondAlgCfg(flags))
276 # not for Run-1 data/MC
277 if flags.GeoModel.IBLLayout in ("noIBL", "UNDEFINED"):
278 return acc
279 if flags.IOVDb.DatabaseInstance == "CONDBR2":
280 acc.merge(addFolders(flags, "/PIXEL/HitDiscCnfg", "PIXEL", className="AthenaAttributeList"))
281 elif flags.Input.isMC and flags.GeoModel.Run in [LHCPeriod.Run2, LHCPeriod.Run3]:
282 acc.merge(addFoldersSplitOnline(flags,"PIXEL","/PIXEL/HitDiscCnfg","/PIXEL/HitDiscCnfg", className="AthenaAttributeList"))
283 kwargs.setdefault("ReadKey", "/PIXEL/HitDiscCnfg")
284 kwargs.setdefault("WriteKey", "PixelHitDiscCnfgData")
285 acc.addCondAlgo(CompFactory.PixelHitDiscCnfgAlg(name, **kwargs))
286 return acc
287
288def PixelOfflineCalibCondAlgCfg(flags, name="PixelOfflineCalibCondAlg", **kwargs):
289 """Return a ComponentAccumulator with configured PixelOfflineCalibCondAlg"""
290 acc = ComponentAccumulator()
291 acc.merge(addFoldersSplitOnline(flags, "PIXEL", "/PIXEL/Onl/PixReco", "/PIXEL/PixReco", className="DetCondCFloat"))
292 kwargs.setdefault("InputSource", 2)
293 kwargs.setdefault("PixelClusterErrorDataFile", "PixelClusterErrorData.txt")
294 kwargs.setdefault("PixelClusterOnTrackErrorDataFile", "PixelClusterOnTrackErrorData.txt")
295 kwargs.setdefault("PixelChargeInterpolationDataFile", "PixelChargeInterpolationData.txt")
296 kwargs.setdefault("DumpConstants", 0)
297 kwargs.setdefault("ReadKey", "/PIXEL/PixReco")
298 kwargs.setdefault("WriteKey", "PixelOfflineCalibData")
299 acc.addCondAlgo(CompFactory.PixelOfflineCalibCondAlg(name, **kwargs))
300 return acc
301
302def PixelReadoutSpeedAlgCfg(flags, name="PixelReadoutSpeedAlg", **kwargs):
303 """Return a ComponentAccumulator with configured PixelReadoutSpeedAlg"""
304 acc = ComponentAccumulator()
305 if not flags.Input.isMC:
306 acc.merge(addFolders(flags, "/PIXEL/ReadoutSpeed", "PIXEL", className="AthenaAttributeList"))
307 else:
308 acc.merge(addFoldersSplitOnline(flags, "PIXEL","/PIXEL/ReadoutSpeed","/PIXEL/ReadoutSpeed", className="AthenaAttributeList"))
309 kwargs.setdefault("ReadKey", "/PIXEL/ReadoutSpeed")
310 kwargs.setdefault("WriteKey", "PixelReadoutSpeedData")
311 acc.addCondAlgo(CompFactory.PixelReadoutSpeedAlg(name, **kwargs))
312 return acc
313
314def PixelRadSimFluenceMapAlgCfg(flags, name="PixelRadSimFluenceMapAlg", **kwargs):
315 """Return a ComponentAccumulator with configured PixelRadSimFluenceMapAlg"""
316 acc = ComponentAccumulator()
317 acc.merge(PixelConfigCondAlgCfg(flags))
318 kwargs.setdefault("PixelModuleData", "PixelModuleData")
319 kwargs.setdefault("WriteRadiationFluenceMapKey", "PixelRadiationDamageFluenceMapData")
320 acc.addCondAlgo(CompFactory.PixelRadSimFluenceMapAlg(name, **kwargs))
321 return acc
322
323def PixeldEdxAlgCfg(flags, name="PixeldEdxAlg", **kwargs):
324 """Return a ComponentAccumulator with configured PixeldEdxAlg"""
325 acc = ComponentAccumulator()
326 acc.merge(addFoldersSplitOnline(flags, "PIXEL", "/PIXEL/Onl/PixdEdx", "/PIXEL/PixdEdx", className='AthenaAttributeList'))
327 acc.addCondAlgo(CompFactory.PixeldEdxAlg(name, ReadFromCOOL = True, **kwargs))
328 return acc
329
330def PixelSiliconConditionsTestAlgCfg(flags, name="PixelSiliconConditionsTestAlg", **kwargs):
331 """Return a ComponentAccumulator with configured PixelSiliconConditionsTestAlg"""
332 acc = ComponentAccumulator()
333 acc.merge(PixelDCSCondTempAlgCfg(flags))
334 acc.merge(PixelDCSCondHVAlgCfg(flags))
335 acc.merge(PixelChargeCalibCondCfg(flags))
336 acc.merge(PixelDistortionAlgCfg(flags))
337 from SiLorentzAngleTool.PixelLorentzAngleConfig import PixelLorentzAngleToolCfg
338 kwargs.setdefault("LorentzAngleTool", acc.popToolsAndMerge(PixelLorentzAngleToolCfg(flags)))
339 acc.addEventAlgo(CompFactory.PixelSiliconConditionsTestAlg(name, **kwargs))
340 return acc
341
342def PixelDetectorElementStatusCondAlgActiveOnlyCfg(flags, name = "PixelDetectorElementStatusCondAlgNoByteStreamErrorActiveOnly", **kwargs) :
343 '''
344 Condition alg to precompute the pixel detector element status.
345 this algo does not consider the DCS status (and the byte stream errors which are event data)
346 '''
347 acc = ComponentAccumulator()
348 if 'ConditionsSummaryTool' not in kwargs :
349 from PixelConditionsTools.PixelConditionsSummaryConfig import PixelConditionsSummaryToolNoByteStreamErrorsActiveOnlyCfg
350 kwargs.setdefault("ConditionsSummaryTool", acc.popToolsAndMerge( PixelConditionsSummaryToolNoByteStreamErrorsActiveOnlyCfg(flags)))
351 kwargs.setdefault( "WriteKey", "PixelDetectorElementStatusNoByteStreamActiveOnly")
352 acc.addCondAlgo( CompFactory.InDet.SiDetectorElementStatusCondAlg(name, **kwargs) )
353 return acc
354
355def PixelDetectorElementStatusCondAlgCfg(flags, name = "PixelDetectorElementStatusCondAlgNoByteStreamError", **kwargs) :
356 '''
357 Condition alg to precompute the create pixel detector element status which includes the DCS status
358 this algo does not consider the byte stream errors which are event data
359 '''
360 acc = ComponentAccumulator()
361 if 'ConditionsSummaryTool' not in kwargs :
363 from PixelConditionsTools.PixelConditionsSummaryConfig import PixelActiveDetectorElementStatusToolCfg
364 kwargs.setdefault("ConditionsSummaryTool", acc.popToolsAndMerge( PixelActiveDetectorElementStatusToolCfg(flags,
365 PixelDetElStatusCondDataBaseKey="PixelDetectorElementStatusNoByteStreamActiveOnly")) )
366 kwargs.setdefault("WriteKey", "PixelDetectorElementStatusNoByteStream")
367 acc.addCondAlgo( CompFactory.InDet.SiDetectorElementStatusCondAlg(name, **kwargs) )
368 return acc
369
370def PixelDetectorElementStatusAlgCfg(flags, name = "PixelDetectorElementStatusAlg", **kwargs) :
371 '''
372 Event alg which extends the pixel detector element status conditions data which does not consider the DCS status by the bytestream errors.
373 This alg however does only consider errors concerning the module activity, not general errors.
374 '''
375 acc = ComponentAccumulator()
376 active_only = kwargs.pop("ActiveOnly", False)
377 if 'ConditionsSummaryTool' not in kwargs and not active_only :
378 element_status_input=None
379 if flags.InDet.usePixelDCS:
380 acc.merge( PixelDetectorElementStatusCondAlgCfg(flags) )
381 element_status_input="PixelDetectorElementStatusNoByteStream"
382 else :
383 # without DCS PixelDetectorElementStatusNoByteStream and PixelDetectorElementStatusNoByteStreamActiveOnly
384 # are identically
386 element_status_input="PixelDetectorElementStatusNoByteStreamActiveOnly"
387 from PixelConditionsTools.PixelConditionsSummaryConfig import PixelByteStreamErrorDetectorElementStatusToolCfg
388 kwargs.setdefault("ConditionsSummaryTool",
389 acc.popToolsAndMerge(PixelByteStreamErrorDetectorElementStatusToolCfg(flags, PixelDetElStatusCondDataBaseKey=element_status_input) ))
390
391 elif 'ConditionsSummaryTool' not in kwargs and active_only :
393 from PixelConditionsTools.PixelConditionsSummaryConfig import PixelByteStreamErrorDetectorElementStatusToolActiveOnlyCfg
394 kwargs.setdefault("ConditionsSummaryTool",
395 acc.popToolsAndMerge(PixelByteStreamErrorDetectorElementStatusToolActiveOnlyCfg(flags, PixelDetElStatusCondDataBaseKey="PixelDetectorElementStatusNoByteStreamActiveOnly")))
396
397 kwargs.setdefault("WriteKey","PixelDetectorElementStatus")
398
399 # This requires PixelByteStreamErrs provided by PixelRawDataProviderAlg
400 if flags.Input.Format is Format.BS:
401 from PixelRawDataByteStreamCnv.PixelRawDataByteStreamCnvConfig import (
402 PixelRawDataProviderAlgCfg)
403 acc.merge(PixelRawDataProviderAlgCfg(flags))
404
405 acc.addEventAlgo( CompFactory.InDet.SiDetectorElementStatusAlg(name, **kwargs) )
406 return acc
407
408def PixelDetectorElementStatusAlgActiveOnlyCfg(flags, name = "PixelDetectorElementStatusAlgActiveOnly", **kwargs) :
409 '''
410 Event alg which extends the pixel detector element status conditions data which does not consider the DCS status by the bytestream errors.
411 This alg however does only consider errors concerning the module activity, not general errors.
412 '''
413 return PixelDetectorElementStatusAlgCfg(flags, name,
414 WriteKey = "PixelDetectorElementStatusActiveOnly",
415 ActiveOnly = True)
416
417
418def PixelChargeCalibCondCfg(flags, **kwargs):
419 if flags.GeoModel.Run >= LHCPeriod.Run4:
420 from PixelConditionsAlgorithms.ITkPixelConditionsConfig import (
421 ITkPixelChargeCalibCondAlgCfg)
422 return ITkPixelChargeCalibCondAlgCfg(flags, **kwargs)
423 elif flags.GeoModel.Run == LHCPeriod.Run3:
424 return PixelChargeLUTCalibCondAlgCfg(flags, **kwargs)
425 return PixelChargeCalibCondAlgCfg(flags, **kwargs)
426
428 """Force the job to use the Pixel Module-level mask implemented via the
429 FE-level masking code. See https://gitlab.cern.ch/atlas/athena/-/merge_requests/45356"""
430 from IOVDbSvc.IOVDbSvcConfig import addOverride
431 if (not flags.Input.isMC and flags.IOVDb.DatabaseInstance == 'CONDBR2'): # for data overlay
432 cfg.merge(addOverride(flags, '/PIXEL/PixelModuleFeMask', 'PixelModuleFeMask-RUN2-DATA-UPD4-05'))
433 else:
434 cfg.merge(addOverride(flags, '/PIXEL/PixelModuleFeMask', 'PixelModuleFeMask-SIM-MC16-000-03'))
435 return cfg
436
437
438if __name__ == '__main__':
439 from AthenaConfiguration.MainServicesConfig import MainServicesCfg
440 from AthenaConfiguration.AllConfigFlags import initConfigFlags
441 flags = initConfigFlags()
442 flags.fillFromArgs()
443
444 from AthenaConfiguration.TestDefaults import defaultTestFiles
445 flags.Input.Files = defaultTestFiles.RAW_RUN2 # need to update this depending on EDMversion
446 flags.Exec.MaxEvents=5
447
448 flags.lock()
449
450 acc = MainServicesCfg(flags)
451 acc.merge( PixelDetectorElementCondAlgCfg(flags) )
452 acc.printConfig(withDetails=True)
453 with open("PixelConditions.pkl", "wb") as file:
454 acc.store(file)
455 # TODO decide if we want to run actually
456 sc = acc.run()
457 # if sc.isFailure():
458 # import sys
459 # sys.exit(-1)
460
461
PixelConfigCondAlgCfg(flags, name="PixelConfigCondAlg", **kwargs)
PixelOfflineCalibCondAlgCfg(flags, name="PixelOfflineCalibCondAlg", **kwargs)
PixelDCSCondHVAlgCfg(flags, name="PixelDCSCondHVAlg", **kwargs)
PixelHitDiscCnfgAlgCfg(flags, name="PixelHitDiscCnfgAlg", **kwargs)
PixelDetectorElementStatusAlgActiveOnlyCfg(flags, name="PixelDetectorElementStatusAlgActiveOnly", **kwargs)
PixelDCSCondTempAlgCfg(flags, name="PixelDCSCondTempAlg", **kwargs)
PixelSiliconConditionsTestAlgCfg(flags, name="PixelSiliconConditionsTestAlg", **kwargs)
PixelDetectorElementCondAlgCfg(flags, name="PixelDetectorElementCondAlg", **kwargs)
PixelChargeCalibCondCfg(flags, **kwargs)
PostInclude_UsePixelModuleLevelMask(flags, cfg)
PixelDCSCondStateAlgCfg(flags, name="PixelDCSCondStateAlg", **kwargs)
PixelCablingCondAlgCfg(flags, name="PixelCablingCondAlg", **kwargs)
PixelDCSCondStatusAlgCfg(flags, name="PixelDCSCondStatusAlg", **kwargs)
PixelChargeLUTCalibCondAlgCfg(flags, name="PixelChargeLUTCalibCondAlg", **kwargs)
PixelDetectorElementStatusAlgCfg(flags, name="PixelDetectorElementStatusAlg", **kwargs)
PixelAlignCondAlgCfg(flags, name="PixelAlignCondAlg", **kwargs)
PixelRadSimFluenceMapAlgCfg(flags, name="PixelRadSimFluenceMapAlg", **kwargs)
PixelDetectorElementStatusCondAlgActiveOnlyCfg(flags, name="PixelDetectorElementStatusCondAlgNoByteStreamErrorActiveOnly", **kwargs)
PixelDistortionAlgCfg(flags, name="PixelDistortionAlg", **kwargs)
PixeldEdxAlgCfg(flags, name="PixeldEdxAlg", **kwargs)
PixelReadoutSpeedAlgCfg(flags, name="PixelReadoutSpeedAlg", **kwargs)
PixelDetectorElementStatusCondAlgCfg(flags, name="PixelDetectorElementStatusCondAlgNoByteStreamError", **kwargs)
PixelDeadMapCondAlgCfg(flags, name="PixelDeadMapCondAlg", **kwargs)
PixelChargeCalibCondAlgCfg(flags, name="PixelChargeCalibCondAlg", **kwargs)