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

# User Rev Content
1 arizzi 1.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 arizzi 1.2 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 arizzi 1.1
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 arizzi 1.2 VHbbEvent::SimpleJet correctRight(const VHbbEvent::SimpleJet &j, float rho, bool isMC, bool checkRef = false)
55 arizzi 1.1 {
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 arizzi 1.2 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 arizzi 1.1 corr->setJetEta(j.p4.Eta());
81     corr->setJetPt(j.ptRaw);
82     corr->setJetA(j.jetArea);
83 arizzi 1.2 corr->setRho(rho);
84     float scale=corr->getCorrection()*j.ptRaw/j.p4.Pt();
85     c.p4= scale * j.p4 ;
86 arizzi 1.1 if(checkRef)
87     {
88     if(fabs(c.p4.Pt()-j.p4.Pt()) > 0.01 * (c.p4.Pt()+j.p4.Pt()) )
89     {
90 arizzi 1.2 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 arizzi 1.1 }
96    
97     }
98     return c;
99     }
100    
101     std::vector<JetCorrectorParameters> parMC;
102     std::vector<JetCorrectorParameters> parMCRef;
103 arizzi 1.2 std::vector<JetCorrectorParameters> parMCRefW;
104 arizzi 1.1 std::vector<JetCorrectorParameters> parData;
105     std::vector<JetCorrectorParameters> parDataRef;
106     FactorizedJetCorrector * jetCorrectorMC;
107 arizzi 1.2 FactorizedJetCorrector * jetCorrectorMCRefWrong;
108 arizzi 1.1 FactorizedJetCorrector * jetCorrectorMCRef;
109     FactorizedJetCorrector * jetCorrectorData;
110     FactorizedJetCorrector * jetCorrectorDataRef;
111    
112     };
113    
114     #endif