File indexing completed on 2025-04-17 02:41:45
0001 import os
0002
0003 import FWCore.ParameterSet.Config as cms
0004
0005
0006
0007
0008
0009
0010
0011 import FWCore.ParameterSet.VarParsing as VarParsing
0012 import sys
0013 options = VarParsing.VarParsing ('standard')
0014 options.register('sample', 'data1', VarParsing.VarParsing.multiplicity.singleton, VarParsing.VarParsing.varType.string, "Input sample")
0015 options.register('globalTag', "None", VarParsing.VarParsing.multiplicity.singleton, VarParsing.VarParsing.varType.string, "Custom global tag")
0016 options.register('measurementName', "workingArea", VarParsing.VarParsing.multiplicity.singleton, VarParsing.VarParsing.varType.string, "Folder in which to store results")
0017 options.register('fileNumber', 1, VarParsing.VarParsing.multiplicity.singleton, VarParsing.VarParsing.varType.int, "Input file number")
0018 options.register('iterNumber', 0, VarParsing.VarParsing.multiplicity.singleton, VarParsing.VarParsing.varType.int, "Iteration number")
0019 options.register('lastIter', False, VarParsing.VarParsing.multiplicity.singleton, VarParsing.VarParsing.varType.bool, "Last iteration")
0020 options.register('alignRcd','', VarParsing.VarParsing.multiplicity.singleton, VarParsing.VarParsing.varType.string, "AlignmentRcd")
0021 options.register('conditions',"None", VarParsing.VarParsing.multiplicity.singleton, VarParsing.VarParsing.varType.string, "File with conditions")
0022 options.register('cosmics', False, VarParsing.VarParsing.multiplicity.singleton, VarParsing.VarParsing.varType.bool, "Cosmic data set")
0023
0024 options.parseArguments()
0025
0026 print("Input sample: ", options.sample)
0027 print("Input file number", options.fileNumber)
0028 print("Iteration number: ", options.iterNumber)
0029 print("Last iteration: ", options.lastIter)
0030 print("AlignmentRcd: ", options.alignRcd)
0031
0032
0033
0034
0035
0036
0037 process = cms.Process("ApeEstimator")
0038
0039
0040 process.load("Configuration.Geometry.GeometryRecoDB_cff")
0041 process.load("Configuration.StandardSequences.Services_cff")
0042 process.load("Configuration.StandardSequences.MagneticField_cff")
0043 process.load("RecoVertex.BeamSpotProducer.BeamSpot_cff")
0044 process.load("Configuration.StandardSequences.FrontierConditions_GlobalTag_cff")
0045 from Configuration.AlCa.GlobalTag import GlobalTag
0046 from CondCore.CondDB.CondDB_cfi import *
0047
0048
0049
0050
0051 process.load("FWCore.MessageService.MessageLogger_cfi")
0052 process.MessageLogger.SectorBuilder=dict()
0053 process.MessageLogger.ResidualErrorBinning=dict()
0054 process.MessageLogger.HitSelector=dict()
0055 process.MessageLogger.CalculateAPE=dict()
0056 process.MessageLogger.ApeEstimator=dict()
0057 process.MessageLogger.TrackRefitter=dict()
0058 process.MessageLogger.AlignmentTrackSelector=dict()
0059 process.MessageLogger.cerr.threshold = 'WARNING'
0060 process.MessageLogger.cerr.INFO.limit = 0
0061 process.MessageLogger.cerr.default.limit = -1
0062 process.MessageLogger.cerr.SectorBuilder = cms.untracked.PSet(limit = cms.untracked.int32(-1))
0063 process.MessageLogger.cerr.HitSelector = cms.untracked.PSet(limit = cms.untracked.int32(-1))
0064 process.MessageLogger.cerr.CalculateAPE = cms.untracked.PSet(limit = cms.untracked.int32(-1))
0065 process.MessageLogger.cerr.ApeEstimator = cms.untracked.PSet(limit = cms.untracked.int32(-1))
0066 process.MessageLogger.cerr.AlignmentTrackSelector = cms.untracked.PSet(limit = cms.untracked.int32(-1))
0067 process.MessageLogger.cerr.FwkReport.reportEvery = 1000
0068
0069
0070
0071
0072
0073 process.options = cms.untracked.PSet(
0074 wantSummary = cms.untracked.bool(True),
0075 )
0076
0077
0078
0079
0080
0081
0082 isData1 = isData2 = False
0083 isData = False
0084 isQcd = isWlnu = isZmumu = isZtautau = isZmumu10 = isZmumu20 = isZmumu50 = False
0085 isMc = False
0086 isParticleGunMuon = isParticleGunPion = False
0087 isParticleGun = False
0088 if options.sample == 'data1':
0089 isData = True
0090 elif options.sample == 'data2':
0091 isData = True
0092 elif options.sample == 'data3':
0093 isData = True
0094 elif options.sample == 'data4':
0095 isData = True
0096 elif options.sample == 'qcd':
0097 isMc = True
0098 elif options.sample == 'wlnu':
0099 isMc = True
0100 elif options.sample == 'zmumu':
0101 isMc = True
0102 elif options.sample == 'ztautau':
0103 isMc = True
0104 elif options.sample == 'zmumu10':
0105 isMc = True
0106 elif options.sample == 'zmumu20':
0107 isMc = True
0108 elif options.sample == 'zmumu50':
0109 isMc = True
0110 elif "MC" in options.sample:
0111 isMc = True
0112 print(options.sample)
0113 else:
0114 print('ERROR --- incorrect data sammple: ', options.sample)
0115 exit(8888)
0116
0117
0118
0119
0120
0121 readFiles = cms.untracked.vstring()
0122 process.source = cms.Source ("PoolSource",
0123 fileNames = readFiles
0124 )
0125 readFiles.extend( [
0126 'file:reco.root',
0127 ] )
0128
0129
0130
0131
0132
0133
0134 process.maxEvents = cms.untracked.PSet( input = cms.untracked.int32(options.maxEvents) )
0135
0136
0137
0138
0139
0140
0141 process.source.duplicateCheckMode = cms.untracked.string("checkEachRealDataFile")
0142
0143
0144
0145
0146
0147
0148 process.load("Alignment.APEEstimation.TrackRefitter_38T_cff")
0149
0150 if options.globalTag != "None":
0151 process.GlobalTag = GlobalTag(process.GlobalTag, options.globalTag, '')
0152 elif isParticleGun:
0153 process.GlobalTag = GlobalTag(process.GlobalTag, 'auto:run2_design', '')
0154 elif isMc:
0155
0156 process.GlobalTag = GlobalTag(process.GlobalTag, 'auto:phase1_2018_realistic', '')
0157 elif isData:
0158 process.GlobalTag = GlobalTag(process.GlobalTag, 'auto:run2_data', '')
0159
0160 if options.conditions != "None":
0161 import importlib
0162 mod = importlib.import_module("Alignment.APEEstimation.conditions.{}".format(options.conditions))
0163 mod.applyConditions(process)
0164
0165
0166
0167
0168 if options.alignRcd=='fromConditions':
0169 pass
0170 elif options.alignRcd=='design':
0171 pass
0172 elif options.alignRcd == 'globalTag':
0173 pass
0174 elif options.alignRcd == 'useStartGlobalTagForAllConditions':
0175 pass
0176 elif options.alignRcd == '':
0177 pass
0178 else:
0179 print('ERROR --- incorrect alignment: ', options.alignRcd)
0180 exit(8888)
0181
0182
0183 if options.iterNumber!=0:
0184 CondDBAlignmentError = CondDB.clone(connect = cms.string('sqlite_file:'+os.environ['CMSSW_BASE']+'/src/Alignment/APEEstimation/hists/'+options.measurementName+'/apeObjects/apeIter'+str(options.iterNumber-1)+'.db'))
0185 process.myTrackerAlignmentErr = cms.ESSource("PoolDBESSource",
0186 CondDBAlignmentError,
0187 toGet = cms.VPSet(
0188 cms.PSet(
0189 record = cms.string('TrackerAlignmentErrorExtendedRcd'),
0190 tag = cms.string('APEs')
0191 )
0192 )
0193 )
0194 process.es_prefer_trackerAlignmentErr = cms.ESPrefer("PoolDBESSource","myTrackerAlignmentErr")
0195
0196
0197
0198
0199
0200 if isParticleGun:
0201 process.load("Alignment.APEEstimation.BeamspotForParticleGun_cff")
0202
0203
0204
0205
0206
0207 from Alignment.APEEstimation.ApeEstimator_cff import *
0208 process.ApeEstimator1 = ApeEstimator.clone(
0209 tjTkAssociationMapTag = "TrackRefitterForApeEstimator",
0210 applyTrackCuts = False,
0211 analyzerMode = False,
0212 calculateApe = True,
0213 Sectors = RecentSectors,
0214 )
0215
0216 process.ApeEstimator2 = process.ApeEstimator1.clone(
0217 Sectors = ValidationSectors,
0218 analyzerMode = True,
0219 calculateApe = False,
0220 )
0221 process.ApeEstimator3 = process.ApeEstimator2.clone(
0222 zoomHists = False,
0223 )
0224
0225 process.ApeEstimatorSequence = cms.Sequence(process.ApeEstimator1)
0226 if options.iterNumber==0:
0227 process.ApeEstimatorSequence *= process.ApeEstimator2
0228 process.ApeEstimatorSequence *= process.ApeEstimator3
0229 elif options.lastIter == True:
0230 process.ApeEstimatorSequence *= process.ApeEstimator2
0231
0232
0233
0234
0235
0236
0237 process.TFileService = cms.Service("TFileService",
0238 fileName = cms.string(os.environ['CMSSW_BASE'] + '/src/Alignment/APEEstimation/hists/'+options.measurementName+'/'+options.sample+str(options.fileNumber)+'.root'),
0239 closeFileFast = cms.untracked.bool(True)
0240 )
0241
0242
0243
0244
0245
0246
0247
0248 if not options.cosmics:
0249 process.p = cms.Path(
0250 process.RefitterHighPuritySequence*
0251 process.ApeEstimatorSequence
0252 )
0253 else:
0254 process.p = cms.Path(
0255 process.RefitterNoPuritySequence*
0256 process.ApeEstimatorSequence
0257 )
0258
0259
0260