CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
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 = jsondict.keys()
88  runs.sort()
89  for run in runs:
90  blocks = jsondict[run]
91  blocks.sort()
92  prevblock = [-2,-2]
93  for lsrange in blocks:
94  if lsrange[0] == prevblock[1]+1:
95  #print "Run: ",run,"- This lumi starts at ", lsrange[0], " previous ended at ", prevblock[1]+1, " so I should merge"
96  prevblock[1] = lsrange[1]
97  good_lumis[-1] = str("%s:%s-%s:%s" % (run, prevblock[0], run, prevblock[1]))
98  else:
99  good_lumis.append(str("%s:%s-%s:%s" % (run, lsrange[0], run, lsrange[1])))
100  prevblock = lsrange
101 
102 
103 process = cms.Process("GATHER")
104 
105 process.load("Geometry.MuonNumbering.muonNumberingInitialization_cfi")
106 process.load("Geometry.DTGeometry.dtGeometry_cfi")
107 process.load("Geometry.RPCGeometry.rpcGeometry_cfi")
108 process.load("Geometry.CSCGeometry.cscGeometry_cfi")
109 process.load("Geometry.CommonDetUnit.bareGlobalTrackingGeometry_cfi")
110 
111 #add TrackDetectorAssociator lookup maps to the EventSetup
112 process.load("TrackingTools.TrackAssociator.DetIdAssociatorESProducer_cff")
115 
116 
117 process.load("Configuration.StandardSequences.Reconstruction_cff")
118 
119 process.MuonNumberingInitialization = cms.ESProducer("MuonNumberingInitialization")
120 process.MuonNumberingRecord = cms.ESSource( "EmptyESSource",
121  recordName = cms.string( "MuonNumberingRecord" ),
122  iovIsRunNotTime = cms.bool( True ),
123  firstValid = cms.vuint32( 1 )
124 )
125 
126 process.load("Configuration.StandardSequences.GeometryDB_cff")
127 process.load('Configuration.StandardSequences.MagneticField_cff')
128 
129 if len(good_lumis)>0:
130  process.source = cms.Source("PoolSource",
131  fileNames = cms.untracked.vstring(*inputfiles),
132  skipEvents = cms.untracked.uint32(skipEvents),
133  lumisToProcess = cms.untracked.VLuminosityBlockRange(*good_lumis))
134 else:
135  process.source = cms.Source("PoolSource",
136  fileNames = cms.untracked.vstring(*inputfiles),
137  skipEvents = cms.untracked.uint32(skipEvents))
138 
139 process.maxEvents = cms.untracked.PSet(input = cms.untracked.int32(maxEvents))
140 #process.options = cms.untracked.PSet( wantSummary = cms.untracked.bool(True) )
141 
142 
143 process.MessageLogger = cms.Service("MessageLogger",
144  destinations = cms.untracked.vstring("cout"),
145  cout = cms.untracked.PSet(threshold = cms.untracked.string("ERROR"),
146  ERROR = cms.untracked.PSet(limit = cms.untracked.int32(10))))
147 
148 process.load("Alignment.MuonAlignmentAlgorithms.MuonAlignmentFromReference_cff")
149 process.looper.ParameterBuilder.Selector.alignParams = cms.vstring("MuonDTChambers,%s,stations123" % station123params, "MuonDTChambers,%s,station4" % station4params, "MuonCSCChambers,%s" % cscparams)
150 # TODO : uncomment the line below when AlignmentProducer is updated:
151 #process.looper.muonCollectionTag = cms.InputTag(muonCollectionTag)
152 process.looper.algoConfig.writeTemporaryFile = "alignment%04d.tmp" % jobnumber
153 process.looper.algoConfig.doAlignment = False
154 process.looper.algoConfig.muonCollectionTag = cms.InputTag(muonCollectionTag)
155 process.looper.algoConfig.minTrackPt = minTrackPt
156 process.looper.algoConfig.maxTrackPt = maxTrackPt
157 process.looper.algoConfig.minTrackP = minTrackP
158 process.looper.algoConfig.maxTrackP = maxTrackP
159 process.looper.algoConfig.maxDxy = maxDxy
160 process.looper.algoConfig.minTrackerHits = minTrackerHits
161 process.looper.algoConfig.maxTrackerRedChi2 = maxTrackerRedChi2
162 process.looper.algoConfig.allowTIDTEC = allowTIDTEC
163 process.looper.algoConfig.minNCrossedChambers = minNCrossedChambers
164 process.looper.algoConfig.twoBin = twoBin
165 process.looper.algoConfig.weightAlignment = weightAlignment
166 process.looper.algoConfig.minAlignmentHits = minAlignmentHits
167 process.looper.algoConfig.combineME11 = combineME11
168 process.looper.algoConfig.maxResSlopeY = maxResSlopeY
169 #process.looper.algoConfig.createNtuple = createAlignNtuple
170 process.looper.algoConfig.minDT13Hits = 7
171 process.looper.algoConfig.doDT = doDT
172 process.looper.algoConfig.doCSC = doCSC
173 
174 process.looper.monitorConfig = cms.PSet(monitors = cms.untracked.vstring())
175 
176 if mapplots:
177  process.load("Alignment.CommonAlignmentMonitor.AlignmentMonitorMuonSystemMap1D_cfi")
178  process.looper.monitorConfig.monitors.append("AlignmentMonitorMuonSystemMap1D")
179  process.looper.monitorConfig.AlignmentMonitorMuonSystemMap1D = process.AlignmentMonitorMuonSystemMap1D
180  process.looper.monitorConfig.AlignmentMonitorMuonSystemMap1D.muonCollectionTag = cms.InputTag(muonCollectionTag)
181  process.looper.monitorConfig.AlignmentMonitorMuonSystemMap1D.minTrackPt = minTrackPt
182  process.looper.monitorConfig.AlignmentMonitorMuonSystemMap1D.maxTrackPt = maxTrackPt
183  process.looper.monitorConfig.AlignmentMonitorMuonSystemMap1D.minTrackP = minTrackP
184  process.looper.monitorConfig.AlignmentMonitorMuonSystemMap1D.maxTrackP = maxTrackP
185  process.looper.monitorConfig.AlignmentMonitorMuonSystemMap1D.maxDxy = maxDxy
186  process.looper.monitorConfig.AlignmentMonitorMuonSystemMap1D.minTrackerHits = minTrackerHits
187  process.looper.monitorConfig.AlignmentMonitorMuonSystemMap1D.maxTrackerRedChi2 = maxTrackerRedChi2
188  process.looper.monitorConfig.AlignmentMonitorMuonSystemMap1D.allowTIDTEC = allowTIDTEC
189  process.looper.monitorConfig.AlignmentMonitorMuonSystemMap1D.minNCrossedChambers = process.looper.algoConfig.minNCrossedChambers
190  process.looper.monitorConfig.AlignmentMonitorMuonSystemMap1D.minDT13Hits = process.looper.algoConfig.minDT13Hits
191  process.looper.monitorConfig.AlignmentMonitorMuonSystemMap1D.minDT2Hits = process.looper.algoConfig.minDT2Hits
192  process.looper.monitorConfig.AlignmentMonitorMuonSystemMap1D.minCSCHits = process.looper.algoConfig.minCSCHits
193  process.looper.monitorConfig.AlignmentMonitorMuonSystemMap1D.doDT = doDT
194  process.looper.monitorConfig.AlignmentMonitorMuonSystemMap1D.doCSC = doCSC
195  process.looper.monitorConfig.AlignmentMonitorMuonSystemMap1D.createNtuple = createMapNtuple
196 
197 if segdiffplots:
198  process.load("Alignment.CommonAlignmentMonitor.AlignmentMonitorSegmentDifferences_cfi")
199  process.looper.monitorConfig.monitors.append("AlignmentMonitorSegmentDifferences")
200  process.looper.monitorConfig.AlignmentMonitorSegmentDifferences = process.AlignmentMonitorSegmentDifferences
201  process.looper.monitorConfig.AlignmentMonitorSegmentDifferences.muonCollectionTag = cms.InputTag(muonCollectionTag)
202  process.looper.monitorConfig.AlignmentMonitorSegmentDifferences.minTrackPt = minTrackPt
203  process.looper.monitorConfig.AlignmentMonitorSegmentDifferences.minTrackP = minTrackP
204  process.looper.monitorConfig.AlignmentMonitorSegmentDifferences.maxDxy = maxDxy
205  process.looper.monitorConfig.AlignmentMonitorSegmentDifferences.minTrackerHits = minTrackerHits
206  process.looper.monitorConfig.AlignmentMonitorSegmentDifferences.maxTrackerRedChi2 = maxTrackerRedChi2
207  process.looper.monitorConfig.AlignmentMonitorSegmentDifferences.allowTIDTEC = allowTIDTEC
208  process.looper.monitorConfig.AlignmentMonitorSegmentDifferences.minNCrossedChambers = process.looper.algoConfig.minNCrossedChambers
209  process.looper.monitorConfig.AlignmentMonitorSegmentDifferences.minDT13Hits = process.looper.algoConfig.minDT13Hits
210  process.looper.monitorConfig.AlignmentMonitorSegmentDifferences.minDT2Hits = process.looper.algoConfig.minDT2Hits
211  process.looper.monitorConfig.AlignmentMonitorSegmentDifferences.minCSCHits = process.looper.algoConfig.minCSCHits
212  process.looper.monitorConfig.AlignmentMonitorSegmentDifferences.doDT = doDT
213  process.looper.monitorConfig.AlignmentMonitorSegmentDifferences.doCSC = doCSC
214 
215 if curvatureplots:
216  process.load("Alignment.CommonAlignmentMonitor.AlignmentMonitorMuonVsCurvature_cfi")
217  process.looper.monitorConfig.monitors.append("AlignmentMonitorMuonVsCurvature")
218  process.looper.monitorConfig.AlignmentMonitorMuonVsCurvature = process.AlignmentMonitorMuonVsCurvature
219  process.looper.monitorConfig.AlignmentMonitorMuonVsCurvature.muonCollectionTag = cms.InputTag(muonCollectionTag)
220  process.looper.monitorConfig.AlignmentMonitorMuonVsCurvature.minTrackPt = minTrackPt
221  #process.looper.monitorConfig.AlignmentMonitorMuonVsCurvature.minTrackP = minTrackP
222  process.looper.monitorConfig.AlignmentMonitorMuonVsCurvature.maxDxy = maxDxy
223  process.looper.monitorConfig.AlignmentMonitorMuonVsCurvature.minTrackerHits = minTrackerHits
224  process.looper.monitorConfig.AlignmentMonitorMuonVsCurvature.maxTrackerRedChi2 = maxTrackerRedChi2
225  process.looper.monitorConfig.AlignmentMonitorMuonVsCurvature.allowTIDTEC = allowTIDTEC
226  process.looper.monitorConfig.AlignmentMonitorMuonVsCurvature.minNCrossedChambers = process.looper.algoConfig.minNCrossedChambers
227  process.looper.monitorConfig.AlignmentMonitorMuonVsCurvature.minDT13Hits = process.looper.algoConfig.minDT13Hits
228  process.looper.monitorConfig.AlignmentMonitorMuonVsCurvature.minDT2Hits = process.looper.algoConfig.minDT2Hits
229  process.looper.monitorConfig.AlignmentMonitorMuonVsCurvature.minCSCHits = process.looper.algoConfig.minCSCHits
230  process.looper.monitorConfig.AlignmentMonitorMuonVsCurvature.doDT = doDT
231  process.looper.monitorConfig.AlignmentMonitorMuonVsCurvature.doCSC = doCSC
232 
233 process.load("Configuration.StandardSequences.FrontierConditions_GlobalTag_cff")
234 process.GlobalTag.globaltag = cms.string(globaltag)
235 process.looper.applyDbAlignment = True
236 process.load("RecoVertex.BeamSpotProducer.BeamSpot_cfi")
237 
238 process.load("Alignment.MuonAlignmentAlgorithms.MuonAlignmentPreFilter_cfi")
239 process.MuonAlignmentPreFilter.minTrackPt = minTrackPt
240 process.MuonAlignmentPreFilter.minTrackP = minTrackP
241 process.MuonAlignmentPreFilter.minTrackerHits = minTrackerHits
242 process.MuonAlignmentPreFilter.allowTIDTEC = allowTIDTEC
243 
244 if iscosmics:
245  process.MuonAlignmentPreFilter.tracksTag = cms.InputTag("ALCARECOMuAlGlobalCosmics:GlobalMuon")
246  if preFilter: process.Path = cms.Path(process.offlineBeamSpot * process.MuonAlignmentPreFilter * process.MuonAlignmentFromReferenceGlobalCosmicRefit)
247  else: process.Path = cms.Path(process.offlineBeamSpot * process.MuonAlignmentFromReferenceGlobalCosmicRefit)
248  process.looper.tjTkAssociationMapTag = cms.InputTag("MuonAlignmentFromReferenceGlobalCosmicRefit:Refitted")
249 else:
250  #process.MuonAlignmentPreFilter.tracksTag = cms.InputTag("ALCARECOMuAlCalIsolatedMu:GlobalMuon")
251  process.MuonAlignmentPreFilter.tracksTag = cms.InputTag("globalMuons")
252  process.MuonAlignmentFromReferenceGlobalMuonRefit.Tracks = cms.InputTag("globalMuons")
253  if preFilter: process.Path = cms.Path(process.offlineBeamSpot * process.MuonAlignmentPreFilter * process.MuonAlignmentFromReferenceGlobalMuonRefit)
254  else: process.Path = cms.Path(process.offlineBeamSpot * process.MuonAlignmentFromReferenceGlobalMuonRefit)
255  process.looper.tjTkAssociationMapTag = cms.InputTag("MuonAlignmentFromReferenceGlobalMuonRefit:Refitted")
256 
257 
258 if len(muonCollectionTag) > 0: # use Tracker Muons
259  process.Path = cms.Path(process.offlineBeamSpot * process.newmuons)
260 
261 
262 process.MuonAlignmentFromReferenceInputDB.connect = cms.string("sqlite_file:%s" % inputdb)
263 process.MuonAlignmentFromReferenceInputDB.toGet = cms.VPSet(cms.PSet(record = cms.string("DTAlignmentRcd"), tag = cms.string("DTAlignmentRcd")),
264  cms.PSet(record = cms.string("CSCAlignmentRcd"), tag = cms.string("CSCAlignmentRcd")))
265 
266 if trackerconnect != "":
268  process.TrackerAlignmentInputDB = cms.ESSource("PoolDBESSource",
269  CondDBSetup,
270  connect = cms.string(trackerconnect),
271  toGet = cms.VPSet(cms.PSet(record = cms.string("TrackerAlignmentRcd"), tag = cms.string(trackeralignment))))
272  process.es_prefer_TrackerAlignmentInputDB = cms.ESPrefer("PoolDBESSource", "TrackerAlignmentInputDB")
273 
274 if trackerAPEconnect != "":
276  process.TrackerAlignmentErrorInputDB = cms.ESSource("PoolDBESSource",
277  CondDBSetup,
278  connect = cms.string(trackerAPEconnect),
279  toGet = cms.VPSet(cms.PSet(cms.PSet(record = cms.string("TrackerAlignmentErrorExtendedRcd"), tag = cms.string(trackerAPE)))))
280  process.es_prefer_TrackerAlignmentErrorInputDB = cms.ESPrefer("PoolDBESSource", "TrackerAlignmentErrorInputDB")
281 
282 if trackerBowsconnect != "":
284  process.TrackerSurfaceDeformationInputDB = cms.ESSource("PoolDBESSource",
285  CondDBSetup,
286  connect = cms.string(trackerBowsconnect),
287  toGet = cms.VPSet(cms.PSet(cms.PSet(record = cms.string("TrackerSurfaceDeformationRcd"), tag = cms.string(trackerBows)))))
288  process.es_prefer_TrackerSurfaceDeformationInputDB = cms.ESPrefer("PoolDBESSource", "TrackerSurfaceDeformationInputDB")
289 
290 if gprcdconnect != "":
292  process.GlobalPositionInputDB = cms.ESSource("PoolDBESSource",
293  CondDBSetup,
294  connect = cms.string(gprcdconnect),
295  toGet = cms.VPSet(cms.PSet(record = cms.string("GlobalPositionRcd"), tag = cms.string(gprcd))))
296  process.es_prefer_GlobalPositionInputDB = cms.ESPrefer("PoolDBESSource", "GlobalPositionInputDB")
297 
298 
299 ## the following was needed for Nov 2010 alignment to pick up new lorentz angle and strip conditions for tracker
300 #process.poolDBESSourceLA = cms.ESSource("PoolDBESSource",
301 # BlobStreamerName = cms.untracked.string('TBufferBlobStreamingService'),
302 # DBParameters = cms.PSet(
303 # messageLevel = cms.untracked.int32(0),
304 # authenticationPath = cms.untracked.string('.')
305 # #messageLevel = cms.untracked.int32(2),
306 # #authenticationPath = cms.untracked.string('/path/to/authentication')
307 # ),
308 # timetype = cms.untracked.string('runnumber'),
309 # connect = cms.string('frontier://PromptProd/CMS_COND_31X_STRIP'),
310 # toGet = cms.VPSet(cms.PSet(
311 # record = cms.string('SiStripLorentzAngleRcd'),
312 # tag = cms.string('SiStripLorentzAngle_GR10_v2_offline')
313 # ))
314 #)
315 #process.es_prefer_LA = cms.ESPrefer('PoolDBESSource','poolDBESSourceLA')
316 #
317 #process.poolDBESSourceBP = cms.ESSource("PoolDBESSource",
318 # BlobStreamerName = cms.untracked.string('TBufferBlobStreamingService'),
319 # DBParameters = cms.PSet(
320 # messageLevel = cms.untracked.int32(0),
321 # authenticationPath = cms.untracked.string('.')
322 # #messageLevel = cms.untracked.int32(2),
323 # #authenticationPath = cms.untracked.string('/path/to/authentication')
324 # ),
325 # timetype = cms.untracked.string('runnumber'),
326 # connect = cms.string('frontier://PromptProd/CMS_COND_31X_STRIP'),
327 # toGet = cms.VPSet(cms.PSet(
328 # record = cms.string('SiStripConfObjectRcd'),
329 # tag = cms.string('SiStripShiftAndCrosstalk_GR10_v2_offline')
330 # ))
331 #)
332 #process.es_prefer_BP = cms.ESPrefer('PoolDBESSource','poolDBESSourceBP')
333 
334 
335 process.looper.saveToDB = False
336 process.looper.saveApeToDB = False
337 del process.PoolDBOutputService
338 
339 process.TFileService = cms.Service("TFileService", fileName = cms.string("plotting%03d.root" % jobnumber))
double split
Definition: MVATrainer.cc:139