Back to home page

Project CMSSW displayed by LXR

 
 

    


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

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