File indexing completed on 2025-01-08 03:35:45
0001 import FWCore.ParameterSet.Config as cms
0002 from enum import Enum
0003 import sys
0004
0005 class RefitType(Enum):
0006 STANDARD = 1
0007 COMMON = 2
0008
0009 isDA = ISDATEMPLATE
0010 isMC = ISMCTEMPLATE
0011 allFromGT = ALLFROMGTTEMPLATE
0012 applyBows = APPLYBOWSTEMPLATE
0013 applyExtraConditions = EXTRACONDTEMPLATE
0014 theRefitter = REFITTERTEMPLATE
0015
0016 process = cms.Process("PrimaryVertexValidation")
0017
0018
0019
0020
0021 process.options.numberOfThreads = 8
0022
0023
0024 def customiseAlignmentAndAPE(process):
0025
0026 if not hasattr(process.GlobalTag,'toGet'):
0027 process.GlobalTag.toGet=cms.VPSet()
0028 process.GlobalTag.toGet.extend( cms.VPSet(cms.PSet(record = cms.string("TrackerAlignmentRcd"),
0029 tag = cms.string("GEOMTAGTEMPLATE"),
0030 connect = cms.string("ALIGNOBJTEMPLATE")
0031 ),
0032 cms.PSet(record = cms.string("TrackerAlignmentErrorExtendedRcd"),
0033 tag = cms.string("ERRORTAGTEMPLATE"),
0034 connect = cms.string("APEOBJTEMPLATE")
0035 )
0036 )
0037 )
0038 return process
0039
0040
0041 def customiseKinksAndBows(process):
0042
0043 if not hasattr(process.GlobalTag,'toGet'):
0044 process.GlobalTag.toGet=cms.VPSet()
0045 process.GlobalTag.toGet.extend(cms.VPSet(cms.PSet(record = cms.string("TrackerSurfaceDeformationRcd"),
0046 tag = cms.string("BOWSTAGTEMPLATE"),
0047 connect = cms.string("BOWSOBJECTTEMPLATE")
0048 ),
0049 )
0050 )
0051 return process
0052
0053
0054
0055
0056 readFiles = cms.untracked.vstring()
0057 readFiles.extend(FILESOURCETEMPLATE)
0058 process.source = cms.Source("PoolSource",
0059 fileNames = readFiles ,
0060 duplicateCheckMode = cms.untracked.string('checkAllFilesOpened')
0061 )
0062
0063 runboundary = RUNBOUNDARYTEMPLATE
0064 process.source.firstRun = cms.untracked.uint32(int(runboundary))
0065 process.maxEvents = cms.untracked.PSet( input = cms.untracked.int32(MAXEVENTSTEMPLATE) )
0066
0067
0068
0069
0070 if isMC:
0071 print("############ testPVValidation_cfg.py: msg%-i: This is Simulation!")
0072 runboundary = 1
0073 else:
0074 print("############ testPVValidation_cfg.py: msg%-i: This is DATA!")
0075 import FWCore.PythonUtilities.LumiList as LumiList
0076 process.source.lumisToProcess = LumiList.LumiList(filename ='LUMILISTTEMPLATE').getVLuminosityBlockRange()
0077
0078
0079
0080
0081 process.load("FWCore.MessageService.MessageLogger_cfi")
0082 process.MessageLogger.cerr.FwkReport.reportEvery = 1000
0083
0084
0085
0086
0087 process.load("TrackingTools.TransientTrack.TransientTrackBuilder_cfi")
0088
0089
0090
0091
0092 process.load('Configuration.StandardSequences.MagneticField_cff')
0093
0094
0095
0096
0097 process.load("Configuration.Geometry.GeometryRecoDB_cff")
0098
0099
0100
0101
0102 process.load("RecoVertex.BeamSpotProducer.BeamSpot_cff")
0103
0104
0105
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
0116
0117 process=customiseAlignmentAndAPE(process)
0118
0119
0120
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
0130
0131 if applyExtraConditions:
0132
0133 import CalibTracker.Configuration.Common.PoolDBESSource_cfi
0134
0135
0136 else:
0137 print("############ testPVValidation_cfg.py: msg%-i: Not applying extra calibration constants!")
0138
0139
0140
0141
0142 process.primaryVertexFilter = cms.EDFilter("VertexSelector",
0143 src = cms.InputTag("VERTEXTYPETEMPLATE"),
0144 cut = cms.string("!isFake && ndof > 4 && abs(z) <= 24 && position.Rho <= 2"),
0145 filter = cms.bool(True)
0146 )
0147
0148 process.noscraping = cms.EDFilter("FilterOutScraping",
0149 applyfilter = cms.untracked.bool(True),
0150 src = cms.untracked.InputTag("TRACKTYPETEMPLATE"),
0151 debugOn = cms.untracked.bool(False),
0152 numtrack = cms.untracked.uint32(10),
0153 thresh = cms.untracked.double(0.25)
0154 )
0155
0156 process.load("Alignment.CommonAlignment.filterOutLowPt_cfi")
0157 process.filterOutLowPt.applyfilter = True
0158 process.filterOutLowPt.src = "TRACKTYPETEMPLATE"
0159 process.filterOutLowPt.numtrack = 0
0160 process.filterOutLowPt.thresh = 1
0161 process.filterOutLowPt.ptmin = PTCUTTEMPLATE
0162 process.filterOutLowPt.runControl = RUNCONTROLTEMPLATE
0163 process.filterOutLowPt.runControlNumber = [runboundary]
0164
0165
0166
0167
0168 from RecoVertex.BeamSpotProducer.beamSpotCompatibilityChecker_cfi import beamSpotCompatibilityChecker
0169 process.BeamSpotChecker = beamSpotCompatibilityChecker.clone(
0170 bsFromEvent = "offlineBeamSpot::RECO",
0171 bsFromDB = "offlineBeamSpot",
0172 warningThr = 3,
0173 errorThr = 5,
0174 )
0175
0176 if isMC:
0177 process.goodvertexSkim = cms.Sequence(process.BeamSpotChecker + process.noscraping+process.filterOutLowPt)
0178 else:
0179 process.goodvertexSkim = cms.Sequence(process.BeamSpotChecker + process.primaryVertexFilter + process.noscraping + process.filterOutLowPt)
0180
0181
0182
0183
0184
0185
0186
0187
0188
0189
0190
0191
0192
0193
0194
0195
0196
0197
0198
0199
0200
0201
0202
0203
0204
0205
0206
0207
0208
0209
0210
0211
0212
0213
0214
0215
0216
0217
0218
0219
0220 if(theRefitter == RefitType.COMMON):
0221
0222 print("############ testPVValidation_cfg.py: msg%-i: using the common track selection and refit sequence!")
0223
0224
0225
0226 import Alignment.CommonAlignment.tools.trackselectionRefitting as trackselRefit
0227 process.seqTrackselRefit = trackselRefit.getSequence(process, 'TRACKTYPETEMPLATE',
0228 isPVValidation=True,
0229 TTRHBuilder='TTRHBUILDERTEMPLATE',
0230 usePixelQualityFlag=True,
0231 openMassWindow=False,
0232 cosmicsDecoMode=True,
0233 cosmicsZeroTesla=False,
0234 momentumConstraint=None,
0235 cosmicTrackSplitting=False,
0236 use_d0cut=False,
0237 )
0238 if((process.TrackerTrackHitFilter.usePixelQualityFlag.value()==True) and (process.FirstTrackRefitter.TTRHBuilder.value()=="WithTrackAngle")):
0239 print(" \n\n","*"*70,"\n *\t\t\t\t WARNING!!!!!\t\t\t\n *\n * Found an inconsistent configuration!\n * TTRHBuilder = WithTrackAngle requires usePixelQualityFlag = False.\n * Going to reset it! \n *\n","*"*70)
0240 process.TrackerTrackHitFilter.usePixelQualityFlag = False
0241
0242 elif (theRefitter == RefitType.STANDARD):
0243
0244 print("############ testPVValidation_cfg.py: msg%-i: using the standard single refit sequence!")
0245
0246
0247
0248
0249
0250
0251
0252
0253
0254
0255
0256
0257
0258 process.load("RecoTracker.TrackProducer.TrackRefitters_cff")
0259 import RecoTracker.TrackProducer.TrackRefitters_cff
0260 process.FinalTrackRefitter = RecoTracker.TrackProducer.TrackRefitter_cfi.TrackRefitter.clone()
0261 process.FinalTrackRefitter.src = "TRACKTYPETEMPLATE"
0262 process.FinalTrackRefitter.TrajectoryInEvent = True
0263 process.FinalTrackRefitter.NavigationSchool = ''
0264 process.FinalTrackRefitter.TTRHBuilder = "TTRHBUILDERTEMPLATE"
0265
0266
0267
0268
0269 process.load("RecoLocalTracker.SiPixelRecHits.SiPixelTemplateStoreESProducer_cfi")
0270 process.seqTrackselRefit = cms.Sequence(process.offlineBeamSpot*
0271
0272
0273 process.FinalTrackRefitter,
0274 cms.Task(process.SiPixelTemplateStoreESProducer))
0275
0276
0277
0278
0279 process.TFileService = cms.Service("TFileService",fileName=cms.string("OUTFILETEMPLATE"))
0280
0281
0282
0283
0284 from RecoVertex.PrimaryVertexProducer.OfflinePrimaryVertices_cfi import offlinePrimaryVertices
0285
0286 FilteringParams = offlinePrimaryVertices.TkFilterParameters.clone(
0287 maxNormalizedChi2 = 5.0,
0288 maxD0Significance = 5.0,
0289 maxEta = 5.0,
0290 )
0291
0292
0293 from RecoVertex.PrimaryVertexProducer.OfflinePrimaryVertices_cfi import DA_vectParameters
0294 DAClusterizationParams = DA_vectParameters.clone()
0295
0296 GapClusterizationParams = cms.PSet(algorithm = cms.string('gap'),
0297 TkGapClusParameters = cms.PSet(zSeparation = cms.double(0.2))
0298 )
0299
0300
0301
0302
0303 def switchClusterizerParameters(da):
0304 if da:
0305 print("############ testPVValidation_cfg.py: msg%-i: Running DA Algorithm!")
0306 return DAClusterizationParams
0307 else:
0308 print("############ testPVValidation_cfg.py: msg%-i: Running GAP Algorithm!")
0309 return GapClusterizationParams
0310
0311
0312
0313
0314 process.PVValidation = cms.EDAnalyzer("PrimaryVertexValidation",
0315 numberOfBins = cms.untracked.int32(48),
0316 TrackCollectionTag = cms.InputTag("FinalTrackRefitter"),
0317 VertexCollectionTag = cms.InputTag("VERTEXTYPETEMPLATE"),
0318 Debug = cms.bool(False),
0319 storeNtuple = cms.bool(False),
0320 useTracksFromRecoVtx = cms.bool(False),
0321 isLightNtuple = cms.bool(True),
0322 askFirstLayerHit = cms.bool(False),
0323 forceBeamSpot = cms.untracked.bool(False),
0324 probePt = cms.untracked.double(PTCUTTEMPLATE),
0325 probeEta = cms.untracked.double(2.7),
0326 runControl = cms.untracked.bool(RUNCONTROLTEMPLATE),
0327 intLumi = cms.untracked.double(INTLUMITEMPLATE),
0328 runControlNumber = cms.untracked.vuint32(int(runboundary)),
0329 TkFilterParameters = FilteringParams,
0330 TkClusParameters = switchClusterizerParameters(isDA)
0331 )
0332
0333
0334
0335
0336 process.p = cms.Path(process.goodvertexSkim*
0337
0338
0339 process.seqTrackselRefit*
0340
0341
0342
0343
0344 process.PVValidation)