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
35 #These folders do not exist for ITkStrip. Once they do exist, they should be added as below
36
37 #folder_prefix = getITkStripDAQConfigFolder(flags)
38 #channelFolder = folder_prefix + "Chip"
39 #kwargs.setdefault("ReadKeyChannel", channelFolder)
40 #kwargs.setdefault("ReadKeyModule", f"{folder_prefix}Module")
41 #kwargs.setdefault("ReadKeyMur", f"{folder_prefix}MUR")
42
43 #acc.merge(addFoldersSplitOnline(flags,
44 # detDb="ITkStrip",
45 # onlineFolders=channelFolder,
46 # offlineFolders=channelFolder,
47 # className="CondAttrListVec",
48 # splitMC=True))
49
50 from ITkStripCabling.ITkStripCablingConfig import ITkStripCablingToolCfg
51 kwargs.setdefault("SCT_CablingTool", acc.popToolsAndMerge(ITkStripCablingToolCfg(flags)))
52
53 from SCT_ConditionsTools.ITkStripConditionsToolsConfig import ITkStripReadoutToolCfg
54 kwargs.setdefault("SCT_ReadoutTool", acc.popToolsAndMerge(ITkStripReadoutToolCfg(flags)))
55
56 acc.addCondAlgo(CompFactory.SCT_ConfigurationCondAlg(name, **kwargs))
57 return acc
58
59
60def ITkStripDetectorElementCondAlgCfg(flags, name="ITkStripDetectorElementCondAlg", **kwargs):
61 kwargs.setdefault("DetManagerName", "ITkStrip")
62 kwargs.setdefault("ReadKey", "ITkStripAlignmentStore")
63 kwargs.setdefault("WriteKey", "ITkStripDetectorElementCollection")
64
65 acc = ITkStripAlignCondAlgCfg(flags)
66 acc.addCondAlgo(CompFactory.SCT_DetectorElementCondAlg(name, **kwargs))
67 return acc
68
69def ITkStripDetectorElementStatusCondAlgNoByteStreamErrorsCfg(flags, name = "ITkStripDetectorElementStatusCondAlgNoByteStreamErrors", **kwargs) :
70 '''
71 Condition alg to precompute the strip detector element status.
72 This algorithm does not consider the byte stream errors which are event data.
73 '''
74 acc = ComponentAccumulator()
75 if 'ConditionsSummaryTool' not in kwargs :
76 from SCT_ConditionsTools.ITkStripConditionsToolsConfig import ITkStripConditionsSummaryToolCfg
77 kwargs.setdefault("ConditionsSummaryTool", acc.popToolsAndMerge( ITkStripConditionsSummaryToolCfg(flags)))
78 kwargs.setdefault( "WriteKey", "ITkStripDetectorElementStatusNoByteStream")
79 acc.addCondAlgo( CompFactory.InDet.SiDetectorElementStatusCondAlg(name, **kwargs) )
80 return acc
81
82def ITkStripDetectorElementStatusAlgCfg(flags, name="ITkStripDetectorElementStatusAlg",**kwargs) :
83 '''
84 Algorithm which adds status from the strip bytestream to the strip status conditions data
85 '''
86 acc = ComponentAccumulator()
87 if 'ConditionsSummaryTool' not in kwargs :
88 from SCT_ConditionsTools.ITkStripConditionsToolsConfig import ITkStripDetectorElementStatusAddByteStreamErrorsToolCfg
89 # @TODO ITkStripDetectorElementStatusCondAlgNoByteStreamErrorsCfg should be moved to
90 # ITkStripDetectorElementStatusAddByteStreamErrorsToolCfg, but that would create
91 # circular dependencies..
93 kwargs.setdefault("ConditionsSummaryTool", acc.popToolsAndMerge(
94 ITkStripDetectorElementStatusAddByteStreamErrorsToolCfg(flags,
95 SCTDetElStatusCondDataBaseKey = "ITkStripDetectorElementStatusNoByteStream",
96 SCTDetElStatusEventDataBaseKey = ""
97 )))
98 kwargs.setdefault("WriteKey", "ITkStripDetectorElementStatus")
99
100 # not a conditions algorithm since it combines conditions data and data from the bytestream
101 acc.addEventAlgo( CompFactory.InDet.SiDetectorElementStatusAlg(name, **kwargs) )
102 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)