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)))
258 kwargs.setdefault(
"useXPitches",
True if flags.GeoModel.Run >= LHCPeriod.Run4
else False)
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)
316 useONNX = flags.Tracking.useONNXPixelNN
318 folder = flags.Tracking.pixelNNONNXModelsFolder
320 NumberNetworkPath=folder +
'number.onnx',
321 PositionNetwork1Path=folder +
'pos1.onnx',
322 PositionNetwork2Path=folder +
'pos2.onnx',
323 PositionNetwork3Path=folder +
'pos3.onnx'))
327 if "PixelLorentzAngleTool" not in kwargs:
328 from SiLorentzAngleTool.ITkPixelLorentzAngleConfig
import (
329 ITkPixelLorentzAngleToolCfg)
330 kwargs.setdefault(
"PixelLorentzAngleTool", acc.popToolsAndMerge(
331 ITkPixelLorentzAngleToolCfg(flags)))
333 kwargs.setdefault(
"useToT",
False)
334 kwargs.setdefault(
"NnCollectionReadKey",
"")
335 kwargs.setdefault(
"NnCollectionWithTrackReadKey",
"")
336 kwargs.setdefault(
"NnCollectionJSONReadKey",
337 "" if useONNX
else "PixelClusterNNJSON")
338 kwargs.setdefault(
"useONNX", useONNX)
339 kwargs.setdefault(
"NnCollectionONNXReadKey",
340 "PixelClusterNNONNX" if useONNX
else "")
342 kwargs.setdefault(
"useXPitches", useONNX)
344 kwargs.setdefault(
"PixelChargeCalibCondData",
"ITkPixelChargeCalibCondData")
347 CompFactory.InDet.NnClusterizationFactory(name, **kwargs))
352 flags, name="NnPixelClusterSplitProbTool", **kwargs):
353 acc = ComponentAccumulator()
355 kwargs.setdefault(
"NnClusterizationFactory", acc.popToolsAndMerge(
357 kwargs.setdefault(
"PriorMultiplicityContent", [1, 1, 1])
358 kwargs.setdefault(
"useBeamSpotInfo", flags.Tracking.useBeamSpotInfoNN)
361 CompFactory.InDet.NnPixelClusterSplitProbTool(name, **kwargs))
365 flags, name="ITkNnPixelClusterSplitProbTool", **kwargs):
366 acc = ComponentAccumulator()
368 kwargs.setdefault(
"NnClusterizationFactory", acc.popToolsAndMerge(
370 kwargs.setdefault(
"PriorMultiplicityContent", [1, 1, 1])
371 kwargs.setdefault(
"useBeamSpotInfo", flags.Tracking.useBeamSpotInfoNN)
374 CompFactory.InDet.NnPixelClusterSplitProbTool(name, **kwargs))
379 flags, name="InDetPixelGangedAmbiguitiesFinder", **kwargs):
381 from PixelGeoModel.PixelGeoModelConfig
import PixelReadoutGeometryCfg
382 acc = PixelReadoutGeometryCfg(flags)
384 CompFactory.InDet.PixelGangedAmbiguitiesFinder(name, **kwargs))
389 flags, name="ITkPixelGangedAmbiguitiesFinder", **kwargs):
391 from PixelGeoModelXml.ITkPixelGeoModelConfig
import (
392 ITkPixelReadoutGeometryCfg)
393 acc = ITkPixelReadoutGeometryCfg(flags)
394 kwargs.setdefault(
"PixelDetEleCollKey",
"ITkPixelDetectorElementCollection")
396 CompFactory.InDet.PixelGangedAmbiguitiesFinder(name, **kwargs))
401 flags, name="InDetSCT_ClusteringTool", **kwargs):
403 from SCT_GeoModel.SCT_GeoModelConfig
import SCT_ReadoutGeometryCfg
404 acc = SCT_ReadoutGeometryCfg(flags)
406 kwargs.setdefault(
"SCTDetElStatus",
407 "SCTDetectorElementStatusWithoutFlagged")
409 kwargs.setdefault(
"doSimplePositionWidthCalculation",
410 flags.InDet.doSCTSimpleWidth)
412 if "conditionsTool" not in kwargs:
413 from SCT_ConditionsTools.SCT_ConditionsToolsConfig
import (
414 SCT_ConditionsSummaryToolCfg)
415 kwargs.setdefault(
"conditionsTool", acc.popToolsAndMerge(
416 SCT_ConditionsSummaryToolCfg(flags, withFlaggedCondTool=
False)))
418 if "LorentzAngleTool" not in kwargs:
419 from SiLorentzAngleTool.SCT_LorentzAngleConfig
import (
420 SCT_LorentzAngleToolCfg)
421 kwargs.setdefault(
"LorentzAngleTool", acc.popToolsAndMerge(
422 SCT_LorentzAngleToolCfg(flags)))
424 kwargs.setdefault(
"globalPosAlg", acc.popToolsAndMerge(
427 if flags.InDet.selectSCTIntimeHits:
428 coll_25ns = (flags.Beam.BunchSpacing <= 25
and
429 flags.Beam.Type
is BeamType.Collisions)
430 kwargs.setdefault(
"timeBins",
"01X" if coll_25ns
else "X1X")
432 acc.setPrivateTools(CompFactory.InDet.SCT_ClusteringTool(name, **kwargs))
437 acc = ComponentAccumulator()
439 if "conditionsTool" not in kwargs:
440 from SCT_ConditionsTools.SCT_ConditionsToolsConfig
import (
441 SCT_ConditionsSummaryToolCfg)
442 kwargs.setdefault(
"conditionsTool", acc.popToolsAndMerge(
443 SCT_ConditionsSummaryToolCfg(flags, withFlaggedCondTool=
False, withTdaqTool=
False)))
445 kwargs.setdefault(
"SCTDetElStatus",
"")
448 kwargs.setdefault(
"doSimplePositionWidthCalculation",
False)
450 acc.setPrivateTools(acc.popToolsAndMerge(
456 flags, name="ITkStripClusteringTool", **kwargs):
458 from StripGeoModelXml.ITkStripGeoModelConfig
import (
459 ITkStripReadoutGeometryCfg)
460 acc = ITkStripReadoutGeometryCfg(flags)
462 kwargs.setdefault(
"SCTDetEleCollKey",
"ITkStripDetectorElementCollection")
463 kwargs.setdefault(
"doSimplePositionWidthCalculation",
True)
465 kwargs.setdefault(
"conditionsTool",
None)
466 if "SCTDetElStatus" not in kwargs :
467 if not flags.Trigger.doHLT :
468 from SCT_ConditionsAlgorithms.ITkStripConditionsAlgorithmsConfig
import (
469 ITkStripDetectorElementStatusAlgCfg)
470 acc.merge(ITkStripDetectorElementStatusAlgCfg(flags))
471 kwargs.setdefault(
"SCTDetElStatus",
"ITkStripDetectorElementStatus")
473 if "LorentzAngleTool" not in kwargs:
474 from SiLorentzAngleTool.ITkStripLorentzAngleConfig
import (
475 ITkStripLorentzAngleToolCfg)
476 kwargs.setdefault(
"LorentzAngleTool", acc.popToolsAndMerge(
477 ITkStripLorentzAngleToolCfg(flags)))
479 kwargs.setdefault(
"globalPosAlg", acc.popToolsAndMerge(
482 if flags.ITk.selectStripIntimeHits:
483 coll_25ns = (flags.Beam.BunchSpacing <= 25
and
484 flags.Beam.Type
is BeamType.Collisions)
485 kwargs.setdefault(
"timeBins",
"01X" if coll_25ns
else "X1X")
487 acc.setPrivateTools(CompFactory.InDet.SCT_ClusteringTool(name, **kwargs))
492 flags, name='TruthClusterizationFactory', **kwargs):
493 acc = ComponentAccumulator()
495 kwargs.setdefault(
"discardPUHits", flags.Digitization.PileUp)
496 kwargs.setdefault(
"truthClusterSplittingEff", flags.Tracking.TruthClusterSplittingEff)
498 CompFactory.InDet.TruthClusterizationFactory(name, **kwargs))
503 flags, name='ITkTruthClusterizationFactory', **kwargs):
504 acc = ComponentAccumulator()
506 kwargs.setdefault(
"InputSDOMap",
"ITkPixelSDO_Map")
507 kwargs.setdefault(
"discardPUHits", flags.Digitization.PileUp)
508 kwargs.setdefault(
"truthClusterSplittingEff", flags.Tracking.TruthClusterSplittingEff)
510 CompFactory.InDet.TruthClusterizationFactory(name, **kwargs))
515 flags, name="TruthPixelClusterSplitProbTool", **kwargs):
516 acc = ComponentAccumulator()
517 kwargs.setdefault(
"PriorMultiplicityContent", [1, 1, 1])
518 kwargs.setdefault(
"NnClusterizationFactory", acc.popToolsAndMerge(
521 CompFactory.InDet.TruthPixelClusterSplitProbTool(name, **kwargs))
526 flags, name="ITkTruthPixelClusterSplitProbTool", **kwargs):
527 acc = ComponentAccumulator()
528 kwargs.setdefault(
"PriorMultiplicityContent", [1, 1, 1])
529 kwargs.setdefault(
"NnClusterizationFactory", acc.popToolsAndMerge(
532 CompFactory.InDet.TruthPixelClusterSplitProbTool(name, **kwargs))
537 ca = ComponentAccumulator()
538 from InDetConfig.SiClusterizationToolConfig
import ITkPixelRDOToolCfg
540 alg = CompFactory.InDet.HitsToxAODCopier(PixelRDOTool=tool, PixelRDOContainerKey=
"ITkPixelRDOs")
543 from OutputStreamAthenaPool.OutputStreamConfig
import addToESD, addToAOD
545 toRecod = [
"xAOD::BaseContainer#PixelHits",
"xAOD::AuxContainerBase#PixelHitsAux.col.row.tot.eta_module.phi_module.layer_disk.barrel_ec.detid",
546 "xAOD::BaseContainer#StripHits",
"xAOD::AuxContainerBase#StripHitsAux.strip.side.eta_module.phi_module.layer_disk.barrel_ec.detid" ]
547 ca.merge(addToAOD(flags, toRecod))
548 ca.merge(addToESD(flags, toRecod))