CMS 3D CMS Logo

/afs/cern.ch/work/a/aaltunda/public/www/CMSSW_5_3_13_patch3/src/CommonTools/Statistics/src/LinearFit.cc

Go to the documentation of this file.
00001 #include "CommonTools/Statistics/interface/LinearFit.h"
00002 
00003 void LinearFit::fit(const std::vector<float> & x, const std::vector<float> & y, 
00004                     int ndat, const std::vector<float> & sigy, 
00005                     float& slope, float& intercept, 
00006                     float& covss, float& covii, float& covsi) const
00007 {
00008 
00009   float g1 = 0, g2 = 0;
00010   float s11 = 0, s12 = 0, s22 = 0;
00011   for (int i = 0; i != ndat; i++) {
00012     float sy2 = sigy[i] * sigy[i];
00013     g1 += y[i] / sy2;
00014     g2 += x[i]*y[i] / sy2;
00015     s11 += 1. / sy2;
00016     s12 += x[i] / sy2;
00017     s22 += x[i]*x[i] / sy2;
00018   }
00019 
00020   float d = s11*s22 - s12*s12;
00021   intercept = (g1*s22 - g2*s12) / d;
00022   slope = (g2*s11 - g1*s12) / d;
00023 
00024   covii =  s22 / d;
00025   covss =  s11 / d;
00026   covsi = -s12 / d;
00027   
00028 }