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  # New photon selection cuts for CMSSW_700
74  photon_MinEt = cms.double(10.),
75  photon_combIso = cms.double(10.),
76  photon_HoE = cms.double(0.05),
77  photon_SigmaiEtaiEta_barrel = cms.double(0.0125),
78  photon_SigmaiEtaiEta_endcap = cms.double(0.034),
79 
80  # sumPtTrackIso, sumPtTrackIsoSlope
81  photon_protectionsForJetMET = cms.PSet(
82  sumPtTrackIso = cms.double(4.0),
83  sumPtTrackIsoSlope = cms.double(0.001)
84  ),
85  PFEGammaCandidates = cms.InputTag("particleFlowEGamma"),
86  GedElectronValueMap = cms.InputTag("gedGsfElectronsTmp"),
87  GedPhotonValueMap = cms.InputTag("gedPhotonsTmp","valMapPFEgammaCandToPhoton"),
88 
89 
90 
91  # apply the crack corrections
92  pf_electronID_crackCorrection = cms.bool(False),
93  usePFSCEleCalib = cms.bool(True),
94  #new corrections #MM /*
95  calibPFSCEle_Fbrem_barrel = cms.vdouble(0.6, 6, #Range of non constant correction
96  -0.0255975, 0.0576727, 0.975442, -0.000546394, 1.26147, #standard parameters
97  25, #pt value for switch to low pt corrections
98  -0.02025, 0.04537, 0.9728, -0.0008962, 1.172), # low pt parameters
99  calibPFSCEle_Fbrem_endcap = cms.vdouble(0.9, 6.5, #Range of non constant correction
100  -0.0692932, 0.101776, 0.995338, -0.00236548, 0.874998, #standard parameters eta < switch value
101  1.653, #eta value for correction switch
102  -0.0750184, 0.147000, 0.923165, 0.000474665, 1.10782), #standard parameters eta > switch value
103  calibPFSCEle_barrel = cms.vdouble(1.004, -1.536, 22.88, -1.467, #standard
104  0.3555, 0.6227, 14.65, 2051, #parameters
105  25, #pt value for switch to low pt corrections
106  0.9932, -0.5444, 0, 0.5438, #low pt
107  0.7109, 7.645, 0.2904, 0), #parameters
108  calibPFSCEle_endcap = cms.vdouble(1.153, -16.5975, 5.668,
109  -0.1772, 16.22, 7.326,
110  0.0483, -4.068, 9.406),
111  #old corrections #MM */
112 # 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),
113 # calibPFSCEle_endcap = cms.vdouble(0.9995,-12.313,2.8784,-1.057e-04,10.282,3.059,1.3502e-03,-2.2185,3.4206),
114 
115  useEGammaSupercluster = cms.bool(True),
116  sumEtEcalIsoForEgammaSC_barrel = cms.double(1.),
117  sumEtEcalIsoForEgammaSC_endcap = cms.double(2.),
118  coneEcalIsoForEgammaSC = cms.double(0.3),
119  sumPtTrackIsoForEgammaSC_barrel = cms.double(4.),
120  sumPtTrackIsoForEgammaSC_endcap = cms.double(4.),
121  nTrackIsoForEgammaSC = cms.uint32(2),
122  coneTrackIsoForEgammaSC = cms.double(0.3),
123  useEGammaElectrons = cms.bool(True),
124  egammaElectrons = cms.InputTag('mvaElectrons'),
125 
126  # Input displaced vertices
127  # It is strongly adviced to keep usePFNuclearInteractions = bCorrect
128 
129  rejectTracks_Bad = cms.bool(True),
130  rejectTracks_Step45 = cms.bool(True),
131 
132  usePFNuclearInteractions = cms.bool(True),
133  usePFConversions = cms.bool(True),
134  usePFDecays = cms.bool(False),
135 
136  dptRel_DispVtx = cms.double(10.),
137 
138  iCfgCandConnector = cms.PSet(
139 
140  bCorrect = cms.bool(True),
141  bCalibPrimary = cms.bool(True),
142  dptRel_PrimaryTrack = cms.double(10.),
143  dptRel_MergedTrack = cms.double(5.0),
144  ptErrorSecondary = cms.double(1.0),
145  nuclCalibFactors = cms.vdouble(0.8, 0.15, 0.5, 0.5, 0.05)
146  ),
147 
148 
149 
150  # Treatment of muons :
151  # Expected energy in ECAL and HCAL, and RMS
152  muon_HCAL = cms.vdouble(3.0,3.0),
153  muon_ECAL = cms.vdouble(0.5,0.5),
154  muon_HO = cms.vdouble(0.9,0.9),
155 
156  # Muon ID and post cleaning parameters
157  maxDPtOPt = cms.double(1.),
158  minTrackerHits = cms.int32(8),
159  minPixelHits = cms.int32(1),
160  trackQuality = cms.string('highPurity'),
161  dzPV = cms.double(0.2),
162  ptErrorScale = cms.double(8.),
163  minPtForPostCleaning = cms.double(20.),
164  eventFactorForCosmics =cms.double(10.),
165  metSignificanceForCleaning = cms.double(3.),
166  metSignificanceForRejection = cms.double(4.),
167  metFactorForCleaning = cms.double(4.),
168  eventFractionForCleaning =cms.double(0.5),
169  eventFractionForRejection = cms.double(0.8),
170  metFactorForRejection =cms.double(4.),
171  metFactorForHighEta = cms.double(25.),
172  ptFactorForHighEta = cms.double(2.),
173  metFactorForFakes = cms.double(4.),
174  minMomentumForPunchThrough = cms.double(100.),
175  minEnergyForPunchThrough = cms.double(100.),
176  punchThroughFactor = cms.double(3.),
177  punchThroughMETFactor = cms.double(4.),
178  cosmicRejectionDistance = cms.double(1.),
179 
180  # Treatment of potential fake tracks
181  # Number of sigmas for fake track detection
182  nsigma_TRACK = cms.double(1.0),
183  # Absolute pt error to detect fake tracks in the first three iterations
184  # dont forget to modify also ptErrorSecondary if you modify this parameter
185  pt_Error = cms.double(1.0),
186  # Factors to be applied in the four and fifth steps to the pt error
187  factors_45 = cms.vdouble(10.,100.),
188 
189  # Post HF cleaning
190  postHFCleaning = cms.bool(False),
191  # Clean only objects with pt larger than this value
192  minHFCleaningPt = cms.double(5.),
193  # Clean only if the initial MET/sqrt(sumet) is larger than this value
194  maxSignificance = cms.double(2.5),
195  # Clean only if the final MET/sqrt(sumet) is smaller than this value
196  minSignificance = cms.double(2.5),
197  # Clean only if the significance reduction is larger than this value
198  minSignificanceReduction = cms.double(1.4),
199  # Clean only if the MET and the to-be-cleaned object satisfy this DeltaPhi * Pt cut
200  # (the MET angular resoution is in 1/MET)
201  maxDeltaPhiPt = cms.double(7.0),
202  # Clean only if the MET relative reduction from the to-be-cleaned object
203  # is larger than this value
204  minDeltaMet = cms.double(0.4),
205 
206  # Check HF cleaning
207  cleanedHF = cms.VInputTag(
208  cms.InputTag("particleFlowRecHitHF","Cleaned"),
209  cms.InputTag("particleFlowClusterHF","Cleaned")
210  ),
211 
212  # number of sigmas for neutral energy detection
213  pf_nsigma_ECAL = cms.double(0.0),
214  pf_nsigma_HCAL = cms.double(1.0),
215 
216  # ECAL/HCAL PF cluster calibration : take it from global tag ?
217  useCalibrationsFromDB = cms.bool(True),
218  calibrationsLabel = cms.string(''),
219 
220  # calibration parameters for HF:
221  calibHF_use = cms.bool(False),
222  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),
223 # 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),
224 # 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),
225 # 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),
226 # 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)
227  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),
228  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),
229  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),
230  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)
231 
232 # toRead = cms.untracked.vstring("PFfa_BARREL",
233 # "PFfa_ENDCAP",
234 # "PFfb_BARREL",
235 # "PFfb_ENDCAP",
236 # "PFfc_BARREL",
237 # "PFfc_ENDCAP",
238 # "PFfaEta_BARREL",
239 # "PFfaEta_ENDCAP",
240 # "PFfbEta_BARREL",
241 # "PFfbEta_ENDCAP") # same strings as fType
242 
243 )
244 
245 
246