Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 11:57:20

0001 from __future__ import print_function
0002 import FWCore.ParameterSet.Config as cms
0003 import sys
0004 from enum import Enum
0005 import FWCore.ParameterSet.VarParsing as VarParsing
0006 from Configuration.StandardSequences.Eras import eras
0007 from Alignment.OfflineValidation.TkAlAllInOneTool.defaultInputFiles_cff import filesDefaultMC_TTBarPU 
0008 
0009 process = cms.Process("Demo") 
0010 
0011 options = VarParsing.VarParsing ()
0012 options.register('maxEvents',
0013                  -1,
0014                  VarParsing.VarParsing.multiplicity.singleton,
0015                  VarParsing.VarParsing.varType.int,
0016                  "number of events to process (\"-1\" for all)")
0017 options.parseArguments()
0018 
0019 ###################################################################
0020 # Event source and run selection
0021 ###################################################################
0022 process.source = cms.Source("PoolSource",
0023                             fileNames = filesDefaultMC_TTBarPU,
0024                             duplicateCheckMode = cms.untracked.string('checkAllFilesOpened')
0025                             )
0026 
0027 process.maxEvents = cms.untracked.PSet( input = cms.untracked.int32(options.maxEvents) )
0028 
0029 ###################################################################
0030 # Messages
0031 ###################################################################
0032 process.load('FWCore.MessageService.MessageLogger_cfi')   
0033 process.MessageLogger.cerr.enable = False
0034 process.MessageLogger.PrimaryVertexValidation=dict()
0035 process.MessageLogger.FilterOutLowPt=dict()  
0036 process.MessageLogger.cout = cms.untracked.PSet(
0037     enable = cms.untracked.bool(True),
0038     threshold = cms.untracked.string("INFO"),
0039     default   = cms.untracked.PSet(limit = cms.untracked.int32(0)),                       
0040     FwkReport = cms.untracked.PSet(limit = cms.untracked.int32(-1),
0041                                    reportEvery = cms.untracked.int32(1000)
0042                                    ),                                                      
0043     PrimaryVertexValidation = cms.untracked.PSet( limit = cms.untracked.int32(-1)),
0044     FilterOutLowPt          = cms.untracked.PSet( limit = cms.untracked.int32(-1)),
0045     enableStatistics = cms.untracked.bool(True)
0046     )
0047 
0048 ####################################################################
0049 # Produce the Transient Track Record in the event
0050 ####################################################################
0051 process.load("TrackingTools.TransientTrack.TransientTrackBuilder_cfi")
0052 
0053 ####################################################################
0054 # Get the Magnetic Field
0055 ####################################################################
0056 process.load('Configuration.StandardSequences.MagneticField_cff')
0057 
0058 ###################################################################
0059 # Standard loads
0060 ###################################################################
0061 process.load("Configuration.Geometry.GeometryRecoDB_cff")
0062 
0063 ####################################################################
0064 # Get the BeamSpot
0065 ####################################################################
0066 process.load("RecoVertex.BeamSpotProducer.BeamSpot_cff")
0067 
0068 ####################################################################
0069 # Get the GlogalTag
0070 ####################################################################
0071 process.load("Configuration.StandardSequences.FrontierConditions_GlobalTag_cff")
0072 from Configuration.AlCa.GlobalTag import GlobalTag
0073 process.GlobalTag = GlobalTag(process.GlobalTag, 'auto:phase1_2017_realistic', '')
0074 
0075 ####################################################################
0076 # Load and Configure event selection
0077 ####################################################################
0078 process.primaryVertexFilter = cms.EDFilter("VertexSelector",
0079                                            src = cms.InputTag("offlinePrimaryVertices"),
0080                                            cut = cms.string("!isFake && ndof > 4 && abs(z) <= 24 && position.Rho <= 2"),
0081                                            filter = cms.bool(True))
0082 
0083 process.noscraping = cms.EDFilter("FilterOutScraping",
0084                                   applyfilter = cms.untracked.bool(True),
0085                                   src =  cms.untracked.InputTag("generalTracks"),
0086                                   debugOn = cms.untracked.bool(False),
0087                                   numtrack = cms.untracked.uint32(10),
0088                                   thresh = cms.untracked.double(0.25))
0089 
0090 process.noslowpt = cms.EDFilter("FilterOutLowPt",
0091                                 applyfilter = cms.untracked.bool(True),
0092                                 src =  cms.untracked.InputTag("generalTracks"),
0093                                 debugOn = cms.untracked.bool(False),
0094                                 numtrack = cms.untracked.uint32(0),
0095                                 thresh = cms.untracked.int32(1),
0096                                 ptmin  = cms.untracked.double(3.),
0097                                 runControl = cms.untracked.bool(True),
0098                                 runControlNumber = cms.untracked.vuint32(1))
0099 
0100 process.goodvertexSkim = cms.Sequence(process.primaryVertexFilter + process.noscraping + process.noslowpt)
0101      
0102 import Alignment.CommonAlignment.tools.trackselectionRefitting as trackselRefit
0103 process.seqTrackselRefit = trackselRefit.getSequence(process, 'generalTracks',
0104                                                      isPVValidation=True, 
0105                                                      TTRHBuilder='WithAngleAndTemplate',
0106                                                      usePixelQualityFlag=True,
0107                                                      openMassWindow=False,
0108                                                      cosmicsDecoMode=True,
0109                                                      cosmicsZeroTesla=False,
0110                                                      momentumConstraint=None,
0111                                                      cosmicTrackSplitting=False,
0112                                                      use_d0cut=False,
0113                                                      g4Refitting=True) # this activates the G4 refiting
0114 
0115 ####################################################################
0116 # Output file
0117 ####################################################################
0118 process.TFileService = cms.Service("TFileService",
0119                                    fileName=cms.string("PVValidation_testG4Refit_0.root"))
0120 
0121 ####################################################################
0122 # Imports of parameters
0123 ####################################################################
0124 from RecoVertex.PrimaryVertexProducer.OfflinePrimaryVertices_cfi import offlinePrimaryVertices
0125 ## modify the parameters which differ
0126 FilteringParams = offlinePrimaryVertices.TkFilterParameters.clone(
0127      maxNormalizedChi2 = 5.0,  # chi2ndof < 5
0128      maxD0Significance = 5.0,  # fake cut (requiring 1 PXB hit)
0129      maxEta = 5.0,             # as per recommendation in PR #18330
0130 )
0131 
0132 ## MM 04.05.2017 (use settings as in: https://github.com/cms-sw/cmssw/pull/18330)
0133 from RecoVertex.PrimaryVertexProducer.OfflinePrimaryVertices_cfi import DA_vectParameters
0134 DAClusterizationParams = DA_vectParameters.clone()
0135 
0136 ####################################################################
0137 # Configure the PVValidation Analyzer module
0138 ####################################################################
0139 process.PVValidation = cms.EDAnalyzer("PrimaryVertexValidation",
0140                                       TrackCollectionTag = cms.InputTag("FinalTrackRefitter"),
0141                                       VertexCollectionTag = cms.InputTag("offlinePrimaryVertices"),
0142                                       Debug = cms.bool(False),
0143                                       storeNtuple = cms.bool(False),
0144                                       useTracksFromRecoVtx = cms.bool(False),
0145                                       isLightNtuple = cms.bool(True),
0146                                       askFirstLayerHit = cms.bool(False),
0147                                       forceBeamSpot = cms.untracked.bool(False),
0148                                       probePt = cms.untracked.double(3.),
0149                                       minPt   = cms.untracked.double(1.),
0150                                       maxPt   = cms.untracked.double(30.),
0151                                       runControl = cms.untracked.bool(True),
0152                                       runControlNumber = cms.untracked.vuint32(1),
0153                                       TkFilterParameters = FilteringParams,
0154                                       TkClusParameters = DAClusterizationParams)
0155 
0156 ####################################################################
0157 # Path
0158 ####################################################################
0159 process.p = cms.Path(process.goodvertexSkim*
0160                      process.seqTrackselRefit*
0161                      process.PVValidation)