5 from AthenaConfiguration.ComponentAccumulator
import ComponentAccumulator
6 from 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.
39 if 'InDetTrackHoleSearchTool' not in kwargs:
40 from InDetConfig.InDetTrackHoleSearchConfig
import (
41 InDetTrackHoleSearchToolCfg)
42 kwargs.setdefault(
"InDetTrackHoleSearchTool", acc.addPublicTool(
45 if 'Updator' not in kwargs:
46 from TrkConfig.TrkMeasurementUpdatorConfig
import InDetUpdatorCfg
47 kwargs.setdefault(
"Updator", acc.addPublicTool(acc.popToolsAndMerge(
InDetUpdatorCfg(flags))))
49 if 'LorentzAngleTool' not in kwargs:
50 from SiLorentzAngleTool.PixelLorentzAngleConfig
import (
51 PixelLorentzAngleToolCfg)
52 kwargs.setdefault(
"LorentzAngleTool", acc.popToolsAndMerge(
55 if 'ResidualPullCalculator' not in kwargs:
56 from TrkConfig.TrkResidualPullCalculatorConfig
import (
57 ResidualPullCalculatorCfg)
58 kwargs.setdefault(
"ResidualPullCalculator", acc.addPublicTool(
61 acc.addEventAlgo(CompFactory.InDetPhysHitDecoratorAlg(name, **kwargs))
67 create decoration algorithm which decorates track particles with the unbiased hit residuals and pulls.
72 if 'InDetTrackHoleSearchTool' not in kwargs:
73 from InDetConfig.InDetTrackHoleSearchConfig
import (
74 ITkTrackHoleSearchToolCfg)
75 ITkTrackHoleSearchTool = acc.popToolsAndMerge(
77 acc.addPublicTool(ITkTrackHoleSearchTool)
78 kwargs.setdefault(
"InDetTrackHoleSearchTool", ITkTrackHoleSearchTool)
80 if 'Updator' not in kwargs:
81 from TrkConfig.TrkMeasurementUpdatorConfig
import ITkUpdatorCfg
83 acc.addPublicTool(Updator)
84 kwargs.setdefault(
"Updator", Updator)
86 if 'LorentzAngleTool' not in kwargs:
87 from SiLorentzAngleTool.ITkPixelLorentzAngleConfig
import (
88 ITkPixelLorentzAngleToolCfg)
89 kwargs.setdefault(
"LorentzAngleTool", acc.popToolsAndMerge(
92 acc.addEventAlgo(CompFactory.InDetPhysHitDecoratorAlg(name, **kwargs))
97 flags, name="ParameterErrDecoratorAlg", **kwargs):
99 create decoration algorithm which decorates track particles with the uncertainties of the track parameters.
102 acc.addEventAlgo(CompFactory.ParameterErrDecoratorAlg(name, **kwargs))
107 flags, name="InDetPhysValTruthDecoratorAlg", **kwargs):
109 create decoration algorithm which decorates truth particles with track parameters at the perigee.
113 from TrkConfig.AtlasExtrapolatorConfig
import AtlasExtrapolatorCfg
115 acc.addPublicTool(extrapolator)
116 kwargs.setdefault(
"Extrapolator", extrapolator)
118 if flags.Detector.GeometryITk:
119 kwargs.setdefault(
"PixelClusterContainerName",
"ITkPixelClusters")
120 kwargs.setdefault(
"SCTClusterContainerName",
"ITkStripClusters")
122 kwargs.setdefault(
'TruthParticleIndexDecoration',
123 'origTruthIndex' if flags.PhysVal.IDPVM.doTechnicalEfficiency
else '')
125 acc.addEventAlgo(CompFactory.InDetPhysValTruthDecoratorAlg(name, **kwargs))
131 create decoration algorithm which decorates truth particles with origin and type from truth classifier.
134 acc.addEventAlgo(CompFactory.TruthClassDecoratorAlg(name, **kwargs))
140 Get track particle decorators needed for the InDetPhysValMonitoring tool
144 if "CombinedInDetTracks" in flags.Input.Collections:
153 kwargs.setdefault(
"TrackParticleContainerName",
"GSFTrackParticles")
159 Add the track particle decoration algorithm to the top sequence.
160 The algorithm is to be run on RAW/RDO since it depends on full hit information
161 which is generally not available at later stages. The decorations added by this
162 algorithm are used by InDetPhysValMonitoring tool.
169 from BeamSpotConditions.BeamSpotConditionsConfig
import (
174 if flags.PhysVal.IDPVM.doValidateGSFTracks:
184 if flags.PhysVal.IDPVM.doValidateGSFTracks:
187 for col
in flags.PhysVal.IDPVM.validateExtraTrackCollections:
189 flags, TrackParticleContainerName=col))
194 Add the InDet decoration algorithm if it has not been ran yet.
200 print(
'DEBUG addDecoratorIfNeeded ? Stage is too early or too late for running the decoration. Needs reconstructed tracks. Try again during next stage ?')