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