CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
Classes | Functions
pf_01_customizeAll Namespace Reference

Classes

class  SeqVisitor
 

Functions

def customise
 

Function Documentation

def pf_01_customizeAll.customise (   process)

Definition at line 46 of file pf_01_customizeAll.py.

46 
47 def customise(process):
48 
49 
50 
51  process._Process__name="EmbeddedRECO"
52  process.TFileService = cms.Service("TFileService", fileName = cms.string("histo_embedded.root") )
53 
54  try:
55  outputModule = process.output
56  except:
57  pass
58  try:
59  outputModule = getattr(process,str(getattr(process,list(process.endpaths)[-1])))
60  except:
61  pass
62 
63  print "Changing eventcontent to RAW+AODSIM + misc. "
64  outputModule.outputCommands = cms.untracked.vstring("drop *")
65  outputModule.outputCommands.extend(process.RAWEventContent.outputCommands )
66  outputModule.outputCommands.extend(process.AODSIMEventContent.outputCommands )
67 
68  keepMC = cms.untracked.vstring("keep *_*_zMusExtracted_*",
69  "keep *_*_zmmCands_*",
70  "keep *_removedInputMuons_*_*",
71  "keep *_generator_*_*",
72  "keep *_PhotonIDProd_*_*",
73  "keep *_photons_*_*",
74  "keep *_photonCore_*_*",
75  "keep *_genParticles_*_*",
76  "keep *_particleFlow_*_*",
77  "keep *_generator_*_*",
78  "keep *_tmfTracks_*_EmbeddedRECO",
79  "keep *_offlinePrimaryVertices_*_EmbeddedRECO",
80  "keep *_offlinePrimaryVerticesWithBS_*_EmbeddedRECO",
81  "keep *_PhotonIDProd_*_*",
82  "keep *_photons_*_*",
83  "keep *_photonCore_*_*",
84  "keep *_genParticles_*_*",
85  "keep *_particleFlow_*_*",
86  )
87  outputModule.outputCommands.extend(keepMC)
88 
89  # getRid of second "drop *"
90  index = 0
91  for item in outputModule.outputCommands[:]:
92  if item == "drop *" and index != 0:
93  #print index," ",outputModule.outputCommands[index]
94  del outputModule.outputCommands[index]
95  index -= 1
96  index += 1
97 
98 
99  hltProcessName = "HLT" #"REDIGI38X"
100  # the following block can be used for more efficient processing by replacing the HLT variable below automatically
101  try:
102  hltProcessName = __HLT__
103  except:
104  pass
105 
106  try:
107  process.dimuonsHLTFilter.TriggerResultsTag.processName = hltProcessName
108  process.goodZToMuMuAtLeast1HLT.TrigTag.processName = hltProcessName
109  process.goodZToMuMuAtLeast1HLT.triggerEvent.processName = hltProcessName
110  process.hltTrigReport,HLTriggerResults.processName = hltProcessName
111  except:
112  pass
113 
114  process.VtxSmeared = cms.EDProducer("FlatEvtVtxGenerator",
115  MaxZ = cms.double(0.0),
116  MaxX = cms.double(0.0),
117  MaxY = cms.double(0.0),
118  MinX = cms.double(0.0),
119  MinY = cms.double(0.0),
120  MinZ = cms.double(0.0),
121  TimeOffset = cms.double(0.0),
122  src = cms.InputTag("generator")
123  )
124 
125  import FWCore.ParameterSet.VarParsing as VarParsing
126  options = VarParsing.VarParsing ('analysis')
127  options.register ('mdtau',
128  0, # default value
129  VarParsing.VarParsing.multiplicity.singleton,
130  VarParsing.VarParsing.varType.int,
131  "mdtau value for tauola")
132 
133  options.register ('transformationMode',
134  1, #default value
135  VarParsing.VarParsing.multiplicity.singleton,
136  VarParsing.VarParsing.varType.int,
137  "transformation mode. 0=mumu->mumu, 1=mumu->tautau")
138 
139  options.register ('minVisibleTransverseMomentum',
140  "", #default value
141  VarParsing.VarParsing.multiplicity.singleton,
142  VarParsing.VarParsing.varType.string,
143  "generator level cut on visible transverse momentum (typeN:pT,[...];[...])")
144 
145  options.register ('useJson',
146  0, # default value, false
147  VarParsing.VarParsing.multiplicity.singleton,
148  VarParsing.VarParsing.varType.int,
149  "should I enable json usage?")
150 
151  options.register ('overrideBeamSpot',
152  0, # default value, false
153  VarParsing.VarParsing.multiplicity.singleton,
154  VarParsing.VarParsing.varType.int,
155  "should I override beamspot in globaltag?")
156 
157 # options.register ('primaryProcess',
158 # 'RECO', # default value
159 # VarParsing.VarParsing.multiplicity.singleton,
160 # VarParsing.VarParsing.varType.string,
161 # "original processName")
162 
163 
164  setFromCL = False
165  if not hasattr(process,"doNotParse"):
166  import sys
167  if hasattr(sys, "argv") == True:
168  if not sys.argv[0].endswith('cmsDriver.py'):
169  options.parseArguments()
170  setFromCL = True
171  else:
172  print "CL parsing disabled!"
173  if setFromCL:
174  print "Setting mdtau to ", options.mdtau
175  process.generator.ZTauTau.TauolaOptions.InputCards.mdtau = options.mdtau
176  process.newSource.ZTauTau.TauolaOptions.InputCards.mdtau = options.mdtau
177  process.generator.ParticleGun.ExternalDecays.Tauola.InputCards.mdtau = options.mdtau
178  process.newSource.ParticleGun.ExternalDecays.Tauola.InputCards.mdtau = options.mdtau
179 
180  print "Setting minVisibleTransverseMomentum to ", options.minVisibleTransverseMomentum
181  process.newSource.ZTauTau.minVisibleTransverseMomentum = cms.untracked.string(options.minVisibleTransverseMomentum)
182  process.generator.ZTauTau.minVisibleTransverseMomentum = cms.untracked.string(options.minVisibleTransverseMomentum)
183 
184  print "Setting transformationMode to ", options.transformationMode
185  process.generator.ZTauTau.transformationMode = cms.untracked.int32(options.transformationMode)
186  process.newSource.ZTauTau.transformationMode = cms.untracked.int32(options.transformationMode)
187 
188  print "options.overrideBeamSpot", options.overrideBeamSpot
189  if options.overrideBeamSpot != 0:
190  bs = cms.string("BeamSpotObjects_2009_LumiBased_SigmaZ_v26_offline") # 52x data PR gt
191  # bs = cms.string("BeamSpotObjects_2009_LumiBased_SigmaZ_v21_offline") # 42x data PR gt
192  # bs = cms.string("BeamSpotObjects_2009_LumiBased_SigmaZ_v18_offline") # 41x data PR gt
193  # bs = cms.string("BeamSpotObjects_2009_LumiBased_v17_offline") # 38x data gt
194  #bs = cms.string("BeamSpotObjects_2009_v14_offline") # 36x data gt
195  # tag = cms.string("Early10TeVCollision_3p8cm_31X_v1_mc_START"), # 35 default
196  # tag = cms.string("Realistic900GeVCollisions_10cm_STARTUP_v1_mc"), # 36 default
197  process.GlobalTag.toGet = cms.VPSet(
198  cms.PSet(record = cms.string("BeamSpotObjectsRcd"),
199  tag = bs,
200  connect = cms.untracked.string("frontier://FrontierProd/CMS_COND_31X_BEAMSPOT")
201  )
202  )
203  print "BeamSpot in globaltag set to ", bs
204  else:
205  print "BeamSpot in globaltag not changed"
206 
207  if options.useJson != 0:
208  print "Enabling json usage"
209  import PhysicsTools.PythonAnalysis.LumiList as LumiList
210  import FWCore.ParameterSet.Types as CfgTypes
211  myLumis = LumiList.LumiList(filename = 'my.json').getCMSSWString().split(',')
212  process.source.lumisToProcess = CfgTypes.untracked(CfgTypes.VLuminosityBlockRange())
213  process.source.lumisToProcess.extend(myLumis)
214 
215 # -*- coding: utf-8 -*-
216 
217 
218  process.tmfTracks = cms.EDProducer("RecoTracksMixer",
219  trackCol1 = cms.InputTag("removedInputMuons","tracks"),
220  trackCol2 = cms.InputTag("generalTracks","","EmbeddedRECO")
221  )
222 
223  process.offlinePrimaryVerticesWithBS.TrackLabel = cms.InputTag("tmfTracks")
224  process.offlinePrimaryVertices.TrackLabel = cms.InputTag("tmfTracks")
225  if hasattr(process.muons, "TrackExtractorPSet"):
226  process.muons.TrackExtractorPSet.inputTrackCollection = cms.InputTag("tmfTracks")
227  elif hasattr(process, "muons1stStep") and hasattr(process.muons1stStep, "TrackExtractorPSet"):
228  process.muons1stStep.TrackExtractorPSet.inputTrackCollection = cms.InputTag("tmfTracks")
229  else:
230  raise "Problem with muons"
231  # it should be the best solution to take the original beam spot for the
232  # reconstruction of the new primary vertex
233  # use the one produced earlier, do not produce your own
234  for s in process.sequences:
235  seq = getattr(process,s)
236  seq.remove(process.offlineBeamSpot)
237 
238 
239  try:
240  process.metreco.remove(process.BeamHaloId)
241  except:
242  pass
243 
244  try:
245  outputModule = process.output
246  except:
247  pass
248  try:
249  outputModule = getattr(process,str(getattr(process,list(process.endpaths)[-1])))
250  except:
251  pass
252 
253 
254  for p in process.paths:
255  pth = getattr(process,p)
256  if "generalTracks" in pth.moduleNames():
257  pth.replace(process.generalTracks, process.generalTracks*process.tmfTracks)
258 
259 
260  process.particleFlowORG = process.particleFlow.clone()
261 
262  # Since CMSSW 4_4 the particleFlow reco works a bit differently. The step is
263  # twofold, first particleFlowTmp is created and then the final particleFlow
264  # collection. What we do in this case is that we merge the final ParticleFlow
265  # collection. For the muon reconstruction, we also merge particleFlowTmp in
266  # order to get PF-based isolation right.
267  if hasattr(process, 'particleFlowTmp'):
268  process.particleFlowTmpMixed = cms.EDProducer('PFCandidateMixer',
269  col1 = cms.untracked.InputTag("removedInputMuons","pfCands"),
270  col2 = cms.untracked.InputTag("particleFlowTmp", ""),
271  trackCol = cms.untracked.InputTag("tmfTracks")
272  )
273  process.muons.PFCandidates = cms.InputTag("particleFlowTmpMixed")
274 
275  for p in process.paths:
276  if "particleFlow" in pth.moduleNames():
277  pth.replace(process.particleFlow, process.particleFlowORG*process.particleFlow)
278  if "muons" in pth.moduleNames():
279  pth.replace(process.muons, process.particleFlowTmpMixed*process.muons)
280  else:
281  # CMSSW_4_2
282  if hasattr(process,"famosParticleFlowSequence"):
283  process.famosParticleFlowSequence.remove(process.pfPhotonTranslatorSequence)
284  process.famosParticleFlowSequence.remove(process.pfElectronTranslatorSequence)
285  process.famosParticleFlowSequence.remove(process.particleFlow)
286  process.famosParticleFlowSequence.__iadd__(process.particleFlowORG)
287  process.famosParticleFlowSequence.__iadd__(process.particleFlow)
288  process.famosParticleFlowSequence.__iadd__(process.pfElectronTranslatorSequence)
289  process.famosParticleFlowSequence.__iadd__(process.pfPhotonTranslatorSequence)
290  elif hasattr(process,"particleFlowReco"):
291  process.particleFlowReco.remove(process.pfPhotonTranslatorSequence)
292  process.particleFlowReco.remove(process.pfElectronTranslatorSequence)
293  process.particleFlowReco.remove(process.particleFlow)
294  process.particleFlowReco.__iadd__(process.particleFlowORG)
295  process.particleFlowReco.__iadd__(process.particleFlow)
296  process.particleFlowReco.__iadd__(process.pfElectronTranslatorSequence)
297  process.particleFlowReco.__iadd__(process.pfPhotonTranslatorSequence)
298  else :
299  raise "Cannot find particleFlow sequence"
300 
301  process.pfSelectedElectrons.src = cms.InputTag("particleFlowORG")
302  process.pfSelectedPhotons.src = cms.InputTag("particleFlowORG")
303 
304 
305  process.particleFlow = cms.EDProducer('PFCandidateMixer',
306  col1 = cms.untracked.InputTag("removedInputMuons","pfCands"),
307  col2 = cms.untracked.InputTag("particleFlowORG", ""),
308  trackCol = cms.untracked.InputTag("tmfTracks")
309  )
310 
311  process.filterEmptyEv.src = cms.untracked.InputTag("generator","","EmbeddedRECO")
312 
313  from FWCore.ParameterSet.Types import InputTag
314  for p in process.paths:
315  i = getattr(process,p)
316  target = process.particleFlow
317 
318  seqVis = SeqVisitor(target)
319  seqVis.prepareSearch()
320  seqVis.setLookFor(target)
321  i.visit(seqVis)
322  while ( seqVis.catch != 1 and seqVis.found == 1 ):
323 
324  target = seqVis.giveNext()
325 
326  targetAttributes = dir(target)
327  for targetAttribute in targetAttributes:
328  attr=getattr(target,targetAttribute) # get actual attribute, not just the name
329  if isinstance(attr, InputTag) and attr.getModuleLabel()=="particleFlow":
330  if ( attr.getProductInstanceLabel()!="" ):
331  print "Changing: ", target, " ", targetAttribute, " ", attr, " to particleFlowORG"
332  attr.setModuleLabel("particleFlowORG")
333 
334 
335  #i.replace(target, source)
336  seqVis.prepareSearch()
337  seqVis.setLookFor(target)
338  i.visit(seqVis)
339 
340  #if (seqVis.catch==1):
341  #seqVis.catch=0
342  #i.__iadd__(source)
343 
344 
345  #'''
346  process.gsfElectronsORG = process.gsfElectrons.clone()
347  #print dir(process)
348  #for p in dir(process):
349 
350  for p in process.paths:
351  pth = getattr(process,p)
352  #if hasattr(pth,"gsfElectrons"):
353  if "gsfElectrons" in pth.moduleNames():
354  pth.replace(process.gsfElectrons, process.gsfElectronsORG*process.gsfElectrons)
355  #print p, dir(pth.moduleNames())
356 
357  # xxx
358  process.gsfElectrons = cms.EDProducer("GSFElectronsMixer",
359  col1 = cms.InputTag("gsfElectronsORG"),
360  col2 = cms.InputTag("gsfElectrons","","RECO"),
361  )
362  #'''
363 
364  if hasattr(process, "DQM_FEDIntegrity_v3"):
365  process.schedule.remove(process.DQM_FEDIntegrity_v3)
366 
367  skimEnabled = False
368  if hasattr(process,"doZmumuSkim"):
369  print "Enabling Zmumu skim"
370  skimEnabled = True
371 
372  cmssw_ver = os.environ["CMSSW_VERSION"]
373  if cmssw_ver.find("CMSSW_4_2") != -1:
374  print
375  print "Using legacy version of Zmumu skim. Note, that muon isolation is disabled"
376  print
377  process.load("TauAnalysis/MCEmbeddingTools/ZmumuStandalonSelectionLegacy_cff")
378  else:
379  process.load("TauAnalysis/MCEmbeddingTools/ZmumuStandalonSelection_cff")
380 
381  #process.load("TauAnalysis/Skimming/goldenZmmSelectionVBTFrelPFIsolation_cfi")
382  process.load("TrackingTools/TransientTrack/TransientTrackBuilder_cfi")
383 
384  # we are allready selecting events from generation step, so following way is ok
385  for path in process.paths:
386  getattr(process,path)._seq = process.goldenZmumuSelectionSequence * getattr(process,path)._seq
387 
388  #process.options = cms.untracked.PSet(
389  # wantSummary = cms.untracked.bool(True)
390  #)
391 
392 
393  if not skimEnabled:
394  print "Zmumu skim not enabled"
395 
396 
397  print "# ######################################################################################"
398  print " Following parameters can be added before customize function "
399  print " call in order to controll process customization: "
400  print " process.doNotParse = cms.PSet() # disables CL parsing for crab compat"
401  print " process.doZmumuSkim = cms.PSet() # adds Zmumu skimming before embedding is run"
402  print "# ######################################################################################"
403 
404 
405 
406 
407  print "#############################################################"
408  print " Warning! PFCandidates 'electron' collection is not mixed, "
409  print " and probably shouldnt be used. "
410  print "#############################################################"
411  return(process)
dbl *** dir
Definition: mlp_gen.cc:35
double split
Definition: MVATrainer.cc:139
How EventSelector::AcceptEvent() decides whether to accept an event for output otherwise it is excluding the probing of A single or multiple positive and the trigger will pass if any such matching triggers are PASS or EXCEPTION[A criterion thatmatches no triggers at all is detected and causes a throw.] A single negative with an expectation of appropriate bit checking in the decision and the trigger will pass if any such matching triggers are FAIL or EXCEPTION A wildcarded negative criterion that matches more than one trigger in the trigger list("!*","!HLTx*"if it matches 2 triggers or more) will accept the event if all the matching triggers are FAIL.It will reject the event if any of the triggers are PASS or EXCEPTION(this matches the behavior of"!*"before the partial wildcard feature was incorporated).Triggers which are in the READY state are completely ignored.(READY should never be returned since the trigger paths have been run