CMS 3D CMS Logo

PixelTracks_cff.py
Go to the documentation of this file.
1 import FWCore.ParameterSet.Config as cms
2 from HeterogeneousCore.CUDACore.SwitchProducerCUDA import SwitchProducerCUDA
3 
8 myTTRHBuilderWithoutAngle = RecoTracker.TransientTrackingRecHit.TransientTrackingRecHitBuilder_cfi.ttrhbwr.clone(
9  StripCPE = 'Fake',
10  ComponentName = 'PixelTTRHBuilderWithoutAngle'
11 )
14 from RecoTracker.PixelTrackFitting.pixelFitterByHelixProjections_cfi import pixelFitterByHelixProjections
15 from RecoTracker.PixelTrackFitting.pixelNtupletsFitter_cfi import pixelNtupletsFitter
16 from RecoTracker.PixelTrackFitting.pixelTrackFilterByKinematics_cfi import pixelTrackFilterByKinematics
17 from RecoTracker.PixelTrackFitting.pixelTrackCleanerBySharedHits_cfi import pixelTrackCleanerBySharedHits
18 from RecoTracker.PixelTrackFitting.pixelTracks_cfi import pixelTracks as _pixelTracks
19 from RecoTracker.TkTrackingRegions.globalTrackingRegion_cfi import globalTrackingRegion as _globalTrackingRegion
20 from RecoTracker.TkTrackingRegions.globalTrackingRegionFromBeamSpot_cfi import globalTrackingRegionFromBeamSpot as _globalTrackingRegionFromBeamSpot
21 from RecoTracker.TkHitPairs.hitPairEDProducer_cfi import hitPairEDProducer as _hitPairEDProducer
22 from RecoTracker.PixelSeeding.pixelTripletHLTEDProducer_cfi import pixelTripletHLTEDProducer as _pixelTripletHLTEDProducer
24 import RecoTracker.PixelLowPtUtilities.LowPtClusterShapeSeedComparitor_cfi
25 from RecoTracker.FinalTrackSelectors.trackAlgoPriorityOrder_cfi import trackAlgoPriorityOrder
26 
27 # Eras
28 from Configuration.Eras.Modifier_trackingLowPU_cff import trackingLowPU
29 from Configuration.Eras.Modifier_run3_common_cff import run3_common
30 
31 # seeding layers
32 from RecoTracker.IterativeTracking.InitialStep_cff import initialStepSeedLayers, initialStepHitDoublets, _initialStepCAHitQuadruplets
33 
34 # TrackingRegion
35 pixelTracksTrackingRegions = _globalTrackingRegion.clone()
36 trackingLowPU.toReplaceWith(pixelTracksTrackingRegions, _globalTrackingRegionFromBeamSpot.clone())
37 
38 
39 # Pixel quadruplets tracking
40 pixelTracksSeedLayers = initialStepSeedLayers.clone(
41  BPix = dict(HitProducer = "siPixelRecHitsPreSplitting"),
42  FPix = dict(HitProducer = "siPixelRecHitsPreSplitting")
43 )
44 
45 pixelTracksHitDoublets = initialStepHitDoublets.clone(
46  clusterCheck = "",
47  seedingLayers = "pixelTracksSeedLayers",
48  trackingRegions = "pixelTracksTrackingRegions"
49 )
50 
51 pixelTracksHitQuadruplets = _initialStepCAHitQuadruplets.clone(
52  doublets = "pixelTracksHitDoublets",
53  SeedComparitorPSet = dict(clusterShapeCacheSrc = 'siPixelClusterShapeCachePreSplitting')
54 )
55 
56 pixelTracks = _pixelTracks.clone(
57  SeedingHitSets = "pixelTracksHitQuadruplets"
58 )
59 
60 pixelTracksTask = cms.Task(
61  pixelTracksTrackingRegions,
62  pixelFitterByHelixProjections,
63  pixelTrackFilterByKinematics,
64  pixelTracksSeedLayers,
65  pixelTracksHitDoublets,
66  pixelTracksHitQuadruplets,
67  pixelTracks
68 )
69 
70 pixelTracksSequence = cms.Sequence(pixelTracksTask)
71 
72 
73 # Pixel triplets for trackingLowPU
74 pixelTracksHitTriplets = _pixelTripletHLTEDProducer.clone(
75  doublets = "pixelTracksHitDoublets",
76  produceSeedingHitSets = True,
77  SeedComparitorPSet = RecoTracker.PixelLowPtUtilities.LowPtClusterShapeSeedComparitor_cfi.LowPtClusterShapeSeedComparitor.clone(
78  clusterShapeCacheSrc = "siPixelClusterShapeCachePreSplitting"
79  )
80 )
81 
82 trackingLowPU.toModify(pixelTracks,
83  SeedingHitSets = "pixelTracksHitTriplets"
84 )
85 
86 _pixelTracksTask_lowPU = pixelTracksTask.copy()
87 _pixelTracksTask_lowPU.replace(pixelTracksHitQuadruplets, pixelTracksHitTriplets)
88 trackingLowPU.toReplaceWith(pixelTracksTask, _pixelTracksTask_lowPU)
89 
90 
91 # "Patatrack" pixel ntuplets, fishbone cleaning, Broken Line fit, and density-based vertex reconstruction
92 from Configuration.ProcessModifiers.pixelNtupletFit_cff import pixelNtupletFit
93 
94 from RecoTracker.PixelSeeding.caHitNtupletCUDAPhase1_cfi import caHitNtupletCUDAPhase1 as _pixelTracksCUDA
95 from RecoTracker.PixelSeeding.caHitNtupletCUDAPhase2_cfi import caHitNtupletCUDAPhase2 as _pixelTracksCUDAPhase2
96 from RecoTracker.PixelSeeding.caHitNtupletCUDAHIonPhase1_cfi import caHitNtupletCUDAHIonPhase1 as _pixelTracksCUDAHIonPhase1
97 
98 # Phase 2 modifier
99 from Configuration.Eras.Modifier_phase2_tracker_cff import phase2_tracker
100 # HIon modifiers
101 from Configuration.ProcessModifiers.pp_on_AA_cff import pp_on_AA
102 
103 # SwitchProducer providing the pixel tracks in SoA format on the CPU
104 pixelTracksSoA = SwitchProducerCUDA(
105  # build pixel ntuplets and pixel tracks in SoA format on the CPU
106  cpu = _pixelTracksCUDA.clone(
107  pixelRecHitSrc = "siPixelRecHitsPreSplittingSoA",
108  idealConditions = False,
109  onGPU = False
110  )
111 )
112 
113 # use quality cuts tuned for Run 2 ideal conditions for all Run 3 workflows
114 run3_common.toModify(pixelTracksSoA.cpu,
115  idealConditions = True
116 )
117 
118 # convert the pixel tracks from SoA to legacy format
119 from RecoTracker.PixelTrackFitting.pixelTrackProducerFromSoAPhase1_cfi import pixelTrackProducerFromSoAPhase1 as _pixelTrackProducerFromSoA
120 from RecoTracker.PixelTrackFitting.pixelTrackProducerFromSoAPhase2_cfi import pixelTrackProducerFromSoAPhase2 as _pixelTrackProducerFromSoAPhase2
121 from RecoTracker.PixelTrackFitting.pixelTrackProducerFromSoAHIonPhase1_cfi import pixelTrackProducerFromSoAHIonPhase1 as _pixelTrackProducerFromSoAHIonPhase1
122 
123 pixelNtupletFit.toReplaceWith(pixelTracks, _pixelTrackProducerFromSoA.clone(
124  pixelRecHitLegacySrc = "siPixelRecHitsPreSplitting",
125 ))
126 
127 (pixelNtupletFit & phase2_tracker).toReplaceWith(pixelTracks, _pixelTrackProducerFromSoAPhase2.clone(
128  pixelRecHitLegacySrc = "siPixelRecHitsPreSplitting",
129 ))
130 
131 (pixelNtupletFit & pp_on_AA).toReplaceWith(pixelTracks, _pixelTrackProducerFromSoAHIonPhase1.clone(
132  pixelRecHitLegacySrc = "siPixelRecHitsPreSplitting",
133 ))
134 
135 pixelNtupletFit.toReplaceWith(pixelTracksTask, cms.Task(
136  # build the pixel ntuplets and the pixel tracks in SoA format on the GPU
137  pixelTracksSoA,
138  # convert the pixel tracks from SoA to legacy format
139  pixelTracks
140 ))
141 
142 # "Patatrack" sequence running on GPU (or CPU if not available)
144 
145 # build the pixel ntuplets and pixel tracks in SoA format on the GPU
146 pixelTracksCUDA = _pixelTracksCUDA.clone(
147  pixelRecHitSrc = "siPixelRecHitsPreSplittingCUDA",
148  idealConditions = False,
149  onGPU = True,
150 )
151 
152 # use quality cuts tuned for Run 2 ideal conditions for all Run 3 workflows
153 run3_common.toModify(pixelTracksCUDA,
154  idealConditions = True
155 )
156 
157 # SwitchProducer providing the pixel tracks in SoA format on the CPU
158 from RecoTracker.PixelTrackFitting.pixelTrackSoAFromCUDAPhase1_cfi import pixelTrackSoAFromCUDAPhase1 as _pixelTracksSoA
159 from RecoTracker.PixelTrackFitting.pixelTrackSoAFromCUDAPhase2_cfi import pixelTrackSoAFromCUDAPhase2 as _pixelTracksSoAPhase2
160 from RecoTracker.PixelTrackFitting.pixelTrackSoAFromCUDAHIonPhase1_cfi import pixelTrackSoAFromCUDAHIonPhase1 as _pixelTracksSoAHIonPhase1
161 
162 gpu.toModify(pixelTracksSoA,
163  # transfer the pixel tracks in SoA format to the host
164  cuda = _pixelTracksSoA.clone()
165 )
166 
167 (gpu & phase2_tracker).toModify(pixelTracksSoA,cuda = _pixelTracksSoAPhase2.clone(
168 ))
169 
170 (gpu & pp_on_AA).toModify(pixelTracksSoA,cuda = _pixelTracksSoAHIonPhase1.clone(
171 ))
172 
173 phase2_tracker.toModify(pixelTracksSoA,cpu = _pixelTracksCUDAPhase2.clone(
174  pixelRecHitSrc = "siPixelRecHitsPreSplittingSoA",
175  onGPU = False
176 ))
177 
178 (pp_on_AA & ~phase2_tracker).toModify(pixelTracksSoA,cpu = _pixelTracksCUDAHIonPhase1.clone(
179  pixelRecHitSrc = "siPixelRecHitsPreSplittingSoA",
180  onGPU = False
181 ))
182 
183 phase2_tracker.toReplaceWith(pixelTracksCUDA,_pixelTracksCUDAPhase2.clone(
184  pixelRecHitSrc = "siPixelRecHitsPreSplittingCUDA",
185  onGPU = True,
186 ))
187 
188 (pp_on_AA & ~phase2_tracker).toReplaceWith(pixelTracksCUDA,_pixelTracksCUDAHIonPhase1.clone(
189  pixelRecHitSrc = "siPixelRecHitsPreSplittingCUDA",
190  onGPU = True,
191 ))
192 
193 (pixelNtupletFit & gpu).toReplaceWith(pixelTracksTask, cms.Task(
194  # build the pixel ntuplets and pixel tracks in SoA format on the GPU
195  pixelTracksCUDA,
196  # transfer the pixel tracks in SoA format to the CPU, and convert them to legacy format
197  pixelTracksTask.copy()
198 ))
199 
200 
202 from Configuration.ProcessModifiers.gpuValidationPixel_cff import gpuValidationPixel
203 (pixelNtupletFit & gpu & gpuValidationPixel).toModify(pixelTracksSoA.cpu,
204  pixelRecHitSrc = "siPixelRecHitsPreSplittingSoA@cpu"
205  )
TRIGGER SELECTION #####.