1 """Define functions to configure Pixel conditions algorithms
3 Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
5 from AthenaConfiguration.AccumulatorCache
import AccumulatorCache
6 from AthenaConfiguration.ComponentAccumulator
import ComponentAccumulator
7 from AthenaConfiguration.ComponentFactory
import CompFactory
8 from AthenaConfiguration.Enums
import BeamType, LHCPeriod, Format
9 from IOVDbSvc.IOVDbSvcConfig
import addFolders,addFoldersSplitOnline
12 """Return a ComponentAccumulator with configured PixelConfigCondAlg"""
17 if flags.Beam.Type
is BeamType.Cosmics:
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]
31 PixelParameterConditionsFolder=flags.InDet.PixelConfig.version,
32 UsePrivateFileName=flags.InDet.PixelConfig.UserInputFileName
36 IdMappingDat=
"PixelCabling/Pixels_Atlas_IdMapping_2016.dat"
39 if flags.GeoModel.Run >= LHCPeriod.Run4:
40 IdMappingDat =
"ITk_Atlas_IdMapping.dat"
41 elif flags.GeoModel.Run
in [LHCPeriod.Run2, LHCPeriod.Run3]:
43 if flags.GeoModel.IBLLayout ==
"planar":
44 if flags.GeoModel.Run
is LHCPeriod.Run2:
45 IdMappingDat=
"PixelCabling/Pixels_Atlas_IdMapping_inclIBL_DBM.dat"
47 IdMappingDat=
"PixelCabling/Pixels_Atlas_IdMapping_inclIBL.dat"
49 elif flags.GeoModel.IBLLayout ==
"3D":
50 IdMappingDat=
"PixelCabling/Pixels_Atlas_IdMapping_Run2.dat"
52 IdMappingDat=
"PixelCabling/Pixels_Atlas_IdMapping.dat"
53 elif not flags.Input.RunNumbers:
54 IdMappingDat=
"PixelCabling/Pixels_Atlas_IdMapping_344494.dat"
56 runNum = flags.Input.RunNumbers[0]
58 IdMappingDat=
"PixelCabling/Pixels_Atlas_IdMapping_May08.dat"
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):
66 IdMappingDat=
"PixelCabling/Pixels_Atlas_IdMapping_2016.dat"
67 elif (runNum >= 222222
and runNum < 289350):
68 IdMappingDat=
"PixelCabling/Pixels_Atlas_IdMapping_Run2.dat"
70 IdMappingDat=
"PixelCabling/Pixels_Atlas_IdMapping_344494.dat"
73 CablingMapFileName=IdMappingDat
77 CondArgs.update(kwargs)
78 acc.addCondAlgo(CompFactory.PixelConfigCondAlg(name, **CondArgs))
83 """Return a ComponentAccumulator with configured PixelAlignCondAlg"""
84 from PixelGeoModel.PixelGeoModelConfig
import PixelGeoModelCfg
87 if flags.GeoModel.Align.Dynamic:
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"))
94 acc.merge(
addFoldersSplitOnline(flags,
"INDET",
"/Indet/Onl/Align",
"/Indet/Align",className=
"AlignableTransformContainer"))
96 acc.merge(
addFoldersSplitOnline(flags,
"INDET",
"/Indet/Onl/IBLDist",
"/Indet/IBLDist",className=
"CondAttrListCollection"))
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")
106 acc.addCondAlgo(CompFactory.PixelAlignCondAlg(name, **kwargs))
110 """Return a ComponentAccumulator with configured PixelCablingCondAlg"""
115 from AthenaConfiguration.Enums
import LHCPeriod
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",
"")
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))
131 """Return a ComponentAccumulator with configured PixelChargeCalibCondAlg"""
134 PixCalibFolder =
'ChargeCalibration'
135 from PixelGeoModel.PixelGeoModelConfig
import PixelReadoutGeometryCfg
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)
143 kwargs.setdefault(
"ReadKey",
"")
144 kwargs.setdefault(
"WriteKey",
"PixelChargeCalibCondData")
145 acc.addCondAlgo(CompFactory.PixelChargeCalibCondAlg(name, **kwargs))
149 """Return a ComponentAccumulator with configured PixelChargeLUTCalibCondAlg"""
152 acc.merge(
addFoldersSplitOnline(flags,
"PIXEL",
"/PIXEL/Onl/ChargeCalibration",
"/PIXEL/ChargeCalibration", className=
"CondAttrListCollection"))
153 from PixelGeoModel.PixelGeoModelConfig
import PixelReadoutGeometryCfg
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))
163 """Return a ComponentAccumulator with configured PixelDCSCondHVAlg"""
166 if flags.Common.isOnline:
167 kwargs.update( ReadKey=
"/PIXEL/HLT/DCS/HV")
168 acc.merge(
addFolders(flags, kwargs[
"ReadKey"],
"PIXEL_ONL", className=
"CondAttrListCollection"))
170 kwargs.update( ReadKey=
"/PIXEL/DCS/HV")
171 acc.merge(
addFolders(flags, kwargs[
"ReadKey"],
"DCS_OFL", className=
"CondAttrListCollection"))
173 kwargs.setdefault(
"WriteKey",
"PixelDCSHVCondData")
174 acc.addCondAlgo(CompFactory.PixelDCSCondHVAlg(name, **kwargs))
178 """Return a ComponentAccumulator with configured PixelDCSCondStateAlg"""
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")
184 kwargs.setdefault(
"ReadKeyState",
"")
185 kwargs.setdefault(
"WriteKeyState",
"PixelDCSStateCondData")
186 acc.addCondAlgo(CompFactory.PixelDCSCondStateAlg(name, **kwargs))
190 """Return a ComponentAccumulator with configured PixelDCSCondStatusAlg"""
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")
196 kwargs.setdefault(
"ReadKeyStatus",
"")
197 kwargs.setdefault(
"WriteKeyStatus",
"PixelDCSStatusCondData")
198 acc.addCondAlgo(CompFactory.PixelDCSCondStatusAlg(name, **kwargs))
202 """Return a ComponentAccumulator with configured PixelDCSCondTempAlg"""
205 if flags.Common.isOnline:
206 kwargs.setdefault(
"ReadKey",
"/PIXEL/HLT/DCS/TEMPERATURE")
207 acc.merge(
addFolders(flags, kwargs[
"ReadKey"],
"PIXEL_ONL", className=
"CondAttrListCollection"))
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))
216 """Return a ComponentAccumulator with configured PixelDeadMapCondAlg"""
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",
"")
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))
232 """Return a ComponentAccumulator with configured PixelDetectorElementCondAlg"""
236 kwargs.setdefault(
"PixelAlignmentStore",
"PixelAlignmentStore")
237 kwargs.setdefault(
"WriteKey",
"PixelDetectorElementCollection")
243 if flags.Detector.GeometryMuon
and flags.Muon.enableAlignment:
244 from MuonConfig.MuonGeometryConfig
import MuonGeoModelCfg
246 kwargs.setdefault(
"MuonManagerKey",
"MuonDetectorManager")
247 if flags.Detector.GeometryTRT:
248 from TRT_GeoModel.TRT_GeoModelConfig
import TRT_ReadoutGeometryCfg
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
254 kwargs.setdefault(
"SCTAlignmentStore",
"SCTAlignmentStore")
257 acc.addCondAlgo(CompFactory.PixelDetectorElementCondAlg(name, **kwargs))
261 """Return a ComponentAccumulator with configured PixelDistortionAlg"""
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))
273 """Return a ComponentAccumulator with configured PixelHitDiscCnfgAlg"""
277 if flags.GeoModel.IBLLayout
in (
"noIBL",
"UNDEFINED"):
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))
289 """Return a ComponentAccumulator with configured PixelOfflineCalibCondAlg"""
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))
303 """Return a ComponentAccumulator with configured PixelReadoutSpeedAlg"""
305 if not flags.Input.isMC:
306 acc.merge(
addFolders(flags,
"/PIXEL/ReadoutSpeed",
"PIXEL", className=
"AthenaAttributeList"))
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))
315 """Return a ComponentAccumulator with configured PixelRadSimFluenceMapAlg"""
318 kwargs.setdefault(
"PixelModuleData",
"PixelModuleData")
319 kwargs.setdefault(
"WriteRadiationFluenceMapKey",
"PixelRadiationDamageFluenceMapData")
320 acc.addCondAlgo(CompFactory.PixelRadSimFluenceMapAlg(name, **kwargs))
324 """Return a ComponentAccumulator with configured PixeldEdxAlg"""
326 acc.merge(
addFoldersSplitOnline(flags,
"PIXEL",
"/PIXEL/Onl/PixdEdx",
"/PIXEL/PixdEdx", className=
'AthenaAttributeList'))
327 acc.addCondAlgo(CompFactory.PixeldEdxAlg(name, ReadFromCOOL =
True, **kwargs))
331 """Return a ComponentAccumulator with configured PixelSiliconConditionsTestAlg"""
337 from SiLorentzAngleTool.PixelLorentzAngleConfig
import PixelLorentzAngleToolCfg
339 acc.addEventAlgo(CompFactory.PixelSiliconConditionsTestAlg(name, **kwargs))
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)
348 if 'ConditionsSummaryTool' not in kwargs :
349 from PixelConditionsTools.PixelConditionsSummaryConfig
import PixelConditionsSummaryToolNoByteStreamErrorsActiveOnlyCfg
351 kwargs.setdefault(
"WriteKey",
"PixelDetectorElementStatusNoByteStreamActiveOnly")
352 acc.addCondAlgo( CompFactory.InDet.SiDetectorElementStatusCondAlg(name, **kwargs) )
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
361 if 'ConditionsSummaryTool' not in kwargs :
363 from PixelConditionsTools.PixelConditionsSummaryConfig
import PixelActiveDetectorElementStatusToolCfg
365 PixelDetElStatusCondDataBaseKey=
"PixelDetectorElementStatusNoByteStreamActiveOnly")) )
366 kwargs.setdefault(
"WriteKey",
"PixelDetectorElementStatusNoByteStream")
367 acc.addCondAlgo( CompFactory.InDet.SiDetectorElementStatusCondAlg(name, **kwargs) )
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.
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:
381 element_status_input=
"PixelDetectorElementStatusNoByteStream"
386 element_status_input=
"PixelDetectorElementStatusNoByteStreamActiveOnly"
387 from PixelConditionsTools.PixelConditionsSummaryConfig
import PixelByteStreamErrorDetectorElementStatusToolCfg
388 kwargs.setdefault(
"ConditionsSummaryTool",
391 elif 'ConditionsSummaryTool' not in kwargs
and active_only :
393 from PixelConditionsTools.PixelConditionsSummaryConfig
import PixelByteStreamErrorDetectorElementStatusToolActiveOnlyCfg
394 kwargs.setdefault(
"ConditionsSummaryTool",
397 kwargs.setdefault(
"WriteKey",
"PixelDetectorElementStatus")
400 if flags.Input.Format
is Format.BS:
401 from PixelRawDataByteStreamCnv.PixelRawDataByteStreamCnvConfig
import (
402 PixelRawDataProviderAlgCfg)
405 acc.addEventAlgo( CompFactory.InDet.SiDetectorElementStatusAlg(name, **kwargs) )
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.
414 WriteKey =
"PixelDetectorElementStatusActiveOnly",
419 if flags.GeoModel.Run >= LHCPeriod.Run4:
420 from PixelConditionsAlgorithms.ITkPixelConditionsConfig
import (
421 ITkPixelChargeCalibCondAlgCfg)
423 elif flags.GeoModel.Run == LHCPeriod.Run3:
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'):
432 cfg.merge(
addOverride(flags,
'/PIXEL/PixelModuleFeMask',
'PixelModuleFeMask-RUN2-DATA-UPD4-05'))
434 cfg.merge(
addOverride(flags,
'/PIXEL/PixelModuleFeMask',
'PixelModuleFeMask-SIM-MC16-000-03'))
438 if __name__ ==
'__main__':
439 from AthenaConfiguration.MainServicesConfig
import MainServicesCfg
440 from AthenaConfiguration.AllConfigFlags
import initConfigFlags
444 from AthenaConfiguration.TestDefaults
import defaultTestFiles
445 flags.Input.Files = defaultTestFiles.RAW_RUN2
446 flags.Exec.MaxEvents=5
452 acc.printConfig(withDetails=
True)
453 with open(
"PixelConditions.pkl",
"wb")
as file: