Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2021-02-14 12:46:08

0001 from __future__ import print_function
0002 import FWCore.ParameterSet.Config as cms
0003 import sys
0004  
0005 isDA = ISDATEMPLATE
0006 isMC = ISMCTEMPLATE
0007 allFromGT = ALLFROMGTTEMPLATE
0008 applyBows = APPLYBOWSTEMPLATE
0009 applyExtraConditions = EXTRACONDTEMPLATE
0010 useFileList = USEFILELISTTEMPLATE
0011 
0012 process = cms.Process("PrimaryVertexValidation") 
0013 
0014 ###################################################################
0015 def customiseAlignmentAndAPE(process):
0016 ###################################################################
0017     if not hasattr(process.GlobalTag,'toGet'):
0018         process.GlobalTag.toGet=cms.VPSet()
0019     process.GlobalTag.toGet.extend( cms.VPSet(cms.PSet(record = cms.string("TrackerAlignmentRcd"),
0020                                                        tag = cms.string("GEOMTAGTEMPLATE"),
0021                                                        connect = cms.string("ALIGNOBJTEMPLATE")
0022                                                        ),
0023                                               cms.PSet(record = cms.string("TrackerAlignmentErrorExtendedRcd"),
0024                                                        tag = cms.string("ERRORTAGTEMPLATE"),
0025                                                        connect = cms.string("APEOBJTEMPLATE")
0026                                                        )
0027                                               )
0028                                     )
0029     return process
0030 
0031 ###################################################################
0032 def customiseKinksAndBows(process):
0033 ###################################################################
0034      if not hasattr(process.GlobalTag,'toGet'):
0035           process.GlobalTag.toGet=cms.VPSet()
0036      process.GlobalTag.toGet.extend(cms.VPSet(cms.PSet(record = cms.string("TrackerSurfaceDeformationRcd"),
0037                                                        tag = cms.string("BOWSTAGTEMPLATE"),
0038                                                        connect = cms.string("BOWSOBJECTTEMPLATE")
0039                                                        ),        
0040                                               )
0041                                     )
0042      return process
0043 
0044 ###################################################################
0045 # Event source and run selection
0046 ###################################################################
0047 if (useFileList):
0048      print(">>>>>>>>>> testPVValidation_cfg.py: msg%-i: Reading local input files list")
0049      readFiles = cms.untracked.vstring()
0050      readFiles.extend(FILESOURCETEMPLATE)
0051      process.source = cms.Source("PoolSource",
0052                                  fileNames = readFiles ,
0053                                  duplicateCheckMode = cms.untracked.string('checkAllFilesOpened')
0054                                  )
0055 else:
0056      print(">>>>>>>>>> testPVValidation_cfg.py: msg%-i: Reading from configuration fragment")
0057      process.load("Alignment.OfflineValidation.DATASETTEMPLATE")
0058 
0059 ###################################################################
0060 #  Runs and events
0061 ###################################################################
0062 runboundary = RUNBOUNDARYTEMPLATE
0063 process.source.firstRun = cms.untracked.uint32(int(runboundary))
0064 process.maxEvents = cms.untracked.PSet( input = cms.untracked.int32(MAXEVENTSTEMPLATE) )
0065 
0066 ###################################################################
0067 # JSON Filtering
0068 ###################################################################
0069 if isMC:
0070      print(">>>>>>>>>> testPVValidation_cfg.py: msg%-i: This is simulation!")
0071      runboundary = 1
0072 else:
0073      print(">>>>>>>>>> testPVValidation_cfg.py: msg%-i: This is real DATA!")
0074      if ('LUMILISTTEMPLATE'):
0075           print(">>>>>>>>>> testPVValidation_cfg.py: msg%-i: JSON filtering with: LUMILISTTEMPLATE")
0076           import FWCore.PythonUtilities.LumiList as LumiList
0077           process.source.lumisToProcess = LumiList.LumiList(filename ='LUMILISTTEMPLATE').getVLuminosityBlockRange()
0078 
0079 ###################################################################
0080 # Messages
0081 ###################################################################
0082 process.load("FWCore.MessageService.MessageLogger_cfi")
0083 process.MessageLogger.cerr.FwkReport.reportEvery = 1000
0084 
0085 ####################################################################
0086 # Produce the Transient Track Record in the event
0087 ####################################################################
0088 process.load("TrackingTools.TransientTrack.TransientTrackBuilder_cfi")
0089 
0090 ####################################################################
0091 # Get the Magnetic Field
0092 ####################################################################
0093 process.load('Configuration.StandardSequences.MagneticField_cff')
0094 
0095 ###################################################################
0096 # Geometry load
0097 ###################################################################
0098 process.load("Configuration.Geometry.GeometryRecoDB_cff")
0099 
0100 ####################################################################
0101 # Get the BeamSpot
0102 ####################################################################
0103 process.load("RecoVertex.BeamSpotProducer.BeamSpot_cff")
0104 
0105 ####################################################################
0106 # Get the GlogalTag
0107 ####################################################################
0108 process.load("Configuration.StandardSequences.FrontierConditions_GlobalTag_cff")
0109 from Configuration.AlCa.GlobalTag import GlobalTag
0110 process.GlobalTag = GlobalTag(process.GlobalTag, 'GLOBALTAGTEMPLATE', '')
0111 
0112 if allFromGT:
0113      print(">>>>>>>>>> testPVValidation_cfg.py: msg%-i: All is taken from GT")
0114 else:
0115      ####################################################################
0116      # Get Alignment and APE constants
0117      ####################################################################
0118      process=customiseAlignmentAndAPE(process)
0119 
0120      ####################################################################
0121      # Kinks and Bows (optional)
0122      ####################################################################
0123      if applyBows:
0124           print(">>>>>>>>>> testPVValidation_cfg.py: msg%-i: Applying TrackerSurfaceDeformations!")
0125           process=customiseKinksAndBows(process)
0126      else:
0127           print(">>>>>>>>>> testPVValidation_cfg.py: msg%-i: MultiPVValidation: Not applying TrackerSurfaceDeformations!")
0128 
0129           ####################################################################
0130           # Extra corrections not included in the GT
0131           ####################################################################
0132           if applyExtraConditions:
0133                print(">>>>>>>>>> testPVValidation_cfg.py: msg%-i: Applying extra calibration constants!")
0134 
0135                import CalibTracker.Configuration.Common.PoolDBESSource_cfi
0136 
0137                # Extra conditions to be plugged here
0138                ##### END OF EXTRA CONDITIONS
0139                
0140           else:
0141                print(">>>>>>>>>> testPVValidation_cfg.py: msg%-i: Not applying extra calibration constants!")
0142                
0143      
0144 ####################################################################
0145 # Load and Configure event selection
0146 ####################################################################
0147 process.primaryVertexFilter = cms.EDFilter("VertexSelector",
0148                                            src = cms.InputTag("VERTEXTYPETEMPLATE"),
0149                                            cut = cms.string("!isFake && ndof > 4 && abs(z) <= 24 && position.Rho <= 2"),
0150                                            filter = cms.bool(True)
0151                                            )
0152 
0153 process.noscraping = cms.EDFilter("FilterOutScraping",
0154                                   applyfilter = cms.untracked.bool(True),
0155                                   src =  cms.untracked.InputTag("TRACKTYPETEMPLATE"),
0156                                   debugOn = cms.untracked.bool(False),
0157                                   numtrack = cms.untracked.uint32(10),
0158                                   thresh = cms.untracked.double(0.25)
0159                                   )
0160 
0161 process.load("Alignment.CommonAlignment.filterOutLowPt_cfi")
0162 process.filterOutLowPt.applyfilter = True
0163 process.filterOutLowPt.src = "TRACKTYPETEMPLATE"
0164 process.filterOutLowPt.numtrack = 0
0165 process.filterOutLowPt.thresh = 1
0166 process.filterOutLowPt.ptmin  = PTCUTTEMPLATE
0167 process.filterOutLowPt.runControl = RUNCONTROLTEMPLATE
0168 process.filterOutLowPt.runControlNumber = [runboundary]
0169                                 
0170 if isMC:
0171      process.goodvertexSkim = cms.Sequence(process.noscraping + process.filterOutLowPt)
0172 else:
0173      process.goodvertexSkim = cms.Sequence(process.primaryVertexFilter + process.noscraping + process.filterOutLowPt)
0174 
0175 ####################################################################
0176 # Load and Configure Measurement Tracker Event
0177 # (this would be needed in case NavigationSchool is set != from ''
0178 ####################################################################
0179 #process.load("RecoTracker.MeasurementDet.MeasurementTrackerEventProducer_cfi") 
0180 #process.MeasurementTrackerEvent.pixelClusterProducer = 'TRACKTYPETEMPLATE'
0181 #process.MeasurementTrackerEvent.stripClusterProducer = 'TRACKTYPETEMPLATE'
0182 #process.MeasurementTrackerEvent.inactivePixelDetectorLabels = cms.VInputTag()
0183 #process.MeasurementTrackerEvent.inactiveStripDetectorLabels = cms.VInputTag()
0184 
0185 ####################################################################
0186 # Load and Configure TrackRefitter
0187 ####################################################################
0188 process.load("RecoTracker.TrackProducer.TrackRefitters_cff")
0189 import RecoTracker.TrackProducer.TrackRefitters_cff
0190 process.TrackRefitter = RecoTracker.TrackProducer.TrackRefitter_cfi.TrackRefitter.clone()
0191 process.TrackRefitter.src = "TRACKTYPETEMPLATE"
0192 process.TrackRefitter.TrajectoryInEvent = True
0193 process.TrackRefitter.NavigationSchool = ''
0194 process.TrackRefitter.TTRHBuilder = "WithAngleAndTemplate"
0195 
0196 ####################################################################
0197 # Output file
0198 ####################################################################
0199 process.TFileService = cms.Service("TFileService",
0200                                    fileName=cms.string("OUTFILETEMPLATE")
0201                                    )
0202 
0203 ####################################################################
0204 # Imports of parameters
0205 ####################################################################
0206 from RecoVertex.PrimaryVertexProducer.OfflinePrimaryVertices_cfi import offlinePrimaryVertices
0207 ## modify the parameters which differ
0208 FilteringParams = offlinePrimaryVertices.TkFilterParameters.clone(
0209      maxNormalizedChi2 = 5.0,  # chi2ndof < 5
0210      maxD0Significance = 5.0,  # fake cut (requiring 1 PXB hit)
0211      maxEta = 5.0,             # as per recommendation in PR #18330
0212 )
0213 
0214 ## MM 04.05.2017 (use settings as in: https://github.com/cms-sw/cmssw/pull/18330)
0215 from RecoVertex.PrimaryVertexProducer.TkClusParameters_cff import DA_vectParameters
0216 DAClusterizationParams = DA_vectParameters.clone()
0217 
0218 GapClusterizationParams = cms.PSet(algorithm   = cms.string('gap'),
0219                                    TkGapClusParameters = cms.PSet(zSeparation = cms.double(0.2))  # 0.2 cm max separation betw. clusters
0220                                    )
0221 
0222 ####################################################################
0223 # Deterministic annealing clustering or Gap clustering
0224 ####################################################################
0225 def switchClusterizerParameters(da):
0226      if da:
0227           print(">>>>>>>>>> testPVValidation_cfg.py: msg%-i: Running DA Algorithm!")
0228           return DAClusterizationParams
0229      else:
0230           print(">>>>>>>>>> testPVValidation_cfg.py: msg%-i: Running GAP Algorithm!")
0231           return GapClusterizationParams
0232 
0233 ####################################################################
0234 # Configure the PVValidation Analyzer module
0235 ####################################################################
0236 process.PVValidation = cms.EDAnalyzer("PrimaryVertexValidation",
0237                                       TrackCollectionTag = cms.InputTag("TrackRefitter"),
0238                                       VertexCollectionTag = cms.InputTag("VERTEXTYPETEMPLATE"),
0239                                       Debug = cms.bool(False),
0240                                       storeNtuple = cms.bool(False),
0241                                       useTracksFromRecoVtx = cms.bool(False),
0242                                       isLightNtuple = cms.bool(True),
0243                                       askFirstLayerHit = cms.bool(False),
0244                                       forceBeamSpot = cms.untracked.bool(False),
0245                                       probePt = cms.untracked.double(PTCUTTEMPLATE),
0246                                       runControl = cms.untracked.bool(RUNCONTROLTEMPLATE),
0247                                       runControlNumber = cms.untracked.vuint32(int(runboundary)),
0248                                       TkFilterParameters = FilteringParams,
0249                                       TkClusParameters = switchClusterizerParameters(isDA)
0250                                       )
0251 
0252 ####################################################################
0253 # Path
0254 ####################################################################
0255 process.p = cms.Path(process.goodvertexSkim*
0256                      process.offlineBeamSpot*
0257                      process.TrackRefitter*
0258                      process.PVValidation)