#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) |
Definition at line 78 of file DifNumber.cxx.
References DifNumber::correlation().
00079 { return a.correlation(b,e); }
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 }