ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/VHbbAnalysis/VHbbDataFormats/interface/JECFWLite.h
Revision: 1.2
Committed: Wed Jun 6 14:39:41 2012 UTC (12 years, 10 months ago) by arizzi
Content type: text/plain
Branch: MAIN
CVS Tags: tauCandV42, hbbsubstructDev_11, hbbsubstructDev_10, hbbsubstructDev_9, hbbsubstructDev_8, hbbsubstructDev_7, hbbsubstructDev_6, hbbsubstructDev_5, hbbsubstructDev_4, hbbsubstructDev_3, hbbsubstructDev_2, hbbsubstructDev_1, hbbsubstructDev, EDMV42_Step2_V4a, EDMV42_Step2_V4, EDMV42_Step2_V3, EDMV42_Step2_V2, EDMV42_Step2_V1, EdmV42, EdmV41alpha1, EdmV40alpha1, EdmV40alpha, EdmV33Jun12v2_consistent, Step2ForV33_v2, Step2ForV33_v1, EdmV33Jun12v2, EdmV33Jun12v1, Step2ForV32_v2, Step2ForV32_v1
Branch point for: V42TauCandidate, hbbsubstructDevPostHCP
Changes since 1.1: +32 -12 lines
Log Message:
fixes for JEC in step2

File Contents

# Content
1 #ifndef JECFWLITE
2 #define JECFWLITE
3
4 #include <iostream>
5 #include <string>
6 #include "VHbbAnalysis/VHbbDataFormats/interface/VHbbEvent.h"
7 #include "CondFormats/JetMETObjects/interface/FactorizedJetCorrector.h"
8 #include "CondFormats/JetMETObjects/interface/JetCorrectorParameters.h"
9
10
11 class JECFWLite
12 {
13 public:
14
15 JECFWLite(std::string base)
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()));
21 jetCorrectorMC= new FactorizedJetCorrector(parMC);
22
23 prefix = base + "/ReferenceMC";
24 parMCRefW.push_back( JetCorrectorParameters((prefix+"_L1FastJet_AK5PF.txt").c_str()));
25 parMCRefW.push_back( JetCorrectorParameters((prefix+"_L2Relative_AK5PF.txt").c_str()));
26 parMCRefW.push_back( JetCorrectorParameters((prefix+"_L3Absolute_AK5PF.txt").c_str()));
27 jetCorrectorMCRefWrong= new FactorizedJetCorrector(parMCRefW);
28
29
30 prefix = base + "/ReferenceMC";
31 parMCRef.push_back( JetCorrectorParameters((prefix+"_L1FastJet_AK5PFchs.txt").c_str()));
32 parMCRef.push_back( JetCorrectorParameters((prefix+"_L2Relative_AK5PFchs.txt").c_str()));
33 parMCRef.push_back( JetCorrectorParameters((prefix+"_L3Absolute_AK5PFchs.txt").c_str()));
34 jetCorrectorMCRef= new FactorizedJetCorrector(parMCRef);
35
36
37 prefix = base + "/Summer12V3DATA";
38 parData.push_back( JetCorrectorParameters((prefix+"_L1FastJet_AK5PFchs.txt").c_str()));
39 parData.push_back( JetCorrectorParameters((prefix+"_L2Relative_AK5PFchs.txt").c_str()));
40 parData.push_back( JetCorrectorParameters((prefix+"_L3Absolute_AK5PFchs.txt").c_str()));
41 parData.push_back( JetCorrectorParameters((prefix+"_L2L3Residual_AK5PFchs.txt").c_str()));
42 jetCorrectorData= new FactorizedJetCorrector(parData);
43
44 prefix = base + "/Reference";
45 parDataRef.push_back( JetCorrectorParameters((prefix+"_L1FastJet_AK5PFchs.txt").c_str()));
46 parDataRef.push_back( JetCorrectorParameters((prefix+"_L2Relative_AK5PFchs.txt").c_str()));
47 parDataRef.push_back( JetCorrectorParameters((prefix+"_L3Absolute_AK5PFchs.txt").c_str()));
48 parDataRef.push_back( JetCorrectorParameters((prefix+"_L2L3Residual_AK5PFchs.txt").c_str()));
49 jetCorrectorDataRef= new FactorizedJetCorrector(parDataRef);
50
51
52 }
53
54 VHbbEvent::SimpleJet correctRight(const VHbbEvent::SimpleJet &j, float rho, bool isMC, bool checkRef = false)
55 {
56 VHbbEvent::SimpleJet c=j;
57 FactorizedJetCorrector * corr=0;
58 if(checkRef && isMC) corr=jetCorrectorMCRef;
59 if(!checkRef && isMC) corr=jetCorrectorMC;
60 if(checkRef && !isMC) corr=jetCorrectorDataRef;
61 if(!checkRef && !isMC) corr=jetCorrectorData;
62 corr->setJetEta(j.p4.Eta());
63 corr->setJetPt(j.ptRaw);
64 corr->setJetA(j.jetArea);
65 corr->setRho(rho);
66 float scale=corr->getCorrection()*j.ptRaw/j.p4.Pt();
67 c.p4= scale * j.p4 ;
68 return c;
69
70 }
71
72 VHbbEvent::SimpleJet correct(const VHbbEvent::SimpleJet &j, float rho, bool isMC, bool checkRef = false)
73 {
74 VHbbEvent::SimpleJet c=j;
75 FactorizedJetCorrector * corr=0;
76 if(checkRef && isMC) corr=jetCorrectorMCRefWrong;
77 if(!checkRef && isMC) corr=jetCorrectorMC;
78 if(checkRef && !isMC) corr=jetCorrectorDataRef;
79 if(!checkRef && !isMC) corr=jetCorrectorData;
80 corr->setJetEta(j.p4.Eta());
81 corr->setJetPt(j.ptRaw);
82 corr->setJetA(j.jetArea);
83 corr->setRho(rho);
84 float scale=corr->getCorrection()*j.ptRaw/j.p4.Pt();
85 c.p4= scale * j.p4 ;
86 if(checkRef)
87 {
88 if(fabs(c.p4.Pt()-j.p4.Pt()) > 0.01 * (c.p4.Pt()+j.p4.Pt()) )
89 {
90 corr->setJetEta(j.p4.Eta());
91 corr->setJetPt(j.ptRaw);
92 corr->setJetA(j.jetArea);
93 corr->setRho(rho);
94 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;
95 }
96
97 }
98 return c;
99 }
100
101 std::vector<JetCorrectorParameters> parMC;
102 std::vector<JetCorrectorParameters> parMCRef;
103 std::vector<JetCorrectorParameters> parMCRefW;
104 std::vector<JetCorrectorParameters> parData;
105 std::vector<JetCorrectorParameters> parDataRef;
106 FactorizedJetCorrector * jetCorrectorMC;
107 FactorizedJetCorrector * jetCorrectorMCRefWrong;
108 FactorizedJetCorrector * jetCorrectorMCRef;
109 FactorizedJetCorrector * jetCorrectorData;
110 FactorizedJetCorrector * jetCorrectorDataRef;
111
112 };
113
114 #endif