#include <MdcSegInfoAxialO.h>
Inheritance diagram for MdcSegInfoAxialO:
Public Member Functions | |
double | arc () const |
double | arc () const |
void | calcFromOrigin (double phi, double slope, double rad, const double *inErr) |
void | calcFromOrigin (const MdcSeg *parentSeg) |
void | calcFromOrigin (double phi, double slope, double rad, const double *inErr) |
void | calcFromOrigin (const MdcSeg *parentSeg) |
double | curv () const |
double | curv () const |
const double * | errmat () const |
const double * | errmat () const |
const double * | inverr () const |
const double * | inverr () const |
MdcSegInfoAxialO () | |
MdcSegInfoAxialO () | |
double | par (int i) const |
double | par (int i) const |
bool | parIsAngle (int i) const |
bool | parIsAngle (int i) const |
double | phi0 () const |
double | phi0 () const |
void | plotSegInfo () const |
void | plotSegInfo () const |
double | sigCurv () const |
double | sigCurv () const |
double | sigPhi0 () const |
double | sigPhi0 () const |
~MdcSegInfoAxialO () | |
~MdcSegInfoAxialO () | |
Protected Attributes | |
double | _arc |
double | _errmat [3] |
double | _inverr [3] |
double | _par0 |
double | _par1 |
Private Member Functions | |
MdcSegInfoAxialO (const MdcSegInfoAxialO &) | |
MdcSegInfoAxialO (const MdcSegInfoAxialO &) | |
MdcSegInfoAxialO & | operator= (const MdcSegInfoAxialO &) |
MdcSegInfoAxialO & | operator= (const MdcSegInfoAxialO &) |
|
00030 { };
|
|
00031 { };
|
|
|
|
00030 { };
|
|
00031 { };
|
|
|
|
00044 {return _arc;}
|
|
00044 {return _arc;}
|
|
|
|
|
|
00035 { 00036 //------------------------------------------------------------------ 00037 00038 if (slope == 0.) slope = 0.00000001; 00039 double slinv = 1./slope; 00040 _par1 = slope / sqrt(1. + radius*radius * slope*slope); //curve 00041 double temp = 1. - _par1*_par1 * radius*radius; 00042 if (temp < 0.) temp = 0.; 00043 double dphi0ds = -radius * _par1 * sqrt(temp) * slinv; 00044 BesAngle phi0 = phi - asin(_par1 * radius); 00045 _par0 = phi0.posRad(); 00046 00047 // phi0: 00048 _errmat[0] = inErr[2] * dphi0ds * dphi0ds + inErr[0] + 00049 inErr[1] * 2. * dphi0ds; 00050 if (_errmat[0] < 0.) _errmat[0] = 0.; 00051 // curv: 00052 _errmat[2] = inErr[2] * _par1*_par1 * temp*temp * slinv*slinv; 00053 if (_errmat[2] < 0.) _errmat[2] = 0.; 00054 // phi0|curv: 00055 _errmat[1] = inErr[2] *_par1 * slinv * temp * dphi0ds + 00056 inErr[1] *_par1 * slinv * temp; 00057 int error = mdcTwoInv(_errmat, _inverr); 00058 if (error) { 00059 std::cout << " ErrMsg(warning) " 00060 << "Failed to invert matrix -- MdcSegInfo::calcFromOrigin" << endl 00061 << _errmat[0] << " " << _errmat[1] << " " << _errmat[2]<< endl; 00062 } 00063 }
|
|
00067 { 00068 //------------------------------------------------------------------- 00069 double slope = parentSeg->slope(); 00070 double radius = parentSeg->superlayer()->rad0(); 00071 double phi = parentSeg->phi(); 00072 const double *inErr = parentSeg->errmat(); 00073 00074 calcFromOrigin(phi, slope, radius, inErr); 00075 }
|
|
00033 {return _par1;}
|
|
00033 {return _par1;}
|
|
00039 {return _errmat;}
|
|
00039 {return _errmat;}
|
|
00040 {return _inverr;}
|
|
00040 {return _inverr;}
|
|
|
|
|
|
00043 {return (0 == i) ? _par0 : _par1;}
|
|
00043 {return (0 == i) ? _par0 : _par1;}
|
|
Implements MdcSegInfo. |
|
Implements MdcSegInfo. 00027 { 00028 //--------------------------------------------------------------------------- 00029 assert (i >= 0 && i < 2); 00030 return (0 == i); //i.e., 0th parameter is an angle 00031 }
|
|
00034 {return _par0;}
|
|
00034 {return _par0;}
|
|
|
|
00028 { 00029 //------------------------------------------------------------------------ 00030 std::cout<<"seginfo: "<<_par0<<" "<<_par1<<" "<<_arc<< std::endl; 00031 }
|
|
|
|
00085 { 00086 //------------------------------------------------------------------- 00087 return sqrt(_errmat[2]);}
|
|
|
|
00079 { 00080 //------------------------------------------------------------------- 00081 return sqrt(_errmat[0]);}
|
|
|
|
|
|
|
|
|
|
|