#include <MdcSegInfoAxialO.h>
Inheritance diagram for MdcSegInfoAxialO:
Public Member Functions | |
MdcSegInfoAxialO () | |
~MdcSegInfoAxialO () | |
double | phi0 () const |
double | curv () const |
double | sigCurv () const |
double | sigPhi0 () const |
bool | parIsAngle (int i) const |
void | calcFromOrigin (const MdcSeg *parentSeg) |
void | calcFromOrigin (double phi, double slope, double rad, const double *inErr) |
const double * | errmat () const |
const double * | inverr () const |
double | par (int i) const |
double | arc () const |
void | plotSegInfo () const |
Protected Attributes | |
double | _par0 |
double | _par1 |
double | _errmat [3] |
double | _inverr [3] |
double | _arc |
Private Member Functions | |
MdcSegInfoAxialO & | operator= (const MdcSegInfoAxialO &) |
MdcSegInfoAxialO (const MdcSegInfoAxialO &) |
Definition at line 27 of file MdcSegInfoAxialO.h.
MdcSegInfoAxialO::MdcSegInfoAxialO | ( | ) | [inline] |
MdcSegInfoAxialO::~MdcSegInfoAxialO | ( | ) | [inline] |
MdcSegInfoAxialO::MdcSegInfoAxialO | ( | const MdcSegInfoAxialO & | ) | [private] |
double MdcSegInfo::arc | ( | ) | const [inline, inherited] |
Definition at line 44 of file MdcSegInfo.h.
References MdcSegInfo::_arc.
Referenced by MdcSegInfoSterO::calcStereo(), MdcSegGrouperSt::incompWithGroup(), and MdcSeg::plotSegAll().
00044 {return _arc;}
void MdcSegInfoAxialO::calcFromOrigin | ( | double | phi, | |
double | slope, | |||
double | rad, | |||
const double * | inErr | |||
) |
Definition at line 34 of file MdcSegInfoAxialO.cxx.
References MdcSegInfo::_errmat, MdcSegInfo::_inverr, MdcSegInfo::_par0, MdcSegInfo::_par1, ers::error, mdcTwoInv(), phi0(), and subSeperate::temp.
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 }
void MdcSegInfoAxialO::calcFromOrigin | ( | const MdcSeg * | parentSeg | ) |
Definition at line 67 of file MdcSegInfoAxialO.cxx.
References MdcSeg::errmat(), MdcSeg::phi(), MdcSuperLayer::rad0(), MdcSeg::slope(), and MdcSeg::superlayer().
Referenced by MdcSegGrouperAx::fillWithSegs().
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 }
double MdcSegInfoAxialO::curv | ( | void | ) | const [inline] |
Definition at line 34 of file MdcSegInfoAxialO.h.
References MdcSegInfo::_par1.
Referenced by MdcSegGrouperAx::incompWithSeg().
00034 {return _par1;}
const double* MdcSegInfo::errmat | ( | ) | const [inline, inherited] |
Definition at line 39 of file MdcSegInfo.h.
References MdcSegInfo::_errmat.
Referenced by MdcSegGrouper::calcParBySegs().
00039 {return _errmat;}
const double* MdcSegInfo::inverr | ( | ) | const [inline, inherited] |
Definition at line 40 of file MdcSegInfo.h.
References MdcSegInfo::_inverr.
Referenced by MdcSegGrouper::calcParBySegs().
00040 {return _inverr;}
MdcSegInfoAxialO& MdcSegInfoAxialO::operator= | ( | const MdcSegInfoAxialO & | ) | [private] |
double MdcSegInfo::par | ( | int | i | ) | const [inline, inherited] |
Definition at line 43 of file MdcSegInfo.h.
References MdcSegInfo::_par0, and MdcSegInfo::_par1.
Referenced by MdcSegGrouper::calcParBySegs(), MdcSegInfoSterO::calcStereo(), MdcSegGrouper::combineSegs(), MdcSeg::plotSegAll(), and MdcSegInfoSterO::zPosition().
bool MdcSegInfoAxialO::parIsAngle | ( | int | i | ) | const [virtual] |
Implements MdcSegInfo.
Definition at line 27 of file MdcSegInfoAxialO.cxx.
00027 { 00028 //--------------------------------------------------------------------------- 00029 assert (i >= 0 && i < 2); 00030 return (0 == i); //i.e., 0th parameter is an angle 00031 }
double MdcSegInfoAxialO::phi0 | ( | void | ) | const [inline] |
Definition at line 33 of file MdcSegInfoAxialO.h.
References MdcSegInfo::_par0.
Referenced by calcFromOrigin(), MdcSegGrouperAx::fillWithSegs(), and MdcSegGrouperAx::incompWithSeg().
00033 {return _par0;}
void MdcSegInfo::plotSegInfo | ( | ) | const [inherited] |
Definition at line 28 of file MdcSegInfo.cxx.
References MdcSegInfo::_arc, MdcSegInfo::_par0, and MdcSegInfo::_par1.
00028 { 00029 //------------------------------------------------------------------------ 00030 std::cout<<"seginfo: "<<_par0<<" "<<_par1<<" "<<_arc<< std::endl; 00031 }
double MdcSegInfoAxialO::sigCurv | ( | ) | const |
Definition at line 85 of file MdcSegInfoAxialO.cxx.
References MdcSegInfo::_errmat.
Referenced by MdcSegGrouperAx::incompWithSeg().
00085 { 00086 //------------------------------------------------------------------- 00087 return sqrt(_errmat[2]);}
double MdcSegInfoAxialO::sigPhi0 | ( | ) | const |
Definition at line 79 of file MdcSegInfoAxialO.cxx.
References MdcSegInfo::_errmat.
Referenced by MdcSegGrouperAx::incompWithSeg().
00079 { 00080 //------------------------------------------------------------------- 00081 return sqrt(_errmat[0]);}
double MdcSegInfo::_arc [protected, inherited] |
Definition at line 53 of file MdcSegInfo.h.
Referenced by MdcSegInfo::arc(), MdcSegInfoSterO::calcStereo(), and MdcSegInfo::plotSegInfo().
double MdcSegInfo::_errmat[3] [protected, inherited] |
Definition at line 51 of file MdcSegInfo.h.
Referenced by calcFromOrigin(), MdcSegInfoSterO::calcStereo(), MdcSegInfoCsmc::calcStraight(), MdcSegInfo::errmat(), sigCurv(), MdcSegInfoCsmc::sigD0(), MdcSegInfoCsmc::sigPhi0(), and sigPhi0().
double MdcSegInfo::_inverr[3] [protected, inherited] |
Definition at line 52 of file MdcSegInfo.h.
Referenced by calcFromOrigin(), MdcSegInfoSterO::calcStereo(), MdcSegInfoCsmc::calcStraight(), and MdcSegInfo::inverr().
double MdcSegInfo::_par0 [protected, inherited] |
Definition at line 49 of file MdcSegInfo.h.
Referenced by calcFromOrigin(), MdcSegInfoSterO::calcStereo(), MdcSegInfoCsmc::calcStraight(), MdcSegInfoCsmc::d0(), MdcSegInfo::par(), phi0(), MdcSegInfo::plotSegInfo(), and MdcSegInfoSterO::z0().
double MdcSegInfo::_par1 [protected, inherited] |
Definition at line 50 of file MdcSegInfo.h.
Referenced by calcFromOrigin(), MdcSegInfoSterO::calcStereo(), MdcSegInfoCsmc::calcStraight(), MdcSegInfoSterO::ct(), curv(), MdcSegInfo::par(), MdcSegInfoCsmc::phi0(), and MdcSegInfo::plotSegInfo().