Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:01:12

0001 #include "CommonTools/Statistics/interface/LinearFit.h"
0002 
0003 void LinearFit::fit(const std::vector<float>& x,
0004                     const std::vector<float>& y,
0005                     int ndat,
0006                     const std::vector<float>& sigy,
0007                     float& slope,
0008                     float& intercept,
0009                     float& covss,
0010                     float& covii,
0011                     float& covsi) const {
0012   float g1 = 0, g2 = 0;
0013   float s11 = 0, s12 = 0, s22 = 0;
0014   for (int i = 0; i < ndat; i++) {
0015     float sy2 = sigy[i] * sigy[i];
0016     g1 += y[i] / sy2;
0017     g2 += x[i] * y[i] / sy2;
0018     s11 += 1. / sy2;
0019     s12 += x[i] / sy2;
0020     s22 += x[i] * x[i] / sy2;
0021   }
0022 
0023   float d = s11 * s22 - s12 * s12;
0024   intercept = (g1 * s22 - g2 * s12) / d;
0025   slope = (g2 * s11 - g1 * s12) / d;
0026 
0027   covii = s22 / d;
0028   covss = s11 / d;
0029   covsi = -s12 / d;
0030 }