ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/Betchart/TopRefTuple/python/pf2pat.py
(Generate patch)

Comparing UserCode/Betchart/TopRefTuple/python/pf2pat.py (file contents):
Revision 1.5 by bbetchar, Fri Nov 9 18:33:27 2012 UTC vs.
Revision 1.10 by bbetchar, Thu Jan 10 06:51:59 2013 UTC

# Line 29 | Line 29 | class TopRefPF2PAT(object) :
29                             jetAlgo = 'AK5',
30                             jetCorrections = ('AK5PFchs', ['L1FastJet','L2Relative','L3Absolute','L2L3Residual'][:None if options.isData else -1] )
31                             )
32 +
33 +        getattr( process, 'pfPileUp'+options.postfix).checkClosestZVertex = False # https://twiki.cern.ch/twiki/bin/view/CMSPublic/WorkBookJetEnergyCorrections#JetEnCorPFnoPU2012
34          getattr( process, 'pfPileUpIso'+options.postfix).checkClosestZVertex = True
35 +        getattr( process, 'patJetCorrFactors'+options.postfix).flavorType = 'T' # top events, not dijets, but only relevant for L5Flavor,L7Parton
36 +        #getattr( process, 'patJetCorrFactors'+options.postfix).levels.append('L5Flavor') # apparently not available in GlobalTags
37          if options.isData: coreTools.runOnData( process, names = [ 'PFAll' ], postfix = options.postfix )
38          coreTools.removeSpecificPATObjects( process, names = [ 'Photons', 'Taus' ], postfix = options.postfix )
39  
40          self.isoValues = {'el':0.15,'mu':0.20}
41          self.eleID = 'mvaTrigV0'
42          self.minEleID = 0.
43 <        self.dBFactor = -0.5
43 >        self.isoEA = 'elPFIsoValueEA03'
44 >        self.doElectronEA = True
45 >        self.dBFactorEl = -1.0 if self.doElectronEA else -0.5
46 >        self.dBFactorMu = -0.5
47          self.cuts = {'el': ['abs(eta)<2.5',
48                              'pt>20.',
49                              'gsfTrackRef.isNonnull',
50                              'gsfTrackRef.trackerExpectedHitsInner.numberOfLostHits<2',
51 <                            '(chargedHadronIso+max(0.,neutralHadronIso+photonIso%+f*puChargedHadronIso))/pt < %f'%(self.dBFactor, self.isoValues['el']),
52 <                            'electronID("%s") > %f'%(self.eleID,self.minEleID),
51 >                            '(chargedHadronIso+max(0.,neutralHadronIso+photonIso%+.1f*%s))/pt < %.2f'%(self.dBFactorEl, 'userIsolation("User1Iso")' if self.doElectronEA else 'puChargedHadronIso',self.isoValues['el']),
52 >                            'electronID("%s") > %.2f'%(self.eleID,self.minEleID),
53                              ],
54                       'mu' :['abs(eta)<2.5',
55                              'pt>10.',
56 <                            '(chargedHadronIso+neutralHadronIso+photonIso%+f*puChargedHadronIso)/pt < %f'%(self.dBFactor, self.isoValues['mu']),
56 >                            '(chargedHadronIso+neutralHadronIso+photonIso%+.2f*puChargedHadronIso)/pt < %.2f'%(self.dBFactorMu, self.isoValues['mu']),
57                              '(isPFMuon && (isGlobalMuon || isTrackerMuon) )',
58                              ],
59                       'jet' : ['abs(eta)<2.5', # Careful! these jet cuts affect the typeI met corrections
# Line 64 | Line 71 | class TopRefPF2PAT(object) :
71          self.options = options
72          self.fix = options.postfix
73          self.patSeq = getattr(process, 'patPF2PATSequence' + self.fix)
74 <        self.btags = ['combinedSecondaryVertex','jetProbability']
74 >        self.btags = self.options.btags
75          self.taginfos = ["impactParameter","secondaryVertex"]
76  
77          self.configTopProjections()
# Line 93 | Line 100 | class TopRefPF2PAT(object) :
100          iso = self.attr('pfIsolated'+full)
101          iso.isolationCut = self.isoValues[lep]
102          iso.doDeltaBetaCorrection = True
103 <        iso.deltaBetaFactor = self.dBFactor
103 >        iso.deltaBetaFactor = getattr(self, 'dBFactor' + full[:2])
104          sel = self.attr('pfSelected'+full)
105          sel.cut = ' && '.join(self.cuts[lep][:-2])
106 +        isoEA = getattr(self.process, self.isoEA)
107          print >>self.stdout, ""
108          if lep == 'el' :
109              idName = 'pfIdentifiedElectrons'+self.fix
# Line 105 | Line 113 | class TopRefPF2PAT(object) :
113                                electronIdMap = cms.InputTag(self.eleID),
114                                electronIdCut = cms.double(self.minEleID))
115              setattr(self.process, idName, id )
116 <            self.patSeq.replace( sel, id*sel)
116 >            self.patSeq.replace( sel, id*sel*isoEA)
117              sel.src = idName
118 +            if not iso3 : isoEA.EffectiveAreaType = "kEleGammaAndNeutralHadronIso04"
119              self.show(idName)
120          
121          if iso3:
# Line 123 | Line 132 | class TopRefPF2PAT(object) :
132              val.pfPhotons          = tags( lep+'PFIsoValueGamma03' + pf )
133              val.pfChargedHadrons   = tags( lep+'PFIsoValueCharged03' + pf )
134  
135 +        if lep == 'el' and self.doElectronEA :
136 +            self.attr( 'pfIsolated' + full).deltaBetaIsolationValueMap = self.isoEA
137 +
138          self.show('pfSelected'+full)
139          self.show('pfIsolated'+full)
140          return
# Line 140 | Line 152 | class TopRefPF2PAT(object) :
152          for mod,attr,val in [('patElectrons','electronIDSources', electronIDSources),
153                               ('selectedPatElectrons','cut', ' && '.join(c for c in self.cuts['el'] if 'gsfTrackRef' not in c)),
154                               ] : setattr( self.attr( mod+self.fix), attr, val )
155 +        self.attr('patElectrons'+self.fix).isolationValues.user = tags( [self.isoEA] )
156 +
157          self.show('selectedPatElectrons'+self.fix)
158          return
159  

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines