5from AthenaConfiguration.ComponentAccumulator
import ComponentAccumulator
6from AthenaConfiguration.ComponentFactory
import CompFactory
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))
99 flags, name="ParameterErrDecoratorAlg", **kwargs):
101 create decoration algorithm which decorates track particles with the uncertainties of the track parameters.
103 kwargs.setdefault(
"TrackParticleContainerName",
"InDetTrackParticles")
104 acc = ComponentAccumulator()
105 acc.addEventAlgo(CompFactory.ParameterErrDecoratorAlg(name, **kwargs))
110 flags, name="InDetPhysValTruthDecoratorAlg", **kwargs):
112 create decoration algorithm which decorates truth particles with track parameters at the perigee.
114 acc = ComponentAccumulator()
116 from TrkConfig.AtlasExtrapolatorConfig
import AtlasExtrapolatorCfg
117 extrapolator = acc.popToolsAndMerge(AtlasExtrapolatorCfg(flags))
118 acc.addPublicTool(extrapolator)
119 kwargs.setdefault(
"Extrapolator", extrapolator)
121 if flags.Detector.GeometryITk:
122 kwargs.setdefault(
"PixelClusterContainerName",
"ITkPixelMeasurements")
123 kwargs.setdefault(
"SCTClusterContainerName",
"ITkStripMeasurements")
125 kwargs.setdefault(
"PixelClusterContainerName",
"PixelMeasurements")
126 kwargs.setdefault(
"SCTClusterContainerName",
"SCT_Measurements")
128 kwargs.setdefault(
'TruthParticleIndexDecoration',
129 'origTruthIndex' if flags.PhysVal.IDPVM.doTechnicalEfficiency
else '')
131 acc.addEventAlgo(CompFactory.InDetPhysValTruthDecoratorAlg(name, **kwargs))
137 create decoration algorithm which decorates truth particles with origin and type from truth classifier.
139 acc = ComponentAccumulator()
140 acc.addEventAlgo(CompFactory.TruthClassDecoratorAlg(name, **kwargs))
146 Get track particle decorators needed for the InDetPhysValMonitoring tool
148 acc = ComponentAccumulator()
150 if "CombinedInDetTracks" in flags.Input.Collections:
159 kwargs.setdefault(
"TrackParticleContainerName",
"GSFTrackParticles")
165 Add the track particle decoration algorithm to the top sequence.
166 The algorithm is to be run on RAW/RDO since it depends on full hit information
167 which is generally not available at later stages. The decorations added by this
168 algorithm are used by InDetPhysValMonitoring tool.
170 acc = ComponentAccumulator()
174 if flags.Tracking.doTruth:
175 from BeamSpotConditions.BeamSpotConditionsConfig
import (
177 acc.merge(BeamSpotCondAlgCfg(flags))
180 if flags.PhysVal.IDPVM.doValidateGSFTracks:
188 acc = ComponentAccumulator()
190 if flags.PhysVal.IDPVM.doValidateGSFTracks:
193 for col
in flags.PhysVal.IDPVM.validateExtraTrackCollections:
195 flags, TrackParticleContainerName=col))
200 Add the InDet decoration algorithm if it has not been ran yet.
203 acc = ComponentAccumulator()
206 print(
'DEBUG addDecoratorIfNeeded ? Stage is too early or too late for running the decoration. Needs reconstructed tracks. Try again during next stage ?')
void print(char *figname, TCanvas *c1)
TruthClassDecoratorAlgCfg(flags, name="TruthClassDecoratorAlg", **kwargs)
AddGSFTrackDecoratorAlgCfg(flags, **kwargs)
InDetPhysHitDecoratorAlgCfg(flags, name="InDetPhysHitDecoratorAlg", **kwargs)
TrackDecoratorsCfg(flags, **kwargs)
ITkPhysHitDecoratorAlgCfg(flags, name="ITkPhysHitDecoratorAlg", **kwargs)
GSFTrackDecoratorsCfg(flags, **kwargs)
AddDecoratorCfg(flags, **kwargs)
ParameterErrDecoratorAlgCfg(flags, name="ParameterErrDecoratorAlg", **kwargs)
AddDecoratorIfNeededCfg(flags, **kwargs)
InDetPhysValTruthDecoratorAlgCfg(flags, name="InDetPhysValTruthDecoratorAlg", **kwargs)