1 |
|
#include "TLorentzVector.h" |
2 |
|
#include "TVector3.h" |
3 |
+ |
#include "TVector2.h" |
4 |
|
#include "TMath.h" |
5 |
+ |
/*#if !defined(__CINT__) && !defined(__MAKECINT__) |
6 |
+ |
#include "CondFormats/JetMETObjects/interface/JetCorrectorParameters.h" |
7 |
+ |
#include "CondFormats/JetMETObjects/interface/JetCorrectionUncertainty.h" |
8 |
+ |
#endif*/ |
9 |
|
|
10 |
|
namespace VHbb { |
11 |
+ |
|
12 |
|
|
13 |
|
double deltaPhi(double phi1,double phi2) |
14 |
|
{ |
171 |
|
return phi2; |
172 |
|
} |
173 |
|
|
174 |
+ |
TVector2 metType1Reg(double met, double metphi, double corr1, double corr2, double pt1, double eta1, double phi1, double e1, double pt2, double eta2, double phi2, double e2) |
175 |
+ |
{ |
176 |
+ |
double metx = met * cos(metphi); |
177 |
+ |
double mety = met * sin(metphi); |
178 |
+ |
TLorentzVector j1; |
179 |
+ |
TLorentzVector j2; |
180 |
+ |
j1.SetPtEtaPhiE(pt1,eta1,phi1, e1 ); |
181 |
+ |
j2.SetPtEtaPhiE(pt2,eta2,phi2, e2 ); |
182 |
+ |
metx += j1.Px()*(1-corr1); |
183 |
+ |
metx += j2.Px()*(1-corr2); |
184 |
+ |
mety += j1.Py()*(1-corr1); |
185 |
+ |
mety += j2.Py()*(1-corr2); |
186 |
+ |
TVector2 corrMET(metx, mety); |
187 |
+ |
return corrMET; |
188 |
+ |
} |
189 |
+ |
|
190 |
+ |
double metType1Phi(double met, double metphi, double corr1, double corr2, double pt1, double eta1, double phi1, double e1, double pt2, double eta2, double phi2, double e2){ |
191 |
+ |
return metType1Reg(met, metphi, corr1, corr2, pt1, eta1, phi1, e1, pt2, eta2, phi2, e2).Phi(); |
192 |
+ |
|
193 |
+ |
} |
194 |
+ |
double metType1Et(double met, double metphi, double corr1, double corr2, double pt1, double eta1, double phi1, double e1, double pt2, double eta2, double phi2, double e2){ |
195 |
+ |
return metType1Reg(met, metphi, corr1, corr2, pt1, eta1, phi1, e1, pt2, eta2, phi2, e2).Mod(); |
196 |
+ |
|
197 |
+ |
} |
198 |
+ |
|
199 |
+ |
|
200 |
+ |
double met_MPF(double met, double metphi, double pt, double phi) |
201 |
+ |
{ |
202 |
+ |
return 1.+met*pt*std::cos( deltaPhi(metphi,phi) ) / (pt*pt); |
203 |
+ |
|
204 |
+ |
} |
205 |
+ |
|
206 |
|
double resolutionBias(double eta) |
207 |
|
{ |
208 |
|
// return 0;//Nominal! |
209 |
< |
if(eta< 1.1) return 0.05; |
210 |
< |
if(eta< 2.5) return 0.10; |
211 |
< |
if(eta< 5) return 0.30; |
212 |
< |
return 0; |
209 |
> |
if(eta< 0.5) return 0.052; |
210 |
> |
if(eta< 1.1) return 0.057; |
211 |
> |
if(eta< 1.7) return 0.096; |
212 |
> |
if(eta< 2.3) return 0.134; |
213 |
> |
if(eta< 5) return 0.28; |
214 |
> |
return 0; |
215 |
|
} |
216 |
|
|
217 |
|
double evalJERBias( double ptreco, double ptgen, double eta1){ |
220 |
|
if ((fabs(ptreco - ptgen)/ ptreco)<0.5) { //Limit the effect to the core |
221 |
|
cor = (ptreco +resolutionBias(eta) *(ptreco-ptgen))/ptreco; |
222 |
|
} |
223 |
< |
return ptreco*cor; |
223 |
> |
if (ptgen > 0.) return ptreco*cor; |
224 |
> |
else return ptreco; |
225 |
|
} |
226 |
|
|
227 |
|
double evalEt( double pt, double eta, double phi, double e){ |
237 |
|
return j.Mt(); |
238 |
|
|
239 |
|
} |
240 |
+ |
/*double evalJECUnc( double pt, double eta){ |
241 |
+ |
// Total uncertainty for reference |
242 |
+ |
JetCorrectionUncertainty *total = new JetCorrectionUncertainty("/shome/nmohr/CMSSW_5_2_6_patch1/src/UserCode/VHbb/data/START53_V15MC_Uncertainty_AK5PFchs.txt"); |
243 |
+ |
|
244 |
+ |
total->setJetPt(pt); |
245 |
+ |
total->setJetEta(eta); |
246 |
+ |
double uncert = total->getUncertainty(true); |
247 |
+ |
delete total; |
248 |
+ |
return uncert; |
249 |
+ |
}*/ |
250 |
+ |
|
251 |
+ |
|
252 |
|
|
253 |
|
} |
254 |
|
|