CMS 3D CMS Logo

List of all members | Public Member Functions
LinearFit Class Reference

#include <LinearFit.h>

Public Member Functions

void fit (const std::vector< float > &x, const std::vector< float > &y, int ndat, const std::vector< float > &sigy, float &slope, float &intercept, float &covss, float &covii, float &covsi) const
 

Detailed Description

Straight line fit for data with errors on one coordinate

Definition at line 9 of file LinearFit.h.

Member Function Documentation

◆ fit()

void LinearFit::fit ( const std::vector< float > &  x,
const std::vector< float > &  y,
int  ndat,
const std::vector< float > &  sigy,
float &  slope,
float &  intercept,
float &  covss,
float &  covii,
float &  covsi 
) const

x_i, y_i: measurements of y(x_i), sigy_i: error (sigma) on y_i slope, intercept: fitted parameters covss, covii, covsi: covariance matrix of fitted parameters, s denoting slope, i denoting intercept

Definition at line 3 of file LinearFit.cc.

References ztail::d, diffTwoXMLs::g1, diffTwoXMLs::g2, mps_fire::i, slope, x, and y.

Referenced by trackingPlots.Iteration::modules(), and LinearFitErrorsIn2Coord::slope().

11  {
12  float g1 = 0, g2 = 0;
13  float s11 = 0, s12 = 0, s22 = 0;
14  for (int i = 0; i < ndat; i++) {
15  float sy2 = sigy[i] * sigy[i];
16  g1 += y[i] / sy2;
17  g2 += x[i] * y[i] / sy2;
18  s11 += 1. / sy2;
19  s12 += x[i] / sy2;
20  s22 += x[i] * x[i] / sy2;
21  }
22 
23  float d = s11 * s22 - s12 * s12;
24  intercept = (g1 * s22 - g2 * s12) / d;
25  slope = (g2 * s11 - g1 * s12) / d;
26 
27  covii = s22 / d;
28  covss = s11 / d;
29  covsi = -s12 / d;
30 }
static const double slope[3]
d
Definition: ztail.py:151