CMS 3D CMS Logo

InitialStepPreSplitting_cff.py
Go to the documentation of this file.
1 import FWCore.ParameterSet.Config as cms
2 from Configuration.Eras.Modifier_tracker_apv_vfp30_2016_cff import tracker_apv_vfp30_2016 as _tracker_apv_vfp30_2016
3 
4 
5 
6 # hit building
9 
10 from RecoTracker.TkSeedGenerator.trackerClusterCheck_cfi import trackerClusterCheck as _trackerClusterCheck
11 trackerClusterCheckPreSplitting = _trackerClusterCheck.clone(
12  PixelClusterCollectionLabel = 'siPixelClustersPreSplitting'
13 )
14 
15 # SEEDING LAYERS
17 import RecoTracker.TkSeedingLayers.PixelLayerQuadruplets_cfi
18 initialStepSeedLayersPreSplitting = RecoTracker.TkSeedingLayers.PixelLayerTriplets_cfi.PixelLayerTriplets.clone(
19  FPix = dict(HitProducer = 'siPixelRecHitsPreSplitting'),
20  BPix = dict(HitProducer = 'siPixelRecHitsPreSplitting')
21 )
22 from Configuration.Eras.Modifier_trackingPhase1_cff import trackingPhase1
23 trackingPhase1.toModify(initialStepSeedLayersPreSplitting,
24  layerList = RecoTracker.TkSeedingLayers.PixelLayerQuadruplets_cfi.PixelLayerQuadruplets.layerList.value()
25 )
26 
27 # TrackingRegion
28 from RecoTracker.TkTrackingRegions.globalTrackingRegionFromBeamSpot_cfi import globalTrackingRegionFromBeamSpot as _globalTrackingRegionFromBeamSpot
29 initialStepTrackingRegionsPreSplitting = _globalTrackingRegionFromBeamSpot.clone(RegionPSet = dict(
30  ptMin = 0.6,
31  originRadius = 0.02,
32  nSigmaZ = 4.0
33 ))
34 trackingPhase1.toModify(initialStepTrackingRegionsPreSplitting, RegionPSet = dict(ptMin = 0.5))
35 
36 # seeding
37 from RecoTracker.TkHitPairs.hitPairEDProducer_cfi import hitPairEDProducer as _hitPairEDProducer
38 initialStepHitDoubletsPreSplitting = _hitPairEDProducer.clone(
39  seedingLayers = 'initialStepSeedLayersPreSplitting',
40  trackingRegions = 'initialStepTrackingRegionsPreSplitting',
41  clusterCheck = 'trackerClusterCheckPreSplitting',
42  maxElement = 50000000,
43  produceIntermediateHitDoublets = True,
44 )
45 from RecoPixelVertexing.PixelTriplets.pixelTripletHLTEDProducer_cfi import pixelTripletHLTEDProducer as _pixelTripletHLTEDProducer
47 import RecoPixelVertexing.PixelLowPtUtilities.LowPtClusterShapeSeedComparitor_cfi
48 initialStepHitTripletsPreSplitting = _pixelTripletHLTEDProducer.clone(
49  doublets = 'initialStepHitDoubletsPreSplitting',
50  produceSeedingHitSets = True,
51  SeedComparitorPSet = RecoPixelVertexing.PixelLowPtUtilities.LowPtClusterShapeSeedComparitor_cfi.LowPtClusterShapeSeedComparitor.clone(
52  clusterShapeCacheSrc = 'siPixelClusterShapeCachePreSplitting'
53  ),
54 )
55 from RecoPixelVertexing.PixelTriplets.caHitQuadrupletEDProducer_cfi import caHitQuadrupletEDProducer as _caHitQuadrupletEDProducer
56 trackingPhase1.toModify(initialStepHitDoubletsPreSplitting, layerPairs = [0,1,2]) # layer pairs (0,1), (1,2), (2,3)
57 initialStepHitQuadrupletsPreSplitting = _caHitQuadrupletEDProducer.clone(
58  doublets = 'initialStepHitDoubletsPreSplitting',
59  extraHitRPhitolerance = initialStepHitTripletsPreSplitting.extraHitRPhitolerance,
60  SeedComparitorPSet = initialStepHitTripletsPreSplitting.SeedComparitorPSet,
61  maxChi2 = dict(
62  pt1 = 0.7, pt2 = 2,
63  value1 = 200, value2 = 50,
64  ),
65  useBendingCorrection = True,
66  fitFastCircle = True,
67  fitFastCircleChi2Cut = True,
68  CAThetaCut = 0.0012,
69  CAPhiCut = 0.2,
70 )
71 from RecoTracker.TkSeedGenerator.seedCreatorFromRegionConsecutiveHitsEDProducer_cff import seedCreatorFromRegionConsecutiveHitsEDProducer as _seedCreatorFromRegionConsecutiveHitsEDProducer
72 initialStepSeedsPreSplitting = _seedCreatorFromRegionConsecutiveHitsEDProducer.clone(
73  seedingHitSets = 'initialStepHitTripletsPreSplitting',
74 )
75 trackingPhase1.toModify(initialStepSeedsPreSplitting, seedingHitSets = 'initialStepHitQuadrupletsPreSplitting')
76 
77 
78 # building
80 initialStepTrajectoryFilterBasePreSplitting = TrackingTools.TrajectoryFiltering.TrajectoryFilter_cff.CkfBaseTrajectoryFilter_block.clone(
81  minimumNumberOfHits = 4,
82  minPt = 0.2,
83  maxCCCLostHits = 0,
84  minGoodStripCharge = cms.PSet(refToPSet_ = cms.string('SiStripClusterChargeCutLoose'))
85 )
86 from Configuration.Eras.Modifier_tracker_apv_vfp30_2016_cff import tracker_apv_vfp30_2016
87 _tracker_apv_vfp30_2016.toModify(initialStepTrajectoryFilterBasePreSplitting, maxCCCLostHits = 2)
88 import RecoPixelVertexing.PixelLowPtUtilities.StripSubClusterShapeTrajectoryFilter_cfi
89 initialStepTrajectoryFilterShapePreSplitting = RecoPixelVertexing.PixelLowPtUtilities.StripSubClusterShapeTrajectoryFilter_cfi.StripSubClusterShapeTrajectoryFilterTIX12.clone()
90 initialStepTrajectoryFilterPreSplitting = cms.PSet(
91  ComponentType = cms.string('CompositeTrajectoryFilter'),
92  filters = cms.VPSet(
93  cms.PSet( refToPSet_ = cms.string('initialStepTrajectoryFilterBasePreSplitting')),
94  cms.PSet( refToPSet_ = cms.string('initialStepTrajectoryFilterShapePreSplitting'))),
95 )
96 
97 import RecoTracker.MeasurementDet.Chi2ChargeMeasurementEstimator_cfi
98 initialStepChi2EstPreSplitting = RecoTracker.MeasurementDet.Chi2ChargeMeasurementEstimator_cfi.Chi2ChargeMeasurementEstimator.clone(
99  ComponentName = 'initialStepChi2EstPreSplitting',
100  nSigma = 3.0,
101  MaxChi2 = 16.0,
102  clusterChargeCut = cms.PSet(refToPSet_ = cms.string('SiStripClusterChargeCutLoose')),
103 )
104 _tracker_apv_vfp30_2016.toModify(initialStepChi2EstPreSplitting,
105  clusterChargeCut = dict(refToPSet_ = 'SiStripClusterChargeCutTiny')
106 )
107 
109 initialStepTrajectoryBuilderPreSplitting = RecoTracker.CkfPattern.GroupedCkfTrajectoryBuilder_cfi.GroupedCkfTrajectoryBuilder.clone(
110  trajectoryFilter = cms.PSet(refToPSet_ = cms.string('initialStepTrajectoryFilterPreSplitting')),
111  alwaysUseInvalidHits = True,
112  maxCand = 3,
113  estimator = 'initialStepChi2Est',
114 )
115 
117 initialStepTrackCandidatesPreSplitting = RecoTracker.CkfPattern.CkfTrackCandidates_cfi.ckfTrackCandidates.clone(
118  src = 'initialStepSeedsPreSplitting',
119 
120  numHitsForSeedCleaner = cms.int32(50),
121  onlyPixelHitsForSeedCleaner = cms.bool(True),
122  TrajectoryBuilderPSet = cms.PSet(refToPSet_ = cms.string('initialStepTrajectoryBuilderPreSplitting')),
123  doSeedingRegionRebuilding = True,
124  useHitsSplitting = True
125 )
126 initialStepTrackCandidatesPreSplitting.MeasurementTrackerEvent = 'MeasurementTrackerEventPreSplitting'
127 
128 # fitting
130 initialStepTracksPreSplitting = RecoTracker.TrackProducer.TrackProducer_cfi.TrackProducer.clone(
131  src = 'initialStepTrackCandidatesPreSplitting',
132  AlgorithmName = 'initialStep',
133  Fitter = 'FlexibleKFFittingSmoother',
134  NavigationSchool = '',
135  MeasurementTrackerEvent = ''
136 )
137 initialStepTracksPreSplitting.MeasurementTrackerEvent = 'MeasurementTrackerEventPreSplitting'
138 
139 #vertices
140 from RecoVertex.PrimaryVertexProducer.OfflinePrimaryVertices_cfi import offlinePrimaryVertices as _offlinePrimaryVertices
141 firstStepPrimaryVerticesPreSplitting = _offlinePrimaryVertices.clone(
142  TrackLabel = 'initialStepTracksPreSplitting',
143  vertexCollections = [_offlinePrimaryVertices.vertexCollections[0].clone()]
144 )
145 from Configuration.Eras.Modifier_pp_on_XeXe_2017_cff import pp_on_XeXe_2017
146 from Configuration.ProcessModifiers.pp_on_AA_cff import pp_on_AA
147 (pp_on_XeXe_2017 | pp_on_AA).toModify(firstStepPrimaryVerticesPreSplitting, TkFilterParameters = dict(trackQuality = 'any'))
148 
149 #Jet Core emulation to identify jet-tracks
150 from RecoTracker.IterativeTracking.InitialStep_cff import initialStepTrackRefsForJets, caloTowerForTrk, ak4CaloJetsForTrk
151 from RecoTracker.IterativeTracking.JetCoreRegionalStep_cff import jetsForCoreTracking
152 initialStepTrackRefsForJetsPreSplitting = initialStepTrackRefsForJets.clone(
153  src = 'initialStepTracksPreSplitting'
154 )
155 caloTowerForTrkPreSplitting = caloTowerForTrk.clone()
156 ak4CaloJetsForTrkPreSplitting = ak4CaloJetsForTrk.clone(
157  src = 'caloTowerForTrkPreSplitting',
158  srcPVs = 'firstStepPrimaryVerticesPreSplitting'
159 )
160 jetsForCoreTrackingPreSplitting = jetsForCoreTracking.clone(
161  src = 'ak4CaloJetsForTrkPreSplitting'
162 )
163 
164 #Cluster Splitting
165 from RecoLocalTracker.SubCollectionProducers.jetCoreClusterSplitter_cfi import jetCoreClusterSplitter
166 siPixelClusters = jetCoreClusterSplitter.clone(
167  pixelClusters = 'siPixelClustersPreSplitting',
168  vertices = 'firstStepPrimaryVerticesPreSplitting',
169  cores = 'jetsForCoreTrackingPreSplitting'
170 )
171 
172 # Final sequence
174 from RecoTracker.MeasurementDet.MeasurementTrackerEventProducer_cfi import MeasurementTrackerEvent
176 InitialStepPreSplittingTask = cms.Task(trackerClusterCheckPreSplitting,
177  initialStepSeedLayersPreSplitting,
178  initialStepTrackingRegionsPreSplitting,
179  initialStepHitDoubletsPreSplitting,
180  initialStepHitTripletsPreSplitting,
181  initialStepSeedsPreSplitting,
182  initialStepTrackCandidatesPreSplitting,
183  initialStepTracksPreSplitting,
184  firstStepPrimaryVerticesPreSplitting,
185  initialStepTrackRefsForJetsPreSplitting,
186  caloTowerForTrkPreSplitting,
187  ak4CaloJetsForTrkPreSplitting,
188  jetsForCoreTrackingPreSplitting,
189  siPixelClusters,
190  siPixelRecHits,
191  MeasurementTrackerEvent,
192  siPixelClusterShapeCache)
193 InitialStepPreSplitting = cms.Sequence(InitialStepPreSplittingTask)
194 _InitialStepPreSplittingTask_trackingPhase1 = InitialStepPreSplittingTask.copy()
195 _InitialStepPreSplittingTask_trackingPhase1.replace(initialStepHitTripletsPreSplitting, cms.Task(initialStepHitTripletsPreSplitting,initialStepHitQuadrupletsPreSplitting))
196 trackingPhase1.toReplaceWith(InitialStepPreSplittingTask, _InitialStepPreSplittingTask_trackingPhase1.copyAndExclude([initialStepHitTripletsPreSplitting]))
197 
198 
199 # Although InitialStepPreSplitting is not really part of LowPU/Run1/Phase2PU140
200 # tracking, we use it to get siPixelClusters and siPixelRecHits
201 # collections for non-splitted pixel clusters. All modules before
202 # iterTracking sequence use siPixelClustersPreSplitting and
203 # siPixelRecHitsPreSplitting for that purpose.
204 #
205 # If siPixelClusters would be defined in
206 # RecoLocalTracker.Configuration.RecoLocalTracker_cff, we would have a
207 # situation where
208 # - LowPU/Phase2PU140 has siPixelClusters defined in RecoLocalTracker_cff
209 # - everything else has siPixelClusters defined here
210 # and this leads to a mess. The way it is done here we have only
211 # one place (within Reconstruction_cff) where siPixelClusters
212 # module is defined.
213 from RecoLocalTracker.SiPixelClusterizer.SiPixelClusterizer_cfi import siPixelClusters as _siPixelClusters
214 from Configuration.Eras.Modifier_trackingLowPU_cff import trackingLowPU
215 trackingLowPU.toReplaceWith(siPixelClusters, _siPixelClusters)
216 from Configuration.Eras.Modifier_trackingPhase2PU140_cff import trackingPhase2PU140
217 trackingPhase2PU140.toReplaceWith(siPixelClusters, _siPixelClusters)
218 _InitialStepPreSplittingTask_LowPU_Phase2PU140 = cms.Task(
219  siPixelClusters ,
220  siPixelRecHits ,
221  MeasurementTrackerEvent ,
222  siPixelClusterShapeCache
223 )
224 trackingLowPU.toReplaceWith(InitialStepPreSplittingTask, _InitialStepPreSplittingTask_LowPU_Phase2PU140)
225 trackingPhase2PU140.toReplaceWith(InitialStepPreSplittingTask, _InitialStepPreSplittingTask_LowPU_Phase2PU140)
TrajectoryFilter_cff
GroupedCkfTrajectoryBuilder_cfi
PixelCPEESProducers_cff
OfflinePrimaryVertices_cfi
ClusterShapeHitFilterESProducer_cfi
SiPixelClusterizer_cfi
siPixelClusterShapeCache_cfi
SiPixelRecHits_cfi
InitialStep_cff
clone
TEveGeoShape * clone(const TEveElement *element, TEveElement *parent)
Definition: eve_macros.cc:135
TTRHBuilders_cff
PixelLayerTriplets_cfi
TRIGGER SELECTION #####.
TrackProducer_cfi
trackerClusterCheck_cfi
JetCoreRegionalStep_cff
CkfTrackCandidates_cfi
MeasurementTrackerEventProducer_cfi