ATLAS Offline Software
Loading...
Searching...
No Matches
ITkStripConditionsAlgorithmsConfig.py
Go to the documentation of this file.
2# Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
4from AthenaConfiguration.ComponentFactory import CompFactory
5from IOVDbSvc.IOVDbSvcConfig import addFoldersSplitOnline
6from StripGeoModelXml.ITkStripGeoModelConfig import ITkStripGeoModelCfg
7
8
9def 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
32def 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
69def 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
78def 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
91def 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(
103 ITkStripDetectorElementStatusAddByteStreamErrorsToolCfg(flags,
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
ITkStripDetectorElementStatusCondAlgNoByteStreamErrorsCfg(flags, name="ITkStripDetectorElementStatusCondAlgNoByteStreamErrors", **kwargs)
ITkStripDetectorElementCondAlgCfg(flags, name="ITkStripDetectorElementCondAlg", **kwargs)
ITkStripAlignCondAlgCfg(flags, name="ITkStripAlignCondAlg", **kwargs)
ITkStripDetectorElementStatusAlgCfg(flags, name="ITkStripDetectorElementStatusAlg", **kwargs)
ITkStripConfigurationCondAlgCfg(flags, name="ITkStripConfigurationCondAlg", **kwargs)