CMS 3D CMS Logo

gsfElectrons_cfi.py
Go to the documentation of this file.
1 
2 import FWCore.ParameterSet.Config as cms
5 
6 from RecoEgamma.EgammaIsolationAlgos.electronTrackIsolations_cfi import trkIsol03CfgV1,trkIsol04CfgV1
7 
8 #==============================================================================
9 # Producer of transient ecal driven gsf electrons
10 #==============================================================================
11 
12 ecalDrivenGsfElectrons = cms.EDProducer("GsfElectronEcalDrivenProducer",
13 
14  # input collections
15  previousGsfElectronsTag = cms.InputTag(""),
16  pflowGsfElectronsTag = cms.InputTag(""),
17  gsfElectronCoresTag = cms.InputTag("ecalDrivenGsfElectronCores"),
18  barrelRecHitCollectionTag = cms.InputTag("ecalRecHit","EcalRecHitsEB"),
19  endcapRecHitCollectionTag = cms.InputTag("ecalRecHit","EcalRecHitsEE"),
20  hcalTowers = cms.InputTag("towerMaker"),
21  pfMvaTag = cms.InputTag(""),
22  seedsTag = cms.InputTag("ecalDrivenElectronSeeds"),
23  beamSpotTag = cms.InputTag("offlineBeamSpot"),
24  gsfPfRecTracksTag = cms.InputTag("pfTrackElec"),
25  vtxTag = cms.InputTag('offlinePrimaryVertices'),
26 
27  # backward compatibility mechanism for ctf tracks
28  ctfTracksCheck = cms.bool(True),
29  ctfTracksTag = cms.InputTag("generalTracks"),
30 
31  gedElectronMode= cms.bool(False),
32  PreSelectMVA = cms.double(-0.1),
33  MaxElePtForOnlyMVA = cms.double(50.0),
34 
35  # steering
36  useGsfPfRecTracks = cms.bool(True),
37  applyPreselection = cms.bool(False),
38  ecalDrivenEcalEnergyFromClassBasedParameterization = cms.bool(True),
39  ecalDrivenEcalErrorFromClassBasedParameterization = cms.bool(True),
40  pureTrackerDrivenEcalErrorFromSimpleParameterization = cms.bool(True),
41  applyAmbResolution = cms.bool(False),
42  ambSortingStrategy = cms.uint32(1),
43  ambClustersOverlapStrategy = cms.uint32(1),
44  addPflowElectrons = cms.bool(True), # this one should be transfered to the "core" level
45  useEcalRegression = cms.bool(False),
46  useCombinationRegression = cms.bool(False),
47 
48  # preselection parameters (ecal driven electrons)
49  minSCEtBarrel = cms.double(4.0),
50  minSCEtEndcaps = cms.double(4.0),
51  minEOverPBarrel = cms.double(0.0),
52  maxEOverPBarrel = cms.double(999999999.),
53  minEOverPEndcaps = cms.double(0.0),
54  maxEOverPEndcaps = cms.double(999999999.),
55  maxDeltaEtaBarrel = cms.double(0.02),
56  maxDeltaEtaEndcaps = cms.double(0.02),
57  maxDeltaPhiBarrel = cms.double(0.15),
58  maxDeltaPhiEndcaps = cms.double(0.15),
59  #useHcalTowers = cms.bool(True),
60  #useHcalRecHits = cms.bool(False),
61  hOverEConeSize = cms.double(0.15),
62  hOverEPtMin = cms.double(0.),
63  #maxHOverEDepth1Barrel = cms.double(0.1),
64  #maxHOverEDepth1Endcaps = cms.double(0.1),
65  #maxHOverEDepth2 = cms.double(0.1),
66  maxHOverEBarrel = cms.double(0.15),
67  maxHOverEEndcaps = cms.double(0.15),
68  maxHBarrel = cms.double(0.0),
69  maxHEndcaps = cms.double(0.0),
70  maxSigmaIetaIetaBarrel = cms.double(999999999.),
71  maxSigmaIetaIetaEndcaps = cms.double(999999999.),
72  maxFbremBarrel = cms.double(999999999.),
73  maxFbremEndcaps = cms.double(999999999.),
74  isBarrel = cms.bool(False),
75  isEndcaps = cms.bool(False),
76  isFiducial = cms.bool(False),
77  maxTIP = cms.double(999999999.),
78  seedFromTEC = cms.bool(True),
79  minMVA = cms.double(-0.4),
80  minMvaByPassForIsolated = cms.double(-0.4),
81 
82  # preselection parameters (tracker driven only electrons)
83  minSCEtBarrelPflow = cms.double(0.0),
84  minSCEtEndcapsPflow = cms.double(0.0),
85  minEOverPBarrelPflow = cms.double(0.0),
86  maxEOverPBarrelPflow = cms.double(999999999.),
87  minEOverPEndcapsPflow = cms.double(0.0),
88  maxEOverPEndcapsPflow = cms.double(999999999.),
89  maxDeltaEtaBarrelPflow = cms.double(999999999.),
90  maxDeltaEtaEndcapsPflow = cms.double(999999999.),
91  maxDeltaPhiBarrelPflow = cms.double(999999999.),
92  maxDeltaPhiEndcapsPflow = cms.double(999999999.),
93  hOverEConeSizePflow = cms.double(0.15),
94  hOverEPtMinPflow = cms.double(0.),
95  #maxHOverEDepth1BarrelPflow = cms.double(999999999.),
96  #maxHOverEDepth1EndcapsPflow = cms.double(999999999.),
97  #maxHOverEDepth2Pflow = cms.double(999999999.),
98  maxHOverEBarrelPflow = cms.double(999999999.),
99  maxHOverEEndcapsPflow = cms.double(999999999.),
100  maxHBarrelPflow = cms.double(0.0),
101  maxHEndcapsPflow = cms.double(0.0),
102  maxSigmaIetaIetaBarrelPflow = cms.double(999999999.),
103  maxSigmaIetaIetaEndcapsPflow = cms.double(999999999.),
104  maxFbremBarrelPflow = cms.double(999999999.),
105  maxFbremEndcapsPflow = cms.double(999999999.),
106  isBarrelPflow = cms.bool(False),
107  isEndcapsPflow = cms.bool(False),
108  isFiducialPflow = cms.bool(False),
109  maxTIPPflow = cms.double(999999999.),
110  minMVAPflow = cms.double(-0.4),
111  minMvaByPassForIsolatedPflow = cms.double(-0.4),
112 
113  # Ecal rec hits configuration
114  recHitFlagsToBeExcludedBarrel = cleanedHybridSuperClusters.RecHitFlagToBeExcluded,
115  recHitFlagsToBeExcludedEndcaps = multi5x5BasicClustersCleaned.RecHitFlagToBeExcluded,
116  recHitSeverityToBeExcludedBarrel = cleanedHybridSuperClusters.RecHitSeverityToBeExcluded,
117  recHitSeverityToBeExcludedEndcaps = cleanedHybridSuperClusters.RecHitSeverityToBeExcluded,
118  #severityLevelCut = cms.int32(4),
119 
120  # Isolation algos configuration
121  trkIsol03Cfg = trkIsol03CfgV1,
122  trkIsol04Cfg = trkIsol04CfgV1,
123  intRadiusHcal = cms.double(0.15),
124  etMinHcal = cms.double(0.0),
125  intRadiusEcalBarrel = cms.double(3.0),
126  intRadiusEcalEndcaps = cms.double(3.0),
127  jurassicWidth = cms.double(1.5),
128  etMinBarrel = cms.double(0.0),
129  eMinBarrel = cms.double(0.095),
130  etMinEndcaps = cms.double(0.110),
131  eMinEndcaps = cms.double(0.0),
132  vetoClustered = cms.bool(False),
133  useNumCrystals = cms.bool(True),
134  TransientInitialStateEstimatorParameters = cms.PSet(
135  propagatorAlongTISE = cms.string('PropagatorWithMaterial'),
136  propagatorOppositeTISE = cms.string('PropagatorWithMaterialOpposite')
137  ),
138 
139  # Corrections
140  superClusterErrorFunction = cms.string("EcalClusterEnergyUncertaintyObjectSpecific"),
141  crackCorrectionFunction = cms.string("EcalClusterCrackCorrection"),
142 
143  # Regression. The labels are needed in all cases
144  ecalRefinedRegressionWeightLabels = cms.vstring(),
145  combinationRegressionWeightLabels = cms.vstring(),
146 
147  ecalWeightsFromDB = cms.bool(True),
148  # if not from DB. Otherwise, keep empty
149  ecalRefinedRegressionWeightFiles = cms.vstring(),
150  combinationWeightsFromDB = cms.bool(True),
151  # if not from DB. Otherwise, keep empty
152  combinationRegressionWeightFile = cms.vstring(),
153 
154 
155  # Iso Values
156  useIsolationValues = cms.bool(False),
157  SoftElecMVAFilesString = cms.vstring(
158  "RecoEgamma/ElectronIdentification/data/TMVA_BDTSoftElectrons_9Dec2013.weights.xml"
159  ),
160  ElecMVAFilesString = cms.vstring(
161  "RecoEgamma/ElectronIdentification/data/TMVA_Category_BDTSimpleCat_10_17Feb2011.weights.xml",
162  "RecoEgamma/ElectronIdentification/data/TMVA_Category_BDTSimpleCat_12_17Feb2011.weights.xml",
163  "RecoEgamma/ElectronIdentification/data/TMVA_Category_BDTSimpleCat_20_17Feb2011.weights.xml",
164  "RecoEgamma/ElectronIdentification/data/TMVA_Category_BDTSimpleCat_22_17Feb2011.weights.xml"
165  ),
166 
167 )
168 
169 
170 #==============================================================================
171 # Final producer of persistent gsf electrons
172 #==============================================================================
173 
174 gsfElectrons = cms.EDProducer("GsfElectronProducer",
175 
176  # input collections
177  previousGsfElectronsTag = cms.InputTag("ecalDrivenGsfElectrons"),
178  pflowGsfElectronsTag = cms.InputTag("pfElectronTranslator:pf"),
179  gsfElectronCoresTag = cms.InputTag("gsfElectronCores"),
180  hcalTowers = cms.InputTag("towerMaker"),
181  barrelRecHitCollectionTag = cms.InputTag("ecalRecHit","EcalRecHitsEB"),
182  endcapRecHitCollectionTag = cms.InputTag("ecalRecHit","EcalRecHitsEE"),
183  pfMvaTag = cms.InputTag("pfElectronTranslator:pf"),
184  seedsTag = cms.InputTag("ecalDrivenElectronSeeds"),
185  beamSpotTag = cms.InputTag("offlineBeamSpot"),
186  gsfPfRecTracksTag = cms.InputTag("pfTrackElec"),
187  vtxTag = cms.InputTag('offlinePrimaryVertices'),
188 
189  # backward compatibility mechanism for ctf tracks
190  ctfTracksCheck = cms.bool(True),
191  ctfTracksTag = cms.InputTag("generalTracks"),
192 
193  gedElectronMode= cms.bool(False),
194  PreSelectMVA = cms.double(-0.1),
195 
196  # steering
197  useGsfPfRecTracks = cms.bool(True),
198  applyPreselection = cms.bool(True),
199  ecalDrivenEcalEnergyFromClassBasedParameterization = cms.bool(True),
200  ecalDrivenEcalErrorFromClassBasedParameterization = cms.bool(True),
201  pureTrackerDrivenEcalErrorFromSimpleParameterization = cms.bool(True),
202  applyAmbResolution = cms.bool(True),
203  ambSortingStrategy = cms.uint32(1),
204  ambClustersOverlapStrategy = cms.uint32(1),
205  addPflowElectrons = cms.bool(True),
206  useEcalRegression = cms.bool(False),
207  useCombinationRegression = cms.bool(False),
208 
209  # preselection parameters (ecal driven electrons)
210  minSCEtBarrel = cms.double(4.0),
211  minSCEtEndcaps = cms.double(4.0),
212  minEOverPBarrel = cms.double(0.0),
213  maxEOverPBarrel = cms.double(999999999.),
214  minEOverPEndcaps = cms.double(0.0),
215  maxEOverPEndcaps = cms.double(999999999.),
216  maxDeltaEtaBarrel = cms.double(0.02),
217  maxDeltaEtaEndcaps = cms.double(0.02),
218  maxDeltaPhiBarrel = cms.double(0.15),
219  maxDeltaPhiEndcaps = cms.double(0.15),
220  #useHcalTowers = cms.bool(True),
221  #useHcalRecHits = cms.bool(False),
222  hOverEConeSize = cms.double(0.15),
223  hOverEPtMin = cms.double(0.),
224  #maxHOverEDepth1Barrel = cms.double(0.1),
225  #maxHOverEDepth1Endcaps = cms.double(0.1),
226  #maxHOverEDepth2 = cms.double(0.1),
227  maxHOverEBarrel = cms.double(0.15),
228  maxHOverEEndcaps = cms.double(0.15),
229  maxHBarrel = cms.double(0.0),
230  maxHEndcaps = cms.double(0.0),
231  maxSigmaIetaIetaBarrel = cms.double(999999999.),
232  maxSigmaIetaIetaEndcaps = cms.double(999999999.),
233  maxFbremBarrel = cms.double(999999999.),
234  maxFbremEndcaps = cms.double(999999999.),
235  isBarrel = cms.bool(False),
236  isEndcaps = cms.bool(False),
237  isFiducial = cms.bool(False),
238  seedFromTEC = cms.bool(True),
239  maxTIP = cms.double(999999999.),
240  minMVA = cms.double(-0.1),
241  minMvaByPassForIsolated = cms.double(-0.1),
242 
243  # preselection parameters (tracker driven only electrons)
244  minSCEtBarrelPflow = cms.double(0.0),
245  minSCEtEndcapsPflow = cms.double(0.0),
246  minEOverPBarrelPflow = cms.double(0.0),
247  maxEOverPBarrelPflow = cms.double(999999999.),
248  minEOverPEndcapsPflow = cms.double(0.0),
249  maxEOverPEndcapsPflow = cms.double(999999999.),
250  maxDeltaEtaBarrelPflow = cms.double(999999999.),
251  maxDeltaEtaEndcapsPflow = cms.double(999999999.),
252  maxDeltaPhiBarrelPflow = cms.double(999999999.),
253  maxDeltaPhiEndcapsPflow = cms.double(999999999.),
254  hOverEConeSizePflow = cms.double(0.15),
255  hOverEPtMinPflow = cms.double(0.),
256  #maxHOverEDepth1BarrelPflow = cms.double(999999999.),
257  #maxHOverEDepth1EndcapsPflow = cms.double(999999999.),
258  #maxHOverEDepth2Pflow = cms.double(999999999.),
259  maxHOverEBarrelPflow = cms.double(999999999.),
260  maxHOverEEndcapsPflow = cms.double(999999999.),
261  maxHBarrelPflow = cms.double(0.0),
262  maxHEndcapsPflow = cms.double(0.0),
263  maxSigmaIetaIetaBarrelPflow = cms.double(999999999.),
264  maxSigmaIetaIetaEndcapsPflow = cms.double(999999999.),
265  maxFbremBarrelPflow = cms.double(999999999.),
266  maxFbremEndcapsPflow = cms.double(999999999.),
267  isBarrelPflow = cms.bool(False),
268  isEndcapsPflow = cms.bool(False),
269  isFiducialPflow = cms.bool(False),
270  maxTIPPflow = cms.double(999999999.),
271  minMVAPflow = cms.double(-0.1),
272  minMvaByPassForIsolatedPflow = cms.double(-0.1),
273 
274  # Ecal rec hits configuration
275  recHitFlagsToBeExcludedBarrel = cleanedHybridSuperClusters.RecHitFlagToBeExcluded,
276  recHitFlagsToBeExcludedEndcaps = multi5x5BasicClustersCleaned.RecHitFlagToBeExcluded,
277  recHitSeverityToBeExcludedBarrel = cleanedHybridSuperClusters.RecHitSeverityToBeExcluded,
278  recHitSeverityToBeExcludedEndcaps = cleanedHybridSuperClusters.RecHitSeverityToBeExcluded,
279  #severityLevelCut = cms.int32(4),
280 
281  # Isolation algos configuration
282  intRadiusBarrelTk = cms.double(0.015),
283  intRadiusEndcapTk = cms.double(0.015),
284  stripBarrelTk = cms.double(0.015),
285  stripEndcapTk = cms.double(0.015),
286  ptMinTk = cms.double(0.7),
287  maxVtxDistTk = cms.double(0.2),
288  maxDrbTk = cms.double(999999999.),
289  intRadiusHcal = cms.double(0.15),
290  etMinHcal = cms.double(0.0),
291  intRadiusEcalBarrel = cms.double(3.0),
292  intRadiusEcalEndcaps = cms.double(3.0),
293  jurassicWidth = cms.double(1.5),
294  etMinBarrel = cms.double(0.0),
295  eMinBarrel = cms.double(0.095),
296  etMinEndcaps = cms.double(0.110),
297  eMinEndcaps = cms.double(0.0),
298  vetoClustered = cms.bool(False),
299  useNumCrystals = cms.bool(True),
300  TransientInitialStateEstimatorParameters = cms.PSet(
301  propagatorAlongTISE = cms.string('PropagatorWithMaterial'),
302  propagatorOppositeTISE = cms.string('PropagatorWithMaterialOpposite')
303  ),
304 
305  # Corrections
306  superClusterErrorFunction = cms.string("EcalClusterEnergyUncertaintyObjectSpecific"),
307  crackCorrectionFunction = cms.string("EcalClusterCrackCorrection"),
308 
309  # Regression. The labels are needed in all cases
310  ecalRefinedRegressionWeightLabels = cms.vstring(),
311  combinationRegressionWeightLabels = cms.vstring(),
312 
313  ecalWeightsFromDB = cms.bool(True),
314  # if not from DB. Otherwise, keep empty
315  ecalRefinedRegressionWeightFiles = cms.vstring(),
316  combinationWeightsFromDB = cms.bool(True),
317  # if not from DB. Otherwise, keep empty
318  combinationRegressionWeightFile = cms.vstring(),
319 
320 
321 
322  # Iso Values (PF and EcalDriven)
323  useIsolationValues = cms.bool(True),
324  pfIsolationValues = cms.PSet(
325  pfSumChargedHadronPt = cms.InputTag('elPFIsoValueCharged04'),
326  pfSumPhotonEt = cms.InputTag('elPFIsoValueGamma04'),
327  pfSumNeutralHadronEt= cms.InputTag('elPFIsoValueNeutral04')),
328 
329  edIsolationValues = cms.PSet(
330  edSumChargedHadronPt = cms.InputTag('elEDIsoValueCharged04'),
331  edSumPhotonEt = cms.InputTag('elEDIsoValueGamma04'),
332  edSumNeutralHadronEt= cms.InputTag('elEDIsoValueNeutral04')),
333 
334  SoftElecMVAFilesString = cms.vstring(
335  "RecoEgamma/ElectronIdentification/data/TMVA_BDTSoftElectrons_7Feb2014.weights.xml"
336  ),
337  ElecMVAFilesString = cms.vstring(
338  "RecoEgamma/ElectronIdentification/data/TMVA_Category_BDTSimpleCat_10_17Feb2011.weights.xml",
339  "RecoEgamma/ElectronIdentification/data/TMVA_Category_BDTSimpleCat_12_17Feb2011.weights.xml",
340  "RecoEgamma/ElectronIdentification/data/TMVA_Category_BDTSimpleCat_20_17Feb2011.weights.xml",
341  "RecoEgamma/ElectronIdentification/data/TMVA_Category_BDTSimpleCat_22_17Feb2011.weights.xml"
342  ),
343 )
344 
345 ecalDrivenGsfElectronsFromMultiCl = ecalDrivenGsfElectrons.clone(
346  gsfElectronCoresTag = 'ecalDrivenGsfElectronCoresFromMultiCl'
347 )
348