11 check whether the decorator can be added.
13 A decorator can be added if a track particle converter alg is in the sequence or
14 if ESDs or AODs are read.
17 if not (flags.Detector.GeometryID
or flags.Detector.GeometryITk):
20 return (flags.PhysVal.IDPVM.runDecoration
and
21 (
"StreamESD" in flags.Input.ProcessingTags
or
22 "StreamAOD" in flags.Input.ProcessingTags
or
23 (len(flags.Input.ProcessingTags) > 0
and
26 "StreamDAOD" in flags.Input.ProcessingTags[0])))
30 flags, name="InDetPhysHitDecoratorAlg", **kwargs):
31 if flags.Detector.GeometryITk:
35 create decoration algorithm which decorates track particles with the unbiased hit residuals and pulls.
37 acc = ComponentAccumulator()
39 if 'InDetTrackHoleSearchTool' not in kwargs:
40 from InDetConfig.InDetTrackHoleSearchConfig
import (
41 InDetTrackHoleSearchToolCfg)
42 kwargs.setdefault(
"InDetTrackHoleSearchTool",
43 acc.popToolsAndMerge(InDetTrackHoleSearchToolCfg(flags)))
45 if 'Updator' not in kwargs:
46 from TrkConfig.TrkMeasurementUpdatorConfig
import InDetUpdatorCfg
47 kwargs.setdefault(
"Updator", acc.popToolsAndMerge(InDetUpdatorCfg(flags)))
49 if 'LorentzAngleTool' not in kwargs:
50 from SiLorentzAngleTool.PixelLorentzAngleConfig
import (
51 PixelLorentzAngleToolCfg)
52 kwargs.setdefault(
"LorentzAngleTool", acc.popToolsAndMerge(
53 PixelLorentzAngleToolCfg(flags)))
55 if 'ResidualPullCalculator' not in kwargs:
56 from TrkConfig.TrkResidualPullCalculatorConfig
import (
57 ResidualPullCalculatorCfg)
58 kwargs.setdefault(
"ResidualPullCalculator", acc.addPublicTool(
59 acc.popToolsAndMerge(ResidualPullCalculatorCfg(flags))))
61 acc.addEventAlgo(CompFactory.InDetPhysHitDecoratorAlg(name, **kwargs))
67 create decoration algorithm which decorates track particles with the unbiased hit residuals and pulls.
70 acc = ComponentAccumulator()
72 if 'InDetTrackHoleSearchTool' not in kwargs:
73 from InDetConfig.InDetTrackHoleSearchConfig
import (
74 ITkTrackHoleSearchToolCfg)
75 kwargs.setdefault(
"InDetTrackHoleSearchTool", acc.popToolsAndMerge(
76 ITkTrackHoleSearchToolCfg(flags)))
78 if 'Updator' not in kwargs:
79 from TrkConfig.TrkMeasurementUpdatorConfig
import ITkUpdatorCfg
80 kwargs.setdefault(
"Updator", acc.popToolsAndMerge(ITkUpdatorCfg(flags)))
82 if 'LorentzAngleTool' not in kwargs:
83 from SiLorentzAngleTool.ITkPixelLorentzAngleConfig
import (
84 ITkPixelLorentzAngleToolCfg)
85 kwargs.setdefault(
"LorentzAngleTool", acc.popToolsAndMerge(
86 ITkPixelLorentzAngleToolCfg(flags)))
88 if 'ResidualPullCalculator' not in kwargs:
89 from TrkConfig.TrkResidualPullCalculatorConfig
import (
90 ResidualPullCalculatorCfg)
91 kwargs.setdefault(
"ResidualPullCalculator", acc.addPublicTool(
92 acc.popToolsAndMerge(ResidualPullCalculatorCfg(flags))))
94 acc.addEventAlgo(CompFactory.InDetPhysHitDecoratorAlg(name, **kwargs))
109 flags, name="InDetPhysValTruthDecoratorAlg", **kwargs):
111 create decoration algorithm which decorates truth particles with track parameters at the perigee.
113 acc = ComponentAccumulator()
115 from TrkConfig.AtlasExtrapolatorConfig
import AtlasExtrapolatorCfg
116 extrapolator = acc.popToolsAndMerge(AtlasExtrapolatorCfg(flags))
117 acc.addPublicTool(extrapolator)
118 kwargs.setdefault(
"Extrapolator", extrapolator)
120 if flags.Detector.GeometryITk:
121 kwargs.setdefault(
"PixelClusterContainerName",
"ITkPixelMeasurements")
122 kwargs.setdefault(
"SCTClusterContainerName",
"ITkStripMeasurements")
124 kwargs.setdefault(
'TruthParticleIndexDecoration',
125 'origTruthIndex' if flags.PhysVal.IDPVM.doTechnicalEfficiency
else '')
127 acc.addEventAlgo(CompFactory.InDetPhysValTruthDecoratorAlg(name, **kwargs))