CMS 3D CMS Logo

particleFlow_cfi.py
Go to the documentation of this file.
1 import FWCore.ParameterSet.Config as cms
2 
3 particleFlowTmp = cms.EDProducer("PFProducer",
4 
5  # PF Blocks label
6  blocks = cms.InputTag("particleFlowBlock"),
7 
8  # reco::muons label and Post Muon cleaning
9  muons = cms.InputTag("muons1stStep"),
10  postMuonCleaning = cms.bool(True),
11 
12  # Vertices label
13  vertexCollection = cms.InputTag("offlinePrimaryVertices"),
14  useVerticesForNeutral = cms.bool(True),
15 
16  # Algorithm type ?
17  algoType = cms.uint32(0),
18 
19  # Verbose and debug flags
20  verbose = cms.untracked.bool(False),
21  debug = cms.untracked.bool(False),
22 
23  # Use HO clusters in PF hadron reconstruction
24  useHO = cms.bool(True),
25 
26  # Use electron identification in PFAlgo
27  usePFElectrons = cms.bool(False),
28  pf_electron_output_col=cms.string('electrons'),
29  pf_electronID_mvaWeightFile = cms.string('RecoParticleFlow/PFProducer/data/MVAnalysis_BDT.weights_PfElectrons23Jan_IntToFloat.txt'),
30  pf_electron_mvaCut = cms.double(-0.1),
31 
32  # Use Photon identification in PFAlgo (for now this has NO impact, algo is swicthed off hard-coded
33  usePFPhotons = cms.bool(False),
34  usePhotonReg=cms.bool(False),
35  useRegressionFromDB=cms.bool(True),
36  pf_convID_mvaWeightFile = cms.string('RecoParticleFlow/PFProducer/data/MVAnalysis_BDT.weights_pfConversionAug0411.txt'),
37  pf_conv_mvaCut=cms.double(0.0),
38  pf_locC_mvaWeightFile=cms.string('RecoParticleFlow/PFProducer/data/TMVARegression_BDTG_PFClusterLCorr_14Dec2011.root'),
39  pf_GlobC_mvaWeightFile=cms.string('RecoParticleFlow/PFProducer/data/TMVARegression_BDTG_PFGlobalCorr_14Dec2011.root'),
40  pf_Res_mvaWeightFile=cms.string('RecoParticleFlow/PFProducer/data/TMVARegression_BDTG_PFRes_14Dec2011.root'),
41  X0_Map=cms.string('RecoParticleFlow/PFProducer/data/allX0histos.root'),
42  sumPtTrackIsoForPhoton=cms.double(2.0),
43  sumPtTrackIsoSlopeForPhoton=cms.double(0.001),
44 
45  useEGammaFilters = cms.bool(True),
46  useProtectionsForJetMET = cms.bool(True),
47  # New electron selection cuts for CMSSW_700
48  electron_iso_pt = cms.double(10.0),
49  electron_iso_mva_barrel = cms.double( -0.1875),
50  electron_iso_mva_endcap = cms.double( -0.1075),
51  electron_iso_combIso_barrel = cms.double(10.0),
52  electron_iso_combIso_endcap = cms.double(10.0),
53  electron_noniso_mvaCut = cms.double(-0.1),
54  electron_missinghits = cms.uint32(1),
55  isolatedElectronID_mvaWeightFile = cms.string('RecoEgamma/ElectronIdentification/data/TMVA_BDTSimpleCat_17Feb2011.weights.xml'),
56  # maxNtracks,maxHcalE,maxTrackPOverEele,maxE,maxEleHcalEOverEcalE,maxEcalEOverPRes
57  # maxEeleOverPoutRes,maxHcalEOverP,maxHcalEOverEcalE,maxEcalEOverP_cut1,axEcalEOverP_cut2,maxEeleOverPout,maxDPhiIN;
58  electron_protectionsForJetMET = cms.PSet(
59  maxNtracks = cms.double(3.0), #max tracks pointing at Ele cluster
60  maxHcalE = cms.double(10.0),
61  maxTrackPOverEele = cms.double(1.0),
62  maxE = cms.double(50.0), #for dphi cut
63  maxEleHcalEOverEcalE = cms.double(0.1),
64  maxEcalEOverPRes = cms.double(0.2),
65  maxEeleOverPoutRes = cms.double(0.5),
66  maxHcalEOverP = cms.double(1.0),
67  maxHcalEOverEcalE = cms.double(0.1),
68  maxEcalEOverP_1 = cms.double(0.5), #pion rejection
69  maxEcalEOverP_2 = cms.double(0.2), #weird events
70  maxEeleOverPout = cms.double(0.2),
71  maxDPhiIN = cms.double(0.1)
72  ),
73  electron_protectionsForBadHcal = cms.PSet(
74  enableProtections = cms.bool(False),
75  full5x5_sigmaIetaIeta = cms.vdouble(0.0106, 0.0387), # EB, EE; 94Xv2 cut-based medium id
76  eInvPInv = cms.vdouble(0.184, 0.0721),
77  dEta = cms.vdouble(0.0032*2, 0.00632*2), # relax factor 2 to be safer against misalignment
78  dPhi = cms.vdouble(0.0547, 0.0394),
79  ),
80  # New photon selection cuts for CMSSW_700
81  photon_MinEt = cms.double(10.),
82  photon_combIso = cms.double(10.),
83  photon_HoE = cms.double(0.05),
84  photon_SigmaiEtaiEta_barrel = cms.double(0.0125),
85  photon_SigmaiEtaiEta_endcap = cms.double(0.034),
86  photon_protectionsForBadHcal = cms.PSet(
87  enableProtections = cms.bool(False),
88  solidConeTrkIsoOffset = cms.double(10.),
89  solidConeTrkIsoSlope = cms.double(0.3),
90  ),
91 
92  # sumPtTrackIso, sumPtTrackIsoSlope
93  photon_protectionsForJetMET = cms.PSet(
94  sumPtTrackIso = cms.double(4.0),
95  sumPtTrackIsoSlope = cms.double(0.001)
96  ),
97  PFEGammaCandidates = cms.InputTag("particleFlowEGamma"),
98  GedElectronValueMap = cms.InputTag("gedGsfElectronsTmp"),
99  GedPhotonValueMap = cms.InputTag("gedPhotonsTmp","valMapPFEgammaCandToPhoton"),
100 
101 
102 
103  # apply the crack corrections
104  pf_electronID_crackCorrection = cms.bool(False),
105  usePFSCEleCalib = cms.bool(True),
106  #new corrections #MM /*
107  calibPFSCEle_Fbrem_barrel = cms.vdouble(0.6, 6, #Range of non constant correction
108  -0.0255975, 0.0576727, 0.975442, -0.000546394, 1.26147, #standard parameters
109  25, #pt value for switch to low pt corrections
110  -0.02025, 0.04537, 0.9728, -0.0008962, 1.172), # low pt parameters
111  calibPFSCEle_Fbrem_endcap = cms.vdouble(0.9, 6.5, #Range of non constant correction
112  -0.0692932, 0.101776, 0.995338, -0.00236548, 0.874998, #standard parameters eta < switch value
113  1.653, #eta value for correction switch
114  -0.0750184, 0.147000, 0.923165, 0.000474665, 1.10782), #standard parameters eta > switch value
115  calibPFSCEle_barrel = cms.vdouble(1.004, -1.536, 22.88, -1.467, #standard
116  0.3555, 0.6227, 14.65, 2051, #parameters
117  25, #pt value for switch to low pt corrections
118  0.9932, -0.5444, 0, 0.5438, #low pt
119  0.7109, 7.645, 0.2904, 0), #parameters
120  calibPFSCEle_endcap = cms.vdouble(1.153, -16.5975, 5.668,
121  -0.1772, 16.22, 7.326,
122  0.0483, -4.068, 9.406),
123  #old corrections #MM */
124 # calibPFSCEle_barrel = cms.vdouble(1.0326,-13.71,339.72,0.4862,0.00182,0.36445,1.411,1.0206,0.0059162,-5.14434e-05,1.42516e-07),
125 # calibPFSCEle_endcap = cms.vdouble(0.9995,-12.313,2.8784,-1.057e-04,10.282,3.059,1.3502e-03,-2.2185,3.4206),
126 
127  useEGammaSupercluster = cms.bool(True),
128  sumEtEcalIsoForEgammaSC_barrel = cms.double(1.),
129  sumEtEcalIsoForEgammaSC_endcap = cms.double(2.),
130  coneEcalIsoForEgammaSC = cms.double(0.3),
131  sumPtTrackIsoForEgammaSC_barrel = cms.double(4.),
132  sumPtTrackIsoForEgammaSC_endcap = cms.double(4.),
133  nTrackIsoForEgammaSC = cms.uint32(2),
134  coneTrackIsoForEgammaSC = cms.double(0.3),
135  useEGammaElectrons = cms.bool(True),
136  egammaElectrons = cms.InputTag('mvaElectrons'),
137 
138  # Input displaced vertices
139  # It is strongly adviced to keep usePFNuclearInteractions = bCorrect
140 
141  rejectTracks_Bad = cms.bool(True),
142  rejectTracks_Step45 = cms.bool(True),
143 
144  usePFNuclearInteractions = cms.bool(True),
145  usePFConversions = cms.bool(True),
146  usePFDecays = cms.bool(False),
147 
148  dptRel_DispVtx = cms.double(10.),
149 
150  iCfgCandConnector = cms.PSet(
151 
152  bCorrect = cms.bool(True),
153  bCalibPrimary = cms.bool(True),
154  dptRel_PrimaryTrack = cms.double(10.),
155  dptRel_MergedTrack = cms.double(5.0),
156  ptErrorSecondary = cms.double(1.0),
157  nuclCalibFactors = cms.vdouble(0.8, 0.15, 0.5, 0.5, 0.05)
158  ),
159 
160 
161 
162  # Treatment of muons :
163  # Expected energy in ECAL and HCAL, and RMS
164  muon_HCAL = cms.vdouble(3.0,3.0),
165  muon_ECAL = cms.vdouble(0.5,0.5),
166  muon_HO = cms.vdouble(0.9,0.9),
167 
168  # Muon ID and post cleaning parameters
169  maxDPtOPt = cms.double(1.),
170  minTrackerHits = cms.int32(8),
171  minPixelHits = cms.int32(1),
172  trackQuality = cms.string('highPurity'),
173  dzPV = cms.double(0.2),
174  ptErrorScale = cms.double(8.),
175  minPtForPostCleaning = cms.double(20.),
176  eventFactorForCosmics =cms.double(10.),
177  metSignificanceForCleaning = cms.double(3.),
178  metSignificanceForRejection = cms.double(4.),
179  metFactorForCleaning = cms.double(4.),
180  eventFractionForCleaning =cms.double(0.5),
181  eventFractionForRejection = cms.double(0.8),
182  metFactorForRejection =cms.double(4.),
183  metFactorForHighEta = cms.double(25.),
184  ptFactorForHighEta = cms.double(2.),
185  metFactorForFakes = cms.double(4.),
186  minMomentumForPunchThrough = cms.double(100.),
187  minEnergyForPunchThrough = cms.double(100.),
188  punchThroughFactor = cms.double(3.),
189  punchThroughMETFactor = cms.double(4.),
190  cosmicRejectionDistance = cms.double(1.),
191 
192  # Treatment of potential fake tracks
193  # Number of sigmas for fake track detection
194  nsigma_TRACK = cms.double(1.0),
195  # Absolute pt error to detect fake tracks in the first three iterations
196  # dont forget to modify also ptErrorSecondary if you modify this parameter
197  pt_Error = cms.double(1.0),
198  # Factors to be applied in the four and fifth steps to the pt error
199  factors_45 = cms.vdouble(10.,100.),
200 
201  # Treatment of tracks in region of bad HCal
202  goodTrackDeadHcal_ptErrRel = cms.double(0.2), # trackRef->ptError()/trackRef->pt() < X
203  goodTrackDeadHcal_chi2n = cms.double(5), # trackRef->normalizedChi2() < X
204  goodTrackDeadHcal_layers = cms.uint32(4), # trackRef->hitPattern().trackerLayersWithMeasurement() >= X
205  goodTrackDeadHcal_validFr = cms.double(0.5), # trackRef->validFraction() > X
206  goodTrackDeadHcal_dxy = cms.double(0.5), # [cm] abs(trackRef->dxy(primaryVertex_.position())) < X
207 
208  goodPixelTrackDeadHcal_minEta = cms.double(2.3), # abs(trackRef->eta()) > X
209  goodPixelTrackDeadHcal_maxPt = cms.double(50.), # trackRef->ptError()/trackRef->pt() < X
210  goodPixelTrackDeadHcal_ptErrRel = cms.double(1.0), # trackRef->ptError()/trackRef->pt() < X
211  goodPixelTrackDeadHcal_chi2n = cms.double(2), # trackRef->normalizedChi2() < X
212  goodPixelTrackDeadHcal_maxLost3Hit = cms.int32(0), # max missing outer hits for a track with 3 valid pixel layers (can set to -1 to reject all these tracks)
213  goodPixelTrackDeadHcal_maxLost4Hit = cms.int32(1), # max missing outer hits for a track with >= 4 valid pixel layers
214  goodPixelTrackDeadHcal_dxy = cms.double(0.02), # [cm] abs(trackRef->dxy(primaryVertex_.position())) < X
215  goodPixelTrackDeadHcal_dz = cms.double(0.05), # [cm] abs(trackRef->dz(primaryVertex_.position())) < X
216 
217 
218  # Post HF cleaning
219  postHFCleaning = cms.bool(False),
220  # Clean only objects with pt larger than this value
221  minHFCleaningPt = cms.double(5.),
222  # Clean only if the initial MET/sqrt(sumet) is larger than this value
223  maxSignificance = cms.double(2.5),
224  # Clean only if the final MET/sqrt(sumet) is smaller than this value
225  minSignificance = cms.double(2.5),
226  # Clean only if the significance reduction is larger than this value
227  minSignificanceReduction = cms.double(1.4),
228  # Clean only if the MET and the to-be-cleaned object satisfy this DeltaPhi * Pt cut
229  # (the MET angular resoution is in 1/MET)
230  maxDeltaPhiPt = cms.double(7.0),
231  # Clean only if the MET relative reduction from the to-be-cleaned object
232  # is larger than this value
233  minDeltaMet = cms.double(0.4),
234 
235  # Check HF cleaning
236  cleanedHF = cms.VInputTag(
237  cms.InputTag("particleFlowRecHitHF","Cleaned"),
238  cms.InputTag("particleFlowClusterHF","Cleaned")
239  ),
240 
241  # number of sigmas for neutral energy detection
242  pf_nsigma_ECAL = cms.double(0.0),
243  pf_nsigma_HCAL = cms.double(1.0),
244 
245  # ECAL/HCAL PF cluster calibration : take it from global tag ?
246  useCalibrationsFromDB = cms.bool(True),
247  calibrationsLabel = cms.string(''),
248 
249  # calibration parameters for HF:
250  calibHF_use = cms.bool(False),
251  calibHF_eta_step = cms.vdouble(0.0,2.90,3.00,3.20,4.20,4.40,4.60,4.80,5.20,5.40),
252 # calibHF_a_EMonly = cms.vdouble(10.00,10.00,10.00,10.00,10.00,10.00,10.00,10.00,10.00,10.00,10.00),
253 # calibHF_b_HADonly = cms.vdouble(10.00,10.00,10.00,10.00,10.00,10.00,10.00,10.00,10.00,10.00,10.00),
254 # calibHF_a_EMHAD = cms.vdouble(10.00,10.00,10.00,10.00,10.00,10.00,10.00,10.00,10.00,10.00,10.00),
255 # calibHF_b_EMHAD = cms.vdouble(10.00,10.00,10.00,10.00,10.00,10.00,10.00,10.00,10.00,10.00,10.00)
256  calibHF_a_EMonly = cms.vdouble(0.96945,0.96701,0.76309,0.82268,0.87583,0.89718,0.98674,1.4681,1.4580,1.4580),
257  calibHF_b_HADonly = cms.vdouble(1.27541,0.85361,0.86333,0.89091,0.94348,0.94348,0.94370,1.0034,1.0444,1.0444),
258  calibHF_a_EMHAD = cms.vdouble(1.42215,1.00496,0.68961,0.81656,0.98504,0.98504,1.00802,1.0593,1.4576,1.4576),
259  calibHF_b_EMHAD = cms.vdouble(1.27541,0.85361,0.86333,0.89091,0.94348,0.94348,0.94370,1.0034,1.0444,1.0444)
260 
261 # toRead = cms.untracked.vstring("PFfa_BARREL",
262 # "PFfa_ENDCAP",
263 # "PFfb_BARREL",
264 # "PFfb_ENDCAP",
265 # "PFfc_BARREL",
266 # "PFfc_ENDCAP",
267 # "PFfaEta_BARREL",
268 # "PFfaEta_ENDCAP",
269 # "PFfbEta_BARREL",
270 # "PFfbEta_ENDCAP") # same strings as fType
271 
272 )
273 
274 
275 
276 from Configuration.Eras.Modifier_pf_badHcalMitigation_cff import pf_badHcalMitigation
277 pf_badHcalMitigation.toModify(particleFlowTmp,
278  electron_protectionsForBadHcal = dict(enableProtections = True),
279  photon_protectionsForBadHcal = dict(enableProtections = True))
280