File indexing completed on 2025-06-12 23:29:24
0001 import FWCore.ParameterSet.Config as cms
0002 import sys
0003 from enum import Enum
0004 from Alignment.OfflineValidation.TkAlAllInOneTool.defaultInputFiles_cff import filesDefaultMC_TTBarPU
0005
0006 class RefitType(Enum):
0007 STANDARD = 1
0008 COMMON = 2
0009
0010 isDA = True
0011 isMC = True
0012 allFromGT = True
0013 applyBows = True
0014 applyExtraConditions = True
0015 theRefitter = RefitType.COMMON
0016 _theTrackCollection = 'generalTracks'
0017
0018 process = cms.Process("Demo")
0019
0020
0021
0022
0023 process.options.numberOfThreads = 8
0024
0025
0026
0027
0028 process.source = cms.Source("PoolSource",
0029 fileNames = filesDefaultMC_TTBarPU,
0030 duplicateCheckMode = cms.untracked.string('checkAllFilesOpened')
0031 )
0032
0033 runboundary = 1
0034 process.source.firstRun = cms.untracked.uint32(int(runboundary))
0035 process.maxEvents = cms.untracked.PSet( input = cms.untracked.int32(100) )
0036
0037
0038
0039
0040 if isMC:
0041 print("############ testPVValidation_cfg.py: msg%-i: This is Simulation!")
0042 runboundary = 1
0043 else:
0044 print("############ testPVValidation_cfg.py: msg%-i: This is DATA!")
0045 import FWCore.PythonUtilities.LumiList as LumiList
0046 process.source.lumisToProcess = LumiList.LumiList(filename ='None').getVLuminosityBlockRange()
0047
0048
0049
0050
0051 process.load('FWCore.MessageService.MessageLogger_cfi')
0052 process.MessageLogger.cerr.enable = False
0053 process.MessageLogger.PrimaryVertexValidation=dict()
0054 process.MessageLogger.SplitVertexResolution=dict()
0055 process.MessageLogger.FilterOutLowPt=dict()
0056 process.MessageLogger.cout = cms.untracked.PSet(
0057 enable = cms.untracked.bool(True),
0058 threshold = cms.untracked.string("INFO"),
0059 default = cms.untracked.PSet(limit = cms.untracked.int32(0)),
0060 FwkReport = cms.untracked.PSet(limit = cms.untracked.int32(-1),
0061 reportEvery = cms.untracked.int32(1000)
0062 ),
0063 PrimaryVertexValidation = cms.untracked.PSet( limit = cms.untracked.int32(-1)),
0064 SplitVertexResolution = cms.untracked.PSet( limit = cms.untracked.int32(-1)),
0065 FilterOutLowPt = cms.untracked.PSet( limit = cms.untracked.int32(-1)),
0066 enableStatistics = cms.untracked.bool(True)
0067 )
0068
0069
0070
0071
0072 process.load("TrackingTools.TransientTrack.TransientTrackBuilder_cfi")
0073
0074
0075
0076
0077 process.load('Configuration.StandardSequences.MagneticField_cff')
0078
0079
0080
0081
0082 process.load("Configuration.Geometry.GeometryRecoDB_cff")
0083
0084
0085
0086
0087 process.load("RecoVertex.BeamSpotProducer.BeamSpot_cff")
0088
0089
0090
0091
0092 process.load("Configuration.StandardSequences.FrontierConditions_GlobalTag_cff")
0093 from Configuration.AlCa.GlobalTag import GlobalTag
0094 process.GlobalTag = GlobalTag(process.GlobalTag, '125X_mcRun3_2022_realistic_v3', '')
0095
0096 if allFromGT:
0097 print("############ testPVValidation_cfg.py: msg%-i: All is taken from GT")
0098 else:
0099
0100
0101
0102 from CondCore.DBCommon.CondDBSetup_cfi import *
0103 process.trackerAlignment = cms.ESSource("PoolDBESSource",CondDBSetup,
0104 connect = cms.string('frontier://FrontierProd/CMS_CONDITIONS'),
0105 toGet = cms.VPSet(cms.PSet(record = cms.string('TrackerAlignmentRcd'),
0106 tag = cms.string('TrackerAlignment_Upgrade2017_design_v4')
0107 )
0108 )
0109 )
0110 process.es_prefer_trackerAlignment = cms.ESPrefer("PoolDBESSource", "trackerAlignment")
0111
0112
0113
0114
0115 process.setAPE = cms.ESSource("PoolDBESSource",CondDBSetup,
0116 connect = cms.string('frontier://FrontierProd/CMS_CONDITIONS'),
0117 toGet = cms.VPSet(cms.PSet(record = cms.string('TrackerAlignmentErrorExtendedRcd'),
0118 tag = cms.string('TrackerAlignmentErrorsExtended_Upgrade2017_design_v0')
0119 )
0120 )
0121 )
0122 process.es_prefer_setAPE = cms.ESPrefer("PoolDBESSource", "setAPE")
0123
0124
0125
0126
0127 if applyBows:
0128 print("############ testPVValidation_cfg.py: msg%-i: Applying TrackerSurfaceDeformations!")
0129 process.trackerBows = cms.ESSource("PoolDBESSource",CondDBSetup,
0130 connect = cms.string('frontier://FrontierProd/CMS_CONDITIONS'),
0131 toGet = cms.VPSet(cms.PSet(record = cms.string('TrackerSurfaceDeformationRcd'),
0132 tag = cms.string('TrackerSurfaceDeformations_zero')
0133 )
0134 )
0135 )
0136 process.es_prefer_Bows = cms.ESPrefer("PoolDBESSource", "trackerBows")
0137 else:
0138 print("############ testPVValidation_cfg.py: msg%-i: MultiPVValidation: Not applying TrackerSurfaceDeformations!")
0139
0140
0141
0142
0143 if applyExtraConditions:
0144
0145 import CalibTracker.Configuration.Common.PoolDBESSource_cfi
0146
0147
0148 else:
0149 print("############ testPVValidation_cfg.py: msg%-i: Not applying extra calibration constants!")
0150
0151
0152
0153
0154 process.primaryVertexFilter = cms.EDFilter("VertexSelector",
0155 src = cms.InputTag("offlinePrimaryVertices"),
0156 cut = cms.string("!isFake && ndof > 4 && abs(z) <= 24 && position.Rho <= 2"),
0157 filter = cms.bool(True)
0158 )
0159
0160 process.noscraping = cms.EDFilter("FilterOutScraping",
0161 applyfilter = cms.untracked.bool(True),
0162 src = cms.untracked.InputTag(_theTrackCollection),
0163 debugOn = cms.untracked.bool(False),
0164 numtrack = cms.untracked.uint32(10),
0165 thresh = cms.untracked.double(0.25)
0166 )
0167
0168 process.noslowpt = cms.EDFilter("FilterOutLowPt",
0169 applyfilter = cms.untracked.bool(True),
0170 src = cms.untracked.InputTag(_theTrackCollection),
0171 debugOn = cms.untracked.bool(False),
0172 numtrack = cms.untracked.uint32(0),
0173 thresh = cms.untracked.int32(1),
0174 ptmin = cms.untracked.double(3.),
0175 runControl = cms.untracked.bool(True),
0176 runControlNumber = cms.untracked.vuint32(int(runboundary))
0177 )
0178
0179
0180
0181
0182 from RecoVertex.BeamSpotProducer.beamSpotCompatibilityChecker_cfi import beamSpotCompatibilityChecker
0183 process.BeamSpotChecker = beamSpotCompatibilityChecker.clone(
0184 bsFromFile = "offlineBeamSpot::RECO",
0185 bsFromDB = "offlineBeamSpot::@currentProcess",
0186 dbFromEvent = True,
0187 warningThr = 3,
0188 errorThr = 5,
0189 )
0190
0191 if isMC:
0192 process.goodvertexSkim = cms.Sequence(process.noscraping)
0193 else:
0194 process.goodvertexSkim = cms.Sequence(process.primaryVertexFilter + process.noscraping + process.noslowpt)
0195
0196
0197 if(theRefitter == RefitType.COMMON):
0198
0199 print("############ testPVValidation_cfg.py: msg%-i: using the common track selection and refit sequence!")
0200
0201
0202
0203 import Alignment.CommonAlignment.tools.trackselectionRefitting as trackselRefit
0204 process.seqTrackselRefit = trackselRefit.getSequence(process, _theTrackCollection,
0205 isPVValidation=True,
0206 TTRHBuilder='WithAngleAndTemplate',
0207 usePixelQualityFlag=True,
0208 openMassWindow=False,
0209 cosmicsDecoMode=True,
0210 cosmicsZeroTesla=False,
0211 momentumConstraint=None,
0212 cosmicTrackSplitting=False,
0213 use_d0cut=False,
0214 )
0215
0216 elif (theRefitter == RefitType.STANDARD):
0217
0218 print("############ testPVValidation_cfg.py: msg%-i: using the standard single refit sequence!")
0219
0220
0221
0222
0223
0224
0225
0226
0227
0228
0229
0230
0231
0232 process.load("RecoTracker.TrackProducer.TrackRefitters_cff")
0233 import RecoTracker.TrackProducer.TrackRefitters_cff
0234 process.FinalTrackRefitter = RecoTracker.TrackProducer.TrackRefitter_cfi.TrackRefitter.clone()
0235 process.FinalTrackRefitter.src = _theTrackCollection
0236 process.FinalTrackRefitter.TrajectoryInEvent = True
0237 process.FinalTrackRefitter.NavigationSchool = ''
0238 process.FinalTrackRefitter.TTRHBuilder = "WithAngleAndTemplate"
0239
0240
0241
0242
0243 process.load("RecoLocalTracker.SiPixelRecHits.SiPixelTemplateStoreESProducer_cfi")
0244 process.seqTrackselRefit = cms.Sequence(process.offlineBeamSpot*
0245
0246
0247 process.FinalTrackRefitter,
0248 cms.Task(process.SiPixelTemplateStoreESProducer))
0249
0250
0251
0252
0253 process.TFileService = cms.Service("TFileService",
0254 fileName=cms.string("PVValidation_test_0.root")
0255 )
0256
0257
0258
0259
0260 from RecoVertex.PrimaryVertexProducer.OfflinePrimaryVertices_cfi import offlinePrimaryVertices
0261
0262 FilteringParams = offlinePrimaryVertices.TkFilterParameters.clone(
0263 maxNormalizedChi2 = 5.0,
0264 maxD0Significance = 5.0,
0265 maxEta = 5.0,
0266 )
0267
0268
0269 from RecoVertex.PrimaryVertexProducer.OfflinePrimaryVertices_cfi import DA_vectParameters
0270 DAClusterizationParams = DA_vectParameters.clone()
0271
0272 GapClusterizationParams = cms.PSet(algorithm = cms.string('gap'),
0273 TkGapClusParameters = cms.PSet(zSeparation = cms.double(0.2))
0274 )
0275
0276
0277
0278
0279 def switchClusterizerParameters(da):
0280 if da:
0281 print("############ testPVValidation_cfg.py: msg%-i: Running DA Algorithm!")
0282 return DAClusterizationParams
0283 else:
0284 print("############ testPVValidation_cfg.py: msg%-i: Running GAP Algorithm!")
0285 return GapClusterizationParams
0286
0287
0288
0289
0290 process.PVValidation = cms.EDAnalyzer("PrimaryVertexValidation",
0291 TrackCollectionTag = cms.InputTag("FinalTrackRefitter"),
0292 VertexCollectionTag = cms.InputTag("offlinePrimaryVertices"),
0293 Debug = cms.bool(False),
0294 storeNtuple = cms.bool(False),
0295 useTracksFromRecoVtx = cms.bool(False),
0296 isLightNtuple = cms.bool(True),
0297 askFirstLayerHit = cms.bool(False),
0298 forceBeamSpot = cms.untracked.bool(False),
0299 probePt = cms.untracked.double(3.),
0300 minPt = cms.untracked.double(1.),
0301 maxPt = cms.untracked.double(30.),
0302 runControl = cms.untracked.bool(True),
0303 runControlNumber = cms.untracked.vuint32(int(runboundary)),
0304 TkFilterParameters = FilteringParams,
0305 TkClusParameters = switchClusterizerParameters(isDA)
0306 )
0307
0308
0309
0310
0311 process.p = cms.Path(process.goodvertexSkim*
0312 process.seqTrackselRefit*
0313 process.BeamSpotChecker*
0314 process.PVValidation)
0315
0316
0317 process.load("TrackingTools.TransientTrack.TransientTrackBuilder_cfi")
0318 process.offlinePrimaryVerticesFromRefittedTrks = offlinePrimaryVertices.clone()
0319 process.offlinePrimaryVerticesFromRefittedTrks.TrackLabel = cms.InputTag("FinalTrackRefitter")
0320 process.offlinePrimaryVerticesFromRefittedTrks.vertexCollections.maxDistanceToBeam = 1
0321 process.offlinePrimaryVerticesFromRefittedTrks.TkFilterParameters.maxNormalizedChi2 = 20
0322 process.offlinePrimaryVerticesFromRefittedTrks.TkFilterParameters.minSiliconLayersWithHits = 5
0323 process.offlinePrimaryVerticesFromRefittedTrks.TkFilterParameters.maxD0Significance = 5.0
0324
0325 process.offlinePrimaryVerticesFromRefittedTrks.TkFilterParameters.maxD0Error = 1.0
0326 process.offlinePrimaryVerticesFromRefittedTrks.TkFilterParameters.maxDzError = 1.0
0327 process.offlinePrimaryVerticesFromRefittedTrks.TkFilterParameters.minPixelLayersWithHits = 2
0328
0329
0330
0331
0332 from HLTrigger.HLTfilters.triggerResultsFilter_cfi import *
0333 process.HLTFilter = triggerResultsFilter.clone(
0334 triggerConditions = cms.vstring("HLT_ZeroBias_*"),
0335
0336 hltResults = cms.InputTag( "TriggerResults", "", "HLT" ),
0337 l1tResults = cms.InputTag( "" ),
0338 throw = cms.bool(False)
0339 )
0340
0341
0342
0343
0344 process.myanalysis = cms.EDAnalyzer("GeneralPurposeTrackAnalyzer",
0345 TkTag = cms.InputTag('FinalTrackRefitter'),
0346 isCosmics = cms.bool(False)
0347 )
0348
0349
0350
0351
0352 process.PrimaryVertexResolution = cms.EDAnalyzer('SplitVertexResolution',
0353 storeNtuple = cms.bool(True),
0354 vtxCollection = cms.InputTag("offlinePrimaryVerticesFromRefittedTrks"),
0355 trackCollection = cms.InputTag("FinalTrackRefitter"),
0356 minVertexNdf = cms.untracked.double(10.),
0357 minVertexMeanWeight = cms.untracked.double(0.5),
0358 runControl = cms.untracked.bool(True),
0359 runControlNumber = cms.untracked.vuint32(int(runboundary))
0360 )
0361
0362 process.p2 = cms.Path(process.HLTFilter +
0363 process.seqTrackselRefit +
0364 process.BeamSpotChecker +
0365 process.offlinePrimaryVerticesFromRefittedTrks +
0366 process.PrimaryVertexResolution +
0367 process.myanalysis
0368 )