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