CMS 3D CMS Logo

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