CMS 3D CMS Logo

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

Functions

def eGammaCorrection (process, electronCollection, photonCollection, corElectronCollection, corPhotonCollection, metCollections, pfCandMatching=False, pfCandidateCollection="", corMetName="corEGSlimmedMET", postfix="")
 

Function Documentation

def eGammaCorrection.eGammaCorrection (   process,
  electronCollection,
  photonCollection,
  corElectronCollection,
  corPhotonCollection,
  metCollections,
  pfCandMatching = False,
  pfCandidateCollection = "",
  corMetName = "corEGSlimmedMET",
  postfix = "" 
)

Definition at line 20 of file eGammaCorrection.py.

References helpers.addToProcessAndTask(), clone(), helpers.getPatAlgosToolsTask(), and edm.print().

20  ):
21 
22  task = getPatAlgosToolsTask(process)
23 
24  process.load("PhysicsTools.PatAlgos.cleaningLayer1.photonCleaner_cfi")
25  task.add(process.cleanPatPhotons)
26  #cleaning the bad collections
27  cleanedPhotonCollection="cleanedPhotons"+postfix
28  cleanPhotonProducer = getattr(process, "cleanPatPhotons").clone(
29  src = photonCollection,
30 
31  )
32  cleanPhotonProducer.checkOverlaps.electrons.src = electronCollection
33  cleanPhotonProducer.checkOverlaps.electrons.requireNoOverlaps=cms.bool(True)
34 
35  #cleaning the good collections
36  cleanedCorPhotonCollection="cleanedCorPhotons"+postfix
37  cleanCorPhotonProducer = getattr(process, "cleanPatPhotons").clone(
38  src = corPhotonCollection
39  )
40  cleanCorPhotonProducer.checkOverlaps.electrons.src = corElectronCollection
41  cleanCorPhotonProducer.checkOverlaps.electrons.requireNoOverlaps=cms.bool(True)
42 
43 
44  #matching between objects
45  matchPhotonCollection="matchedPhotons"+postfix
46  matchPhotonProducer=cms.EDProducer("PFMatchedCandidateRefExtractor",
47  col1=cms.InputTag(cleanedPhotonCollection),
48  col2=cms.InputTag(cleanedCorPhotonCollection),
49  pfCandCollection=cms.InputTag(pfCandidateCollection),
50  extractPFCandidates=cms.bool(pfCandMatching) )
51 
52  matchElectronCollection="matchedElectrons"+postfix
53  matchElectronProducer=cms.EDProducer("PFMatchedCandidateRefExtractor",
54  col1=cms.InputTag(electronCollection),
55  col2=cms.InputTag(corElectronCollection),
56  pfCandCollection=cms.InputTag(pfCandidateCollection),
57  extractPFCandidates=cms.bool(pfCandMatching) )
58 
59 
60  #removal of old objects, and replace by the new
61  tag1= "pfCandCol1" if pfCandMatching else "col1"
62  tag2= "pfCandCol2" if pfCandMatching else "col2"
63  correctionPhoton="corMETPhoton"+postfix
64  corMETPhoton = cms.EDProducer("ShiftedParticleMETcorrInputProducer",
65  srcOriginal = cms.InputTag(matchPhotonCollection,tag1),
66  srcShifted = cms.InputTag(matchPhotonCollection,tag2),
67  )
68  correctionElectron="corMETElectron"+postfix
69  corMETElectron=cms.EDProducer("ShiftedParticleMETcorrInputProducer",
70  srcOriginal=cms.InputTag(matchElectronCollection,tag1),
71  srcShifted=cms.InputTag(matchElectronCollection,tag2),
72  )
73 
74 
75  addToProcessAndTask(cleanedPhotonCollection,cleanPhotonProducer, process, task)
76  addToProcessAndTask(cleanedCorPhotonCollection,cleanCorPhotonProducer, process, task)
77  addToProcessAndTask(matchPhotonCollection,matchPhotonProducer, process, task)
78  addToProcessAndTask(matchElectronCollection,matchElectronProducer, process, task)
79  addToProcessAndTask(correctionPhoton,corMETPhoton, process, task)
80  addToProcessAndTask(correctionElectron,corMETElectron, process, task)
81 
82  sequence=cms.Sequence()
83  sequence+=getattr(process,cleanedPhotonCollection)
84  sequence+=getattr(process,cleanedCorPhotonCollection)
85  sequence+=getattr(process,correctionPhoton)
86  sequence+=getattr(process,correctionElectron)
87 
88 
89 
90  #MET corrector
91  for metCollection in metCollections:
92  #print "---------->>>> ",metCollection, postfix
93  if not hasattr(process, metCollection+postfix):
94  #print " ==>> aqui"
95  #raw met is the only one that does not have already a valid input collection
96  inputMetCollection=metCollection.replace("Raw","",1)
97  corMETModuleName=corMetName+postfix
98  corMETModule = cms.EDProducer("CorrectedPATMETProducer",
99  src = cms.InputTag( inputMetCollection ),
100  #"patPFMet" if ("Raw" in metCollection )else metCollection
101  srcCorrections = cms.VInputTag( cms.InputTag(correctionPhoton),
102  cms.InputTag(correctionElectron),
103  )
104  )
105  addToProcessAndTask(metCollection+postfix, corMETModule, process, task) #corMETModuleName
106  sequence+=getattr(process,metCollection+postfix) #corMETModuleName
107  else:
108  print(metCollection)
109  getattr(process,metCollection).srcCorrections.append(cms.InputTag(correctionPhoton))
110  getattr(process,metCollection).srcCorrections.append(cms.InputTag(correctionElectron))
111 
112  return sequence
113 
def addToProcessAndTask(label, module, process, task)
Definition: helpers.py:29
S & print(S &os, JobReport::InputFile const &f)
Definition: JobReport.cc:66
TEveGeoShape * clone(const TEveElement *element, TEveElement *parent)
Definition: eve_macros.cc:135
def getPatAlgosToolsTask(process)
Definition: helpers.py:14