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