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 RecoPixelVertexing.PixelTrackFitting.pixelFitterByHelixProjections_cfi import pixelFitterByHelixProjections
15 from RecoPixelVertexing.PixelTrackFitting.pixelNtupletsFitter_cfi import pixelNtupletsFitter
16 from RecoPixelVertexing.PixelTrackFitting.pixelTrackFilterByKinematics_cfi import pixelTrackFilterByKinematics
17 from RecoPixelVertexing.PixelTrackFitting.pixelTrackCleanerBySharedHits_cfi import pixelTrackCleanerBySharedHits
18 from RecoPixelVertexing.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 RecoPixelVertexing.PixelTriplets.pixelTripletHLTEDProducer_cfi import pixelTripletHLTEDProducer as _pixelTripletHLTEDProducer
24 import RecoPixelVertexing.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 = RecoPixelVertexing.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 RecoPixelVertexing.PixelTriplets.caHitNtupletCUDAPhase1_cfi import caHitNtupletCUDAPhase1 as _pixelTracksCUDA
95 from RecoPixelVertexing.PixelTriplets.caHitNtupletCUDAPhase2_cfi import caHitNtupletCUDAPhase2 as _pixelTracksCUDAPhase2
96 
97 from Configuration.Eras.Modifier_phase2_tracker_cff import phase2_tracker
98 
99 # SwitchProducer providing the pixel tracks in SoA format on the CPU
100 pixelTracksSoA = SwitchProducerCUDA(
101  # build pixel ntuplets and pixel tracks in SoA format on the CPU
102  cpu = _pixelTracksCUDA.clone(
103  pixelRecHitSrc = "siPixelRecHitsPreSplittingSoA",
104  idealConditions = False,
105  onGPU = False
106  )
107 )
108 
109 # use quality cuts tuned for Run 2 ideal conditions for all Run 3 workflows
110 run3_common.toModify(pixelTracksSoA.cpu,
111  idealConditions = True
112 )
113 
114 # convert the pixel tracks from SoA to legacy format
115 from RecoPixelVertexing.PixelTrackFitting.pixelTrackProducerFromSoAPhase1_cfi import pixelTrackProducerFromSoAPhase1 as _pixelTrackProducerFromSoA
116 from RecoPixelVertexing.PixelTrackFitting.pixelTrackProducerFromSoAPhase2_cfi import pixelTrackProducerFromSoAPhase2 as _pixelTrackProducerFromSoAPhase2
117 
118 pixelNtupletFit.toReplaceWith(pixelTracks, _pixelTrackProducerFromSoA.clone(
119  pixelRecHitLegacySrc = "siPixelRecHitsPreSplitting",
120 ))
121 
122 (pixelNtupletFit & phase2_tracker).toReplaceWith(pixelTracks, _pixelTrackProducerFromSoAPhase2.clone(
123  pixelRecHitLegacySrc = "siPixelRecHitsPreSplitting",
124 ))
125 
126 pixelNtupletFit.toReplaceWith(pixelTracksTask, cms.Task(
127  # build the pixel ntuplets and the pixel tracks in SoA format on the GPU
128  pixelTracksSoA,
129  # convert the pixel tracks from SoA to legacy format
130  pixelTracks
131 ))
132 
133 # "Patatrack" sequence running on GPU (or CPU if not available)
135 
136 # build the pixel ntuplets and pixel tracks in SoA format on the GPU
137 pixelTracksCUDA = _pixelTracksCUDA.clone(
138  pixelRecHitSrc = "siPixelRecHitsPreSplittingCUDA",
139  idealConditions = False,
140  onGPU = True,
141 )
142 
143 # use quality cuts tuned for Run 2 ideal conditions for all Run 3 workflows
144 run3_common.toModify(pixelTracksCUDA,
145  idealConditions = True
146 )
147 
148 # SwitchProducer providing the pixel tracks in SoA format on the CPU
149 from RecoPixelVertexing.PixelTrackFitting.pixelTrackSoAFromCUDAPhase1_cfi import pixelTrackSoAFromCUDAPhase1 as _pixelTracksSoA
150 from RecoPixelVertexing.PixelTrackFitting.pixelTrackSoAFromCUDAPhase2_cfi import pixelTrackSoAFromCUDAPhase2 as _pixelTracksSoAPhase2
151 
152 gpu.toModify(pixelTracksSoA,
153  # transfer the pixel tracks in SoA format to the host
154  cuda = _pixelTracksSoA.clone()
155 )
156 
157 (gpu & phase2_tracker).toModify(pixelTracksSoA,cuda = _pixelTracksSoAPhase2.clone(
158 ))
159 
160 phase2_tracker.toModify(pixelTracksSoA,cpu = _pixelTracksCUDAPhase2.clone(
161  pixelRecHitSrc = "siPixelRecHitsPreSplittingSoA",
162  onGPU = False
163 ))
164 
165 phase2_tracker.toReplaceWith(pixelTracksCUDA,_pixelTracksCUDAPhase2.clone(
166  pixelRecHitSrc = "siPixelRecHitsPreSplittingCUDA",
167  onGPU = True,
168 ))
169 
170 (pixelNtupletFit & gpu).toReplaceWith(pixelTracksTask, cms.Task(
171  # build the pixel ntuplets and pixel tracks in SoA format on the GPU
172  pixelTracksCUDA,
173  # transfer the pixel tracks in SoA format to the CPU, and convert them to legacy format
174  pixelTracksTask.copy()
175 ))
176 
177 
179 from Configuration.ProcessModifiers.gpuValidationPixel_cff import gpuValidationPixel
180 (pixelNtupletFit & gpu & gpuValidationPixel).toModify(pixelTracksSoA.cpu,
181  pixelRecHitSrc = "siPixelRecHitsPreSplittingSoA@cpu"
182  )
TRIGGER SELECTION #####.