ATLAS Offline Software
Loading...
Searching...
No Matches
MuonCondAlgConfig.py
Go to the documentation of this file.
1# Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
2
3
4
5from AthenaConfiguration.AccumulatorCache import AccumulatorCache
6from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
7from AthenaConfiguration.ComponentFactory import CompFactory
8from IOVDbSvc.IOVDbSvcConfig import addFolders
9from AthenaConfiguration.Enums import LHCPeriod
10
11
12@AccumulatorCache
13def MdtCondDbAlgCfg(flags, **kwargs):
14 result = ComponentAccumulator()
15 if not flags.Muon.useMdtDcsData:
16 return result
17 folders = []
18
19 kwargs["isOnline"] = False
20 if flags.Input.isMC:
21 kwargs['isData'] = False
22 folders = ["/MDT/DCS/DROPPEDCH", "/MDT/DCS/PSLVCHSTATE"]
23
24 # TODO: probably will be used in the future but disable for now
25 kwargs['ReadKey_MC_DE'] = ''
26 kwargs['ReadKey_MC_DT'] = ''
27
28 # disable the rest
29 kwargs['ReadKey_DataR1_DC'] = ''
30 kwargs['ReadKey_DataR1_HV'] = ''
31 kwargs['ReadKey_DataR1_LV'] = ''
32 kwargs['ReadKey_DataR1_V0'] = ''
33 kwargs['ReadKey_DataR1_V1'] = ''
34 kwargs['ReadKey_DataR2_HV'] = ''
35 kwargs['ReadKey_DataR2_LV'] = ''
36 else:
37 kwargs['isData'] = True
38 kwargs['isRun1'] = flags.IOVDb.DatabaseInstance == 'COMP200'
39 kwargs['useRun1SetPoints'] = False
40 if kwargs['isRun1'] and kwargs['useRun1SetPoints']:
41 folders = ["/MDT/DCS/PSV0SETPOINTS", "/MDT/DCS/PSV1SETPOINTS"]
42
43 # disable the rest
44 kwargs['ReadKey_DataR1_DC'] = ''
45 kwargs['ReadKey_DataR1_HV'] = ''
46 kwargs['ReadKey_DataR1_LV'] = ''
47 kwargs['ReadKey_DataR2_HV'] = ''
48 kwargs['ReadKey_DataR2_LV'] = ''
49 if kwargs['isRun1']:
50 folders = ["/MDT/DCS/PSHVMLSTATE", "/MDT/DCS/PSLVCHSTATE", "/MDT/DCS/DROPPEDCH"]
51
52 # disable the rest
53 kwargs['ReadKey_DataR1_V0'] = ''
54 kwargs['ReadKey_DataR1_V1'] = ''
55 kwargs['ReadKey_DataR2_HV'] = ''
56 kwargs['ReadKey_DataR2_LV'] = ''
57 else:
58 folders = ["/MDT/DCS/HV", "/MDT/DCS/LV"]
59
60 # disable the rest
61 kwargs['ReadKey_DataR1_DC'] = ''
62 kwargs['ReadKey_DataR1_HV'] = ''
63 kwargs['ReadKey_DataR1_LV'] = ''
64 kwargs['ReadKey_DataR1_V0'] = ''
65 kwargs['ReadKey_DataR1_V1'] = ''
66
67 # disable MC folders
68 kwargs['ReadKey_MC_DC'] = ''
69 kwargs['ReadKey_MC_DE'] = ''
70 kwargs['ReadKey_MC_DT'] = ''
71 kwargs['ReadKey_MC_NC'] = ''
72
73 alg = CompFactory.Muon.MdtCondDbAlg(**kwargs)
74 result.merge( addFolders(flags, folders , detDb="DCS_OFL", className='CondAttrListCollection') )
75 result.addCondAlgo(alg, primary = True)
76 return result
77
78def RpcCondDbAlgCfg(flags, **kwargs):
79 result = ComponentAccumulator()
80 if flags.Common.isOnline:
81 return result
82
83 kwargs['isData'] = not flags.Input.isMC
84 alg = CompFactory.Muon.RpcCondDbAlg(**kwargs)
85
86 result.merge( addFolders(flags, ["/RPC/DQMF/ELEMENT_STATUS"], detDb="RPC_OFL", className='CondAttrListCollection') )
87 result.addCondAlgo(alg)
88 return result
89
90def CscCondDbAlgCfg(flags, **kwargs):
91 result = ComponentAccumulator()
92 pslope_from_db = False
93 folders = ["/CSC/FTHOLD", "/CSC/NOISE", "/CSC/PED", "/CSC/RMS", "/CSC/STAT", "/CSC/T0BASE", "/CSC/T0PHASE"]
94 scheme = "CSC_OFL"
95 kwargs['ReadKey_HV'] = '' # Never used at present
96 if flags.Common.isOnline:
97 kwargs["isOnline" ] = True
98 kwargs['isData' ] = True
99 kwargs['ReadKey_FT'] = '/CSC/FTHOLD' # 'ConditionsStore+' prefix not necessarily needed in ReadKey
100 kwargs['ReadKey_NO'] = '/CSC/NOISE'
101 kwargs['ReadKey_PD'] = '/CSC/PED'
102 if pslope_from_db:
103 kwargs['ReadKey_PS'] = '/CSC/PSLOPE'
104 kwargs['ReadKey_RM'] = '/CSC/RMS'
105 kwargs['ReadKey_ST'] = '/CSC/STAT'
106 kwargs['ReadKey_TB'] = ''
107 kwargs['ReadKey_TP'] = ''
108 folders = ["/CSC/ONL/FTHOLD", "/CSC/ONL/NOISE", "/CSC/ONL/PED", "/CSC/ONL/RMS", "/CSC/ONL/STAT"]
109 if pslope_from_db:
110 folders.append("/CSC/PSLOPE")
111 scheme = "CSC_ONL"
112 else:
113 if pslope_from_db:
114 folders.append("/CSC/PSLOPE")
115
116 kwargs["isOnline"] = False
117 if flags.Input.isMC:
118 kwargs['isData'] = False
119 else:
120 kwargs['isData'] = True
121 kwargs['isRun1'] = flags.IOVDb.DatabaseInstance == 'COMP200'
122 alg = CompFactory.Muon.CscCondDbAlg(**kwargs)
123 result.merge( addFolders(flags, folders , detDb=scheme, className='CondAttrListCollection') )
124 result.addCondAlgo(alg)
125 return result
126
127def TgcCondDbAlgCfg(flags,name="TgcCondDbAlg", **kwargs):
128 result = ComponentAccumulator()
129
130 the_alg = CompFactory.Muon.TgcCondDbAlg(name = name, **kwargs)
131 result.addCondAlgo(the_alg, primary = True)
132 return result
133
134def TgcEnergyThresholdCondAlgCfg(flags, name = "TgcEnergyThresholdCondAlg", **kwargs):
135 result = ComponentAccumulator()
136
137 the_alg = CompFactory.Muon.TgcDigitEnergyThreshCondAlg(name= name, **kwargs)
138 result.addCondAlgo(the_alg, primary = True)
139 return result
140
141def TgcDigitJitterCondAlgCfg(flags, name = "TgcDigitJitterCondAlg", **kwargs):
142 result = ComponentAccumulator()
143 the_alg = CompFactory.Muon.TgcDigitJitterCondAlg(name = name, **kwargs)
144 result.addCondAlgo(the_alg, primary = True)
145 return result
146
147def TgcDigitASDposCondAlgCfg(flags, name="TgcDigitASDposCondAlg", **kwargs):
148 result = ComponentAccumulator()
149 result.merge(addFolders(flags, ["/TGC/DIGIT/ASDPOS"], detDb="TGC_OFL", db="OFLP200", className="CondAttrListCollection"))
150 the_alg = CompFactory.Muon.TgcDigitASDposCondAlg(name = name, **kwargs)
151 result.addCondAlgo(the_alg, primary = True)
152 return result
153
154def TgcDigitTimeOffsetCondAlgCfg(flags, name = "TgcDigitTimeOffsetCondAlg", **kwargs):
155 result = ComponentAccumulator()
156 result.merge(addFolders(flags, ["/TGC/DIGIT/TOFFSET"], detDb="TGC_OFL", db="OFLP200", className="CondAttrListCollection"))
157 the_alg = CompFactory.Muon.TgcDigitTimeOffsetCondAlg(name = name, **kwargs)
158 result.addCondAlgo(the_alg, primary = True)
159 return result
160
161def TgcDigitCrosstalkCondAlgCfg(flags, name = "TgcDigitCrosstalkCondAlg", **kwargs):
162 result = ComponentAccumulator()
163 result.merge(addFolders(flags, ["/TGC/DIGIT/XTALK"], detDb="TGC_OFL", db="OFLP200", className="CondAttrListCollection"))
164 the_alg = CompFactory.Muon.TgcDigitCrosstalkCondAlg(name = name, **kwargs)
165 result.addCondAlgo(the_alg, primary = True)
166 return result
167
169 result = ComponentAccumulator()
170 result.merge(TgcDigitASDposCondAlgCfg(flags))
171 result.merge(TgcDigitTimeOffsetCondAlgCfg(flags))
172 result.merge(TgcDigitCrosstalkCondAlgCfg(flags))
173 return result
174 result.merge(TgcCondDbAlgCfg(flags))
175 result.merge(TgcEnergyThresholdCondAlgCfg(flags))
176 result.merge(TgcDigitJitterCondAlgCfg(flags))
177 return result
178
179
180@AccumulatorCache
181def NswCalibDbAlgCfg(flags, **kwargs):
182 result = ComponentAccumulator()
183
184 kwargs.setdefault("MmT0FileName","")
185 kwargs.setdefault("sTgcT0FileName","")
186
187 kwargs.setdefault("loadMmT0Data",flags.Muon.Calib.applyMmT0Correction)
188 kwargs.setdefault("loadsTgcT0Data", flags.Muon.Calib.applysTgcT0Correction)
189 if(kwargs["loadMmT0Data"] and not kwargs['MmT0FileName'] ):
190 kwargs.setdefault('ReadKey_MM_T0', "/MDT/MM/T0")
191 kwargs.setdefault('ReadKey_MM_T0', "")
192
193 if(kwargs["loadsTgcT0Data"] and not kwargs['sTgcT0FileName']):
194 kwargs['ReadKey_STGC_T0'] = "/TGC/NSW/T0"
195 kwargs.setdefault('ReadKey_STGC_T0', "")
196
197
198
199 if flags.Common.isOnline:
200 kwargs['isData'] = True
201
202
203 scheme = "MDT_ONL"
204
205
206 folders = ["/MDT/Onl/MM/TIME/SIDEA", "/MDT/Onl/MM/CHARGE/SIDEA", \
207 "/MDT/Onl/MM/TIME/SIDEC", "/MDT/Onl/MM/CHARGE/SIDEC"]
208 result.merge( addFolders(flags, folders, detDb=scheme, className='CondAttrListCollection') )
209 if(kwargs['ReadKey_MM_T0']):
210 result.merge(addFolders(flags, [kwargs['ReadKey_MM_T0']], detDb=scheme, className='CondAttrListCollection', tag="MmT0SideAc-Nov2023"))
211
212 kwargs["ReadKey_MM_SIDEA_TDO"] = "/MDT/Onl/MM/TIME/SIDEA"
213 kwargs["ReadKey_MM_SIDEC_TDO"] = "/MDT/Onl/MM/TIME/SIDEC"
214 kwargs["ReadKey_MM_SIDEA_PDO"] = "/MDT/Onl/MM/CHARGE/SIDEA"
215 kwargs["ReadKey_MM_SIDEC_PDO"] = "/MDT/Onl/MM/CHARGE/SIDEC"
216
217
218
219
220 scheme = "TGC_ONL"
221
222
223 folders = ["/TGC/Onl/NSW/TIME/SIDEA", "/TGC/Onl/NSW/CHARGE/SIDEA", \
224 "/TGC/Onl/NSW/TIME/SIDEC", "/TGC/Onl/NSW/CHARGE/SIDEC"]
225 result.merge( addFolders(flags, folders , detDb=scheme, className='CondAttrListCollection') )
226
227 kwargs["ReadKey_STGC_SIDEA_TDO"] = "/TGC/Onl/NSW/TIME/SIDEA"
228 kwargs["ReadKey_STGC_SIDEC_TDO"] = "/TGC/Onl/NSW/TIME/SIDEC"
229 kwargs["ReadKey_STGC_SIDEA_PDO"] = "/TGC/Onl/NSW/CHARGE/SIDEA"
230 kwargs["ReadKey_STGC_SIDEC_PDO"] = "/TGC/Onl/NSW/CHARGE/SIDEC"
231
232
233 elif flags.Input.isMC:
234 kwargs['isData'] = False
235 kwargs.setdefault('processThresholds', False)
236
237
238 scheme = "MDT_OFL"
239
240
241 folders = ["/MDT/MM/TIME/SIDEA" , "/MDT/MM/CHARGE/SIDEA" , \
242 "/MDT/MM/TIME/SIDEC" , "/MDT/MM/CHARGE/SIDEC" ]
243 if kwargs['processThresholds']:
244 folders.append("/MDT/MM/THR/SIDEA")
245 folders.append("/MDT/MM/THR/SIDEC")
246 result.merge( addFolders(flags, folders, detDb=scheme, className='CondAttrListCollection') )
247 if(kwargs['ReadKey_MM_T0']):
248 result.merge(addFolders(flags, [kwargs['ReadKey_MM_T0']], detDb=scheme, className='CondAttrListCollection' , tag="MmT0SideAc-Nov2023"))
249
250
251 scheme = "TGC_OFL"
252
253
254 folders = ["/TGC/NSW/TIME/SIDEA", "/TGC/NSW/CHARGE/SIDEA", \
255 "/TGC/NSW/TIME/SIDEC", "/TGC/NSW/CHARGE/SIDEC"]
256 if kwargs['processThresholds']:
257 folders.append("/TGC/NSW/THR/SIDEA")
258 folders.append("/TGC/NSW/THR/SIDEC")
259 result.merge( addFolders(flags, folders , detDb=scheme, className='CondAttrListCollection') )
260
261
262 else:
263 kwargs['isData'] = True
264
265
266 scheme = "MDT_OFL"
267
268
269 folders = ["/MDT/MM/TIME/SIDEA", "/MDT/MM/CHARGE/SIDEA", \
270 "/MDT/MM/TIME/SIDEC", "/MDT/MM/CHARGE/SIDEC"]
271 result.merge( addFolders(flags, folders, detDb=scheme, className='CondAttrListCollection') )
272 if(kwargs['ReadKey_MM_T0']):
273 result.merge(addFolders(flags, [kwargs['ReadKey_MM_T0']], detDb=scheme, className='CondAttrListCollection'))
274
275
276
277 scheme = "TGC_OFL"
278
279
280 folders = ["/TGC/NSW/TIME/SIDEA", "/TGC/NSW/CHARGE/SIDEA", \
281 "/TGC/NSW/TIME/SIDEC", "/TGC/NSW/CHARGE/SIDEC"]
282 result.merge( addFolders(flags, folders , detDb=scheme, className='CondAttrListCollection') )
283
284 if kwargs["ReadKey_STGC_T0"]:
285 result.merge(addFolders(flags, [kwargs["ReadKey_STGC_T0"]], detDb=scheme, className='CondAttrListCollection'))
286
287 result.addCondAlgo(CompFactory.Muon.NswCalibDbAlg(**kwargs))
288 return result
289
290def NswPassivationDbAlgCfg(flags, **kwargs):
291 acc = ComponentAccumulator()
292
293 acc.merge(addFolders(flags, "/MDT/MM/PASSIVATION", "MDT_OFL", className="CondAttrListCollection"))
294 alg = CompFactory.Muon.NswPassivationDbAlg("NswPassivationDbAlg", **kwargs)
295 acc.addCondAlgo(alg)
296 return acc
297
298def MuonStationIntersectCondAlgCfg(flags, name='MuonStationIntersectCondAlg',**kwargs):
299 # Has dependency IdHelperTool (which we ignore for now)
300 result = ComponentAccumulator()
301 result.merge(MdtCondDbAlgCfg(flags))
302 if not flags.Muon.useMdtDcsData: kwargs.setdefault("MdtCondKey","")
303 muon_station_intersect_condalg = CompFactory.MuonStationIntersectCondAlg(name=name, **kwargs)
304 result.addCondAlgo(muon_station_intersect_condalg, primary=True)
305 return result
306
307def NswDcsDbAlgCfg(flags, **kwargs):
308 acc = ComponentAccumulator()
309 if flags.GeoModel.Run < LHCPeriod.Run3: return acc
310 if flags.Input.isMC: return acc
311 kwargs.setdefault("LoadTdaq", False)
312 kwargs.setdefault("LoadEltx", False)
313 acc.merge(addFolders(flags, "/MMG/DCS/HV", "DCS_OFL", className="CondAttrListCollection"))
314 acc.merge(addFolders(flags, "/STG/DCS/HV", "DCS_OFL", className="CondAttrListCollection"))
315
316 if(kwargs["LoadTdaq"]):
317 kwargs.setdefault("ReadKey_MMG_TDAQ","/MDT/MM/ELinks")
318 kwargs.setdefault("ReadKey_STG_TDAQ","/TGC/NSW/ELinks")
319 acc.merge(addFolders(flags, "/MDT/MM/ELinks", detDb="MDT_OFL", className="CondAttrListCollection", tag="MmElinks2023-TEST-01"))
320 acc.merge(addFolders(flags, "/TGC/NSW/ELinks", detDb="TGC_OFL", className="CondAttrListCollection", tag="sTgcElinks2023-TEST-01"))
321 kwargs.setdefault("ReadKey_MMG_TDAQ","/MDT/MM/ELinks")
322 kwargs.setdefault("ReadKey_STG_TDAQ","/TGC/NSW/Elinks")
323
324 if(kwargs["LoadEltx"]):
325 kwargs.setdefault("ReadKey_MMG_ELTX","/MMG/DCS/TSELTX")
326 kwargs.setdefault("ReadKey_STG_ELTX","/STG/DCS/TSELTX")
327 acc.merge(addFolders(flags, kwargs["ReadKey_MMG_ELTX"], "DCS_OFL", className="CondAttrListCollection"))
328 acc.merge(addFolders(flags, kwargs["ReadKey_STG_ELTX"], "DCS_OFL", className="CondAttrListCollection"))
329 kwargs.setdefault("ReadKey_MMG_ELTX","")
330 kwargs.setdefault("ReadKey_STG_ELTX","")
331
332
333 alg = CompFactory.Muon.NswDcsDbAlg("NswDcsDbAlg", **kwargs)
334 acc.addCondAlgo(alg)
335 return acc
336
337
338def MmDigitEffiCondAlgCfg(flags, **kwargs):
339 acc = ComponentAccumulator()
340 if not flags.Input.isMC: return acc
341
342 if (kwargs["readFromJSON"]):
343 kwargs["ReadKey"] = ""
344 else:
345 kwargs.setdefault("ReadKey","/MDT/MM/EFFMAP")
346 acc.merge(addFolders(flags, kwargs["ReadKey"],"MDT_OFL", className="CondAttrListCollection", tag="MMEffMap_2024DataTillEndOfJuly"))
347
348 alg = CompFactory.Muon.MmDigitEffiCondAlg("MmDigitEffiCondAlg", **kwargs)
349 acc.addCondAlgo(alg)
350 return acc
351
352def sTgcDigitEffiCondAlgCfg(flags, **kwargs):
353 acc = ComponentAccumulator()
354 if not flags.Input.isMC: return acc
355
356 if (kwargs["readFromJSON"]):
357 kwargs["ReadKey"] = ""
358 else:
359 kwargs.setdefault("ReadKey","/TGC/NSW/EFFMAP")
360 acc.merge(addFolders(flags, kwargs["ReadKey"],"TGC_OFL", className="CondAttrListCollection",tag="sTGCEffMap_2024DataTillEndOfJuly"))
361
362 alg = CompFactory.Muon.sTgcDigitEffiCondAlg("sTgcDigitEffiCondAlg", **kwargs)
363 acc.addCondAlgo(alg)
364 return acc
365
366def RpcDigitEffiCondAlgCfg(flags, **kwargs):
367 acc = ComponentAccumulator()
368 if not flags.Input.isMC: return acc
369
370 #There is currently no database folder for the RPC efficiency maps
371 # So we can set the data base read key to empty
372 kwargs.setdefault("ReadKey","")
373
374 alg = CompFactory.Muon.RpcDigitEffiCondAlg("RpcDigitEffiCondAlg", **kwargs)
375 acc.addCondAlgo(alg)
376 return acc
if(pathvar)
TgcDigitASDposCondAlgCfg(flags, name="TgcDigitASDposCondAlg", **kwargs)
MdtCondDbAlgCfg(flags, **kwargs)
sTgcDigitEffiCondAlgCfg(flags, **kwargs)
TgcCondDbAlgCfg(flags, name="TgcCondDbAlg", **kwargs)
CscCondDbAlgCfg(flags, **kwargs)
NswDcsDbAlgCfg(flags, **kwargs)
TgcDigitTimeOffsetCondAlgCfg(flags, name="TgcDigitTimeOffsetCondAlg", **kwargs)
RpcCondDbAlgCfg(flags, **kwargs)
TgcDigitJitterCondAlgCfg(flags, name="TgcDigitJitterCondAlg", **kwargs)
NswPassivationDbAlgCfg(flags, **kwargs)
NswCalibDbAlgCfg(flags, **kwargs)
TgcDigitCrosstalkCondAlgCfg(flags, name="TgcDigitCrosstalkCondAlg", **kwargs)
TgcEnergyThresholdCondAlgCfg(flags, name="TgcEnergyThresholdCondAlg", **kwargs)
MmDigitEffiCondAlgCfg(flags, **kwargs)
MuonStationIntersectCondAlgCfg(flags, name='MuonStationIntersectCondAlg', **kwargs)
RpcDigitEffiCondAlgCfg(flags, **kwargs)