/home/bes3soft/bes3soft/Boss/7.0.2/dist/7.0.2/Reconstruction/MdcPatRec/MdcRecoUtil/MdcRecoUtil-00-01-08/src/DifNumber.cxx File Reference

#include "MdcRecoUtil/DifNumber.h"
#include "MdcRecoUtil/DifIndepPar.h"

Go to the source code of this file.

Functions

double correlation (const DifNumber &a, const DifNumber &b)
double correlation (const DifNumber &a, const DifNumber &b, const HepSymMatrix &e)
DifNumber solveQuad (const DifNumber &a, const DifNumber &b, const DifNumber &c, int pref, Code &code)

Variables

const DifNumber zero (0.0)
const DifNumber one (1.0)


Function Documentation

double correlation ( const DifNumber a,
const DifNumber b,
const HepSymMatrix &  e 
)

Definition at line 78 of file DifNumber.cxx.

References DifNumber::correlation().

00079 { return a.correlation(b,e); }

double correlation ( const DifNumber a,
const DifNumber b 
)

Definition at line 72 of file DifNumber.cxx.

References DifNumber::correlation(), DifIndepPar::covariance(), and DifNumber::indepPar().

Referenced by TrkMomCalculator::calcCurvAllCovsOLD(), TrkMomCalculator::calcCurvPosmomCov(), TrkMomCalculator::calcNeutAllCovs(), TrkMomCalculator::calcNeutPosmomCov(), DifVector::errorMatrix(), and DifFourVector::errorMatrix().

00073 { 
00074   return (a.indepPar()==0||b.indepPar()==0||a.indepPar()!=b.indepPar())?0:a.correlation(b,a.indepPar()->covariance()); 
00075 }

DifNumber solveQuad ( const DifNumber a,
const DifNumber b,
const DifNumber c,
int  pref,
Code code 
)

Definition at line 91 of file DifNumber.cxx.

References DifNumber::number(), s, Code::setFail(), and Code::setSuccess().

00096 {
00097   DifNumber descr=b*b-4.0*a*c;
00098   if(descr<0.0) {               // solution not real
00099     code.setFail(1341);
00100     return DifNumber(0.0);
00101   }
00102   if(a.number()==0.0){
00103     if(b.number()==0.0) {
00104       code.setFail(1342);
00105       return DifNumber(0.0);
00106     }
00107     code.setSuccess(40);
00108     return -c/b+a*c/pow(b,3);
00109   }
00110   code.setSuccess(40);
00111   descr=sqrt(descr);
00112   DifNumber s=-b;
00113 
00114   if(pref==+1) {                // positive solution
00115     s+=descr;
00116   }else if(pref==-1){           // negative solution
00117     s-=descr;
00118   }else if(pref==0) {           // smallest solution
00119     if(s>0.0) {s-=descr;}else {s+=descr;}
00120   }else {                       // illegal prefrence
00121     code.setFail(1343);
00122     return DifNumber(0.0);
00123   }
00124   s/=2.0*a;
00125   return s;
00126 }


Variable Documentation

const DifNumber one(1.0)

const DifNumber zero(0.0)


Generated on Tue Nov 29 23:16:55 2016 for BOSS_7.0.2 by  doxygen 1.4.7