File indexing completed on 2023-03-17 10:39:45
0001 from __future__ import print_function
0002 import os
0003 import FWCore.ParameterSet.Config as cms
0004
0005
0006 try:
0007 import json
0008 except:
0009 try:
0010 import simplejson as json
0011 except:
0012 print("Please use lxplus or set an environment (for example crab) with json lib available")
0013 sys.exit(1)
0014
0015 inputfiles = os.environ["ALIGNMENT_INPUTFILES"].split(" ")
0016 iteration = int(os.environ["ALIGNMENT_ITERATION"])
0017 jobnumber = int(os.environ["ALIGNMENT_JOBNUMBER"])
0018 mapplots = (os.environ["ALIGNMENT_MAPPLOTS"] == "True")
0019 segdiffplots = (os.environ["ALIGNMENT_SEGDIFFPLOTS"] == "True")
0020 curvatureplots = (os.environ["ALIGNMENT_CURVATUREPLOTS"] == "True")
0021
0022 globaltag = os.environ["ALIGNMENT_GLOBALTAG"]
0023 inputdb = os.environ["ALIGNMENT_INPUTDB"]
0024 trackerconnect = os.environ["ALIGNMENT_TRACKERCONNECT"]
0025 trackeralignment = os.environ["ALIGNMENT_TRACKERALIGNMENT"]
0026 trackerAPEconnect = os.environ["ALIGNMENT_TRACKERAPECONNECT"]
0027 trackerAPE = os.environ["ALIGNMENT_TRACKERAPE"]
0028 trackerBowsconnect = os.environ["ALIGNMENT_TRACKERBOWSCONNECT"]
0029 trackerBows = os.environ["ALIGNMENT_TRACKERBOWS"]
0030 gprcdconnect = os.environ["ALIGNMENT_GPRCDCONNECT"]
0031 gprcd = os.environ["ALIGNMENT_GPRCD"]
0032
0033 iscosmics = (os.environ["ALIGNMENT_ISCOSMICS"] == "True")
0034 station123params = os.environ["ALIGNMENT_STATION123PARAMS"]
0035 station4params = os.environ["ALIGNMENT_STATION4PARAMS"]
0036 cscparams = os.environ["ALIGNMENT_CSCPARAMS"]
0037 minTrackPt = float(os.environ["ALIGNMENT_MINTRACKPT"])
0038 maxTrackPt = float(os.environ["ALIGNMENT_MAXTRACKPT"])
0039 minTrackP = float(os.environ["ALIGNMENT_MINTRACKP"])
0040 maxTrackP = float(os.environ["ALIGNMENT_MAXTRACKP"])
0041 minTrackerHits = int(os.environ["ALIGNMENT_MINTRACKERHITS"])
0042 maxTrackerRedChi2 = float(os.environ["ALIGNMENT_MAXTRACKERREDCHI2"])
0043 allowTIDTEC = (os.environ["ALIGNMENT_ALLOWTIDTEC"] == "True")
0044 twoBin = (os.environ["ALIGNMENT_TWOBIN"] == "True")
0045 weightAlignment = (os.environ["ALIGNMENT_WEIGHTALIGNMENT"] == "True")
0046 minAlignmentHits = int(os.environ["ALIGNMENT_MINALIGNMENTHITS"])
0047 combineME11 = (os.environ["ALIGNMENT_COMBINEME11"] == "True")
0048 maxEvents = int(os.environ["ALIGNMENT_MAXEVENTS"])
0049 skipEvents = int(os.environ["ALIGNMENT_SKIPEVENTS"])
0050 maxResSlopeY = float(os.environ["ALIGNMENT_MAXRESSLOPEY"])
0051 preFilter = (os.environ["ALIGNMENT_PREFILTER"] == "True")
0052 muonCollectionTag = os.environ["ALIGNMENT_MUONCOLLECTIONTAG"]
0053 maxDxy = float(os.environ["ALIGNMENT_MAXDXY"])
0054 minNCrossedChambers = int(os.environ["ALIGNMENT_MINNCROSSEDCHAMBERS"])
0055
0056
0057 createAlignNtuple = False
0058 envNtuple = os.getenv("ALIGNMENT_CREATEALIGNNTUPLE")
0059 if envNtuple is not None:
0060 if envNtuple=='True': createAlignNtuple = True
0061
0062
0063 createMapNtuple = False
0064 envNtuple = os.getenv("ALIGNMENT_CREATEMAPNTUPLE")
0065 if envNtuple is not None:
0066 if envNtuple=='True': createMapNtuple = True
0067
0068
0069 doDT = True
0070 doCSC = True
0071 envDT = os.getenv("ALIGNMENT_DO_DT")
0072 envCSC = os.getenv("ALIGNMENT_DO_CSC")
0073 if envDT is not None and envCSC is not None:
0074 if envDT=='True' and envCSC=='False':
0075 doDT = True
0076 doCSC = False
0077 if envDT=='False' and envCSC=='True':
0078 doDT = False
0079 doCSC = True
0080
0081
0082 good_lumis = []
0083 json_file = os.getenv("ALIGNMENT_JSON")
0084
0085 if json_file is not None and json_file != '':
0086 jsonfile=file(json_file, 'r')
0087 jsondict = json.load(jsonfile)
0088 runs = sorted(jsondict.keys())
0089 for run in runs:
0090 blocks = sorted(jsondict[run])
0091 prevblock = [-2,-2]
0092 for lsrange in blocks:
0093 if lsrange[0] == prevblock[1]+1:
0094
0095 prevblock[1] = lsrange[1]
0096 good_lumis[-1] = str("%s:%s-%s:%s" % (run, prevblock[0], run, prevblock[1]))
0097 else:
0098 good_lumis.append(str("%s:%s-%s:%s" % (run, lsrange[0], run, lsrange[1])))
0099 prevblock = lsrange
0100
0101
0102 process = cms.Process("GATHER")
0103
0104 process.load("Geometry.MuonNumbering.muonNumberingInitialization_cfi")
0105 process.load("Geometry.DTGeometry.dtGeometry_cfi")
0106 process.load("Geometry.RPCGeometry.rpcGeometry_cfi")
0107 process.load("Geometry.CSCGeometry.cscGeometry_cfi")
0108 process.load("Geometry.CommonTopologies.bareGlobalTrackingGeometry_cfi")
0109
0110
0111 process.load("TrackingTools.TrackAssociator.DetIdAssociatorESProducer_cff")
0112 from TrackingTools.TrackAssociator.DetIdAssociatorESProducer_cff import *
0113 from TrackingTools.TrackAssociator.default_cfi import *
0114
0115
0116 process.load("Configuration.StandardSequences.Reconstruction_cff")
0117
0118 process.MuonNumberingInitialization = cms.ESProducer("MuonNumberingInitialization")
0119 process.MuonNumberingRecord = cms.ESSource( "EmptyESSource",
0120 recordName = cms.string( "MuonNumberingRecord" ),
0121 iovIsRunNotTime = cms.bool( True ),
0122 firstValid = cms.vuint32( 1 )
0123 )
0124
0125 process.load("Configuration.StandardSequences.GeometryDB_cff")
0126 process.load('Configuration.StandardSequences.MagneticField_cff')
0127
0128 if len(good_lumis)>0:
0129 process.source = cms.Source("PoolSource",
0130 fileNames = cms.untracked.vstring(*inputfiles),
0131 skipEvents = cms.untracked.uint32(skipEvents),
0132 lumisToProcess = cms.untracked.VLuminosityBlockRange(*good_lumis))
0133 else:
0134 process.source = cms.Source("PoolSource",
0135 fileNames = cms.untracked.vstring(*inputfiles),
0136 skipEvents = cms.untracked.uint32(skipEvents))
0137
0138 process.maxEvents = cms.untracked.PSet(input = cms.untracked.int32(maxEvents))
0139
0140
0141
0142 process.MessageLogger = cms.Service("MessageLogger",
0143 destinations = cms.untracked.vstring("cout"),
0144 cout = cms.untracked.PSet(threshold = cms.untracked.string("ERROR"),
0145 ERROR = cms.untracked.PSet(limit = cms.untracked.int32(10))))
0146
0147 process.load("Alignment.MuonAlignmentAlgorithms.MuonAlignmentFromReference_cff")
0148 process.looper.ParameterBuilder.Selector.alignParams = cms.vstring("MuonDTChambers,%s,stations123" % station123params, "MuonDTChambers,%s,station4" % station4params, "MuonCSCChambers,%s" % cscparams)
0149
0150
0151 process.looper.algoConfig.writeTemporaryFile = "alignment%04d.tmp" % jobnumber
0152 process.looper.algoConfig.doAlignment = False
0153 process.looper.algoConfig.muonCollectionTag = cms.InputTag(muonCollectionTag)
0154 process.looper.algoConfig.minTrackPt = minTrackPt
0155 process.looper.algoConfig.maxTrackPt = maxTrackPt
0156 process.looper.algoConfig.minTrackP = minTrackP
0157 process.looper.algoConfig.maxTrackP = maxTrackP
0158 process.looper.algoConfig.maxDxy = maxDxy
0159 process.looper.algoConfig.minTrackerHits = minTrackerHits
0160 process.looper.algoConfig.maxTrackerRedChi2 = maxTrackerRedChi2
0161 process.looper.algoConfig.allowTIDTEC = allowTIDTEC
0162 process.looper.algoConfig.minNCrossedChambers = minNCrossedChambers
0163 process.looper.algoConfig.twoBin = twoBin
0164 process.looper.algoConfig.weightAlignment = weightAlignment
0165 process.looper.algoConfig.minAlignmentHits = minAlignmentHits
0166 process.looper.algoConfig.combineME11 = combineME11
0167 process.looper.algoConfig.maxResSlopeY = maxResSlopeY
0168
0169 process.looper.algoConfig.minDT13Hits = 7
0170 process.looper.algoConfig.doDT = doDT
0171 process.looper.algoConfig.doCSC = doCSC
0172
0173 process.looper.monitorConfig = cms.PSet(monitors = cms.untracked.vstring())
0174
0175 if mapplots:
0176 process.load("Alignment.CommonAlignmentMonitor.AlignmentMonitorMuonSystemMap1D_cfi")
0177 process.looper.monitorConfig.monitors.append("AlignmentMonitorMuonSystemMap1D")
0178 process.looper.monitorConfig.AlignmentMonitorMuonSystemMap1D = process.AlignmentMonitorMuonSystemMap1D
0179 process.looper.monitorConfig.AlignmentMonitorMuonSystemMap1D.muonCollectionTag = cms.InputTag(muonCollectionTag)
0180 process.looper.monitorConfig.AlignmentMonitorMuonSystemMap1D.minTrackPt = minTrackPt
0181 process.looper.monitorConfig.AlignmentMonitorMuonSystemMap1D.maxTrackPt = maxTrackPt
0182 process.looper.monitorConfig.AlignmentMonitorMuonSystemMap1D.minTrackP = minTrackP
0183 process.looper.monitorConfig.AlignmentMonitorMuonSystemMap1D.maxTrackP = maxTrackP
0184 process.looper.monitorConfig.AlignmentMonitorMuonSystemMap1D.maxDxy = maxDxy
0185 process.looper.monitorConfig.AlignmentMonitorMuonSystemMap1D.minTrackerHits = minTrackerHits
0186 process.looper.monitorConfig.AlignmentMonitorMuonSystemMap1D.maxTrackerRedChi2 = maxTrackerRedChi2
0187 process.looper.monitorConfig.AlignmentMonitorMuonSystemMap1D.allowTIDTEC = allowTIDTEC
0188 process.looper.monitorConfig.AlignmentMonitorMuonSystemMap1D.minNCrossedChambers = process.looper.algoConfig.minNCrossedChambers
0189 process.looper.monitorConfig.AlignmentMonitorMuonSystemMap1D.minDT13Hits = process.looper.algoConfig.minDT13Hits
0190 process.looper.monitorConfig.AlignmentMonitorMuonSystemMap1D.minDT2Hits = process.looper.algoConfig.minDT2Hits
0191 process.looper.monitorConfig.AlignmentMonitorMuonSystemMap1D.minCSCHits = process.looper.algoConfig.minCSCHits
0192 process.looper.monitorConfig.AlignmentMonitorMuonSystemMap1D.doDT = doDT
0193 process.looper.monitorConfig.AlignmentMonitorMuonSystemMap1D.doCSC = doCSC
0194 process.looper.monitorConfig.AlignmentMonitorMuonSystemMap1D.createNtuple = createMapNtuple
0195
0196 if segdiffplots:
0197 process.load("Alignment.CommonAlignmentMonitor.AlignmentMonitorSegmentDifferences_cfi")
0198 process.looper.monitorConfig.monitors.append("AlignmentMonitorSegmentDifferences")
0199 process.looper.monitorConfig.AlignmentMonitorSegmentDifferences = process.AlignmentMonitorSegmentDifferences
0200 process.looper.monitorConfig.AlignmentMonitorSegmentDifferences.muonCollectionTag = cms.InputTag(muonCollectionTag)
0201 process.looper.monitorConfig.AlignmentMonitorSegmentDifferences.minTrackPt = minTrackPt
0202 process.looper.monitorConfig.AlignmentMonitorSegmentDifferences.minTrackP = minTrackP
0203 process.looper.monitorConfig.AlignmentMonitorSegmentDifferences.maxDxy = maxDxy
0204 process.looper.monitorConfig.AlignmentMonitorSegmentDifferences.minTrackerHits = minTrackerHits
0205 process.looper.monitorConfig.AlignmentMonitorSegmentDifferences.maxTrackerRedChi2 = maxTrackerRedChi2
0206 process.looper.monitorConfig.AlignmentMonitorSegmentDifferences.allowTIDTEC = allowTIDTEC
0207 process.looper.monitorConfig.AlignmentMonitorSegmentDifferences.minNCrossedChambers = process.looper.algoConfig.minNCrossedChambers
0208 process.looper.monitorConfig.AlignmentMonitorSegmentDifferences.minDT13Hits = process.looper.algoConfig.minDT13Hits
0209 process.looper.monitorConfig.AlignmentMonitorSegmentDifferences.minDT2Hits = process.looper.algoConfig.minDT2Hits
0210 process.looper.monitorConfig.AlignmentMonitorSegmentDifferences.minCSCHits = process.looper.algoConfig.minCSCHits
0211 process.looper.monitorConfig.AlignmentMonitorSegmentDifferences.doDT = doDT
0212 process.looper.monitorConfig.AlignmentMonitorSegmentDifferences.doCSC = doCSC
0213
0214 if curvatureplots:
0215 process.load("Alignment.CommonAlignmentMonitor.AlignmentMonitorMuonVsCurvature_cfi")
0216 process.looper.monitorConfig.monitors.append("AlignmentMonitorMuonVsCurvature")
0217 process.looper.monitorConfig.AlignmentMonitorMuonVsCurvature = process.AlignmentMonitorMuonVsCurvature
0218 process.looper.monitorConfig.AlignmentMonitorMuonVsCurvature.muonCollectionTag = cms.InputTag(muonCollectionTag)
0219 process.looper.monitorConfig.AlignmentMonitorMuonVsCurvature.minTrackPt = minTrackPt
0220
0221 process.looper.monitorConfig.AlignmentMonitorMuonVsCurvature.maxDxy = maxDxy
0222 process.looper.monitorConfig.AlignmentMonitorMuonVsCurvature.minTrackerHits = minTrackerHits
0223 process.looper.monitorConfig.AlignmentMonitorMuonVsCurvature.maxTrackerRedChi2 = maxTrackerRedChi2
0224 process.looper.monitorConfig.AlignmentMonitorMuonVsCurvature.allowTIDTEC = allowTIDTEC
0225 process.looper.monitorConfig.AlignmentMonitorMuonVsCurvature.minNCrossedChambers = process.looper.algoConfig.minNCrossedChambers
0226 process.looper.monitorConfig.AlignmentMonitorMuonVsCurvature.minDT13Hits = process.looper.algoConfig.minDT13Hits
0227 process.looper.monitorConfig.AlignmentMonitorMuonVsCurvature.minDT2Hits = process.looper.algoConfig.minDT2Hits
0228 process.looper.monitorConfig.AlignmentMonitorMuonVsCurvature.minCSCHits = process.looper.algoConfig.minCSCHits
0229 process.looper.monitorConfig.AlignmentMonitorMuonVsCurvature.doDT = doDT
0230 process.looper.monitorConfig.AlignmentMonitorMuonVsCurvature.doCSC = doCSC
0231
0232 process.load("Configuration.StandardSequences.FrontierConditions_GlobalTag_cff")
0233 process.GlobalTag.globaltag = cms.string(globaltag)
0234 process.looper.applyDbAlignment = True
0235 process.load("RecoVertex.BeamSpotProducer.BeamSpot_cfi")
0236
0237 process.load("Alignment.MuonAlignmentAlgorithms.MuonAlignmentPreFilter_cfi")
0238 process.MuonAlignmentPreFilter.minTrackPt = minTrackPt
0239 process.MuonAlignmentPreFilter.minTrackP = minTrackP
0240 process.MuonAlignmentPreFilter.minTrackerHits = minTrackerHits
0241 process.MuonAlignmentPreFilter.allowTIDTEC = allowTIDTEC
0242
0243 if iscosmics:
0244 process.MuonAlignmentPreFilter.tracksTag = cms.InputTag("ALCARECOMuAlGlobalCosmics:GlobalMuon")
0245 if preFilter: process.Path = cms.Path(process.offlineBeamSpot * process.MuonAlignmentPreFilter * process.MuonAlignmentFromReferenceGlobalCosmicRefit)
0246 else: process.Path = cms.Path(process.offlineBeamSpot * process.MuonAlignmentFromReferenceGlobalCosmicRefit)
0247 process.looper.tjTkAssociationMapTag = cms.InputTag("MuonAlignmentFromReferenceGlobalCosmicRefit:Refitted")
0248 else:
0249
0250 process.MuonAlignmentPreFilter.tracksTag = cms.InputTag("globalMuons")
0251 process.MuonAlignmentFromReferenceGlobalMuonRefit.Tracks = cms.InputTag("globalMuons")
0252 if preFilter: process.Path = cms.Path(process.offlineBeamSpot * process.MuonAlignmentPreFilter * process.MuonAlignmentFromReferenceGlobalMuonRefit)
0253 else: process.Path = cms.Path(process.offlineBeamSpot * process.MuonAlignmentFromReferenceGlobalMuonRefit)
0254 process.looper.tjTkAssociationMapTag = cms.InputTag("MuonAlignmentFromReferenceGlobalMuonRefit:Refitted")
0255
0256
0257 if len(muonCollectionTag) > 0:
0258 process.Path = cms.Path(process.offlineBeamSpot * process.newmuons)
0259
0260
0261 process.MuonAlignmentFromReferenceInputDB.connect = cms.string("sqlite_file:%s" % inputdb)
0262 process.MuonAlignmentFromReferenceInputDB.toGet = cms.VPSet(cms.PSet(record = cms.string("DTAlignmentRcd"), tag = cms.string("DTAlignmentRcd")),
0263 cms.PSet(record = cms.string("CSCAlignmentRcd"), tag = cms.string("CSCAlignmentRcd")))
0264
0265 if trackerconnect != "":
0266 from CondCore.DBCommon.CondDBSetup_cfi import *
0267 process.TrackerAlignmentInputDB = cms.ESSource("PoolDBESSource",
0268 CondDBSetup,
0269 connect = cms.string(trackerconnect),
0270 toGet = cms.VPSet(cms.PSet(record = cms.string("TrackerAlignmentRcd"), tag = cms.string(trackeralignment))))
0271 process.es_prefer_TrackerAlignmentInputDB = cms.ESPrefer("PoolDBESSource", "TrackerAlignmentInputDB")
0272
0273 if trackerAPEconnect != "":
0274 from CondCore.DBCommon.CondDBSetup_cfi import *
0275 process.TrackerAlignmentErrorInputDB = cms.ESSource("PoolDBESSource",
0276 CondDBSetup,
0277 connect = cms.string(trackerAPEconnect),
0278 toGet = cms.VPSet(cms.PSet(cms.PSet(record = cms.string("TrackerAlignmentErrorExtendedRcd"), tag = cms.string(trackerAPE)))))
0279 process.es_prefer_TrackerAlignmentErrorInputDB = cms.ESPrefer("PoolDBESSource", "TrackerAlignmentErrorInputDB")
0280
0281 if trackerBowsconnect != "":
0282 from CondCore.DBCommon.CondDBSetup_cfi import *
0283 process.TrackerSurfaceDeformationInputDB = cms.ESSource("PoolDBESSource",
0284 CondDBSetup,
0285 connect = cms.string(trackerBowsconnect),
0286 toGet = cms.VPSet(cms.PSet(cms.PSet(record = cms.string("TrackerSurfaceDeformationRcd"), tag = cms.string(trackerBows)))))
0287 process.es_prefer_TrackerSurfaceDeformationInputDB = cms.ESPrefer("PoolDBESSource", "TrackerSurfaceDeformationInputDB")
0288
0289 if gprcdconnect != "":
0290 from CondCore.DBCommon.CondDBSetup_cfi import *
0291 process.GlobalPositionInputDB = cms.ESSource("PoolDBESSource",
0292 CondDBSetup,
0293 connect = cms.string(gprcdconnect),
0294 toGet = cms.VPSet(cms.PSet(record = cms.string("GlobalPositionRcd"), tag = cms.string(gprcd))))
0295 process.es_prefer_GlobalPositionInputDB = cms.ESPrefer("PoolDBESSource", "GlobalPositionInputDB")
0296
0297
0298
0299
0300
0301
0302
0303
0304
0305
0306
0307
0308
0309
0310
0311
0312
0313
0314
0315
0316
0317
0318
0319
0320
0321
0322
0323
0324
0325
0326
0327
0328
0329
0330
0331
0332
0333
0334 process.looper.saveToDB = False
0335 process.looper.saveApeToDB = False
0336 del process.PoolDBOutputService
0337
0338 process.TFileService = cms.Service("TFileService", fileName = cms.string("plotting%03d.root" % jobnumber))