12 |
|
{ |
13 |
|
public: |
14 |
|
|
15 |
< |
JECFWLite(std::string base) |
15 |
> |
JECFWLite(std::string base,std::string jettype="AK5PFchs") |
16 |
|
{ |
17 |
< |
std::string prefix = base + "/Summer12V3MC"; |
18 |
< |
parMC.push_back( JetCorrectorParameters((prefix+"_L1FastJet_AK5PFchs.txt").c_str())); |
19 |
< |
parMC.push_back( JetCorrectorParameters((prefix+"_L2Relative_AK5PFchs.txt").c_str())); |
20 |
< |
parMC.push_back( JetCorrectorParameters((prefix+"_L3Absolute_AK5PFchs.txt").c_str())); |
17 |
> |
//std::string prefix = base + "/Summer12V3MC"; |
18 |
> |
std::string prefix = base + "/START53_V15MC"; |
19 |
> |
parMC.push_back( JetCorrectorParameters((prefix+"_L1FastJet_"+jettype+".txt").c_str())); |
20 |
> |
parMC.push_back( JetCorrectorParameters((prefix+"_L2Relative_"+jettype+".txt").c_str())); |
21 |
> |
parMC.push_back( JetCorrectorParameters((prefix+"_L3Absolute_"+jettype+".txt").c_str())); |
22 |
|
jetCorrectorMC= new FactorizedJetCorrector(parMC); |
23 |
|
|
24 |
|
/* prefix = base + "/ReferenceMC"; |
25 |
< |
parMCRef.push_back( JetCorrectorParameters((prefix+"_L1FastJet_AK5PF.txt").c_str())); |
26 |
< |
parMCRef.push_back( JetCorrectorParameters((prefix+"_L2Relative_AK5PF.txt").c_str())); |
27 |
< |
parMCRef.push_back( JetCorrectorParameters((prefix+"_L3Absolute_AK5PF.txt").c_str())); |
28 |
< |
jetCorrectorMCRef= new FactorizedJetCorrector(parMCRef); |
25 |
> |
parMCRefW.push_back( JetCorrectorParameters((prefix+"_L1FastJet_AK5PF.txt").c_str())); |
26 |
> |
parMCRefW.push_back( JetCorrectorParameters((prefix+"_L2Relative_AK5PF.txt").c_str())); |
27 |
> |
parMCRefW.push_back( JetCorrectorParameters((prefix+"_L3Absolute_AK5PF.txt").c_str())); |
28 |
> |
jetCorrectorMCRefWrong= new FactorizedJetCorrector(parMCRefW); |
29 |
|
*/ |
30 |
|
|
31 |
+ |
|
32 |
|
prefix = base + "/ReferenceMC"; |
33 |
< |
parMCRef.push_back( JetCorrectorParameters((prefix+"_L1FastJet_AK5PFchs.txt").c_str())); |
34 |
< |
parMCRef.push_back( JetCorrectorParameters((prefix+"_L2Relative_AK5PFchs.txt").c_str())); |
35 |
< |
parMCRef.push_back( JetCorrectorParameters((prefix+"_L3Absolute_AK5PFchs.txt").c_str())); |
33 |
> |
parMCRef.push_back( JetCorrectorParameters((prefix+"_L1FastJet_"+jettype+".txt").c_str())); |
34 |
> |
parMCRef.push_back( JetCorrectorParameters((prefix+"_L2Relative_"+jettype+".txt").c_str())); |
35 |
> |
parMCRef.push_back( JetCorrectorParameters((prefix+"_L3Absolute_"+jettype+".txt").c_str())); |
36 |
|
jetCorrectorMCRef= new FactorizedJetCorrector(parMCRef); |
37 |
|
|
38 |
|
|
39 |
< |
prefix = base + "/Summer12V3DATA"; |
40 |
< |
parData.push_back( JetCorrectorParameters((prefix+"_L1FastJet_AK5PFchs.txt").c_str())); |
41 |
< |
parData.push_back( JetCorrectorParameters((prefix+"_L2Relative_AK5PFchs.txt").c_str())); |
42 |
< |
parData.push_back( JetCorrectorParameters((prefix+"_L3Absolute_AK5PFchs.txt").c_str())); |
43 |
< |
parData.push_back( JetCorrectorParameters((prefix+"_L2L3Residual_AK5PFchs.txt").c_str())); |
39 |
> |
prefix = base + "/GR_P_V42_AN3DATA"; |
40 |
> |
parData.push_back( JetCorrectorParameters((prefix+"_L1FastJet_"+jettype+".txt").c_str())); |
41 |
> |
parData.push_back( JetCorrectorParameters((prefix+"_L2Relative_"+jettype+".txt").c_str())); |
42 |
> |
parData.push_back( JetCorrectorParameters((prefix+"_L3Absolute_"+jettype+".txt").c_str())); |
43 |
> |
parData.push_back( JetCorrectorParameters((prefix+"_L2L3Residual_"+jettype+".txt").c_str())); |
44 |
|
jetCorrectorData= new FactorizedJetCorrector(parData); |
45 |
|
|
46 |
|
prefix = base + "/Reference"; |
47 |
< |
parDataRef.push_back( JetCorrectorParameters((prefix+"_L1FastJet_AK5PFchs.txt").c_str())); |
48 |
< |
parDataRef.push_back( JetCorrectorParameters((prefix+"_L2Relative_AK5PFchs.txt").c_str())); |
49 |
< |
parDataRef.push_back( JetCorrectorParameters((prefix+"_L3Absolute_AK5PFchs.txt").c_str())); |
50 |
< |
parDataRef.push_back( JetCorrectorParameters((prefix+"_L2L3Residual_AK5PFchs.txt").c_str())); |
47 |
> |
parDataRef.push_back( JetCorrectorParameters((prefix+"_L1FastJet_"+jettype+".txt").c_str())); |
48 |
> |
parDataRef.push_back( JetCorrectorParameters((prefix+"_L2Relative_"+jettype+".txt").c_str())); |
49 |
> |
parDataRef.push_back( JetCorrectorParameters((prefix+"_L3Absolute_"+jettype+".txt").c_str())); |
50 |
> |
parDataRef.push_back( JetCorrectorParameters((prefix+"_L2L3Residual_"+jettype+".txt").c_str())); |
51 |
|
jetCorrectorDataRef= new FactorizedJetCorrector(parDataRef); |
52 |
|
|
53 |
|
|
54 |
|
} |
55 |
|
|
56 |
< |
VHbbEvent::SimpleJet correct(const VHbbEvent::SimpleJet &j, float rho, bool isMC, bool checkRef = false) |
56 |
> |
VHbbEvent::SimpleJet correctRight(const VHbbEvent::SimpleJet &j, float rho, bool isMC, bool checkRef = false) |
57 |
|
{ |
58 |
|
VHbbEvent::SimpleJet c=j; |
59 |
|
FactorizedJetCorrector * corr=0; |
64 |
|
corr->setJetEta(j.p4.Eta()); |
65 |
|
corr->setJetPt(j.ptRaw); |
66 |
|
corr->setJetA(j.jetArea); |
67 |
< |
corr->setRho(rho); |
68 |
< |
c.p4 = j.ptRaw*corr->getCorrection(); |
67 |
> |
corr->setRho(rho); |
68 |
> |
float scale=corr->getCorrection()*j.ptRaw/j.p4.Pt(); |
69 |
> |
c.p4= scale * j.p4 ; |
70 |
> |
return c; |
71 |
> |
|
72 |
> |
} |
73 |
> |
|
74 |
> |
VHbbEvent::SimpleJet correct(const VHbbEvent::SimpleJet &j, float rho, bool isMC, bool checkRef = false) |
75 |
> |
{ |
76 |
> |
VHbbEvent::SimpleJet c=j; |
77 |
> |
FactorizedJetCorrector * corr=0; |
78 |
> |
if(checkRef && isMC) corr=jetCorrectorMCRef; |
79 |
> |
if(!checkRef && isMC) corr=jetCorrectorMC; |
80 |
> |
if(checkRef && !isMC) corr=jetCorrectorDataRef; |
81 |
> |
if(!checkRef && !isMC) corr=jetCorrectorData; |
82 |
|
corr->setJetEta(j.p4.Eta()); |
83 |
|
corr->setJetPt(j.ptRaw); |
84 |
|
corr->setJetA(j.jetArea); |
85 |
< |
corr->setRho(rho); |
86 |
< |
|
85 |
> |
corr->setRho(rho); |
86 |
> |
float scale=corr->getCorrection()*j.ptRaw/j.p4.Pt(); |
87 |
> |
c.p4= scale * j.p4 ; |
88 |
|
if(checkRef) |
89 |
|
{ |
90 |
|
if(fabs(c.p4.Pt()-j.p4.Pt()) > 0.01 * (c.p4.Pt()+j.p4.Pt()) ) |
91 |
|
{ |
92 |
< |
std::cout << "ERROR CORRECTIONS ARE NOT CLOSING: " << c.p4.Pt() << " vs " << j.p4.Pt() << " raw " << j.ptRaw << " new corr " << corr->getCorrection() << " old " << j.p4.Pt()/j.ptRaw << std::endl; |
92 |
> |
corr->setJetEta(j.p4.Eta()); |
93 |
> |
corr->setJetPt(j.ptRaw); |
94 |
> |
corr->setJetA(j.jetArea); |
95 |
> |
corr->setRho(rho); |
96 |
> |
std::cout << "ERROR CORRECTIONS ARE NOT CLOSING: " << c.p4.Pt() << " vs " << j.p4.Pt() << " raw " << j.ptRaw << " new corr " << corr->getCorrection() << " old " << j.p4.Pt()/j.ptRaw << std::endl; |
97 |
|
} |
98 |
|
|
99 |
< |
} |
99 |
> |
} |
100 |
> |
//else {std::cout << "Check ok: " << c.p4.Pt() << " vs " << j.p4.Pt() << " raw " << j.ptRaw << " new corr " << corr->getCorrection() << " old " << j.p4.Pt()/j.ptRaw << std::endl;} |
101 |
|
return c; |
102 |
|
} |
103 |
|
|
104 |
|
std::vector<JetCorrectorParameters> parMC; |
105 |
|
std::vector<JetCorrectorParameters> parMCRef; |
106 |
+ |
std::vector<JetCorrectorParameters> parMCRefW; |
107 |
|
std::vector<JetCorrectorParameters> parData; |
108 |
|
std::vector<JetCorrectorParameters> parDataRef; |
109 |
|
FactorizedJetCorrector * jetCorrectorMC; |
110 |
+ |
FactorizedJetCorrector * jetCorrectorMCRefWrong; |
111 |
|
FactorizedJetCorrector * jetCorrectorMCRef; |
112 |
|
FactorizedJetCorrector * jetCorrectorData; |
113 |
|
FactorizedJetCorrector * jetCorrectorDataRef; |