4from AthenaConfiguration.ComponentAccumulator
import ComponentAccumulator
5from AthenaConfiguration.ComponentFactory
import CompFactory
6from AthenaConfiguration.Enums
import BeamType, LHCPeriod
7from IOVDbSvc.IOVDbSvcConfig
import addFoldersSplitOnline
11 acc = ComponentAccumulator()
15 from PixelConditionsAlgorithms.PixelConditionsConfig
import (
16 PixelChargeCalibCondCfg, PixelOfflineCalibCondAlgCfg)
17 if (
'SCT' in flags.Digitization.DoFastDigi
and
18 'Pixel' not in flags.Digitization.DoFastDigi):
19 acc.merge(PixelChargeCalibCondCfg(flags, ReadKey=
""))
21 acc.merge(PixelChargeCalibCondCfg(flags))
22 acc.merge(PixelOfflineCalibCondAlgCfg(flags))
24 if "PixelLorentzAngleTool" not in kwargs:
25 from SiLorentzAngleTool.PixelLorentzAngleConfig
import (
26 PixelLorentzAngleToolCfg)
27 kwargs.setdefault(
"PixelLorentzAngleTool", acc.popToolsAndMerge(
28 PixelLorentzAngleToolCfg(flags)))
30 if "SCTLorentzAngleTool" not in kwargs:
31 from SiLorentzAngleTool.SCT_LorentzAngleConfig
import (
32 SCT_LorentzAngleToolCfg)
33 kwargs.setdefault(
"SCTLorentzAngleTool", acc.popToolsAndMerge(
34 SCT_LorentzAngleToolCfg(flags)))
36 acc.setPrivateTools(CompFactory.InDet.ClusterMakerTool(name, **kwargs))
41 acc = ComponentAccumulator()
43 from PixelConditionsAlgorithms.ITkPixelConditionsConfig
import (
44 ITkPixelChargeCalibCondAlgCfg)
48 acc.merge(ITkPixelChargeCalibCondAlgCfg(flags))
50 if "PixelLorentzAngleTool" not in kwargs:
51 from SiLorentzAngleTool.ITkPixelLorentzAngleConfig
import (
52 ITkPixelLorentzAngleToolCfg)
53 kwargs.setdefault(
"PixelLorentzAngleTool", acc.popToolsAndMerge(
54 ITkPixelLorentzAngleToolCfg(flags)))
56 if "SCTLorentzAngleTool" not in kwargs:
57 from SiLorentzAngleTool.ITkStripLorentzAngleConfig
import (
58 ITkStripLorentzAngleToolCfg)
59 kwargs.setdefault(
"SCTLorentzAngleTool", acc.popToolsAndMerge(
60 ITkStripLorentzAngleToolCfg(flags)))
62 acc.setPrivateTools(CompFactory.InDet.ClusterMakerTool(name, **kwargs))
68 from PixelGeoModel.PixelGeoModelConfig
import PixelReadoutGeometryCfg
69 acc = PixelReadoutGeometryCfg(flags)
71 kwargs.setdefault(
"PixelDetElStatus",
"PixelDetectorElementStatus")
73 if kwargs[
"PixelDetElStatus"] !=
"":
74 from PixelConditionsAlgorithms.PixelConditionsConfig
import (
75 PixelDetectorElementStatusAlgCfg)
76 acc.merge(PixelDetectorElementStatusAlgCfg(flags))
78 if "PixelConditionsSummaryTool" not in kwargs:
79 from PixelConditionsTools.PixelConditionsSummaryConfig
import (
80 PixelConditionsSummaryCfg)
81 kwargs.setdefault(
"PixelConditionsSummaryTool", acc.popToolsAndMerge(
82 PixelConditionsSummaryCfg(flags)))
86 kwargs.setdefault(
"CheckDuplicatedRDO",
87 (len(flags.Input.ProjectName) >= 6
and
88 flags.Input.ProjectName[:6] ==
"data15"))
90 acc.setPrivateTools(CompFactory.InDet.PixelRDOTool(name, **kwargs))
96 from PixelGeoModelXml.ITkPixelGeoModelConfig
import (
97 ITkPixelReadoutGeometryCfg)
98 acc = ITkPixelReadoutGeometryCfg(flags)
100 kwargs.setdefault(
"PixelConditionsSummaryTool",
None)
101 if "PixelDetElStatus" not in kwargs :
102 if not flags.Trigger.doHLT :
103 from PixelConditionsAlgorithms.ITkPixelConditionsConfig
import (
104 ITkPixelDetectorElementStatusAlgCfg)
105 acc.merge(ITkPixelDetectorElementStatusAlgCfg(flags))
106 kwargs.setdefault(
"PixelDetElStatus",
"ITkPixelDetectorElementStatus")
108 kwargs.setdefault(
"PixelDetEleCollKey",
"ITkPixelDetectorElementCollection")
109 kwargs.setdefault(
"CheckGanged",
False)
110 kwargs.setdefault(
"isITk",
True)
112 acc.setPrivateTools(CompFactory.InDet.PixelRDOTool(name, **kwargs))
121 acc = ComponentAccumulator()
123 kwargs.setdefault(
"globalPosAlg", acc.popToolsAndMerge(
125 kwargs.setdefault(
"PixelRDOTool", acc.popToolsAndMerge(
128 acc.setPrivateTools(CompFactory.InDet.MergedPixelsTool(name, **kwargs))
133 acc = ComponentAccumulator()
139 acc.setPrivateTools(CompFactory.InDet.MergedPixelsTool(name, **kwargs))
144 acc = ComponentAccumulator()
146 kwargs.setdefault(
"globalPosAlg", acc.popToolsAndMerge(
148 kwargs.setdefault(
"PixelRDOTool", acc.popToolsAndMerge(
151 kwargs.setdefault(
"PixelChargeCalibCondData",
"ITkPixelChargeCalibCondData")
152 kwargs.setdefault(
"PixelOfflineCalibData",
"")
154 acc.setPrivateTools(CompFactory.InDet.MergedPixelsTool(name, **kwargs))
159 flags, name="PixelClusterNnCondAlg", trackNetwork=False, **kwargs):
160 acc = ComponentAccumulator()
163 "NumberParticles_NoTrack/",
164 "ImpactPoints1P_NoTrack/",
165 "ImpactPoints2P_NoTrack/",
166 "ImpactPoints3P_NoTrack/",
167 "ImpactPointErrorsX1_NoTrack/",
168 "ImpactPointErrorsX2_NoTrack/",
169 "ImpactPointErrorsX3_NoTrack/",
170 "ImpactPointErrorsY1_NoTrack/",
171 "ImpactPointErrorsY2_NoTrack/",
172 "ImpactPointErrorsY3_NoTrack/"]
175 nn_names = [elm.replace(
'_NoTrack',
'')
for elm
in nn_names]
177 kwargs.setdefault(
"NetworkNames", nn_names)
178 kwargs.setdefault(
"GetInputsInfo",
True)
179 kwargs.setdefault(
"WriteKey", (
"PixelClusterNN" if not trackNetwork
180 else "PixelClusterNNWithTrack"))
182 acc.merge(addFoldersSplitOnline(
184 "/PIXEL/Onl/PixelClustering/PixelClusNNCalib",
185 "/PIXEL/PixelClustering/PixelClusNNCalib",
186 className=
'CondAttrListCollection'))
188 if "NetworkToHistoTool" not in kwargs:
189 from TrkConfig.TrkNeuralNetworkUtilsConfig
import (
190 NeuralNetworkToHistoToolCfg)
191 kwargs.setdefault(
"NetworkToHistoTool", acc.popToolsAndMerge(
192 NeuralNetworkToHistoToolCfg(flags)))
194 acc.addCondAlgo(CompFactory.InDet.TTrainedNetworkCondAlg(name, **kwargs))
199 flags, name="PixelClusterNnWithTrackCondAlg"):
204 acc = ComponentAccumulator()
206 acc.merge(addFoldersSplitOnline(
208 "/PIXEL/Onl/PixelClustering/PixelNNCalibJSON",
209 "/PIXEL/PixelClustering/PixelNNCalibJSON",
210 className=
"CondAttrListCollection"))
212 kwargs.setdefault(
"WriteKey",
"PixelClusterNNJSON")
214 acc.addCondAlgo(CompFactory.InDet.LWTNNCondAlg(name, **kwargs))
219 from AthOnnxComps.OnnxRuntimeSvcConfig
import OnnxRuntimeSvcCfg
220 acc = OnnxRuntimeSvcCfg(flags)
221 kwargs.setdefault(
"WriteKey",
"PixelClusterNNONNX")
222 acc.addCondAlgo(CompFactory.InDet.OnnxNNCondAlg(name, **kwargs))
227 from PixelConditionsAlgorithms.PixelConditionsConfig
import (
228 PixelChargeCalibCondCfg)
229 acc = PixelChargeCalibCondCfg(flags)
231 useONNX = kwargs.pop(
"useONNX",
False)
233 if flags.GeoModel.Run
is LHCPeriod.Run1:
238 for key
in [
"NumberNetworkPath",
"PositionNetwork1Path",
239 "PositionNetwork2Path",
"PositionNetwork3Path"]:
241 onnxKwargs[key] = kwargs.pop(key)
242 missing = [key
for key
in [
"NumberNetworkPath",
"PositionNetwork1Path",
243 "PositionNetwork2Path",
"PositionNetwork3Path"]
244 if key
not in onnxKwargs]
247 f
"NnClusterizationFactoryCfg: missing required ONNX network paths when "
248 f
"useONNX=True: {missing}")
253 if "PixelLorentzAngleTool" not in kwargs:
254 from SiLorentzAngleTool.PixelLorentzAngleConfig
import (
255 PixelLorentzAngleToolCfg)
256 kwargs.setdefault(
"PixelLorentzAngleTool", acc.popToolsAndMerge(
257 PixelLorentzAngleToolCfg(flags)))
259 kwargs.setdefault(
"doRunI", flags.GeoModel.Run
is LHCPeriod.Run1)
260 kwargs.setdefault(
"useToT",
False)
261 kwargs.setdefault(
"useRecenteringNNWithoutTracks", (
262 flags.GeoModel.Run
is LHCPeriod.Run1))
263 kwargs.setdefault(
"useRecenteringNNWithTracks",
False)
264 kwargs.setdefault(
"correctLorShiftBarrelWithoutTracks", 0)
265 kwargs.setdefault(
"correctLorShiftBarrelWithTracks", (
266 0.03
if flags.GeoModel.Run
is LHCPeriod.Run1
else 0.))
267 kwargs.setdefault(
"useTTrainedNetworks",
268 flags.GeoModel.Run
is LHCPeriod.Run1)
269 kwargs.setdefault(
"NnCollectionReadKey", (
270 "PixelClusterNN" if flags.GeoModel.Run
is LHCPeriod.Run1
else ""))
271 kwargs.setdefault(
"NnCollectionWithTrackReadKey", (
272 "PixelClusterNNWithTrack" if flags.GeoModel.Run
is LHCPeriod.Run1
274 kwargs.setdefault(
"NnCollectionJSONReadKey", (
275 "" if (flags.GeoModel.Run
is LHCPeriod.Run1
or useONNX)
276 else "PixelClusterNNJSON"))
278 kwargs.setdefault(
"useONNX", useONNX)
279 kwargs.setdefault(
"NnCollectionONNXReadKey",
280 "PixelClusterNNONNX" if useONNX
else "")
283 CompFactory.InDet.NnClusterizationFactory(name, **kwargs))
288 acc = ComponentAccumulator()
291 from PixelConditionsAlgorithms.PixelConditionsConfig
import (
292 PixelChargeCalibCondCfg)
293 acc.merge(PixelChargeCalibCondCfg(flags))
298 from SiLorentzAngleTool.PixelLorentzAngleConfig
import (
299 PixelLorentzAngleToolCfg)
300 kwargs[
"PixelLorentzAngleTool"] = acc.popToolsAndMerge(
301 PixelLorentzAngleToolCfg(flags))
303 kwargs[
"useToT"] =
False
304 kwargs[
"NnCollectionReadKey"] =
"PixelClusterNN"
305 kwargs[
"NnCollectionWithTrackReadKey"] =
"PixelClusterNNWithTrack"
308 CompFactory.InDet.NnClusterizationFactory(name, **kwargs))
312 from PixelConditionsAlgorithms.ITkPixelConditionsConfig
import (
313 ITkPixelChargeCalibCondAlgCfg)
314 acc = ITkPixelChargeCalibCondAlgCfg(flags)
318 if "PixelLorentzAngleTool" not in kwargs:
319 from SiLorentzAngleTool.ITkPixelLorentzAngleConfig
import (
320 ITkPixelLorentzAngleToolCfg)
321 kwargs.setdefault(
"PixelLorentzAngleTool", acc.popToolsAndMerge(
322 ITkPixelLorentzAngleToolCfg(flags)))
324 kwargs.setdefault(
"useToT",
False)
325 kwargs.setdefault(
"NnCollectionReadKey",
"")
326 kwargs.setdefault(
"NnCollectionWithTrackReadKey",
"")
327 kwargs.setdefault(
"NnCollectionJSONReadKey",
"PixelClusterNNJSON")
329 kwargs.setdefault(
"PixelChargeCalibCondData",
"ITkPixelChargeCalibCondData")
332 CompFactory.InDet.NnClusterizationFactory(name, **kwargs))
337 flags, name="NnPixelClusterSplitProbTool", **kwargs):
338 acc = ComponentAccumulator()
340 kwargs.setdefault(
"NnClusterizationFactory", acc.popToolsAndMerge(
342 kwargs.setdefault(
"PriorMultiplicityContent", [1, 1, 1])
343 kwargs.setdefault(
"useBeamSpotInfo", flags.Tracking.useBeamSpotInfoNN)
346 CompFactory.InDet.NnPixelClusterSplitProbTool(name, **kwargs))
350 flags, name="ITkNnPixelClusterSplitProbTool", **kwargs):
351 acc = ComponentAccumulator()
353 kwargs.setdefault(
"NnClusterizationFactory", acc.popToolsAndMerge(
355 kwargs.setdefault(
"PriorMultiplicityContent", [1, 1, 1])
356 kwargs.setdefault(
"useBeamSpotInfo", flags.Tracking.useBeamSpotInfoNN)
359 CompFactory.InDet.NnPixelClusterSplitProbTool(name, **kwargs))
364 flags, name="InDetPixelGangedAmbiguitiesFinder", **kwargs):
366 from PixelGeoModel.PixelGeoModelConfig
import PixelReadoutGeometryCfg
367 acc = PixelReadoutGeometryCfg(flags)
369 CompFactory.InDet.PixelGangedAmbiguitiesFinder(name, **kwargs))
374 flags, name="ITkPixelGangedAmbiguitiesFinder", **kwargs):
376 from PixelGeoModelXml.ITkPixelGeoModelConfig
import (
377 ITkPixelReadoutGeometryCfg)
378 acc = ITkPixelReadoutGeometryCfg(flags)
379 kwargs.setdefault(
"PixelDetEleCollKey",
"ITkPixelDetectorElementCollection")
381 CompFactory.InDet.PixelGangedAmbiguitiesFinder(name, **kwargs))
386 flags, name="InDetSCT_ClusteringTool", **kwargs):
388 from SCT_GeoModel.SCT_GeoModelConfig
import SCT_ReadoutGeometryCfg
389 acc = SCT_ReadoutGeometryCfg(flags)
391 kwargs.setdefault(
"SCTDetElStatus",
392 "SCTDetectorElementStatusWithoutFlagged")
394 kwargs.setdefault(
"doSimplePositionWidthCalculation",
395 flags.InDet.doSCTSimpleWidth)
397 if "conditionsTool" not in kwargs:
398 from SCT_ConditionsTools.SCT_ConditionsToolsConfig
import (
399 SCT_ConditionsSummaryToolCfg)
400 kwargs.setdefault(
"conditionsTool", acc.popToolsAndMerge(
401 SCT_ConditionsSummaryToolCfg(flags, withFlaggedCondTool=
False)))
403 if "LorentzAngleTool" not in kwargs:
404 from SiLorentzAngleTool.SCT_LorentzAngleConfig
import (
405 SCT_LorentzAngleToolCfg)
406 kwargs.setdefault(
"LorentzAngleTool", acc.popToolsAndMerge(
407 SCT_LorentzAngleToolCfg(flags)))
409 kwargs.setdefault(
"globalPosAlg", acc.popToolsAndMerge(
412 if flags.InDet.selectSCTIntimeHits:
413 coll_25ns = (flags.Beam.BunchSpacing <= 25
and
414 flags.Beam.Type
is BeamType.Collisions)
415 kwargs.setdefault(
"timeBins",
"01X" if coll_25ns
else "X1X")
417 acc.setPrivateTools(CompFactory.InDet.SCT_ClusteringTool(name, **kwargs))
422 acc = ComponentAccumulator()
424 if "conditionsTool" not in kwargs:
425 from SCT_ConditionsTools.SCT_ConditionsToolsConfig
import (
426 SCT_ConditionsSummaryToolCfg)
427 kwargs.setdefault(
"conditionsTool", acc.popToolsAndMerge(
428 SCT_ConditionsSummaryToolCfg(flags, withFlaggedCondTool=
False, withTdaqTool=
False)))
430 kwargs.setdefault(
"SCTDetElStatus",
"")
433 kwargs.setdefault(
"doSimplePositionWidthCalculation",
False)
435 acc.setPrivateTools(acc.popToolsAndMerge(
441 flags, name="ITkStripClusteringTool", **kwargs):
443 from StripGeoModelXml.ITkStripGeoModelConfig
import (
444 ITkStripReadoutGeometryCfg)
445 acc = ITkStripReadoutGeometryCfg(flags)
447 kwargs.setdefault(
"SCTDetEleCollKey",
"ITkStripDetectorElementCollection")
448 kwargs.setdefault(
"doSimplePositionWidthCalculation",
True)
450 kwargs.setdefault(
"conditionsTool",
None)
451 if "SCTDetElStatus" not in kwargs :
452 if not flags.Trigger.doHLT :
453 from SCT_ConditionsAlgorithms.ITkStripConditionsAlgorithmsConfig
import (
454 ITkStripDetectorElementStatusAlgCfg)
455 acc.merge(ITkStripDetectorElementStatusAlgCfg(flags))
456 kwargs.setdefault(
"SCTDetElStatus",
"ITkStripDetectorElementStatus")
458 if "LorentzAngleTool" not in kwargs:
459 from SiLorentzAngleTool.ITkStripLorentzAngleConfig
import (
460 ITkStripLorentzAngleToolCfg)
461 kwargs.setdefault(
"LorentzAngleTool", acc.popToolsAndMerge(
462 ITkStripLorentzAngleToolCfg(flags)))
464 kwargs.setdefault(
"globalPosAlg", acc.popToolsAndMerge(
467 if flags.ITk.selectStripIntimeHits:
468 coll_25ns = (flags.Beam.BunchSpacing <= 25
and
469 flags.Beam.Type
is BeamType.Collisions)
470 kwargs.setdefault(
"timeBins",
"01X" if coll_25ns
else "X1X")
472 acc.setPrivateTools(CompFactory.InDet.SCT_ClusteringTool(name, **kwargs))
477 flags, name='TruthClusterizationFactory', **kwargs):
478 acc = ComponentAccumulator()
480 kwargs.setdefault(
"discardPUHits", flags.Digitization.PileUp)
481 kwargs.setdefault(
"truthClusterSplittingEff", flags.Tracking.TruthClusterSplittingEff)
483 CompFactory.InDet.TruthClusterizationFactory(name, **kwargs))
488 flags, name='ITkTruthClusterizationFactory', **kwargs):
489 acc = ComponentAccumulator()
491 kwargs.setdefault(
"InputSDOMap",
"ITkPixelSDO_Map")
492 kwargs.setdefault(
"discardPUHits", flags.Digitization.PileUp)
493 kwargs.setdefault(
"truthClusterSplittingEff", flags.Tracking.TruthClusterSplittingEff)
495 CompFactory.InDet.TruthClusterizationFactory(name, **kwargs))
500 flags, name="TruthPixelClusterSplitProbTool", **kwargs):
501 acc = ComponentAccumulator()
502 kwargs.setdefault(
"PriorMultiplicityContent", [1, 1, 1])
503 kwargs.setdefault(
"NnClusterizationFactory", acc.popToolsAndMerge(
506 CompFactory.InDet.TruthPixelClusterSplitProbTool(name, **kwargs))
511 flags, name="ITkTruthPixelClusterSplitProbTool", **kwargs):
512 acc = ComponentAccumulator()
513 kwargs.setdefault(
"PriorMultiplicityContent", [1, 1, 1])
514 kwargs.setdefault(
"NnClusterizationFactory", acc.popToolsAndMerge(
517 CompFactory.InDet.TruthPixelClusterSplitProbTool(name, **kwargs))
522 ca = ComponentAccumulator()
523 from InDetConfig.SiClusterizationToolConfig
import ITkPixelRDOToolCfg
525 alg = CompFactory.InDet.HitsToxAODCopier(PixelRDOTool=tool, PixelRDOContainerKey=
"ITkPixelRDOs")
528 from OutputStreamAthenaPool.OutputStreamConfig
import addToESD, addToAOD
530 toRecod = [
"xAOD::BaseContainer#PixelHits",
"xAOD::AuxContainerBase#PixelHitsAux.col.row.tot.eta_module.phi_module.layer_disk.barrel_ec.detid",
531 "xAOD::BaseContainer#StripHits",
"xAOD::AuxContainerBase#StripHitsAux.strip.side.eta_module.phi_module.layer_disk.barrel_ec.detid" ]
532 ca.merge(addToAOD(flags, toRecod))
533 ca.merge(addToESD(flags, toRecod))