19#include "MdcTrkRecon/MdcSegInfoCsmc.h"
22#include "MdcTrkRecon/mdcTwoInv.h"
23#include "MdcGeom/MdcSuperLayer.h"
24#include "MdcTrkRecon/MdcSeg.h"
25#include "MdcGeom/BesAngle.h"
33 assert (i >= 0 && i < 2);
39 double rad,
const double *inErr) {
61 double d0ovSlope = -
rad *
rad / sqrt( 1. + slope*slope *
rad*
rad );
62 double d0 = slope * d0ovSlope;
65 double d0ovRad =
d0 /
rad ;
67 d0ovRad = ( d0ovRad > 1.0 || d0ovRad < -1.0) ?
68 (d0ovRad+0.00001)/fabs(d0ovRad) : d0ovRad;
74 double dphi0ds = -d0ovSlope * sqrt( 1. - d0ovRad*d0ovRad ) /
rad;
75 double dd0ds = d0ovSlope * ( 1. - d0ovRad*d0ovRad );
78 _errmat[0] = inErr[2] * dd0ds * dd0ds;
82 _errmat[2] = inErr[2] * dphi0ds * dphi0ds + inErr[0] +
83 inErr[1] * 2. * dphi0ds;
86 _errmat[1] = inErr[2] * dd0ds * dphi0ds +
91 std::cout <<
" ErrMsg(warning) "
92 <<
"Failed to invert matrix -- MdcSegInfo::calcStraight" << endl
101 double slope = parentSeg->
slope();
103 double phi = parentSeg->
phi();
104 const double *inErr = parentSeg->
errmat();
int mdcTwoInv(double matrix[3], double invmat[3])
bool parIsAngle(int i) const
void calcStraight(double phi, double slope, double rad, const double *inErr)
const MdcSuperLayer * superlayer() const
const double * errmat() const