#include <DifNumber.h>
Public Member Functions | |
DifNumber () | |
DifNumber (double s, int npar=0) | |
DifNumber (double s, const HepVector &d) | |
DifNumber (double s, int i, double di, int npar) | |
DifNumber (double s, int i, int npar) | |
DifNumber (double s, const DifIndepPar *indeppar) | |
DifNumber (double s, int i, const DifIndepPar *indepar) | |
DifNumber (const DifNumber &s) | |
virtual | ~DifNumber () |
void | setNumber (double i) |
void | setNPar (int i) |
void | setDerivatives (const HepVector &d) |
void | setDerivative (int i, double value) |
void | zeroDerivatives () |
void | setIndepPar (const DifIndepPar *par) |
void | extendPar (int nnew) |
double | number () const |
double & | gimeNumber () |
HepVector | derivatives () const |
double | derivative (int i) const |
int | nMax () |
int | nPar () const |
const DifIndepPar * | indepPar () const |
double | error (const HepSymMatrix &e) const |
double | error () const |
void | tickle () const |
void | print () const |
DifNumber & | operator+= (const DifNumber &a) |
DifNumber & | operator-= (const DifNumber &a) |
DifNumber & | operator *= (const DifNumber &a) |
DifNumber & | operator/= (const DifNumber &a) |
DifNumber & | operator= (const DifNumber &a) |
DifNumber | operator- () const |
DifNumber & | operator+= (const double &a) |
DifNumber & | operator-= (const double &a) |
DifNumber & | operator *= (const double &a) |
DifNumber & | operator/= (const double &a) |
DifNumber & | operator= (const double &a) |
DifNumber & | inverse () |
DifNumber & | flipsign () |
DifNumber & | absolute () |
void | cosAndSin (DifNumber &c, DifNumber &s) const |
DifNumber & | squareRoot () |
DifNumber & | mod (double lo, double hi) |
DifNumber & | arcTangent (const DifNumber &x) |
DifNumber & | power (double p) |
DifNumber & | power (const DifNumber &p) |
double | sign () const |
double | correlation (const DifNumber &b, const HepSymMatrix &e) const |
double | correlation (const DifNumber &b) const |
void | sumMatrix (HepMatrix &m) const |
void | fetchNumber (double &n) const |
void | fetchDerivatives (HepVector &v) const |
Private Types | |
_nmax = 100 | |
enum | { _nmax = 100 } |
Private Member Functions | |
DifNumber (double newval, const DifNumber &old, double factor=0.0) | |
DifNumber & | copyDerivs (const DifNumber &n) |
DifNumber & | scaleDerivs (const DifNumber &n, double factor) |
DifNumber & | copyDerivs (const HepVector &v) |
DifNumber & | check (const DifNumber &a) |
DifNumber & | setLike (const DifNumber &a) |
Private Attributes | |
double | _number |
int | _npar |
const DifIndepPar * | _indepPar |
double | _derivatives [_nmax] |
Friends | |
DifNumber | operator+ (const DifNumber &a, const DifNumber &b) |
DifNumber | operator- (const DifNumber &a, const DifNumber &b) |
DifNumber | operator * (const DifNumber &a, const DifNumber &b) |
DifNumber | operator/ (const DifNumber &a, const DifNumber &b) |
DifNumber | operator+ (const DifNumber &a, const double &b) |
DifNumber | operator- (const DifNumber &a, const double &b) |
DifNumber | operator * (const DifNumber &a, const double &b) |
DifNumber | operator/ (const DifNumber &a, const double &b) |
DifNumber | operator+ (const double &a, const DifNumber &b) |
DifNumber | operator- (const double &a, const DifNumber &b) |
DifNumber | operator * (const double &a, const DifNumber &b) |
DifNumber | operator/ (const double &a, const DifNumber &b) |
bool | operator> (const DifNumber &a, const DifNumber &b) |
bool | operator> (const DifNumber &a, const double &b) |
bool | operator> (const double &a, const DifNumber &b) |
bool | operator< (const DifNumber &a, const DifNumber &b) |
bool | operator< (const DifNumber &a, const double &b) |
bool | operator< (const double &a, const DifNumber &b) |
bool | operator>= (const DifNumber &a, const DifNumber &b) |
bool | operator>= (const DifNumber &a, const double &b) |
bool | operator>= (const double &a, const DifNumber &b) |
bool | operator<= (const DifNumber &a, const DifNumber &b) |
bool | operator<= (const DifNumber &a, const double &b) |
bool | operator<= (const double &a, const DifNumber &b) |
bool | operator== (const DifNumber &a, const DifNumber &b) |
bool | operator== (const DifNumber &a, const double &b) |
bool | operator== (const double &a, const DifNumber &b) |
bool | operator!= (const DifNumber &a, const DifNumber &b) |
bool | operator!= (const DifNumber &a, const double &b) |
bool | operator!= (const double &a, const DifNumber &b) |
DifNumber | sin (const DifNumber &a) |
DifNumber | cos (const DifNumber &a) |
DifNumber | tan (const DifNumber &a) |
DifNumber | sec (const DifNumber &a) |
DifNumber | asin (const DifNumber &a) |
DifNumber | acos (const DifNumber &a) |
DifNumber | atan (const DifNumber &a) |
DifNumber | atan2 (const DifNumber &y, const DifNumber &x) |
DifNumber | atan2 (const DifNumber &y, const double &x) |
DifNumber | atan2 (const double &y, const DifNumber &x) |
DifNumber | exp (const DifNumber &a) |
DifNumber | cosh (const DifNumber &a) |
DifNumber | sinh (const DifNumber &a) |
DifNumber | tanh (const DifNumber &a) |
DifNumber | sqrt (const DifNumber &a) |
DifNumber | log (const DifNumber &a) |
DifNumber | fabs (const DifNumber &a) |
DifNumber | pow (const DifNumber &a, const DifNumber &b) |
DifNumber | pow (const DifNumber &a, int i) |
DifNumber | pow (const DifNumber &a, float i) |
DifNumber | pow (const DifNumber &a, double i) |
double | correlation (const DifNumber &a, const DifNumber &b, const HepSymMatrix &e) |
double | correlation (const DifNumber &a, const DifNumber &b) |
Definition at line 42 of file DifNumber.h.
anonymous enum [private] |
DifNumber::DifNumber | ( | ) | [inline] |
Referenced by operator-().
DifNumber::DifNumber | ( | double | s, | |
int | npar = 0 | |||
) | [inline, explicit] |
DifNumber::DifNumber | ( | double | s, | |
const HepVector & | d | |||
) | [inline] |
DifNumber::DifNumber | ( | double | s, | |
int | i, | |||
double | di, | |||
int | npar | |||
) | [inline] |
DifNumber::DifNumber | ( | double | s, | |
int | i, | |||
int | npar | |||
) | [inline] |
DifNumber::DifNumber | ( | double | s, | |
const DifIndepPar * | indeppar | |||
) | [inline] |
DifNumber::DifNumber | ( | double | s, | |
int | i, | |||
const DifIndepPar * | indepar | |||
) | [inline] |
DifNumber::DifNumber | ( | double | newval, | |
const DifNumber & | old, | |||
double | factor = 0.0 | |||
) | [inline, private] |
DifNumber::DifNumber | ( | const DifNumber & | s | ) | [inline] |
virtual DifNumber::~DifNumber | ( | ) | [inline, virtual] |
DifNumber& DifNumber::absolute | ( | ) | [inline] |
Definition at line 122 of file DifNumber.h.
References _number, and flipsign().
Referenced by TrkMomCalculator::calcCurvAllCovsOLD(), TrkMomCalculator::calcCurvAllWeightsOLD(), TrkMomCalculator::calcCurvErrMom(), and TrkMomCalculator::calcCurvPosmomCov().
DifNumber& DifNumber::copyDerivs | ( | const HepVector & | v | ) | [inline, private] |
Referenced by setDerivatives().
double DifNumber::correlation | ( | const DifNumber & | b | ) | const |
Definition at line 66 of file DifNumber.cxx.
References correlation(), and indepPar().
00066 { 00067 if(indepPar()==0) return 0.0; 00068 if(b.indepPar()!=indepPar()) return 0.0; 00069 return correlation(b,indepPar()->covariance()); 00070 }
double DifNumber::correlation | ( | const DifNumber & | b, | |
const HepSymMatrix & | e | |||
) | const |
Definition at line 53 of file DifNumber.cxx.
References derivative(), error(), genRecEmupikp::i, ganga-rec::j, and nPar().
Referenced by correlation(), correlation(), and error().
00053 { 00054 assert(e.num_col()==nPar()); 00055 assert(e.num_row()==b.nPar()); 00056 double error = 0.; 00057 for(int i=1; i<=nPar(); i++) { 00058 for(int j=1; j<=b.nPar(); j++) { 00059 error+=derivative(i)*e(i,j)*b.derivative(j); 00060 } 00061 } 00062 return error; 00063 }
double DifNumber::derivative | ( | int | i | ) | const [inline] |
Definition at line 90 of file DifNumber.h.
References _derivatives.
Referenced by correlation(), fetchDerivatives(), DifVector::jacobian(), DifFourVector::jacobian(), and print().
00090 {return _derivatives[i-1];}
HepVector DifNumber::derivatives | ( | ) | const |
Definition at line 46 of file DifNumber.cxx.
References fetchDerivatives(), nPar(), and subSeperate::temp.
Referenced by TrkDifPoca::derivs(), and TrkRep::positionErr().
00046 { 00047 HepVector temp(nPar()); 00048 fetchDerivatives(temp); 00049 return temp; 00050 }
double DifNumber::error | ( | ) | const |
double DifNumber::error | ( | const HepSymMatrix & | e | ) | const |
Definition at line 32 of file DifNumber.cxx.
References correlation(), and sqrt.
00032 { 00033 return sqrt(correlation(*this,e)); 00034 }
void DifNumber::extendPar | ( | int | nnew | ) | [inline] |
void DifNumber::fetchDerivatives | ( | HepVector & | v | ) | const |
Definition at line 41 of file DifNumber.cxx.
References derivative(), genRecEmupikp::i, nPar(), and v.
Referenced by derivatives(), and TrkDifPoca::fetchDerivs().
00041 { 00042 assert(v.num_row()==nPar()); 00043 for(int i=1; i<=nPar(); i++) {v(i)=derivative(i);} 00044 }
void DifNumber::fetchNumber | ( | double & | n | ) | const [inline] |
DifNumber& DifNumber::flipsign | ( | ) | [inline] |
Referenced by absolute(), and TrkDifPoca::calcDist().
double& DifNumber::gimeNumber | ( | ) | [inline] |
const DifIndepPar* DifNumber::indepPar | ( | ) | const [inline] |
Definition at line 93 of file DifNumber.h.
References _indepPar.
Referenced by TrkMomCalculator::calcCurvAllCovsOLD(), TrkMomCalculator::calcCurvAllWeightsOLD(), TrkMomCalculator::calcCurvErrMom(), TrkMomCalculator::calcCurvPosmomCov(), TrkMomCalculator::calcNeutAllCovs(), TrkMomCalculator::calcNeutAllWeights(), TrkMomCalculator::calcNeutErrMom(), TrkMomCalculator::calcNeutPosmomCov(), correlation(), correlation(), TrkRep::directionErr(), TrkCompTrk::directionErr(), error(), TrkRep::positionErr(), and TrkCompTrk::positionErr().
00093 {return _indepPar;}
DifNumber& DifNumber::inverse | ( | ) | [inline] |
DifNumber& DifNumber::mod | ( | double | lo, | |
double | hi | |||
) | [inline] |
Referenced by TrkCircleTraj::getDFInfo(), HelixTraj::getDFInfo(), TrkCircleTraj::getDFInfo2(), and HelixTraj::getDFInfo2().
int DifNumber::nMax | ( | ) | [inline] |
int DifNumber::nPar | ( | ) | const [inline] |
Definition at line 92 of file DifNumber.h.
References _npar.
Referenced by correlation(), derivatives(), fetchDerivatives(), DifVector::jacobian(), DifFourVector::jacobian(), DifArray::jacobian(), print(), and zeroDerivatives().
00092 {return _npar;}
double DifNumber::number | ( | void | ) | const [inline] |
Definition at line 87 of file DifNumber.h.
References _number.
Referenced by TrkMomCalculator::calcCurvAllWeightsOLD(), TrkMomCalculator::calcCurvErrMom(), TrkDifPoca::calcDist(), TrkMomCalculator::calcNeutAllCovs(), TrkMomCalculator::calcNeutAllWeights(), TrkMomCalculator::calcNeutErrMom(), TrkRep::directionErr(), TrkCompTrk::directionErr(), TrkDifPoca::doca(), fetchNumber(), TrkRep::positionErr(), TrkCompTrk::positionErr(), print(), and solveQuad().
00087 {return _number;}
DifNumber& DifNumber::operator *= | ( | const double & | a | ) | [inline] |
DifNumber& DifNumber::operator+= | ( | const double & | a | ) | [inline] |
DifNumber DifNumber::operator- | ( | ) | const [inline] |
Definition at line 109 of file DifNumber.h.
References DifNumber().
00110 { return DifNumber(*this).flipsign(); } // unary minus
DifNumber& DifNumber::operator-= | ( | const double & | a | ) | [inline] |
DifNumber& DifNumber::operator/= | ( | const double & | a | ) | [inline] |
DifNumber& DifNumber::operator= | ( | const double & | a | ) | [inline] |
DifNumber& DifNumber::power | ( | double | p | ) | [inline] |
void DifNumber::print | ( | ) | const |
Definition at line 81 of file DifNumber.cxx.
References derivative(), genRecEmupikp::i, nPar(), and number().
00081 { 00082 cout << "number:" << number() << endl; 00083 cout << "npar:" << nPar() << endl; 00084 for(int i=1; i<=nPar(); i++) { 00085 cout << "derivative(" << i << "):" << derivative(i) << endl; 00086 } 00087 }
void DifNumber::setDerivative | ( | int | i, | |
double | value | |||
) | [inline] |
Definition at line 81 of file DifNumber.h.
References _derivatives.
Referenced by zeroDerivatives().
00081 { _derivatives[i-1]=value;}
void DifNumber::setDerivatives | ( | const HepVector & | d | ) | [inline] |
void DifNumber::setIndepPar | ( | const DifIndepPar * | par | ) | [inline] |
Definition at line 83 of file DifNumber.h.
References _indepPar.
Referenced by TrkDifLineTraj::getDFInfo(), TrkCircleTraj::getDFInfo(), NeutTraj::getDFInfo(), HelixTraj::getDFInfo(), TrkCircleTraj::getDFInfo2(), and HelixTraj::getDFInfo2().
00083 { _indepPar=par;}
void DifNumber::setNPar | ( | int | i | ) | [inline] |
Definition at line 79 of file DifNumber.h.
References _npar.
Referenced by DifArray::copy(), and DifArray::zero().
void DifNumber::setNumber | ( | double | i | ) | [inline] |
double DifNumber::sign | ( | ) | const [inline] |
Definition at line 130 of file DifNumber.h.
References _number.
00130 { return _number>=0 ? 1 : -1; }
DifNumber& DifNumber::squareRoot | ( | ) | [inline] |
void DifNumber::sumMatrix | ( | HepMatrix & | m | ) | const |
void DifNumber::tickle | ( | ) | const [inline] |
void DifNumber::zeroDerivatives | ( | ) | [inline] |
Definition at line 72 of file DifNumber.cxx.
00073 { 00074 return (a.indepPar()==0||b.indepPar()==0||a.indepPar()!=b.indepPar())?0:a.correlation(b,a.indepPar()->covariance()); 00075 }
Definition at line 209 of file DifNumber.h.
Referenced by error().
00210 { return DifNumber(a).squareRoot(); }
double DifNumber::_derivatives[_nmax] [private] |
const DifIndepPar* DifNumber::_indepPar [private] |
int DifNumber::_npar [private] |
double DifNumber::_number [private] |
Definition at line 232 of file DifNumber.h.
Referenced by absolute(), gimeNumber(), number(), setNumber(), and sign().