File indexing completed on 2025-05-23 23:48:06
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 bsFromFile = "offlineBeamSpot::RECO",
0171 bsFromDB = "offlineBeamSpot::@currentProcess",
0172 dbFromEvent = True,
0173 warningThr = 3,
0174 errorThr = 5,
0175 )
0176
0177 if isMC:
0178 process.goodvertexSkim = cms.Sequence(process.noscraping+process.filterOutLowPt)
0179 else:
0180 process.goodvertexSkim = cms.Sequence(process.primaryVertexFilter + process.noscraping + process.filterOutLowPt)
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
0221 if(theRefitter == RefitType.COMMON):
0222
0223 print("############ testPVValidation_cfg.py: msg%-i: using the common track selection and refit sequence!")
0224
0225
0226
0227 import Alignment.CommonAlignment.tools.trackselectionRefitting as trackselRefit
0228 process.seqTrackselRefit = trackselRefit.getSequence(process, 'TRACKTYPETEMPLATE',
0229 isPVValidation=True,
0230 TTRHBuilder='TTRHBUILDERTEMPLATE',
0231 usePixelQualityFlag=True,
0232 openMassWindow=False,
0233 cosmicsDecoMode=True,
0234 cosmicsZeroTesla=False,
0235 momentumConstraint=None,
0236 cosmicTrackSplitting=False,
0237 use_d0cut=False,
0238 )
0239 if((process.TrackerTrackHitFilter.usePixelQualityFlag.value()==True) and (process.FirstTrackRefitter.TTRHBuilder.value()=="WithTrackAngle")):
0240 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)
0241 process.TrackerTrackHitFilter.usePixelQualityFlag = False
0242
0243 elif (theRefitter == RefitType.STANDARD):
0244
0245 print("############ testPVValidation_cfg.py: msg%-i: using the standard single refit sequence!")
0246
0247
0248
0249
0250
0251
0252
0253
0254
0255
0256
0257
0258
0259 process.load("RecoTracker.TrackProducer.TrackRefitters_cff")
0260 import RecoTracker.TrackProducer.TrackRefitters_cff
0261 process.FinalTrackRefitter = RecoTracker.TrackProducer.TrackRefitter_cfi.TrackRefitter.clone()
0262 process.FinalTrackRefitter.src = "TRACKTYPETEMPLATE"
0263 process.FinalTrackRefitter.TrajectoryInEvent = True
0264 process.FinalTrackRefitter.NavigationSchool = ''
0265 process.FinalTrackRefitter.TTRHBuilder = "TTRHBUILDERTEMPLATE"
0266
0267
0268
0269
0270 process.load("RecoLocalTracker.SiPixelRecHits.SiPixelTemplateStoreESProducer_cfi")
0271 process.seqTrackselRefit = cms.Sequence(process.offlineBeamSpot*
0272
0273
0274 process.FinalTrackRefitter,
0275 cms.Task(process.SiPixelTemplateStoreESProducer))
0276
0277
0278
0279
0280 process.TFileService = cms.Service("TFileService",fileName=cms.string("OUTFILETEMPLATE"))
0281
0282
0283
0284
0285 from RecoVertex.PrimaryVertexProducer.OfflinePrimaryVertices_cfi import offlinePrimaryVertices
0286
0287 FilteringParams = offlinePrimaryVertices.TkFilterParameters.clone(
0288 maxNormalizedChi2 = 5.0,
0289 maxD0Significance = 5.0,
0290 maxEta = 5.0,
0291 )
0292
0293
0294 from RecoVertex.PrimaryVertexProducer.OfflinePrimaryVertices_cfi import DA_vectParameters
0295 DAClusterizationParams = DA_vectParameters.clone()
0296
0297 GapClusterizationParams = cms.PSet(algorithm = cms.string('gap'),
0298 TkGapClusParameters = cms.PSet(zSeparation = cms.double(0.2))
0299 )
0300
0301
0302
0303
0304 def switchClusterizerParameters(da):
0305 if da:
0306 print("############ testPVValidation_cfg.py: msg%-i: Running DA Algorithm!")
0307 return DAClusterizationParams
0308 else:
0309 print("############ testPVValidation_cfg.py: msg%-i: Running GAP Algorithm!")
0310 return GapClusterizationParams
0311
0312
0313
0314
0315 process.PVValidation = cms.EDAnalyzer("PrimaryVertexValidation",
0316 numberOfBins = cms.untracked.int32(48),
0317 TrackCollectionTag = cms.InputTag("FinalTrackRefitter"),
0318 VertexCollectionTag = cms.InputTag("VERTEXTYPETEMPLATE"),
0319 Debug = cms.bool(False),
0320 storeNtuple = cms.bool(False),
0321 useTracksFromRecoVtx = cms.bool(False),
0322 isLightNtuple = cms.bool(True),
0323 askFirstLayerHit = cms.bool(False),
0324 forceBeamSpot = cms.untracked.bool(False),
0325 probePt = cms.untracked.double(PTCUTTEMPLATE),
0326 probeEta = cms.untracked.double(2.7),
0327 runControl = cms.untracked.bool(RUNCONTROLTEMPLATE),
0328 intLumi = cms.untracked.double(INTLUMITEMPLATE),
0329 runControlNumber = cms.untracked.vuint32(int(runboundary)),
0330 TkFilterParameters = FilteringParams,
0331 TkClusParameters = switchClusterizerParameters(isDA)
0332 )
0333
0334
0335
0336
0337 process.p = cms.Path(process.goodvertexSkim*
0338
0339
0340 process.seqTrackselRefit*
0341 process.BeamSpotChecker*
0342
0343
0344
0345
0346 process.PVValidation)