Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

MdcLine Class Reference

#include <MdcLine.h>

List of all members.

Public Member Functions

int fit (int nUse)
int fit (int nUse)
 MdcLine (int n)
 MdcLine (int n)
 ~MdcLine ()
 ~MdcLine ()

Public Attributes

double chisq
double errmat [3]
double intercept
int nPoint
double * resid
double * resid
double * sigma
double * sigma
double slope
double * x
double * x
double * y
double * y


Constructor & Destructor Documentation

MdcLine::MdcLine int  n  )  [inline]
 

00025                  { 
00026     nPoint = n;
00027     x = new double[n];
00028     y = new double[n];
00029     sigma = new double[n];
00030     resid = new double[n];
00031   };

MdcLine::~MdcLine  )  [inline]
 

00032              { 
00033     delete [] x;
00034     delete [] y;
00035     delete [] sigma;
00036     delete [] resid;
00037   };

MdcLine::MdcLine int  n  )  [inline]
 

00025                  { 
00026     nPoint = n;
00027     x = new double[n];
00028     y = new double[n];
00029     sigma = new double[n];
00030     resid = new double[n];
00031   };

MdcLine::~MdcLine  )  [inline]
 

00032              { 
00033     delete [] x;
00034     delete [] y;
00035     delete [] sigma;
00036     delete [] resid;
00037   };


Member Function Documentation

int MdcLine::fit int  nUse  ) 
 

int MdcLine::fit int  nUse  ) 
 

00010                          {
00011 
00012   double s1, sx, sy, sxx, sxy;  // The various sums. 
00013   double delinv, denom;
00014   double weight = 0.013;     // weight for hits, calculated from sigmas. 
00015   int ihit;
00016   if (nUse > nPoint) nUse = nPoint;
00017   s1 = sx = sy = sxx = sxy = 0.0;
00018   chisq = 0.0;
00019   for (ihit = 0; ihit < nUse; ihit++) {
00020     
00021     if (sigma[ihit] < 0.0) continue;
00022     weight = 1. / (sigma[ihit] * sigma[ihit]);//NEED sigma of MdcHits
00023     s1 += weight;    
00024     sx += x[ihit] * weight;
00025     sy += y[ihit] * weight;
00026     sxx += x[ihit] * (x[ihit] * weight);
00027     sxy += y[ihit] * (x[ihit] * weight);
00028 
00029     //std::cout<<__FILE__<<" "<<__LINE__<< " "<<ihit<<" sigma "<<
00030       //sigma[ihit] <<" weight "
00031       //<< weight<<" x "
00032       //<< x[ihit]<<" y "
00033       //<< y[ihit]<< std::endl;
00034   }
00035   
00036   /* Calculate parameters. */
00037   denom = s1 * sxx - sx * sx;
00038   delinv = (denom == 0.0) ? 1.e20 : 1. / denom;
00039   intercept = (sy * sxx - sx * sxy) * delinv;
00040   slope = (s1 * sxy - sx * sy) * delinv;
00041   errmat[0] = sxx * delinv;
00042   errmat[1] = -sx * delinv;
00043   errmat[2] = s1 * delinv;
00044   //std::cout << " After Fit:" << std::endl;//yzhang debug
00045   /* Calculate residuals. */
00046   for (ihit = 0; ihit < nUse; ihit++) {
00047     if (sigma[ihit] < 0.0) continue;
00048     resid[ihit] = ( y[ihit] - intercept - slope * x[ihit] );
00049     chisq += resid[ihit] * resid[ihit] / (sigma[ihit] * sigma[ihit]);
00050     //std::cout << "resid "<<ihit<<" "<<resid[ihit]<<" sigma "<<sigma[ihit]<<" chisq add "<<resid[ihit] * resid[ihit] / (sigma[ihit] * sigma[ihit]) << std::endl;//yzhang debug 
00051   }
00052 
00053   //std::cout<<__FILE__<<" "<<__LINE__
00054   //<< " intercept "<<intercept<<" slope "<<slope 
00055           //<< " chisq "<<chisq<<std::endl;//yzhang debug 
00056   return 0;
00057 }


Member Data Documentation

double MdcLine::chisq
 

double MdcLine::errmat
 

double MdcLine::intercept
 

int MdcLine::nPoint
 

double* MdcLine::resid
 

double* MdcLine::resid
 

double* MdcLine::sigma
 

double* MdcLine::sigma
 

double MdcLine::slope
 

double* MdcLine::x
 

double* MdcLine::x
 

double* MdcLine::y
 

double* MdcLine::y
 


The documentation for this class was generated from the following files:
Generated on Wed Feb 2 16:26:32 2011 for BOSS6.5.5 by  doxygen 1.3.9.1