CMS 3D CMS Logo

gather_cfg.py
Go to the documentation of this file.
1 import os
2 import FWCore.ParameterSet.Config as cms
3 
4 # for json support
5 try: # FUTURE: Python 2.6, prior to 2.6 requires simplejson
6  import json
7 except:
8  try:
9  import simplejson as json
10  except:
11  print "Please use lxplus or set an environment (for example crab) with json lib available"
12  sys.exit(1)
13 
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")
20 
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"]
31 
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"])
54 
55 # optionally: create ntuples along with tmp files
56 createAlignNtuple = False
57 envNtuple = os.getenv("ALIGNMENT_CREATEALIGNNTUPLE")
58 if envNtuple is not None:
59  if envNtuple=='True': createAlignNtuple = True
60 
61 # optionally: create a ntuple with MapPlot plugin
62 createMapNtuple = False
63 envNtuple = os.getenv("ALIGNMENT_CREATEMAPNTUPLE")
64 if envNtuple is not None:
65  if envNtuple=='True': createMapNtuple = True
66 
67 # optionally do selective DT or CSC alignment
68 doDT = True
69 doCSC = 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':
74  doDT = True
75  doCSC = False
76  if envDT=='False' and envCSC=='True':
77  doDT = False
78  doCSC = True
79 
80 # optionally use JSON file for good limi mask
81 good_lumis = []
82 json_file = os.getenv("ALIGNMENT_JSON")
83 #json_file = 'Cert_136035-144114_7TeV_StreamExpress_Collisions10_JSON.txt'
84 if json_file is not None and json_file != '':
85  jsonfile=file(json_file, 'r')
86  jsondict = json.load(jsonfile)
87  runs = sorted(jsondict.keys())
88  for run in runs:
89  blocks = sorted(jsondict[run])
90  prevblock = [-2,-2]
91  for lsrange in blocks:
92  if lsrange[0] == prevblock[1]+1:
93  #print "Run: ",run,"- This lumi starts at ", lsrange[0], " previous ended at ", prevblock[1]+1, " so I should merge"
94  prevblock[1] = lsrange[1]
95  good_lumis[-1] = str("%s:%s-%s:%s" % (run, prevblock[0], run, prevblock[1]))
96  else:
97  good_lumis.append(str("%s:%s-%s:%s" % (run, lsrange[0], run, lsrange[1])))
98  prevblock = lsrange
99 
100 
101 process = cms.Process("GATHER")
102 
103 process.load("Geometry.MuonNumbering.muonNumberingInitialization_cfi")
104 process.load("Geometry.DTGeometry.dtGeometry_cfi")
105 process.load("Geometry.RPCGeometry.rpcGeometry_cfi")
106 process.load("Geometry.CSCGeometry.cscGeometry_cfi")
107 process.load("Geometry.CommonDetUnit.bareGlobalTrackingGeometry_cfi")
108 
109 #add TrackDetectorAssociator lookup maps to the EventSetup
110 process.load("TrackingTools.TrackAssociator.DetIdAssociatorESProducer_cff")
113 
114 
115 process.load("Configuration.StandardSequences.Reconstruction_cff")
116 
117 process.MuonNumberingInitialization = cms.ESProducer("MuonNumberingInitialization")
118 process.MuonNumberingRecord = cms.ESSource( "EmptyESSource",
119  recordName = cms.string( "MuonNumberingRecord" ),
120  iovIsRunNotTime = cms.bool( True ),
121  firstValid = cms.vuint32( 1 )
122 )
123 
124 process.load("Configuration.StandardSequences.GeometryDB_cff")
125 process.load('Configuration.StandardSequences.MagneticField_cff')
126 
127 if len(good_lumis)>0:
128  process.source = cms.Source("PoolSource",
129  fileNames = cms.untracked.vstring(*inputfiles),
130  skipEvents = cms.untracked.uint32(skipEvents),
131  lumisToProcess = cms.untracked.VLuminosityBlockRange(*good_lumis))
132 else:
133  process.source = cms.Source("PoolSource",
134  fileNames = cms.untracked.vstring(*inputfiles),
135  skipEvents = cms.untracked.uint32(skipEvents))
136 
137 process.maxEvents = cms.untracked.PSet(input = cms.untracked.int32(maxEvents))
138 #process.options = cms.untracked.PSet( wantSummary = cms.untracked.bool(True) )
139 
140 
141 process.MessageLogger = cms.Service("MessageLogger",
142  destinations = cms.untracked.vstring("cout"),
143  cout = cms.untracked.PSet(threshold = cms.untracked.string("ERROR"),
144  ERROR = cms.untracked.PSet(limit = cms.untracked.int32(10))))
145 
146 process.load("Alignment.MuonAlignmentAlgorithms.MuonAlignmentFromReference_cff")
147 process.looper.ParameterBuilder.Selector.alignParams = cms.vstring("MuonDTChambers,%s,stations123" % station123params, "MuonDTChambers,%s,station4" % station4params, "MuonCSCChambers,%s" % cscparams)
148 # TODO : uncomment the line below when AlignmentProducer is updated:
149 #process.looper.muonCollectionTag = cms.InputTag(muonCollectionTag)
150 process.looper.algoConfig.writeTemporaryFile = "alignment%04d.tmp" % jobnumber
151 process.looper.algoConfig.doAlignment = False
152 process.looper.algoConfig.muonCollectionTag = cms.InputTag(muonCollectionTag)
153 process.looper.algoConfig.minTrackPt = minTrackPt
154 process.looper.algoConfig.maxTrackPt = maxTrackPt
155 process.looper.algoConfig.minTrackP = minTrackP
156 process.looper.algoConfig.maxTrackP = maxTrackP
157 process.looper.algoConfig.maxDxy = maxDxy
158 process.looper.algoConfig.minTrackerHits = minTrackerHits
159 process.looper.algoConfig.maxTrackerRedChi2 = maxTrackerRedChi2
160 process.looper.algoConfig.allowTIDTEC = allowTIDTEC
161 process.looper.algoConfig.minNCrossedChambers = minNCrossedChambers
162 process.looper.algoConfig.twoBin = twoBin
163 process.looper.algoConfig.weightAlignment = weightAlignment
164 process.looper.algoConfig.minAlignmentHits = minAlignmentHits
165 process.looper.algoConfig.combineME11 = combineME11
166 process.looper.algoConfig.maxResSlopeY = maxResSlopeY
167 #process.looper.algoConfig.createNtuple = createAlignNtuple
168 process.looper.algoConfig.minDT13Hits = 7
169 process.looper.algoConfig.doDT = doDT
170 process.looper.algoConfig.doCSC = doCSC
171 
172 process.looper.monitorConfig = cms.PSet(monitors = cms.untracked.vstring())
173 
174 if mapplots:
175  process.load("Alignment.CommonAlignmentMonitor.AlignmentMonitorMuonSystemMap1D_cfi")
176  process.looper.monitorConfig.monitors.append("AlignmentMonitorMuonSystemMap1D")
177  process.looper.monitorConfig.AlignmentMonitorMuonSystemMap1D = process.AlignmentMonitorMuonSystemMap1D
178  process.looper.monitorConfig.AlignmentMonitorMuonSystemMap1D.muonCollectionTag = cms.InputTag(muonCollectionTag)
179  process.looper.monitorConfig.AlignmentMonitorMuonSystemMap1D.minTrackPt = minTrackPt
180  process.looper.monitorConfig.AlignmentMonitorMuonSystemMap1D.maxTrackPt = maxTrackPt
181  process.looper.monitorConfig.AlignmentMonitorMuonSystemMap1D.minTrackP = minTrackP
182  process.looper.monitorConfig.AlignmentMonitorMuonSystemMap1D.maxTrackP = maxTrackP
183  process.looper.monitorConfig.AlignmentMonitorMuonSystemMap1D.maxDxy = maxDxy
184  process.looper.monitorConfig.AlignmentMonitorMuonSystemMap1D.minTrackerHits = minTrackerHits
185  process.looper.monitorConfig.AlignmentMonitorMuonSystemMap1D.maxTrackerRedChi2 = maxTrackerRedChi2
186  process.looper.monitorConfig.AlignmentMonitorMuonSystemMap1D.allowTIDTEC = allowTIDTEC
187  process.looper.monitorConfig.AlignmentMonitorMuonSystemMap1D.minNCrossedChambers = process.looper.algoConfig.minNCrossedChambers
188  process.looper.monitorConfig.AlignmentMonitorMuonSystemMap1D.minDT13Hits = process.looper.algoConfig.minDT13Hits
189  process.looper.monitorConfig.AlignmentMonitorMuonSystemMap1D.minDT2Hits = process.looper.algoConfig.minDT2Hits
190  process.looper.monitorConfig.AlignmentMonitorMuonSystemMap1D.minCSCHits = process.looper.algoConfig.minCSCHits
191  process.looper.monitorConfig.AlignmentMonitorMuonSystemMap1D.doDT = doDT
192  process.looper.monitorConfig.AlignmentMonitorMuonSystemMap1D.doCSC = doCSC
193  process.looper.monitorConfig.AlignmentMonitorMuonSystemMap1D.createNtuple = createMapNtuple
194 
195 if segdiffplots:
196  process.load("Alignment.CommonAlignmentMonitor.AlignmentMonitorSegmentDifferences_cfi")
197  process.looper.monitorConfig.monitors.append("AlignmentMonitorSegmentDifferences")
198  process.looper.monitorConfig.AlignmentMonitorSegmentDifferences = process.AlignmentMonitorSegmentDifferences
199  process.looper.monitorConfig.AlignmentMonitorSegmentDifferences.muonCollectionTag = cms.InputTag(muonCollectionTag)
200  process.looper.monitorConfig.AlignmentMonitorSegmentDifferences.minTrackPt = minTrackPt
201  process.looper.monitorConfig.AlignmentMonitorSegmentDifferences.minTrackP = minTrackP
202  process.looper.monitorConfig.AlignmentMonitorSegmentDifferences.maxDxy = maxDxy
203  process.looper.monitorConfig.AlignmentMonitorSegmentDifferences.minTrackerHits = minTrackerHits
204  process.looper.monitorConfig.AlignmentMonitorSegmentDifferences.maxTrackerRedChi2 = maxTrackerRedChi2
205  process.looper.monitorConfig.AlignmentMonitorSegmentDifferences.allowTIDTEC = allowTIDTEC
206  process.looper.monitorConfig.AlignmentMonitorSegmentDifferences.minNCrossedChambers = process.looper.algoConfig.minNCrossedChambers
207  process.looper.monitorConfig.AlignmentMonitorSegmentDifferences.minDT13Hits = process.looper.algoConfig.minDT13Hits
208  process.looper.monitorConfig.AlignmentMonitorSegmentDifferences.minDT2Hits = process.looper.algoConfig.minDT2Hits
209  process.looper.monitorConfig.AlignmentMonitorSegmentDifferences.minCSCHits = process.looper.algoConfig.minCSCHits
210  process.looper.monitorConfig.AlignmentMonitorSegmentDifferences.doDT = doDT
211  process.looper.monitorConfig.AlignmentMonitorSegmentDifferences.doCSC = doCSC
212 
213 if curvatureplots:
214  process.load("Alignment.CommonAlignmentMonitor.AlignmentMonitorMuonVsCurvature_cfi")
215  process.looper.monitorConfig.monitors.append("AlignmentMonitorMuonVsCurvature")
216  process.looper.monitorConfig.AlignmentMonitorMuonVsCurvature = process.AlignmentMonitorMuonVsCurvature
217  process.looper.monitorConfig.AlignmentMonitorMuonVsCurvature.muonCollectionTag = cms.InputTag(muonCollectionTag)
218  process.looper.monitorConfig.AlignmentMonitorMuonVsCurvature.minTrackPt = minTrackPt
219  #process.looper.monitorConfig.AlignmentMonitorMuonVsCurvature.minTrackP = minTrackP
220  process.looper.monitorConfig.AlignmentMonitorMuonVsCurvature.maxDxy = maxDxy
221  process.looper.monitorConfig.AlignmentMonitorMuonVsCurvature.minTrackerHits = minTrackerHits
222  process.looper.monitorConfig.AlignmentMonitorMuonVsCurvature.maxTrackerRedChi2 = maxTrackerRedChi2
223  process.looper.monitorConfig.AlignmentMonitorMuonVsCurvature.allowTIDTEC = allowTIDTEC
224  process.looper.monitorConfig.AlignmentMonitorMuonVsCurvature.minNCrossedChambers = process.looper.algoConfig.minNCrossedChambers
225  process.looper.monitorConfig.AlignmentMonitorMuonVsCurvature.minDT13Hits = process.looper.algoConfig.minDT13Hits
226  process.looper.monitorConfig.AlignmentMonitorMuonVsCurvature.minDT2Hits = process.looper.algoConfig.minDT2Hits
227  process.looper.monitorConfig.AlignmentMonitorMuonVsCurvature.minCSCHits = process.looper.algoConfig.minCSCHits
228  process.looper.monitorConfig.AlignmentMonitorMuonVsCurvature.doDT = doDT
229  process.looper.monitorConfig.AlignmentMonitorMuonVsCurvature.doCSC = doCSC
230 
231 process.load("Configuration.StandardSequences.FrontierConditions_GlobalTag_cff")
232 process.GlobalTag.globaltag = cms.string(globaltag)
233 process.looper.applyDbAlignment = True
234 process.load("RecoVertex.BeamSpotProducer.BeamSpot_cfi")
235 
236 process.load("Alignment.MuonAlignmentAlgorithms.MuonAlignmentPreFilter_cfi")
237 process.MuonAlignmentPreFilter.minTrackPt = minTrackPt
238 process.MuonAlignmentPreFilter.minTrackP = minTrackP
239 process.MuonAlignmentPreFilter.minTrackerHits = minTrackerHits
240 process.MuonAlignmentPreFilter.allowTIDTEC = allowTIDTEC
241 
242 if iscosmics:
243  process.MuonAlignmentPreFilter.tracksTag = cms.InputTag("ALCARECOMuAlGlobalCosmics:GlobalMuon")
244  if preFilter: process.Path = cms.Path(process.offlineBeamSpot * process.MuonAlignmentPreFilter * process.MuonAlignmentFromReferenceGlobalCosmicRefit)
245  else: process.Path = cms.Path(process.offlineBeamSpot * process.MuonAlignmentFromReferenceGlobalCosmicRefit)
246  process.looper.tjTkAssociationMapTag = cms.InputTag("MuonAlignmentFromReferenceGlobalCosmicRefit:Refitted")
247 else:
248  #process.MuonAlignmentPreFilter.tracksTag = cms.InputTag("ALCARECOMuAlCalIsolatedMu:GlobalMuon")
249  process.MuonAlignmentPreFilter.tracksTag = cms.InputTag("globalMuons")
250  process.MuonAlignmentFromReferenceGlobalMuonRefit.Tracks = cms.InputTag("globalMuons")
251  if preFilter: process.Path = cms.Path(process.offlineBeamSpot * process.MuonAlignmentPreFilter * process.MuonAlignmentFromReferenceGlobalMuonRefit)
252  else: process.Path = cms.Path(process.offlineBeamSpot * process.MuonAlignmentFromReferenceGlobalMuonRefit)
253  process.looper.tjTkAssociationMapTag = cms.InputTag("MuonAlignmentFromReferenceGlobalMuonRefit:Refitted")
254 
255 
256 if len(muonCollectionTag) > 0: # use Tracker Muons
257  process.Path = cms.Path(process.offlineBeamSpot * process.newmuons)
258 
259 
260 process.MuonAlignmentFromReferenceInputDB.connect = cms.string("sqlite_file:%s" % inputdb)
261 process.MuonAlignmentFromReferenceInputDB.toGet = cms.VPSet(cms.PSet(record = cms.string("DTAlignmentRcd"), tag = cms.string("DTAlignmentRcd")),
262  cms.PSet(record = cms.string("CSCAlignmentRcd"), tag = cms.string("CSCAlignmentRcd")))
263 
264 if trackerconnect != "":
266  process.TrackerAlignmentInputDB = cms.ESSource("PoolDBESSource",
267  CondDBSetup,
268  connect = cms.string(trackerconnect),
269  toGet = cms.VPSet(cms.PSet(record = cms.string("TrackerAlignmentRcd"), tag = cms.string(trackeralignment))))
270  process.es_prefer_TrackerAlignmentInputDB = cms.ESPrefer("PoolDBESSource", "TrackerAlignmentInputDB")
271 
272 if trackerAPEconnect != "":
274  process.TrackerAlignmentErrorInputDB = cms.ESSource("PoolDBESSource",
275  CondDBSetup,
276  connect = cms.string(trackerAPEconnect),
277  toGet = cms.VPSet(cms.PSet(cms.PSet(record = cms.string("TrackerAlignmentErrorExtendedRcd"), tag = cms.string(trackerAPE)))))
278  process.es_prefer_TrackerAlignmentErrorInputDB = cms.ESPrefer("PoolDBESSource", "TrackerAlignmentErrorInputDB")
279 
280 if trackerBowsconnect != "":
282  process.TrackerSurfaceDeformationInputDB = cms.ESSource("PoolDBESSource",
283  CondDBSetup,
284  connect = cms.string(trackerBowsconnect),
285  toGet = cms.VPSet(cms.PSet(cms.PSet(record = cms.string("TrackerSurfaceDeformationRcd"), tag = cms.string(trackerBows)))))
286  process.es_prefer_TrackerSurfaceDeformationInputDB = cms.ESPrefer("PoolDBESSource", "TrackerSurfaceDeformationInputDB")
287 
288 if gprcdconnect != "":
290  process.GlobalPositionInputDB = cms.ESSource("PoolDBESSource",
291  CondDBSetup,
292  connect = cms.string(gprcdconnect),
293  toGet = cms.VPSet(cms.PSet(record = cms.string("GlobalPositionRcd"), tag = cms.string(gprcd))))
294  process.es_prefer_GlobalPositionInputDB = cms.ESPrefer("PoolDBESSource", "GlobalPositionInputDB")
295 
296 
297 ## the following was needed for Nov 2010 alignment to pick up new lorentz angle and strip conditions for tracker
298 #process.poolDBESSourceLA = cms.ESSource("PoolDBESSource",
299 # BlobStreamerName = cms.untracked.string('TBufferBlobStreamingService'),
300 # DBParameters = cms.PSet(
301 # messageLevel = cms.untracked.int32(0),
302 # authenticationPath = cms.untracked.string('.')
303 # #messageLevel = cms.untracked.int32(2),
304 # #authenticationPath = cms.untracked.string('/path/to/authentication')
305 # ),
306 # timetype = cms.untracked.string('runnumber'),
307 # connect = cms.string('frontier://PromptProd/CMS_COND_31X_STRIP'),
308 # toGet = cms.VPSet(cms.PSet(
309 # record = cms.string('SiStripLorentzAngleRcd'),
310 # tag = cms.string('SiStripLorentzAngle_GR10_v2_offline')
311 # ))
312 #)
313 #process.es_prefer_LA = cms.ESPrefer('PoolDBESSource','poolDBESSourceLA')
314 #
315 #process.poolDBESSourceBP = cms.ESSource("PoolDBESSource",
316 # BlobStreamerName = cms.untracked.string('TBufferBlobStreamingService'),
317 # DBParameters = cms.PSet(
318 # messageLevel = cms.untracked.int32(0),
319 # authenticationPath = cms.untracked.string('.')
320 # #messageLevel = cms.untracked.int32(2),
321 # #authenticationPath = cms.untracked.string('/path/to/authentication')
322 # ),
323 # timetype = cms.untracked.string('runnumber'),
324 # connect = cms.string('frontier://PromptProd/CMS_COND_31X_STRIP'),
325 # toGet = cms.VPSet(cms.PSet(
326 # record = cms.string('SiStripConfObjectRcd'),
327 # tag = cms.string('SiStripShiftAndCrosstalk_GR10_v2_offline')
328 # ))
329 #)
330 #process.es_prefer_BP = cms.ESPrefer('PoolDBESSource','poolDBESSourceBP')
331 
332 
333 process.looper.saveToDB = False
334 process.looper.saveApeToDB = False
335 del process.PoolDBOutputService
336 
337 process.TFileService = cms.Service("TFileService", fileName = cms.string("plotting%03d.root" % jobnumber))
#define str(s)
double split
Definition: MVATrainer.cc:139