Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-11-19 23:20:19

0001 import FWCore.ParameterSet.Config as cms
0002 
0003 from RecoTracker.TkSeedingLayers.seedingLayersEDProducer_cfi import *
0004 
0005 from RecoTracker.ConversionSeedGenerators.PhotonConversionTrajectorySeedProducerFromSingleLeg_cfi import *
0006 from RecoTracker.ConversionSeedGenerators.ConversionStep2_cff import *
0007 
0008 from RecoLocalTracker.SubCollectionProducers.trackClusterRemover_cfi import trackClusterRemover as _trackClusterRemover
0009 _convClustersBase = _trackClusterRemover.clone(
0010     maxChi2               = 30.0,
0011     trajectories          = 'tobTecStepTracks',
0012     pixelClusters         = 'siPixelClusters',
0013     stripClusters         = 'siStripClusters',
0014     oldClusterRemovalInfo = 'tobTecStepClusters',
0015     TrackQuality          = 'highPurity'
0016 )
0017 
0018 convClusters = _convClustersBase.clone(
0019     trackClassifier       = 'tobTecStep:QualityMasks',
0020 )
0021 
0022 
0023 #Phase2 : configuring the phase2 track Cluster Remover
0024 from RecoLocalTracker.SubCollectionProducers.phase2trackClusterRemover_cfi import phase2trackClusterRemover as _phase2trackClusterRemover
0025 from Configuration.Eras.Modifier_trackingPhase2PU140_cff import trackingPhase2PU140
0026 trackingPhase2PU140.toReplaceWith(convClusters, _phase2trackClusterRemover.clone(
0027     maxChi2                                  = 30.0,
0028     phase2pixelClusters                      = 'siPixelClusters',
0029     phase2OTClusters                         = 'siPhase2Clusters',
0030     TrackQuality                             = 'highPurity',
0031     minNumberOfLayersWithMeasBeforeFiltering = 0,
0032     trajectories                             = 'detachedQuadStepTracks',
0033     oldClusterRemovalInfo                    = 'detachedQuadStepClusters',
0034     overrideTrkQuals                         = 'detachedQuadStepSelector:detachedQuadStepTrk'
0035 ))
0036 from Configuration.ProcessModifiers.trackingIters01_cff import trackingIters01
0037 trackingIters01.toModify(convClusters,
0038                          trajectories          = "highPtTripletStepTracks",
0039                          oldClusterRemovalInfo = "highPtTripletStepClusters",
0040                          overrideTrkQuals      = "highPtTripletStepSelector:highPtTripletStep"
0041 )
0042 from Configuration.ProcessModifiers.trackingLST_cff import trackingLST
0043 (trackingIters01 & trackingPhase2PU140 & trackingLST).toModify(convClusters,
0044                          overrideTrkQuals      = ""
0045 )
0046 
0047 _convLayerPairsStripOnlyLayers = ['TIB1+TID1_pos', 
0048                                  'TIB1+TID1_neg', 
0049                                  'TIB1+TID2_pos', 
0050                                  'TIB1+TID2_neg',
0051                                  'TIB1+TIB2',
0052                                  'TIB1+MTIB3',
0053                                  
0054                                  'TIB2+TID1_pos', 
0055                                  'TIB2+TID1_neg', 
0056                                  'TIB2+TID2_pos', 
0057                                  'TIB2+TID2_neg', 
0058                                  'TIB2+MTIB3',
0059                                  'TIB2+MTIB4',
0060                                  
0061                                  'MTIB3+MTIB4',
0062                                  'MTIB3+TOB1',
0063                                  'MTIB3+TID1_pos',
0064                                  'MTIB3+TID1_neg',
0065                                  
0066                                  'MTIB4+TOB1',
0067                                  'MTIB4+TOB2',
0068                                  
0069                                  'TOB1+TOB2',
0070                                  'TOB1+MTOB3',
0071                                  'TOB1+TEC1_pos',
0072                                  'TOB1+TEC1_neg',
0073 
0074                                  'TOB2+MTOB3',
0075                                  'TOB2+MTOB4',
0076                                  'TOB2+TEC1_pos',
0077                                  'TOB2+TEC1_neg',
0078                                  
0079                                  #NB: re-introduce these combinations when large displaced
0080                                  #    tracks, reconstructed only in TOB will be available
0081                                  #    For instance think at the OutIn Ecal Seeded tracks
0082                                  #'MTOB3+MTOB4',
0083                                  #'MTOB3+MTOB5',
0084                                  #'MTOB3+TEC1_pos',
0085                                  #'MTOB3+TEC1_neg',
0086                                  #
0087                                  #'MTOB4+MTOB5',
0088                                  #'MTOB4+MTOB6',
0089                                  #
0090                                  #'MTOB5+MTOB6',
0091                                  
0092                                  'TID1_pos+TID2_pos', 
0093                                  'TID2_pos+TID3_pos', 
0094                                  'TID3_pos+TEC1_pos', 
0095                                  
0096                                  'TID1_neg+TID2_neg', 
0097                                  'TID2_neg+TID3_neg', 
0098                                  'TID3_neg+TEC1_neg', 
0099                                  
0100                                  'TEC1_pos+TEC2_pos', 
0101                                  'TEC2_pos+TEC3_pos', 
0102                                  'TEC3_pos+TEC4_pos',
0103                                  'TEC4_pos+TEC5_pos',
0104                                  'TEC5_pos+TEC6_pos',
0105                                  'TEC6_pos+TEC7_pos',
0106                                  'TEC7_pos+TEC8_pos',
0107                                  
0108                                  'TEC1_neg+TEC2_neg', 
0109                                  'TEC2_neg+TEC3_neg', 
0110                                  'TEC3_neg+TEC4_neg',
0111                                  'TEC4_neg+TEC5_neg',
0112                                  'TEC5_neg+TEC6_neg',
0113                                  'TEC6_neg+TEC7_neg',
0114                                  'TEC7_neg+TEC8_neg']
0115                     
0116 _convLayerPairsLayerList = _convLayerPairsStripOnlyLayers
0117 _convLayerPairsLayerList =['BPix1+BPix2', 
0118                            
0119                            'BPix2+BPix3', 
0120                            'BPix2+FPix1_pos', 
0121                            'BPix2+FPix1_neg', 
0122                            'BPix2+FPix2_pos', 
0123                            'BPix2+FPix2_neg', 
0124                            
0125                            'FPix1_pos+FPix2_pos', 
0126                            'FPix1_neg+FPix2_neg',
0127                                 
0128                            'BPix3+TIB1', 
0129                            'BPix3+TIB2']
0130 _convLayerPairsLayerList.extend(_convLayerPairsStripOnlyLayers)
0131                                                         
0132     
0133 import RecoTracker.TkSeedingLayers.seedingLayersEDProducer_cfi as _mod
0134 
0135 convLayerPairs = _mod.seedingLayersEDProducer.clone(
0136                                 layerList = _convLayerPairsLayerList, 
0137                                 BPix = dict(
0138                                     TTRHBuilder = cms.string('WithTrackAngle'),
0139                                     HitProducer = cms.string('siPixelRecHits'),
0140                                     skipClusters = cms.InputTag('convClusters'),
0141                                     ),
0142                                 FPix = dict(
0143                                     TTRHBuilder = cms.string('WithTrackAngle'),
0144                                     HitProducer = cms.string('siPixelRecHits'),
0145                                     skipClusters = cms.InputTag('convClusters'),
0146                                     ),
0147                                 TIB = dict(
0148                                     TTRHBuilder = cms.string('WithTrackAngle'), 
0149                                     clusterChargeCut = cms.PSet(refToPSet_ = cms.string('SiStripClusterChargeCutTight')),
0150                                     matchedRecHits = cms.InputTag('siStripMatchedRecHits','matchedRecHit'),
0151                                     skipClusters = cms.InputTag('convClusters'),
0152                                     ),
0153                                 MTIB = dict(
0154                                     TTRHBuilder = cms.string('WithTrackAngle'), 
0155                                     clusterChargeCut = cms.PSet(refToPSet_ = cms.string('SiStripClusterChargeCutTight')),
0156                                     rphiRecHits = cms.InputTag('siStripMatchedRecHits','rphiRecHit'),
0157                                     skipClusters = cms.InputTag('convClusters'),
0158                                     ),
0159                                 TID = dict(
0160                                     useSimpleRphiHitsCleaner = cms.bool(False),
0161                                     matchedRecHits = cms.InputTag('siStripMatchedRecHits','matchedRecHit'),
0162                                     useRingSlector = cms.bool(True),
0163                                     TTRHBuilder = cms.string('WithTrackAngle'), 
0164                                     clusterChargeCut = cms.PSet(refToPSet_ = cms.string('SiStripClusterChargeCutTight')),
0165                                     maxRing = cms.int32(2),
0166                                     minRing = cms.int32(1),
0167                                     skipClusters = cms.InputTag('convClusters'),
0168                                     ),
0169                                 TEC = dict(
0170                                     useSimpleRphiHitsCleaner = cms.bool(False),
0171                                     minRing = cms.int32(1),
0172                                     matchedRecHits = cms.InputTag('siStripMatchedRecHits','matchedRecHit'),
0173                                     useRingSlector = cms.bool(True),
0174                                     TTRHBuilder = cms.string('WithTrackAngle'), 
0175                                     clusterChargeCut = cms.PSet(refToPSet_ = cms.string('SiStripClusterChargeCutTight')),
0176                                     rphiRecHits = cms.InputTag('siStripMatchedRecHits','rphiRecHitUnmatched'),
0177                                     maxRing = cms.int32(7),
0178                                     stereoRecHits = cms.InputTag('siStripMatchedRecHits','stereoRecHitUnmatched'),
0179                                     skipClusters = cms.InputTag('convClusters'),
0180                                     ),
0181                                 TOB = dict(
0182                                     matchedRecHits = cms.InputTag('siStripMatchedRecHits','matchedRecHit'),
0183                                     TTRHBuilder = cms.string('WithTrackAngle'),
0184                                     clusterChargeCut = cms.PSet(refToPSet_ = cms.string('SiStripClusterChargeCutTight')),
0185                                     skipClusters = cms.InputTag('convClusters'),
0186                                     ),
0187                                 MTOB = dict(
0188                                     TTRHBuilder = cms.string('WithTrackAngle'),
0189                                     clusterChargeCut = cms.PSet(refToPSet_ = cms.string('SiStripClusterChargeCutTight')),
0190                                     rphiRecHits = cms.InputTag('siStripMatchedRecHits','rphiRecHit'),
0191                                     skipClusters = cms.InputTag('convClusters'),
0192                                     ),
0193                                 )
0194 
0195 #this was done by Sam Harper (Aug 2017) and is a best guess (and I do guess wrong sometimes)
0196 #in general I kept all the old layer pairs and added sensible phaseI combinations
0197 #most pairs are adjacent layers (with some small exceptions) so I stuck to that
0198 _convLayerPairsLayerListPhaseI = ['BPix1+BPix2', 
0199                                   
0200                                   'BPix2+BPix3', 
0201                                   'BPix3+BPix4',#added for PhaseI
0202                                   
0203                                   'BPix2+FPix1_pos', 
0204                                   'BPix2+FPix1_neg', 
0205                                   'BPix2+FPix2_pos', 
0206                                   'BPix2+FPix2_neg',                                        
0207                                   'BPix3+FPix1_pos', #added for phaseI 
0208                                   'BPix3+FPix1_neg', #added for phaseI 
0209                                   
0210                                   'FPix1_pos+FPix2_pos', 
0211                                   'FPix1_neg+FPix2_neg',
0212                                   
0213                                   'FPix2_pos+FPix3_pos', #added for phaseI 
0214                                   'FPix2_neg+FPix3_neg',#added for phaseI 
0215                                   
0216                                   'BPix3+TIB1', 
0217                                   #'BPix3+TIB2' #removed for phaseI
0218                                   'BPix4+TIB1', #added for phase I
0219                                   'BPix4+TIB2', #added for phase I
0220                                   ] 
0221 _convLayerPairsLayerListPhaseI.extend(_convLayerPairsStripOnlyLayers)
0222 
0223 from Configuration.Eras.Modifier_trackingPhase1_cff import trackingPhase1
0224 trackingPhase1.toModify(convLayerPairs, layerList = _convLayerPairsLayerListPhaseI)
0225 
0226 
0227 trackingPhase2PU140.toReplaceWith(convLayerPairs, cms.EDProducer('SeedingLayersEDProducer',
0228                                 layerList = cms.vstring('BPix1+BPix2',
0229                                                         'BPix2+BPix3',
0230                                                         'BPix3+BPix4',
0231 
0232                                                         'BPix1+FPix1_pos',
0233                                                         'BPix1+FPix1_neg',
0234                                                         'BPix2+FPix1_pos',
0235                                                         'BPix2+FPix1_neg',
0236                                                         'BPix3+FPix1_pos',
0237                                                         'BPix3+FPix1_neg',
0238 
0239                                                         'FPix1_pos+FPix2_pos',
0240                                                         'FPix1_neg+FPix2_neg',
0241                                                         'FPix2_pos+FPix3_pos',
0242                                                         'FPix2_neg+FPix3_neg'
0243                                                         ),
0244 
0245                                 BPix = cms.PSet(
0246                                     hitErrorRZ = cms.double(0.006),
0247                                     hitErrorRPhi = cms.double(0.0027),
0248                                     TTRHBuilder = cms.string('TTRHBuilderWithoutAngle4PixelPairs'),
0249                                     HitProducer = cms.string('siPixelRecHits'),
0250                                     useErrorsFromParam = cms.bool(True),
0251                                     skipClusters = cms.InputTag('convClusters'),
0252                                     ),
0253                                 FPix = cms.PSet(
0254                                     hitErrorRZ = cms.double(0.0036),
0255                                     hitErrorRPhi = cms.double(0.0051),
0256                                     TTRHBuilder = cms.string('TTRHBuilderWithoutAngle4PixelPairs'),
0257                                     HitProducer = cms.string('siPixelRecHits'),
0258                                     useErrorsFromParam = cms.bool(True),
0259                                     skipClusters = cms.InputTag('convClusters'),
0260                                     )
0261     )
0262 )
0263 
0264 photonConvTrajSeedFromSingleLeg.TrackRefitter      = 'generalTracks'
0265 photonConvTrajSeedFromSingleLeg.primaryVerticesTag = 'firstStepPrimaryVertices'
0266 #photonConvTrajSeedFromQuadruplets.TrackRefitter      = 'generalTracks'
0267 #photonConvTrajSeedFromQuadruplets.primaryVerticesTag = 'pixelVertices'
0268 from Configuration.Eras.Modifier_trackingLowPU_cff import trackingLowPU
0269 trackingLowPU.toModify(photonConvTrajSeedFromSingleLeg, primaryVerticesTag   = 'pixelVertices')
0270 from Configuration.ProcessModifiers.pp_on_AA_cff import pp_on_AA
0271 pp_on_AA.toModify(photonConvTrajSeedFromSingleLeg, vtxMinDoF = 999999.)
0272     
0273 # TRACKER DATA CONTROL
0274 
0275 # QUALITY CUTS DURING TRACK BUILDING
0276 import TrackingTools.TrajectoryFiltering.TrajectoryFilter_cff
0277 convCkfTrajectoryFilter = TrackingTools.TrajectoryFiltering.TrajectoryFilter_cff.CkfBaseTrajectoryFilter_block.clone(
0278         maxLostHits         = 1,
0279         minimumNumberOfHits = 3,
0280         minPt               = 0.1
0281 )
0282 
0283 
0284 import RecoTracker.MeasurementDet.Chi2ChargeMeasurementEstimator_cfi
0285 convStepChi2Est = RecoTracker.MeasurementDet.Chi2ChargeMeasurementEstimator_cfi.Chi2ChargeMeasurementEstimator.clone(
0286     ComponentName    = 'convStepChi2Est',
0287     nSigma           = 3.0,
0288     MaxChi2          = 30.0,
0289     MaxDisplacement  = 100,
0290     MaxSagitta       = -1.,
0291     clusterChargeCut = dict(refToPSet_ = 'SiStripClusterChargeCutTight')
0292 )
0293 
0294 
0295 # TRACK BUILDING
0296 import RecoTracker.CkfPattern.GroupedCkfTrajectoryBuilder_cfi
0297 _convCkfTrajectoryBuilderBase = RecoTracker.CkfPattern.GroupedCkfTrajectoryBuilder_cfi.GroupedCkfTrajectoryBuilder.clone(
0298     trajectoryFilter = dict(refToPSet_ = 'convCkfTrajectoryFilter'),
0299     minNrOfHitsForRebuild = 3,
0300     maxCand = 1
0301 )
0302 
0303 convCkfTrajectoryBuilder = _convCkfTrajectoryBuilderBase.clone(
0304     estimator = 'convStepChi2Est'
0305 )
0306 
0307 trackingPhase2PU140.toReplaceWith(convCkfTrajectoryBuilder, _convCkfTrajectoryBuilderBase.clone(
0308     maxCand = 2
0309 ))
0310 
0311 # MAKING OF TRACK CANDIDATES
0312 import RecoTracker.CkfPattern.CkfTrackCandidates_cfi
0313 convTrackCandidates = RecoTracker.CkfPattern.CkfTrackCandidates_cfi.ckfTrackCandidates.clone(
0314     src = 'photonConvTrajSeedFromSingleLeg:convSeedCandidates',
0315     clustersToSkip = 'convClusters',
0316     TrajectoryBuilderPSet = dict(refToPSet_ = 'convCkfTrajectoryBuilder')
0317 )
0318 
0319 trackingPhase2PU140.toModify(convTrackCandidates,
0320     clustersToSkip = '',
0321     phase2clustersToSkip = 'convClusters'
0322 )
0323 
0324 import TrackingTools.TrackFitters.RungeKuttaFitters_cff
0325 convStepFitterSmoother = TrackingTools.TrackFitters.RungeKuttaFitters_cff.KFFittingSmootherWithOutliersRejectionAndRK.clone(
0326     ComponentName = 'convStepFitterSmoother',
0327     EstimateCut   = 30,
0328     Smoother      = 'convStepRKSmoother'
0329 )
0330     
0331 convStepRKTrajectorySmoother = TrackingTools.TrackFitters.RungeKuttaFitters_cff.RKTrajectorySmoother.clone(
0332     ComponentName  = 'convStepRKSmoother',
0333     errorRescaling = 10.0
0334 )
0335 
0336         
0337 # TRACK FITTING
0338 import RecoTracker.TrackProducer.TrackProducer_cfi
0339 convStepTracks = RecoTracker.TrackProducer.TrackProducer_cfi.TrackProducer.clone(
0340     src = 'convTrackCandidates',
0341     AlgorithmName = 'conversionStep',
0342     Fitter = 'convStepFitterSmoother'
0343 )
0344 
0345 
0346 import RecoTracker.FinalTrackSelectors.multiTrackSelector_cfi
0347 convStepSelector = RecoTracker.FinalTrackSelectors.multiTrackSelector_cfi.multiTrackSelector.clone(
0348     src='convStepTracks',
0349     trackSelectors= cms.VPSet(
0350         RecoTracker.FinalTrackSelectors.multiTrackSelector_cfi.looseMTS.clone(
0351             name = 'convStepLoose',
0352             applyAdaptedPVCuts = False,
0353             chi2n_par = 3.0,
0354             res_par = ( 0.003, 0.001 ),
0355             minNumberLayers = 3,
0356             maxNumberLostLayers = 1,
0357             minNumber3DLayers = 1,
0358             d0_par1 = ( 5., 8.0 ), # not sure these values are sane....
0359             dz_par1 = ( 5., 8.0 ),
0360             d0_par2 = ( 5., 8.0 ),
0361             dz_par2 = ( 5., 8.0 )
0362             ),
0363         RecoTracker.FinalTrackSelectors.multiTrackSelector_cfi.tightMTS.clone(
0364             name = 'convStepTight',
0365             preFilterName = 'convStepLoose',
0366             chi2n_par = 2.5,
0367             res_par = ( 0.003, 0.001 ),
0368             minNumberLayers = 3,
0369             maxNumberLostLayers = 1,
0370             minNumber3DLayers = 1,
0371             d0_par1 = ( 5., 8.0 ),
0372             dz_par1 = ( 5., 8.0 ),
0373             d0_par2 = ( 5., 8.0 ),
0374             dz_par2 = ( 5., 8.0 )
0375             ),
0376         RecoTracker.FinalTrackSelectors.multiTrackSelector_cfi.highpurityMTS.clone(
0377             name = 'convStep',
0378             preFilterName = 'convStepTight',
0379             chi2n_par = 2.0,
0380             res_par = ( 0.003, 0.001 ),
0381             minNumberLayers = 3,
0382             maxNumberLostLayers = 1,
0383             minNumber3DLayers = 1,
0384             d0_par1 = ( 5., 8.0 ),
0385             dz_par1 = ( 5., 8.0 ),
0386             d0_par2 = ( 5., 8.0 ),
0387             dz_par2 = ( 5., 8.0 )
0388             ),
0389     ) #end of vpset
0390 ) #end of clone
0391 
0392 ConvStepTask = cms.Task( convClusters 
0393                          , convLayerPairs
0394                          , photonConvTrajSeedFromSingleLeg 
0395                          , convTrackCandidates
0396                          , convStepTracks
0397                          , convStepSelector
0398                          #+ Conv2Step #full quad-seeding sequence
0399                          )
0400 ConvStep = cms.Sequence( ConvStepTask ) 
0401 
0402 
0403 ### Quad-seeding sequence disabled (#+ Conv2Step)
0404 # if enabled, the quad-seeded tracks have to be merged with the single-leg seeded tracks
0405 # in RecoTracker.FinalTrackSelectors.MergeTrackCollections_cff change:
0406 ###
0407 #conversionStepTracks = RecoTracker.FinalTrackSelectors.trackListMerger_cfi.trackListMerger.clone(
0408 #    TrackProducers = 'convStepTracks',
0409 #    hasSelector=1,
0410 #    selectedTrackQuals = 'convStepSelector:convStep',
0411 #    setsToMerge = dict( tLists = 1, pQual = True ),
0412 #    copyExtras = True,
0413 #    makeReKeyedSeeds = False
0414 #    )
0415 ###
0416 # TO this:
0417 ###
0418 #conversionStepTracks = RecoTracker.FinalTrackSelectors.trackListMerger_cfi.trackListMerger.clone(
0419 #    TrackProducers = ['convStepTracks', 'conv2StepTracks'],
0420 #    hasSelector = [1,1],
0421 #    selectedTrackQuals = ['convStepSelector:convStep', 'conv2StepSelector:conv2Step'],
0422 #    setsToMerge = dict( tLists = [0,1], pQual = True ),
0423 #    copyExtras = True,
0424 #    makeReKeyedSeeds = False
0425 #    )
0426 ###