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
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
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
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
0081
0082 process.load("FWCore.MessageService.MessageLogger_cfi")
0083 process.MessageLogger.cerr.FwkReport.reportEvery = 1000
0084
0085
0086
0087
0088 process.load("TrackingTools.TransientTrack.TransientTrackBuilder_cfi")
0089
0090
0091
0092
0093 process.load('Configuration.StandardSequences.MagneticField_cff')
0094
0095
0096
0097
0098 process.load("Configuration.Geometry.GeometryRecoDB_cff")
0099
0100
0101
0102
0103 process.load("RecoVertex.BeamSpotProducer.BeamSpot_cff")
0104
0105
0106
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
0117
0118 process=customiseAlignmentAndAPE(process)
0119
0120
0121
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
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
0138
0139
0140 else:
0141 print(">>>>>>>>>> testPVValidation_cfg.py: msg%-i: Not applying extra calibration constants!")
0142
0143
0144
0145
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
0177
0178
0179
0180
0181
0182
0183
0184
0185
0186
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
0198
0199 process.TFileService = cms.Service("TFileService",
0200 fileName=cms.string("OUTFILETEMPLATE")
0201 )
0202
0203
0204
0205
0206 from RecoVertex.PrimaryVertexProducer.OfflinePrimaryVertices_cfi import offlinePrimaryVertices
0207
0208 FilteringParams = offlinePrimaryVertices.TkFilterParameters.clone(
0209 maxNormalizedChi2 = 5.0,
0210 maxD0Significance = 5.0,
0211 maxEta = 5.0,
0212 )
0213
0214
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))
0220 )
0221
0222
0223
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
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
0254
0255 process.p = cms.Path(process.goodvertexSkim*
0256 process.offlineBeamSpot*
0257 process.TrackRefitter*
0258 process.PVValidation)