BOSS 8.0.0
BESIII Offline Software System
Loading...
Searching...
No Matches
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

◆ correlation() [1/2]

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

Definition at line 69 of file DifNumber.cxx.

70{
71 return ( a.indepPar() == 0 || b.indepPar() == 0 || a.indepPar() != b.indepPar() )
72 ? 0
73 : a.correlation( b, a.indepPar()->covariance() );
74}
double correlation(const DifNumber &b, const HepSymMatrix &e) const
Definition DifNumber.cxx:51

Referenced by DifFourVector::errorMatrix(), DifVector::errorMatrix(), and sAph1().

◆ correlation() [2/2]

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

Definition at line 78 of file DifNumber.cxx.

80{
81 return a.correlation( b, e );
82}

◆ solveQuad()

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

Definition at line 91 of file DifNumber.cxx.

96{
97 DifNumber descr = b * b - 4.0 * a * c;
98 if ( descr < 0.0 )
99 { // solution not real
100 code.setFail( 1341 );
101 return DifNumber( 0.0 );
102 }
103 if ( a.number() == 0.0 )
104 {
105 if ( b.number() == 0.0 )
106 {
107 code.setFail( 1342 );
108 return DifNumber( 0.0 );
109 }
110 code.setSuccess( 40 );
111 return -c / b + a * c / pow( b, 3 );
112 }
113 code.setSuccess( 40 );
114 descr = sqrt( descr );
115 DifNumber s = -b;
116
117 if ( pref == +1 )
118 { // positive solution
119 s += descr;
120 }
121 else if ( pref == -1 )
122 { // negative solution
123 s -= descr;
124 }
125 else if ( pref == 0 )
126 { // smallest solution
127 if ( s > 0.0 ) { s -= descr; }
128 else { s += descr; }
129 }
130 else
131 { // illegal prefrence
132 code.setFail( 1343 );
133 return DifNumber( 0.0 );
134 }
135 s /= 2.0 * a;
136 return s;
137}
XmlRpcServer s

Variable Documentation

◆ one

const DifNumber one(1.0) ( 1. 0)
extern

◆ zero

const DifNumber zero(0.0) ( 0. 0)
extern