9 import simplejson
as json
11 print "Please use lxplus or set an environment (for example crab) with json lib available"
14 inputfiles = os.environ[
"ALIGNMENT_INPUTFILES"].
split(
" ")
15 iteration = int(os.environ[
"ALIGNMENT_ITERATION"])
16 jobnumber = int(os.environ[
"ALIGNMENT_JOBNUMBER"])
17 mapplots = (os.environ[
"ALIGNMENT_MAPPLOTS"] ==
"True")
18 segdiffplots = (os.environ[
"ALIGNMENT_SEGDIFFPLOTS"] ==
"True")
19 curvatureplots = (os.environ[
"ALIGNMENT_CURVATUREPLOTS"] ==
"True")
21 globaltag = os.environ[
"ALIGNMENT_GLOBALTAG"]
22 inputdb = os.environ[
"ALIGNMENT_INPUTDB"]
23 trackerconnect = os.environ[
"ALIGNMENT_TRACKERCONNECT"]
24 trackeralignment = os.environ[
"ALIGNMENT_TRACKERALIGNMENT"]
25 trackerAPEconnect = os.environ[
"ALIGNMENT_TRACKERAPECONNECT"]
26 trackerAPE = os.environ[
"ALIGNMENT_TRACKERAPE"]
27 trackerBowsconnect = os.environ[
"ALIGNMENT_TRACKERBOWSCONNECT"]
28 trackerBows = os.environ[
"ALIGNMENT_TRACKERBOWS"]
29 gprcdconnect = os.environ[
"ALIGNMENT_GPRCDCONNECT"]
30 gprcd = os.environ[
"ALIGNMENT_GPRCD"]
32 iscosmics = (os.environ[
"ALIGNMENT_ISCOSMICS"] ==
"True")
33 station123params = os.environ[
"ALIGNMENT_STATION123PARAMS"]
34 station4params = os.environ[
"ALIGNMENT_STATION4PARAMS"]
35 cscparams = os.environ[
"ALIGNMENT_CSCPARAMS"]
36 minTrackPt = float(os.environ[
"ALIGNMENT_MINTRACKPT"])
37 maxTrackPt = float(os.environ[
"ALIGNMENT_MAXTRACKPT"])
38 minTrackP = float(os.environ[
"ALIGNMENT_MINTRACKP"])
39 maxTrackP = float(os.environ[
"ALIGNMENT_MAXTRACKP"])
40 minTrackerHits = int(os.environ[
"ALIGNMENT_MINTRACKERHITS"])
41 maxTrackerRedChi2 = float(os.environ[
"ALIGNMENT_MAXTRACKERREDCHI2"])
42 allowTIDTEC = (os.environ[
"ALIGNMENT_ALLOWTIDTEC"] ==
"True")
43 twoBin = (os.environ[
"ALIGNMENT_TWOBIN"] ==
"True")
44 weightAlignment = (os.environ[
"ALIGNMENT_WEIGHTALIGNMENT"] ==
"True")
45 minAlignmentHits = int(os.environ[
"ALIGNMENT_MINALIGNMENTHITS"])
46 combineME11 = (os.environ[
"ALIGNMENT_COMBINEME11"] ==
"True")
47 maxEvents = int(os.environ[
"ALIGNMENT_MAXEVENTS"])
48 skipEvents = int(os.environ[
"ALIGNMENT_SKIPEVENTS"])
49 maxResSlopeY = float(os.environ[
"ALIGNMENT_MAXRESSLOPEY"])
50 preFilter = (os.environ[
"ALIGNMENT_PREFILTER"] ==
"True")
51 muonCollectionTag = os.environ[
"ALIGNMENT_MUONCOLLECTIONTAG"]
52 maxDxy = float(os.environ[
"ALIGNMENT_MAXDXY"])
53 minNCrossedChambers = int(os.environ[
"ALIGNMENT_MINNCROSSEDCHAMBERS"])
56 createAlignNtuple =
False
57 envNtuple = os.getenv(
"ALIGNMENT_CREATEALIGNNTUPLE")
58 if envNtuple
is not None:
59 if envNtuple==
'True': createAlignNtuple =
True
62 createMapNtuple =
False
63 envNtuple = os.getenv(
"ALIGNMENT_CREATEMAPNTUPLE")
64 if envNtuple
is not None:
65 if envNtuple==
'True': createMapNtuple =
True
70 envDT = os.getenv(
"ALIGNMENT_DO_DT")
71 envCSC = os.getenv(
"ALIGNMENT_DO_CSC")
72 if envDT
is not None and envCSC
is not None:
73 if envDT==
'True' and envCSC==
'False':
76 if envDT==
'False' and envCSC==
'True':
82 json_file = os.getenv(
"ALIGNMENT_JSON")
84 if json_file
is not None and json_file !=
'':
85 jsonfile=
file(json_file,
'r')
86 jsondict = json.load(jsonfile)
87 runs = jsondict.keys()
90 blocks = jsondict[run]
93 for lsrange
in blocks:
94 if lsrange[0] == prevblock[1]+1:
96 prevblock[1] = lsrange[1]
97 good_lumis[-1] = str(
"%s:%s-%s:%s" % (run, prevblock[0], run, prevblock[1]))
99 good_lumis.append(str(
"%s:%s-%s:%s" % (run, lsrange[0], run, lsrange[1])))
103 process = cms.Process(
"GATHER")
105 if len(good_lumis)>0:
106 process.source = cms.Source(
"PoolSource",
107 fileNames = cms.untracked.vstring(*inputfiles),
108 skipEvents = cms.untracked.uint32(skipEvents),
109 lumisToProcess = cms.untracked.VLuminosityBlockRange(*good_lumis))
111 process.source = cms.Source(
"PoolSource",
112 fileNames = cms.untracked.vstring(*inputfiles),
113 skipEvents = cms.untracked.uint32(skipEvents))
115 process.maxEvents = cms.untracked.PSet(input = cms.untracked.int32(maxEvents))
119 process.MessageLogger = cms.Service(
"MessageLogger",
120 destinations = cms.untracked.vstring(
"cout"),
121 cout = cms.untracked.PSet(threshold = cms.untracked.string(
"ERROR"),
122 ERROR = cms.untracked.PSet(limit = cms.untracked.int32(10))))
124 process.load(
"Alignment.MuonAlignmentAlgorithms.MuonAlignmentFromReference_cff")
125 process.looper.ParameterBuilder.Selector.alignParams = cms.vstring(
"MuonDTChambers,%s,stations123" % station123params,
"MuonDTChambers,%s,station4" % station4params,
"MuonCSCChambers,%s" % cscparams)
128 process.looper.algoConfig.writeTemporaryFile =
"alignment%04d.tmp" % jobnumber
129 process.looper.algoConfig.doAlignment =
False
130 process.looper.algoConfig.muonCollectionTag = cms.InputTag(muonCollectionTag)
131 process.looper.algoConfig.minTrackPt = minTrackPt
132 process.looper.algoConfig.maxTrackPt = maxTrackPt
133 process.looper.algoConfig.minTrackP = minTrackP
134 process.looper.algoConfig.maxTrackP = maxTrackP
135 process.looper.algoConfig.maxDxy = maxDxy
136 process.looper.algoConfig.minTrackerHits = minTrackerHits
137 process.looper.algoConfig.maxTrackerRedChi2 = maxTrackerRedChi2
138 process.looper.algoConfig.allowTIDTEC = allowTIDTEC
139 process.looper.algoConfig.minNCrossedChambers = minNCrossedChambers
140 process.looper.algoConfig.twoBin = twoBin
141 process.looper.algoConfig.weightAlignment = weightAlignment
142 process.looper.algoConfig.minAlignmentHits = minAlignmentHits
143 process.looper.algoConfig.combineME11 = combineME11
144 process.looper.algoConfig.maxResSlopeY = maxResSlopeY
146 process.looper.algoConfig.minDT13Hits = 7
147 process.looper.algoConfig.doDT = doDT
148 process.looper.algoConfig.doCSC = doCSC
150 process.looper.monitorConfig = cms.PSet(monitors = cms.untracked.vstring())
153 process.load(
"Alignment.CommonAlignmentMonitor.AlignmentMonitorMuonSystemMap1D_cfi")
154 process.looper.monitorConfig.monitors.append(
"AlignmentMonitorMuonSystemMap1D")
155 process.looper.monitorConfig.AlignmentMonitorMuonSystemMap1D = process.AlignmentMonitorMuonSystemMap1D
156 process.looper.monitorConfig.AlignmentMonitorMuonSystemMap1D.muonCollectionTag = cms.InputTag(muonCollectionTag)
157 process.looper.monitorConfig.AlignmentMonitorMuonSystemMap1D.minTrackPt = minTrackPt
158 process.looper.monitorConfig.AlignmentMonitorMuonSystemMap1D.maxTrackPt = maxTrackPt
159 process.looper.monitorConfig.AlignmentMonitorMuonSystemMap1D.minTrackP = minTrackP
160 process.looper.monitorConfig.AlignmentMonitorMuonSystemMap1D.maxTrackP = maxTrackP
161 process.looper.monitorConfig.AlignmentMonitorMuonSystemMap1D.maxDxy = maxDxy
162 process.looper.monitorConfig.AlignmentMonitorMuonSystemMap1D.minTrackerHits = minTrackerHits
163 process.looper.monitorConfig.AlignmentMonitorMuonSystemMap1D.maxTrackerRedChi2 = maxTrackerRedChi2
164 process.looper.monitorConfig.AlignmentMonitorMuonSystemMap1D.allowTIDTEC = allowTIDTEC
165 process.looper.monitorConfig.AlignmentMonitorMuonSystemMap1D.minNCrossedChambers = process.looper.algoConfig.minNCrossedChambers
166 process.looper.monitorConfig.AlignmentMonitorMuonSystemMap1D.minDT13Hits = process.looper.algoConfig.minDT13Hits
167 process.looper.monitorConfig.AlignmentMonitorMuonSystemMap1D.minDT2Hits = process.looper.algoConfig.minDT2Hits
168 process.looper.monitorConfig.AlignmentMonitorMuonSystemMap1D.minCSCHits = process.looper.algoConfig.minCSCHits
169 process.looper.monitorConfig.AlignmentMonitorMuonSystemMap1D.doDT = doDT
170 process.looper.monitorConfig.AlignmentMonitorMuonSystemMap1D.doCSC = doCSC
171 process.looper.monitorConfig.AlignmentMonitorMuonSystemMap1D.createNtuple = createMapNtuple
174 process.load(
"Alignment.CommonAlignmentMonitor.AlignmentMonitorSegmentDifferences_cfi")
175 process.looper.monitorConfig.monitors.append(
"AlignmentMonitorSegmentDifferences")
176 process.looper.monitorConfig.AlignmentMonitorSegmentDifferences = process.AlignmentMonitorSegmentDifferences
177 process.looper.monitorConfig.AlignmentMonitorSegmentDifferences.muonCollectionTag = cms.InputTag(muonCollectionTag)
178 process.looper.monitorConfig.AlignmentMonitorSegmentDifferences.minTrackPt = minTrackPt
179 process.looper.monitorConfig.AlignmentMonitorSegmentDifferences.minTrackP = minTrackP
180 process.looper.monitorConfig.AlignmentMonitorSegmentDifferences.maxDxy = maxDxy
181 process.looper.monitorConfig.AlignmentMonitorSegmentDifferences.minTrackerHits = minTrackerHits
182 process.looper.monitorConfig.AlignmentMonitorSegmentDifferences.maxTrackerRedChi2 = maxTrackerRedChi2
183 process.looper.monitorConfig.AlignmentMonitorSegmentDifferences.allowTIDTEC = allowTIDTEC
184 process.looper.monitorConfig.AlignmentMonitorSegmentDifferences.minNCrossedChambers = process.looper.algoConfig.minNCrossedChambers
185 process.looper.monitorConfig.AlignmentMonitorSegmentDifferences.minDT13Hits = process.looper.algoConfig.minDT13Hits
186 process.looper.monitorConfig.AlignmentMonitorSegmentDifferences.minDT2Hits = process.looper.algoConfig.minDT2Hits
187 process.looper.monitorConfig.AlignmentMonitorSegmentDifferences.minCSCHits = process.looper.algoConfig.minCSCHits
188 process.looper.monitorConfig.AlignmentMonitorSegmentDifferences.doDT = doDT
189 process.looper.monitorConfig.AlignmentMonitorSegmentDifferences.doCSC = doCSC
192 process.load(
"Alignment.CommonAlignmentMonitor.AlignmentMonitorMuonVsCurvature_cfi")
193 process.looper.monitorConfig.monitors.append(
"AlignmentMonitorMuonVsCurvature")
194 process.looper.monitorConfig.AlignmentMonitorMuonVsCurvature = process.AlignmentMonitorMuonVsCurvature
195 process.looper.monitorConfig.AlignmentMonitorMuonVsCurvature.muonCollectionTag = cms.InputTag(muonCollectionTag)
196 process.looper.monitorConfig.AlignmentMonitorMuonVsCurvature.minTrackPt = minTrackPt
198 process.looper.monitorConfig.AlignmentMonitorMuonVsCurvature.maxDxy = maxDxy
199 process.looper.monitorConfig.AlignmentMonitorMuonVsCurvature.minTrackerHits = minTrackerHits
200 process.looper.monitorConfig.AlignmentMonitorMuonVsCurvature.maxTrackerRedChi2 = maxTrackerRedChi2
201 process.looper.monitorConfig.AlignmentMonitorMuonVsCurvature.allowTIDTEC = allowTIDTEC
202 process.looper.monitorConfig.AlignmentMonitorMuonVsCurvature.minNCrossedChambers = process.looper.algoConfig.minNCrossedChambers
203 process.looper.monitorConfig.AlignmentMonitorMuonVsCurvature.minDT13Hits = process.looper.algoConfig.minDT13Hits
204 process.looper.monitorConfig.AlignmentMonitorMuonVsCurvature.minDT2Hits = process.looper.algoConfig.minDT2Hits
205 process.looper.monitorConfig.AlignmentMonitorMuonVsCurvature.minCSCHits = process.looper.algoConfig.minCSCHits
206 process.looper.monitorConfig.AlignmentMonitorMuonVsCurvature.doDT = doDT
207 process.looper.monitorConfig.AlignmentMonitorMuonVsCurvature.doCSC = doCSC
209 process.load(
"Configuration.StandardSequences.FrontierConditions_GlobalTag_cff")
210 process.GlobalTag.globaltag = cms.string(globaltag)
211 process.looper.applyDbAlignment =
True
212 process.load(
"RecoVertex.BeamSpotProducer.BeamSpot_cfi")
214 process.load(
"Alignment.MuonAlignmentAlgorithms.MuonAlignmentPreFilter_cfi")
215 process.MuonAlignmentPreFilter.minTrackPt = minTrackPt
216 process.MuonAlignmentPreFilter.minTrackP = minTrackP
217 process.MuonAlignmentPreFilter.minTrackerHits = minTrackerHits
218 process.MuonAlignmentPreFilter.allowTIDTEC = allowTIDTEC
221 process.MuonAlignmentPreFilter.tracksTag = cms.InputTag(
"ALCARECOMuAlGlobalCosmics:GlobalMuon")
222 if preFilter: process.Path = cms.Path(process.offlineBeamSpot * process.MuonAlignmentPreFilter * process.MuonAlignmentFromReferenceGlobalCosmicRefit)
223 else: process.Path = cms.Path(process.offlineBeamSpot * process.MuonAlignmentFromReferenceGlobalCosmicRefit)
224 process.looper.tjTkAssociationMapTag = cms.InputTag(
"MuonAlignmentFromReferenceGlobalCosmicRefit:Refitted")
226 process.MuonAlignmentPreFilter.tracksTag = cms.InputTag(
"ALCARECOMuAlCalIsolatedMu:GlobalMuon")
229 if preFilter: process.Path = cms.Path(process.offlineBeamSpot * process.MuonAlignmentPreFilter * process.MuonAlignmentFromReferenceGlobalMuonRefit)
230 else: process.Path = cms.Path(process.offlineBeamSpot * process.MuonAlignmentFromReferenceGlobalMuonRefit)
231 process.looper.tjTkAssociationMapTag = cms.InputTag(
"MuonAlignmentFromReferenceGlobalMuonRefit:Refitted")
234 if len(muonCollectionTag) > 0:
235 process.Path = cms.Path(process.offlineBeamSpot * process.newmuons)
238 process.MuonAlignmentFromReferenceInputDB.connect = cms.string(
"sqlite_file:%s" % inputdb)
239 process.MuonAlignmentFromReferenceInputDB.toGet = cms.VPSet(cms.PSet(record = cms.string(
"DTAlignmentRcd"), tag = cms.string(
"DTAlignmentRcd")),
240 cms.PSet(record = cms.string(
"CSCAlignmentRcd"), tag = cms.string(
"CSCAlignmentRcd")))
242 if trackerconnect !=
"":
244 process.TrackerAlignmentInputDB = cms.ESSource(
"PoolDBESSource",
246 connect = cms.string(trackerconnect),
247 toGet = cms.VPSet(cms.PSet(record = cms.string(
"TrackerAlignmentRcd"), tag = cms.string(trackeralignment))))
248 process.es_prefer_TrackerAlignmentInputDB = cms.ESPrefer(
"PoolDBESSource",
"TrackerAlignmentInputDB")
250 if trackerAPEconnect !=
"":
252 process.TrackerAlignmentErrorInputDB = cms.ESSource(
"PoolDBESSource",
254 connect = cms.string(trackerAPEconnect),
255 toGet = cms.VPSet(cms.PSet(cms.PSet(record = cms.string(
"TrackerAlignmentErrorRcd"), tag = cms.string(trackerAPE)))))
256 process.es_prefer_TrackerAlignmentErrorInputDB = cms.ESPrefer(
"PoolDBESSource",
"TrackerAlignmentErrorInputDB")
258 if trackerBowsconnect !=
"":
260 process.TrackerSurfaceDeformationInputDB = cms.ESSource(
"PoolDBESSource",
262 connect = cms.string(trackerBowsconnect),
263 toGet = cms.VPSet(cms.PSet(cms.PSet(record = cms.string(
"TrackerSurfaceDeformationRcd"), tag = cms.string(trackerBows)))))
264 process.es_prefer_TrackerSurfaceDeformationInputDB = cms.ESPrefer(
"PoolDBESSource",
"TrackerSurfaceDeformationInputDB")
266 if gprcdconnect !=
"":
268 process.GlobalPositionInputDB = cms.ESSource(
"PoolDBESSource",
270 connect = cms.string(gprcdconnect),
271 toGet = cms.VPSet(cms.PSet(record = cms.string(
"GlobalPositionRcd"), tag = cms.string(gprcd))))
272 process.es_prefer_GlobalPositionInputDB = cms.ESPrefer(
"PoolDBESSource",
"GlobalPositionInputDB")
311 process.looper.saveToDB =
False
312 process.looper.saveApeToDB =
False
313 del process.PoolDBOutputService
315 process.TFileService = cms.Service(
"TFileService", fileName = cms.string(
"plotting%03d.root" % jobnumber))