ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/HbbAnalysis/python/electronConfig_cff.py
Revision: 1.2
Committed: Fri Sep 18 15:18:25 2009 UTC (15 years, 7 months ago) by amagnan
Content type: text/x-python
Branch: MAIN
CVS Tags: v00-03-00
Changes since 1.1: +4 -4 lines
Log Message:
correct PAT config

File Contents

# User Rev Content
1 amagnan 1.1 ########################################
2     #### Created 07-Apr-09
3     #### by A.-M. Magnan
4     #### a.magnan@imperial.ac.uk
5     #### from TauAnalysis globalV00-00-03
6     ########################################
7    
8     import FWCore.ParameterSet.Config as cms
9     import copy
10    
11    
12     #################################################################################
13     #### PatLayer0 sequence
14     #################################################################################
15    
16     from PhysicsTools.PatAlgos.cleaningLayer0.electronCleaner_cfi import *
17    
18     allLayer0ElectronsForTauAnalyses = copy.deepcopy(allLayer0Electrons)
19     allLayer0ElectronsForTauAnalyses.electronSource = cms.InputTag("pixelMatchGsfElectrons")
20     allLayer0ElectronsForTauAnalyses.removeDuplicates = cms.bool(True)
21     allLayer0ElectronsForTauAnalyses.selection = cms.PSet(type = cms.string('none'))
22     allLayer0ElectronsForTauAnalyses.isolation = cms.PSet()
23     allLayer0ElectronsForTauAnalyses.markItems = cms.bool(True)
24     allLayer0ElectronsForTauAnalyses.bitsToIgnore = cms.vstring('')
25     allLayer0ElectronsForTauAnalyses.saveRejected = cms.string('')
26     allLayer0ElectronsForTauAnalyses.saveAll = cms.string('')
27    
28    
29    
30     ######################################################################################
31     #### electron identification
32     ######################################################################################
33    
34     from RecoEcal.EgammaClusterProducers.geometryForClustering_cff import *
35     from RecoEgamma.ElectronIdentification.likelihoodPdfsDB_cfi import *
36     from RecoEgamma.ElectronIdentification.likelihoodESetup_cfi import *
37     from RecoEgamma.ElectronIdentification.neuralNetElectronId_cfi import *
38    
39     from RecoEgamma.ElectronIdentification.electronIdCutBasedExt_cfi import eidCutBasedExt
40     from RecoEgamma.ElectronIdentification.electronIdCutBasedClassesExt_cfi import eidCutBasedClassesExt as eidPtdrExt ## PTDR is how people know it
41     from RecoEgamma.ElectronIdentification.electronIdNeuralNetExt_cfi import eidNeuralNetExt
42     from RecoEgamma.ElectronIdentification.electronIdLikelihoodExt_cfi import eidLikelihoodExt
43    
44     elecIdForTauAnalysesCutBasedExtPAT = eidCutBasedExt.copy();
45     elecIdForTauAnalysesCutBasedExtPAT.src = cms.InputTag("allLayer0ElectronsForTauAnalyses")
46    
47     elecIdForTauAnalysesCutBasedRobust = elecIdForTauAnalysesCutBasedExtPAT.copy();
48     elecIdForTauAnalysesCutBasedRobust.electronQuality = 'robust'
49     elecIdForTauAnalysesCutBasedRobust.robustEleIDCuts = cms.PSet(
50     barrel = cms.vdouble(10, 0.010, 0.02, 0.0036),
51     endcap = cms.vdouble(10, 0.027, 0.014, 0.0055)
52     )
53     elecIdForTauAnalysesCutBasedRobust.tightEleIDCuts = cms.PSet(
54     barrel = cms.vdouble(10, 0.012, 0.02, 0.0025),
55     endcap = cms.vdouble(10, 0.025, 0.014, 0.0040)
56     )
57     elecIdForTauAnalysesCutBasedRobust.looseEleIDCuts = cms.PSet(
58     barrel = cms.vdouble(10, 0.03, 0.05, 0.009),
59     endcap = cms.vdouble(10, 0.06, 0.05, 0.0160)
60     )
61    
62     #barrel = cms.vdouble(0.015, 0.0092, 0.02, 0.0025),
63     #endcap = cms.vdouble(0.018, 0.025, 0.02, 0.0040)
64    
65     elecIdForTauAnalysesCutBasedLoose = elecIdForTauAnalysesCutBasedExtPAT.copy();
66     elecIdForTauAnalysesCutBasedLoose.electronQuality = 'loose'
67    
68     elecIdForTauAnalysesCutBasedTight = elecIdForTauAnalysesCutBasedExtPAT.copy();
69     elecIdForTauAnalysesCutBasedTight.electronQuality = 'tight'
70    
71     patLayer0ElectronIdForTauAnalyses = cms.Sequence( elecIdForTauAnalysesCutBasedRobust
72     *elecIdForTauAnalysesCutBasedLoose
73     *elecIdForTauAnalysesCutBasedTight )
74    
75    
76     ######################################################################################
77     #### electron isolation
78     ######################################################################################
79    
80     from RecoEgamma.EgammaIsolationAlgos.egammaIsoSetup_cff import *
81     from RecoEgamma.EgammaIsolationAlgos.egammaSuperClusterMerger_cfi import *
82     from RecoEgamma.EgammaIsolationAlgos.egammaBasicClusterMerger_cfi import *
83    
84     egammaSuperClusterMerger.src = cms.VInputTag(
85     cms.InputTag('hybridSuperClusters'),
86     #cms.InputTag('correctedHybridSuperClusters'),
87     cms.InputTag('multi5x5SuperClusters', 'multi5x5EndcapSuperClusters'),
88     #cms.InputTag('multi5x5SuperClustersWithPreshower'),
89     #cms.InputTag('correctedMulti5x5SuperClustersWithPreshower')
90     )
91     egammaBasicClusterMerger.src = cms.VInputTag(
92     cms.InputTag('hybridSuperClusters', 'hybridBarrelBasicClusters'),
93     cms.InputTag('multi5x5BasicClusters','multi5x5EndcapBasicClusters')
94     )
95    
96     from RecoEgamma.EgammaIsolationAlgos.eleIsoDepositTk_cff import *
97     EleIsoTrackExtractorBlock.DR_Max = 1.
98    
99     from RecoEgamma.EgammaIsolationAlgos.eleEcalExtractorBlocks_cff import *
100     EleIsoEcalFromHitsExtractorBlock.extRadius = 1.
101     EleIsoEcalFromClustsExtractorBlock.extRadius = 1.
102     EleIsoEcalSCVetoFromClustsExtractorBlock.extRadius = 1.
103    
104     from RecoEgamma.EgammaIsolationAlgos.eleHcalExtractorBlocks_cff import *
105     EleIsoHcalFromHitsExtractorBlock.extRadius = 1.
106     EleIsoHcalFromTowersExtractorBlock.extRadius =1.
107    
108     eleIsoDepositForTauAnalysesTk = cms.EDProducer("CandIsoDepositProducer",
109     src = cms.InputTag("pixelMatchGsfElectrons"),
110     trackType = cms.string('candidate'),
111     MultipleDepositsFlag = cms.bool(False),
112     ExtractorPSet = cms.PSet(EleIsoTrackExtractorBlock)
113     )
114    
115     eleIsoDepositForTauAnalysesEcalSCVetoFromClusts = cms.EDProducer("CandIsoDepositProducer",
116     src = cms.InputTag("pixelMatchGsfElectrons"),
117     MultipleDepositsFlag = cms.bool(False),
118     trackType = cms.string('candidate'),
119     ExtractorPSet = cms.PSet( EleIsoEcalSCVetoFromClustsExtractorBlock )
120     )
121    
122     eleIsoDepositForTauAnalysesEcalFromClusts = cms.EDProducer("CandIsoDepositProducer",
123     src = cms.InputTag("pixelMatchGsfElectrons"),
124     MultipleDepositsFlag = cms.bool(False),
125     trackType = cms.string('candidate'),
126     ExtractorPSet = cms.PSet( EleIsoEcalFromClustsExtractorBlock )
127     )
128    
129     eleIsoDepositForTauAnalysesEcalFromHits = cms.EDProducer("CandIsoDepositProducer",
130     src = cms.InputTag("pixelMatchGsfElectrons"),
131     MultipleDepositsFlag = cms.bool(False),
132     trackType = cms.string('candidate'),
133     ExtractorPSet = cms.PSet( EleIsoEcalFromHitsExtractorBlock )
134     )
135    
136     eleIsoDepositForTauAnalysesHcalFromTowers = cms.EDProducer("CandIsoDepositProducer",
137     src = cms.InputTag("pixelMatchGsfElectrons"),
138     MultipleDepositsFlag = cms.bool(False),
139     trackType = cms.string('candidate'),
140     ExtractorPSet = cms.PSet( EleIsoHcalFromTowersExtractorBlock )
141     )
142    
143     eleIsoDepositForTauAnalysesHcalFromHits = cms.EDProducer("CandIsoDepositProducer",
144     src = cms.InputTag("pixelMatchGsfElectrons"),
145     MultipleDepositsFlag = cms.bool(False),
146     trackType = cms.string('candidate'),
147     ExtractorPSet = cms.PSet(EleIsoHcalFromHitsExtractorBlock )
148     )
149    
150     # define module labels for old (tk-based isodeposit) POG isolation
151     patAODElectronIsolationLabels = cms.VInputTag(
152     cms.InputTag("eleIsoDepositForTauAnalysesTk"),
153     cms.InputTag("eleIsoDepositForTauAnalysesEcalFromHits"),
154     cms.InputTag("eleIsoDepositForTauAnalysesHcalFromHits"),
155     cms.InputTag("eleIsoDepositForTauAnalysesEcalFromClusts"), # try these two if you want to compute them from AOD
156     cms.InputTag("eleIsoDepositForTauAnalysesHcalFromTowers"), # instead of reading the values computed in RECO
157     cms.InputTag("eleIsoDepositForTauAnalysesEcalSCVetoFromClusts"), # somebody might want this one for ECAL instead
158     )
159    
160     # read and convert to ValueMap<IsoDeposit> keyed to Candidate
161     patAODElectronIsolations = cms.EDFilter(
162     "MultipleIsoDepositsToValueMaps",
163     collection = cms.InputTag("pixelMatchGsfElectrons"),
164     associations = patAODElectronIsolationLabels,
165     )
166    
167     # re-key ValueMap<IsoDeposit> to Layer 0 output
168     layer0ElectronIsolationsForTauAnalyses = cms.EDFilter("CandManyValueMapsSkimmerIsoDeposits",
169     collection = cms.InputTag("allLayer0ElectronsForTauAnalyses"),
170     backrefs = cms.InputTag("allLayer0ElectronsForTauAnalyses"),
171     commonLabel = cms.InputTag("patAODElectronIsolations"),
172     associations = patAODElectronIsolationLabels
173     )
174    
175     # selecting POG modules that can run on top of AOD
176     eleIsoDepositAODForTauAnalyses = cms.Sequence(
177     eleIsoDepositForTauAnalysesTk * eleIsoDepositForTauAnalysesEcalFromClusts * eleIsoDepositForTauAnalysesEcalFromHits *
178     eleIsoDepositForTauAnalysesHcalFromTowers * eleIsoDepositForTauAnalysesHcalFromHits *
179     eleIsoDepositForTauAnalysesEcalSCVetoFromClusts
180     )
181    
182     # sequence to run on AOD before PAT
183     patAODElectronIsolationForTauAnalyses = cms.Sequence(
184     egammaSuperClusterMerger * ##
185     egammaBasicClusterMerger * ##
186     eleIsoDepositAODForTauAnalyses * ## Not needed any more, we use values from RECO
187     patAODElectronIsolations
188     )
189    
190     # sequence to run after the PAT cleaners
191     patLayer0ElectronIsolationForTauAnalyses = cms.Sequence(layer0ElectronIsolationsForTauAnalyses)
192    
193     #################################################################################
194     #### Trigger matching
195     #################################################################################
196    
197     from PhysicsTools.PatAlgos.triggerLayer0.trigMatchSequences_cff import *
198     electronTrigMatchCandHLT1ElectronStartup.src = "allLayer0ElectronsForTauAnalyses"
199     electronTrigMatchHLT1Electron.src = "allLayer0ElectronsForTauAnalyses"
200     electronTrigMatchHLT1ElectronRelaxed.src = "allLayer0ElectronsForTauAnalyses"
201    
202     patTrigMatchElectronsForTauAnalyses = cms.Sequence( (patCandHLT1ElectronStartup * electronTrigMatchCandHLT1ElectronStartup)
203     +(patHLT1ElectronRelaxed * electronTrigMatchHLT1ElectronRelaxed)
204     +(patHLT1Electron * electronTrigMatchHLT1Electron) )
205    
206    
207     #################################################################################
208     #### MC matching
209     #################################################################################
210    
211     # matching of recontructed electrons to generator level information
212     from PhysicsTools.PatAlgos.mcMatchLayer0.electronMatch_cfi import *
213     electronMatchForTauAnalyses = copy.deepcopy(electronMatch)
214     electronMatchForTauAnalyses.maxDeltaR = cms.double(0.1)
215     electronMatchForTauAnalyses.src = "allLayer0ElectronsForTauAnalyses"
216    
217    
218     #################################################################################
219     #### PatLayer 1 sequence
220     #################################################################################
221    
222     from PhysicsTools.PatAlgos.producersLayer1.electronProducer_cfi import *
223    
224     allLayer1ElectronsForTauAnalyses = copy.deepcopy(allLayer1Electrons)
225     allLayer1ElectronsForTauAnalyses.electronSource = cms.InputTag("allLayer0ElectronsForTauAnalyses")
226     allLayer1ElectronsForTauAnalyses.embedTrack = cms.bool(True)
227     allLayer1ElectronsForTauAnalyses.embedGsfTrack = cms.bool(True)
228     allLayer1ElectronsForTauAnalyses.embedSuperCluster = cms.bool(True)
229     allLayer1ElectronsForTauAnalyses.isolation = cms.PSet(
230     tracker = cms.PSet(
231     src = cms.InputTag("layer0ElectronIsolationsForTauAnalyses","eleIsoDepositForTauAnalysesTk"),
232     deltaR = cms.double(0.3),
233     vetos = cms.vstring(
234     '0.015', # inner radius veto cone (was 0.015)
235 amagnan 1.2 'Threshold(1.0)' # threshold on individual track pt
236 amagnan 1.1 ),
237     skipDefaultVeto = cms.bool(True),
238     ),
239     ecal = cms.PSet(
240     src = cms.InputTag("layer0ElectronIsolationsForTauAnalyses","eleIsoDepositForTauAnalysesEcalFromHits"),
241     deltaR = cms.double(0.4),
242     vetos = cms.vstring(
243     'EcalBarrel:0.045',
244     'EcalBarrel:RectangularEtaPhiVeto(-0.02,0.02,-0.5,0.5)',
245     #'EcalBarrel:ConeVeto()',
246     #'EcalBarrel:AngleCone()',
247     #'EcalBarrel:AngleVeto()',
248 amagnan 1.2 'EcalEndcaps:0.1',#0.07
249 amagnan 1.1 'EcalEndcaps:RectangularEtaPhiVeto(-0.02,0.02,-0.5,0.5)',
250 amagnan 1.2 'EcalBarrel:ThresholdFromTransverse(0.12)', #0.08
251 amagnan 1.1 #'EcalBarrel:Threshold()',
252     'EcalEndcaps:ThresholdFromTransverse(0.3)'
253     ),
254     skipDefaultVeto = cms.bool(True),
255     ),
256     hcal = cms.PSet(
257     src = cms.InputTag("layer0ElectronIsolationsForTauAnalyses","eleIsoDepositForTauAnalysesHcalFromTowers"),
258 amagnan 1.2 deltaR = cms.double(0.4),
259 amagnan 1.1 skipDefaultVeto = cms.bool(True),
260     ),
261     )
262     allLayer1ElectronsForTauAnalyses.isoDeposits = cms.PSet(
263     tracker = cms.InputTag("layer0ElectronIsolationsForTauAnalyses","eleIsoDepositForTauAnalysesTk"),
264     ecal = cms.InputTag("layer0ElectronIsolationsForTauAnalyses","eleIsoDepositForTauAnalysesEcalFromHits"),
265     hcal = cms.InputTag("layer0ElectronIsolationsForTauAnalyses","eleIsoDepositForTauAnalysesHcalFromTowers"),
266     )
267     allLayer1ElectronsForTauAnalyses.addElectronID = cms.bool(True)
268     allLayer1ElectronsForTauAnalyses.electronIDSources = cms.PSet(
269     robust = cms.InputTag("elecIdForTauAnalysesCutBasedRobust"),
270     loose = cms.InputTag("elecIdForTauAnalysesCutBasedLoose"),
271     tight = cms.InputTag("elecIdForTauAnalysesCutBasedTight"),
272     )
273     allLayer1ElectronsForTauAnalyses.addTrigMatch = cms.bool(True)
274     allLayer1ElectronsForTauAnalyses.trigPrimMatch = cms.VInputTag(
275     cms.InputTag("electronTrigMatchHLT1Electron"),
276     #cms.InputTag("electronTrigMatchHLT1ElectronRelaxed"),
277     )
278     allLayer1ElectronsForTauAnalyses.addGenMatch = cms.bool(True)
279     allLayer1ElectronsForTauAnalyses.embedGenMatch = cms.bool(True)
280     allLayer1ElectronsForTauAnalyses.genParticleMatch = cms.InputTag("electronMatchForTauAnalyses")
281    
282    
283    
284    
285    
286     #################################################################################
287     #### Final Pat sequences
288     #################################################################################
289    
290    
291    
292     patLayer0ElectronsForTauAnalyses = cms.Sequence( patAODElectronIsolationForTauAnalyses
293     *allLayer0ElectronsForTauAnalyses
294     *patLayer0ElectronIdForTauAnalyses
295     *patLayer0ElectronIsolationForTauAnalyses
296     *electronMatchForTauAnalyses
297     *patTrigMatchElectronsForTauAnalyses )
298    
299     patLayer1ElectronsForTauAnalyses = cms.Sequence(allLayer1ElectronsForTauAnalyses)