ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/MitHzz4l/Util/src/ElectronEnergySmearingScaling.cc
Revision: 1.7
Committed: Mon Dec 17 17:23:06 2012 UTC (12 years, 5 months ago) by dkralph
Content type: text/plain
Branch: MAIN
CVS Tags: compiled
Changes since 1.6: +17 -40 lines
Log Message:
*** empty log message ***

File Contents

# User Rev Content
1 anlevin 1.1 #include "ElectronEnergySmearingScaling.h"
2     #include "CommonDefs.h"
3     #include <TRandom.h>
4     #include <TRandom1.h>
5    
6    
7     //based on
8     //http://cmssw.cvs.cern.ch/cgi-bin/cmssw.cgi/CMSSW/EgammaAnalysis/ElectronTools/src/PatElectronEnergyCalibrator.cc?revision=1.6&view=markup
9    
10 dkralph 1.7 pair<float,float> apply_claudes_electron_energy_corrections(ControlFlags &ctrl, Electron * ele, const float energy, const float energy_error, unsigned run, string dataset_){
11 anlevin 1.1
12     float corr=0., scale=1.;
13     float dsigMC=0., corrMC=0.;
14    
15 dkralph 1.7 if (!ctrl.mc) {
16 anlevin 1.1 if (dataset_=="Jan16ReReco") { // corrections for january 16 ReReco
17     // values from http://indico.cern.ch/getFile.py/access?contribId=2&resId=0&materialId=slides&confId=176520
18     if (ele->IsEB() && fabs(ele->SCluster()->Eta())<1 && ele->SCluster()->R9()<0.94) {
19     if (run>=160431 && run<=167913) corr = -0.0014;
20     if (run>=170000 && run<=172619) corr = -0.0016;
21     if (run>=172620 && run<=173692) corr = -0.0017;
22     if (run>=175830 && run<=177139) corr = -0.0021;
23     if (run>=177140 && run<=178421) corr = -0.0025;
24     if (run>=178424 && run<=180252) corr = -0.0024;
25     } else if (ele->IsEB() && fabs(ele->SCluster()->Eta())<1 && ele->SCluster()->R9()>=0.94) {
26     if (run>=160431 && run<=167913) corr = 0.0059;
27     if (run>=170000 && run<=172619) corr = 0.0046;
28     if (run>=172620 && run<=173692) corr = 0.0045;
29     if (run>=175830 && run<=177139) corr = 0.0042;
30     if (run>=177140 && run<=178421) corr = 0.0038;
31     if (run>=178424 && run<=180252) corr = 0.0039;
32     } else if (ele->IsEB() && fabs(ele->SCluster()->Eta())>=1 && ele->SCluster()->R9()<0.94) {
33     if (run>=160431 && run<=167913) corr = -0.0045;
34     if (run>=170000 && run<=172619) corr = -0.0066;
35     if (run>=172620 && run<=173692) corr = -0.0058;
36     if (run>=175830 && run<=177139) corr = -0.0073;
37     if (run>=177140 && run<=178421) corr = -0.0075;
38     if (run>=178424 && run<=180252) corr = -0.0071;
39     } else if (ele->IsEB() && fabs(ele->SCluster()->Eta())>=1 && ele->SCluster()->R9()>=0.94) {
40     if (run>=160431 && run<=167913) corr = 0.0084;
41     if (run>=170000 && run<=172619) corr = 0.0063;
42     if (run>=172620 && run<=173692) corr = 0.0071;
43     if (run>=175830 && run<=177139) corr = 0.0056;
44     if (run>=177140 && run<=178421) corr = 0.0054;
45     if (run>=178424 && run<=180252) corr = 0.0058;
46     } else if (ele->IsEE() && fabs(ele->SCluster()->Eta())<2 && ele->SCluster()->R9()<0.94) {
47     if (run>=160431 && run<=167913) corr = -0.0082;
48     if (run>=170000 && run<=172619) corr = -0.0025;
49     if (run>=172620 && run<=173692) corr = -0.0035;
50     if (run>=175830 && run<=177139) corr = -0.0017;
51     if (run>=177140 && run<=178421) corr = -0.0010;
52     if (run>=178424 && run<=180252) corr = 0.0030;
53     } else if (ele->IsEE() && fabs(ele->SCluster()->Eta())<2 && ele->SCluster()->R9()>=0.94) {
54     if (run>=160431 && run<=167913) corr = -0.0033;
55     if (run>=170000 && run<=172619) corr = 0.0024;
56     if (run>=172620 && run<=173692) corr = 0.0014;
57     if (run>=175830 && run<=177139) corr = 0.0032;
58     if (run>=177140 && run<=178421) corr = 0.0040;
59     if (run>=178424 && run<=180252) corr = 0.0079;
60     } else if (ele->IsEE() && fabs(ele->SCluster()->Eta())>=2 && ele->SCluster()->R9()<0.94) {
61     if (run>=160431 && run<=167913) corr = -0.0064;
62     if (run>=170000 && run<=172619) corr = -0.0046;
63     if (run>=172620 && run<=173692) corr = -0.0029;
64     if (run>=175830 && run<=177139) corr = -0.0040;
65     if (run>=177140 && run<=178421) corr = -0.0050;
66     if (run>=178424 && run<=180252) corr = -0.0059;
67     } else if (ele->IsEE() && fabs(ele->SCluster()->Eta())>=2 && ele->SCluster()->R9()>=0.94) {
68     if (run>=160431 && run<=167913) corr = 0.0042;
69     if (run>=170000 && run<=172619) corr = 0.0060;
70     if (run>=172620 && run<=173692) corr = 0.0077;
71     if (run>=175830 && run<=177139) corr = 0.0067;
72     if (run>=177140 && run<=178421) corr = 0.0056;
73     if (run>=178424 && run<=180252) corr = 0.0047;
74     }
75     }
76 dkralph 1.7 else if (dataset_=="2012Jul13ReReco") {
77 anlevin 1.1 // values from https://twiki.cern.ch/twiki/bin/view/CMS/ECALELF
78     if (ele->IsEB() && fabs(ele->SCluster()->Eta())<1 && ele->SCluster()->R9()<0.94) {
79     if (run>=190645 && run<=190781) scale = 1.0020;
80     if (run>=190782 && run<=191042) scale = 1.0079;
81     if (run>=191043 && run<=193555) scale = 0.9989;
82     if (run>=193556 && run<=194150) scale = 0.9974;
83     if (run>=194151 && run<=194532) scale = 0.9980;
84     if (run>=194533 && run<=195113) scale = 0.9983;
85     if (run>=195114 && run<=195915) scale = 0.9984;
86     if (run>=195916 && run<=198115) scale = 0.9975;
87     if (run>=198116 && run<=199803) scale = 1.0010;
88     if (run>=199804 && run<=200048) scale = 1.0021;
89     if (run>=200049 && run<=200151) scale = 1.0035;
90     if (run>=200152 && run<=200490) scale = 1.0013;
91     if (run>=200491 && run<=200531) scale = 1.0035;
92     if (run>=200532 && run<=201656) scale = 1.0017;
93     if (run>=201657 && run<=202305) scale = 1.0026;
94     if (run>=202305 && run<=203002) scale = 1.0037;
95     } else if (ele->IsEB() && fabs(ele->SCluster()->Eta())<1 && ele->SCluster()->R9()>=0.94) {
96     if (run>=190645 && run<=190781) scale = 0.9980;
97     if (run>=190782 && run<=191042) scale = 1.0039;
98     if (run>=191043 && run<=193555) scale = 0.9949;
99     if (run>=193556 && run<=194150) scale = 0.9934;
100     if (run>=194151 && run<=194532) scale = 0.9940;
101     if (run>=194533 && run<=195113) scale = 0.9943;
102     if (run>=195114 && run<=195915) scale = 0.9944;
103     if (run>=195916 && run<=198115) scale = 0.9936;
104     if (run>=198116 && run<=199803) scale = 0.9970;
105     if (run>=199804 && run<=200048) scale = 0.9982;
106     if (run>=200049 && run<=200151) scale = 0.9996;
107     if (run>=200152 && run<=200490) scale = 0.9973;
108     if (run>=200491 && run<=200531) scale = 0.9995;
109     if (run>=200532 && run<=201656) scale = 0.9978;
110     if (run>=201657 && run<=202305) scale = 0.9986;
111     if (run>=202305 && run<=203002) scale = 0.9998;
112     } else if (ele->IsEB() && fabs(ele->SCluster()->Eta())>=1 && ele->SCluster()->R9()<0.94) {
113     if (run>=190645 && run<=190781) scale = 1.0032;
114     if (run>=190782 && run<=191042) scale = 1.0063;
115     if (run>=191043 && run<=193555) scale = 0.9998;
116     if (run>=193556 && run<=194150) scale = 0.9954;
117     if (run>=194151 && run<=194532) scale = 0.9965;
118     if (run>=194533 && run<=195113) scale = 0.9984;
119     if (run>=195114 && run<=195915) scale = 0.9977;
120     if (run>=195916 && run<=198115) scale = 0.9965;
121     if (run>=198116 && run<=199803) scale = 0.9999;
122     if (run>=199804 && run<=200048) scale = 1.0008;
123     if (run>=200049 && run<=200151) scale = 1.0017;
124     if (run>=200152 && run<=200490) scale = 1.0003;
125     if (run>=200491 && run<=200531) scale = 1.0017;
126     if (run>=200532 && run<=201656) scale = 0.9999;
127     if (run>=201657 && run<=202305) scale = 1.0003;
128     if (run>=202305 && run<=203002) scale = 1.0010;
129     } else if (ele->IsEB() && fabs(ele->SCluster()->Eta())>=1 && ele->SCluster()->R9()>=0.94) {
130     if (run>=190645 && run<=190781) scale = 0.9919;
131     if (run>=190782 && run<=191042) scale = 0.9951;
132     if (run>=191043 && run<=193555) scale = 0.9885;
133     if (run>=193556 && run<=194150) scale = 0.9841;
134     if (run>=194151 && run<=194532) scale = 0.9852;
135     if (run>=194533 && run<=195113) scale = 0.9872;
136     if (run>=195114 && run<=195915) scale = 0.9864;
137     if (run>=195916 && run<=198115) scale = 0.9852;
138     if (run>=198116 && run<=199803) scale = 0.9886;
139     if (run>=199804 && run<=200048) scale = 0.9895;
140     if (run>=200049 && run<=200151) scale = 0.9905;
141     if (run>=200152 && run<=200490) scale = 0.9890;
142     if (run>=200491 && run<=200531) scale = 0.9905;
143     if (run>=200532 && run<=201656) scale = 0.9887;
144     if (run>=201657 && run<=202305) scale = 0.9891;
145     if (run>=202305 && run<=203002) scale = 0.9897;
146     } else if (ele->IsEE() && fabs(ele->SCluster()->Eta())<2 && ele->SCluster()->R9()<0.94) {
147     if (run>=190645 && run<=190781) scale = 0.9945;
148     if (run>=190782 && run<=191042) scale = 0.9996;
149     if (run>=191043 && run<=193555) scale = 0.9968;
150     if (run>=193556 && run<=194150) scale = 0.9969;
151     if (run>=194151 && run<=194532) scale = 0.9986;
152     if (run>=194533 && run<=195113) scale = 1.0006;
153     if (run>=195114 && run<=195915) scale = 1.0010;
154     if (run>=195916 && run<=198115) scale = 1.0020;
155     if (run>=198116 && run<=199803) scale = 0.9963;
156     if (run>=199804 && run<=200048) scale = 0.9965;
157     if (run>=200049 && run<=200151) scale = 0.9992;
158     if (run>=200152 && run<=200490) scale = 0.9991;
159     if (run>=200491 && run<=200531) scale = 0.9995;
160     if (run>=200532 && run<=201656) scale = 0.9978;
161     if (run>=201657 && run<=202305) scale = 0.9987;
162     if (run>=202305 && run<=203002) scale = 1.0003;
163     } else if (ele->IsEE() && fabs(ele->SCluster()->Eta())<2 && ele->SCluster()->R9()>=0.94) {
164     if (run>=190645 && run<=190781) scale = 0.9881;
165     if (run>=190782 && run<=191042) scale = 0.9932;
166     if (run>=191043 && run<=193555) scale = 0.9904;
167     if (run>=193556 && run<=194150) scale = 0.9905;
168     if (run>=194151 && run<=194532) scale = 0.9922;
169     if (run>=194533 && run<=195113) scale = 0.9943;
170     if (run>=195114 && run<=195915) scale = 0.9946;
171     if (run>=195916 && run<=198115) scale = 0.9956;
172     if (run>=198116 && run<=199803) scale = 0.9899;
173     if (run>=199804 && run<=200048) scale = 0.9901;
174     if (run>=200049 && run<=200151) scale = 0.9928;
175     if (run>=200152 && run<=200490) scale = 0.9927;
176     if (run>=200491 && run<=200531) scale = 0.9931;
177     if (run>=200532 && run<=201656) scale = 0.9914;
178     if (run>=201657 && run<=202305) scale = 0.9923;
179     if (run>=202305 && run<=203002) scale = 0.9940;
180     } else if (ele->IsEE() && fabs(ele->SCluster()->Eta())>=2 && ele->SCluster()->R9()<0.94) {
181     if (run>=190645 && run<=190781) scale = 0.9965;
182     if (run>=190782 && run<=191042) scale = 1.0010;
183     if (run>=191043 && run<=193555) scale = 0.9987;
184     if (run>=193556 && run<=194150) scale = 0.9988;
185     if (run>=194151 && run<=194532) scale = 0.9994;
186     if (run>=194533 && run<=195113) scale = 0.9999;
187     if (run>=195114 && run<=195915) scale = 1.0004;
188     if (run>=195916 && run<=198115) scale = 0.9992;
189     if (run>=198116 && run<=199803) scale = 1.0044;
190     if (run>=199804 && run<=200048) scale = 1.0060;
191     if (run>=200049 && run<=200151) scale = 1.0101;
192     if (run>=200152 && run<=200490) scale = 1.0073;
193     if (run>=200491 && run<=200531) scale = 1.0106;
194     if (run>=200532 && run<=201656) scale = 1.0069;
195     if (run>=201657 && run<=202305) scale = 1.0121;
196     if (run>=202305 && run<=203002) scale = 1.0144;
197     } else if (ele->IsEE() && fabs(ele->SCluster()->Eta())>=2 && ele->SCluster()->R9()>=0.94) {
198     if (run>=190645 && run<=190781) scale = 0.9862;
199     if (run>=190782 && run<=191042) scale = 0.9907;
200     if (run>=191043 && run<=193555) scale = 0.9884;
201     if (run>=193556 && run<=194150) scale = 0.9885;
202     if (run>=194151 && run<=194532) scale = 0.9891;
203     if (run>=194533 && run<=195113) scale = 0.9896;
204     if (run>=195114 && run<=195915) scale = 0.9900;
205     if (run>=195916 && run<=198115) scale = 0.9889;
206     if (run>=198116 && run<=199803) scale = 0.9941;
207     if (run>=199804 && run<=200048) scale = 0.9957;
208     if (run>=200049 && run<=200151) scale = 0.9999;
209     if (run>=200152 && run<=200490) scale = 0.9970;
210     if (run>=200491 && run<=200531) scale = 1.0004;
211     if (run>=200532 && run<=201656) scale = 0.9967;
212     if (run>=201657 && run<=202305) scale = 1.0018;
213     if (run>=202305 && run<=203002) scale = 1.0042;
214     }
215     }
216     else
217     assert(0);
218 dkralph 1.7
219     assert(scale!=1 || corr!=0); // make sure run number was ok
220 anlevin 1.1 }
221    
222 anlevin 1.6 if (dataset_=="Summer12_DR53X_HCP2012" || dataset_ == "2012Jul13ReReco") {
223 anlevin 1.5 if (ele->IsEB() && fabs(ele->SCluster()->Eta())<1 && ele->SCluster()->R9()<0.94) dsigMC = 0.0103;
224     if (ele->IsEB() && fabs(ele->SCluster()->Eta())<1 && ele->SCluster()->R9()>=0.94) dsigMC = 0.0090;
225     if (ele->IsEB() && fabs(ele->SCluster()->Eta())>=1 && ele->SCluster()->R9()<0.94) dsigMC = 0.0190;
226     if (ele->IsEB() && fabs(ele->SCluster()->Eta())>=1 && ele->SCluster()->R9()>=0.94) dsigMC = 0.0156;
227     if (ele->IsEE() && fabs(ele->SCluster()->Eta())<2 && ele->SCluster()->R9()<0.94) dsigMC = 0.0269;
228     if (ele->IsEE() && fabs(ele->SCluster()->Eta())<2 && ele->SCluster()->R9()>=0.94) dsigMC = 0.0287;
229     if (ele->IsEE() && fabs(ele->SCluster()->Eta())>=2 && ele->SCluster()->R9()<0.94) dsigMC = 0.0364;
230     if (ele->IsEE() && fabs(ele->SCluster()->Eta())>=2 && ele->SCluster()->R9()>=0.94) dsigMC = 0.0321;
231 anlevin 1.1 }
232 anlevin 1.6 else if (dataset_=="Fall11" ||dataset_ == "Jan16ReReco") { // values from https://hypernews.cern.ch/HyperNews/CMS/get/higgs2g/634.html, consistant with Jan16ReReco corrections
233 anlevin 1.5 if (ele->IsEB() && fabs(ele->SCluster()->Eta())<1 && ele->SCluster()->R9()<0.94) dsigMC = 0.0096;
234     if (ele->IsEB() && fabs(ele->SCluster()->Eta())<1 && ele->SCluster()->R9()>=0.94) dsigMC = 0.0074;
235     if (ele->IsEB() && fabs(ele->SCluster()->Eta())>=1 && ele->SCluster()->R9()<0.94) dsigMC = 0.0196;
236     if (ele->IsEB() && fabs(ele->SCluster()->Eta())>=1 && ele->SCluster()->R9()>=0.94) dsigMC = 0.0141;
237     if (ele->IsEE() && fabs(ele->SCluster()->Eta())<2 && ele->SCluster()->R9()<0.94) dsigMC = 0.0279;
238     if (ele->IsEE() && fabs(ele->SCluster()->Eta())<2 && ele->SCluster()->R9()>=0.94) dsigMC = 0.0268;
239     if (ele->IsEE() && fabs(ele->SCluster()->Eta())>=2 && ele->SCluster()->R9()<0.94) dsigMC = 0.0301;
240     if (ele->IsEE() && fabs(ele->SCluster()->Eta())>=2 && ele->SCluster()->R9()>=0.94) dsigMC = 0.0293;
241     }
242 dkralph 1.7 else
243     assert(!ctrl.mc);
244 anlevin 1.1
245     float corrected_energy = -999;
246 dkralph 1.7 if (!ctrl.mc){
247 anlevin 1.1 if(dataset_ == "Jan16ReReco") corrected_energy = energy/(1+corr);
248 anlevin 1.5 else if (dataset_ == "2012Jul13ReReco") corrected_energy = energy*scale;
249 anlevin 1.1 else assert(0);
250     }
251 dkralph 1.7 if (ctrl.mc) {
252     TRandom1 rand;
253     rand.SetSeed(0);
254     if(ctrl.turnOffRandomization)
255     corrMC = 1+dsigMC; // use this only for synchronization
256     else
257     corrMC = rand.Gaus(1,dsigMC);
258 anlevin 1.1 corrected_energy = energy*corrMC;
259     }
260    
261 dkralph 1.7 if(ctrl.debug) cout << " corr'ting regr E " << setprecision(7) << setw(12) << energy << " -> " << setprecision(7) << setw(12) << corrected_energy << endl;
262 anlevin 1.1 float corrected_energy_error = sqrt(energy_error*energy_error + dsigMC*dsigMC*corrected_energy*corrected_energy) ;
263    
264 dkralph 1.7 return pair<float,float>(corrected_energy,corrected_energy_error);
265 anlevin 1.1
266     }