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 from Configuration.Eras.Modifier_pp_on_AA_2018_cff import pp_on_AA_2018
170 pp_on_AA_2018.toModify(ecalDrivenGsfElectrons, minSCEtBarrel = 15.0)
171 pp_on_AA_2018.toModify(ecalDrivenGsfElectrons, minSCEtEndcaps = 15.0)
172 
173 #==============================================================================
174 # Final producer of persistent gsf electrons
175 #==============================================================================
176 
177 gsfElectrons = cms.EDProducer("GsfElectronProducer",
178 
179  # input collections
180  previousGsfElectronsTag = cms.InputTag("ecalDrivenGsfElectrons"),
181  pflowGsfElectronsTag = cms.InputTag("pfElectronTranslator:pf"),
182  gsfElectronCoresTag = cms.InputTag("gsfElectronCores"),
183  hcalTowers = cms.InputTag("towerMaker"),
184  barrelRecHitCollectionTag = cms.InputTag("ecalRecHit","EcalRecHitsEB"),
185  endcapRecHitCollectionTag = cms.InputTag("ecalRecHit","EcalRecHitsEE"),
186  pfMvaTag = cms.InputTag("pfElectronTranslator:pf"),
187  seedsTag = cms.InputTag("ecalDrivenElectronSeeds"),
188  beamSpotTag = cms.InputTag("offlineBeamSpot"),
189  gsfPfRecTracksTag = cms.InputTag("pfTrackElec"),
190  vtxTag = cms.InputTag('offlinePrimaryVertices'),
191 
192  # backward compatibility mechanism for ctf tracks
193  ctfTracksCheck = cms.bool(True),
194  ctfTracksTag = cms.InputTag("generalTracks"),
195 
196  gedElectronMode= cms.bool(False),
197  PreSelectMVA = cms.double(-0.1),
198 
199  # steering
200  useGsfPfRecTracks = cms.bool(True),
201  applyPreselection = cms.bool(True),
202  ecalDrivenEcalEnergyFromClassBasedParameterization = cms.bool(True),
203  ecalDrivenEcalErrorFromClassBasedParameterization = cms.bool(True),
204  pureTrackerDrivenEcalErrorFromSimpleParameterization = cms.bool(True),
205  applyAmbResolution = cms.bool(True),
206  ambSortingStrategy = cms.uint32(1),
207  ambClustersOverlapStrategy = cms.uint32(1),
208  addPflowElectrons = cms.bool(True),
209  useEcalRegression = cms.bool(False),
210  useCombinationRegression = cms.bool(False),
211 
212  # preselection parameters (ecal driven electrons)
213  minSCEtBarrel = cms.double(4.0),
214  minSCEtEndcaps = cms.double(4.0),
215  minEOverPBarrel = cms.double(0.0),
216  maxEOverPBarrel = cms.double(999999999.),
217  minEOverPEndcaps = cms.double(0.0),
218  maxEOverPEndcaps = cms.double(999999999.),
219  maxDeltaEtaBarrel = cms.double(0.02),
220  maxDeltaEtaEndcaps = cms.double(0.02),
221  maxDeltaPhiBarrel = cms.double(0.15),
222  maxDeltaPhiEndcaps = cms.double(0.15),
223  #useHcalTowers = cms.bool(True),
224  #useHcalRecHits = cms.bool(False),
225  hOverEConeSize = cms.double(0.15),
226  hOverEPtMin = cms.double(0.),
227  #maxHOverEDepth1Barrel = cms.double(0.1),
228  #maxHOverEDepth1Endcaps = cms.double(0.1),
229  #maxHOverEDepth2 = cms.double(0.1),
230  maxHOverEBarrel = cms.double(0.15),
231  maxHOverEEndcaps = cms.double(0.15),
232  maxHBarrel = cms.double(0.0),
233  maxHEndcaps = cms.double(0.0),
234  maxSigmaIetaIetaBarrel = cms.double(999999999.),
235  maxSigmaIetaIetaEndcaps = cms.double(999999999.),
236  maxFbremBarrel = cms.double(999999999.),
237  maxFbremEndcaps = cms.double(999999999.),
238  isBarrel = cms.bool(False),
239  isEndcaps = cms.bool(False),
240  isFiducial = cms.bool(False),
241  seedFromTEC = cms.bool(True),
242  maxTIP = cms.double(999999999.),
243  minMVA = cms.double(-0.1),
244  minMvaByPassForIsolated = cms.double(-0.1),
245 
246  # preselection parameters (tracker driven only electrons)
247  minSCEtBarrelPflow = cms.double(0.0),
248  minSCEtEndcapsPflow = cms.double(0.0),
249  minEOverPBarrelPflow = cms.double(0.0),
250  maxEOverPBarrelPflow = cms.double(999999999.),
251  minEOverPEndcapsPflow = cms.double(0.0),
252  maxEOverPEndcapsPflow = cms.double(999999999.),
253  maxDeltaEtaBarrelPflow = cms.double(999999999.),
254  maxDeltaEtaEndcapsPflow = cms.double(999999999.),
255  maxDeltaPhiBarrelPflow = cms.double(999999999.),
256  maxDeltaPhiEndcapsPflow = cms.double(999999999.),
257  hOverEConeSizePflow = cms.double(0.15),
258  hOverEPtMinPflow = cms.double(0.),
259  #maxHOverEDepth1BarrelPflow = cms.double(999999999.),
260  #maxHOverEDepth1EndcapsPflow = cms.double(999999999.),
261  #maxHOverEDepth2Pflow = cms.double(999999999.),
262  maxHOverEBarrelPflow = cms.double(999999999.),
263  maxHOverEEndcapsPflow = cms.double(999999999.),
264  maxHBarrelPflow = cms.double(0.0),
265  maxHEndcapsPflow = cms.double(0.0),
266  maxSigmaIetaIetaBarrelPflow = cms.double(999999999.),
267  maxSigmaIetaIetaEndcapsPflow = cms.double(999999999.),
268  maxFbremBarrelPflow = cms.double(999999999.),
269  maxFbremEndcapsPflow = cms.double(999999999.),
270  isBarrelPflow = cms.bool(False),
271  isEndcapsPflow = cms.bool(False),
272  isFiducialPflow = cms.bool(False),
273  maxTIPPflow = cms.double(999999999.),
274  minMVAPflow = cms.double(-0.1),
275  minMvaByPassForIsolatedPflow = cms.double(-0.1),
276 
277  # Ecal rec hits configuration
278  recHitFlagsToBeExcludedBarrel = cleanedHybridSuperClusters.RecHitFlagToBeExcluded,
279  recHitFlagsToBeExcludedEndcaps = multi5x5BasicClustersCleaned.RecHitFlagToBeExcluded,
280  recHitSeverityToBeExcludedBarrel = cleanedHybridSuperClusters.RecHitSeverityToBeExcluded,
281  recHitSeverityToBeExcludedEndcaps = cleanedHybridSuperClusters.RecHitSeverityToBeExcluded,
282  #severityLevelCut = cms.int32(4),
283 
284  # Isolation algos configuration
285  intRadiusBarrelTk = cms.double(0.015),
286  intRadiusEndcapTk = cms.double(0.015),
287  stripBarrelTk = cms.double(0.015),
288  stripEndcapTk = cms.double(0.015),
289  ptMinTk = cms.double(0.7),
290  maxVtxDistTk = cms.double(0.2),
291  maxDrbTk = cms.double(999999999.),
292  intRadiusHcal = cms.double(0.15),
293  etMinHcal = cms.double(0.0),
294  intRadiusEcalBarrel = cms.double(3.0),
295  intRadiusEcalEndcaps = cms.double(3.0),
296  jurassicWidth = cms.double(1.5),
297  etMinBarrel = cms.double(0.0),
298  eMinBarrel = cms.double(0.095),
299  etMinEndcaps = cms.double(0.110),
300  eMinEndcaps = cms.double(0.0),
301  vetoClustered = cms.bool(False),
302  useNumCrystals = cms.bool(True),
303  TransientInitialStateEstimatorParameters = cms.PSet(
304  propagatorAlongTISE = cms.string('PropagatorWithMaterial'),
305  propagatorOppositeTISE = cms.string('PropagatorWithMaterialOpposite')
306  ),
307 
308  # Corrections
309  superClusterErrorFunction = cms.string("EcalClusterEnergyUncertaintyObjectSpecific"),
310  crackCorrectionFunction = cms.string("EcalClusterCrackCorrection"),
311 
312  # Regression. The labels are needed in all cases
313  ecalRefinedRegressionWeightLabels = cms.vstring(),
314  combinationRegressionWeightLabels = cms.vstring(),
315 
316  ecalWeightsFromDB = cms.bool(True),
317  # if not from DB. Otherwise, keep empty
318  ecalRefinedRegressionWeightFiles = cms.vstring(),
319  combinationWeightsFromDB = cms.bool(True),
320  # if not from DB. Otherwise, keep empty
321  combinationRegressionWeightFile = cms.vstring(),
322 
323 
324 
325  # Iso Values (PF and EcalDriven)
326  useIsolationValues = cms.bool(True),
327  pfIsolationValues = cms.PSet(
328  pfSumChargedHadronPt = cms.InputTag('elPFIsoValueCharged04'),
329  pfSumPhotonEt = cms.InputTag('elPFIsoValueGamma04'),
330  pfSumNeutralHadronEt= cms.InputTag('elPFIsoValueNeutral04')),
331 
332  edIsolationValues = cms.PSet(
333  edSumChargedHadronPt = cms.InputTag('elEDIsoValueCharged04'),
334  edSumPhotonEt = cms.InputTag('elEDIsoValueGamma04'),
335  edSumNeutralHadronEt= cms.InputTag('elEDIsoValueNeutral04')),
336 
337  SoftElecMVAFilesString = cms.vstring(
338  "RecoEgamma/ElectronIdentification/data/TMVA_BDTSoftElectrons_7Feb2014.weights.xml"
339  ),
340  ElecMVAFilesString = cms.vstring(
341  "RecoEgamma/ElectronIdentification/data/TMVA_Category_BDTSimpleCat_10_17Feb2011.weights.xml",
342  "RecoEgamma/ElectronIdentification/data/TMVA_Category_BDTSimpleCat_12_17Feb2011.weights.xml",
343  "RecoEgamma/ElectronIdentification/data/TMVA_Category_BDTSimpleCat_20_17Feb2011.weights.xml",
344  "RecoEgamma/ElectronIdentification/data/TMVA_Category_BDTSimpleCat_22_17Feb2011.weights.xml"
345  ),
346 )
347 
348 ecalDrivenGsfElectronsFromMultiCl = ecalDrivenGsfElectrons.clone(
349  gsfElectronCoresTag = 'ecalDrivenGsfElectronCoresFromMultiCl'
350 )
351