#include <TrkCompTrk.h>
Inheritance diagram for TrkCompTrk:
Public Member Functions | |
const BField & | bField () const |
const BField & | bField () const |
int | charge () const |
int | charge () const |
double | chisq () const |
double | chisq () const |
Hep3Vector | direction (double fltL) const |
Hep3Vector | direction (double fltL) const |
BesVectorErr | directionErr (double fltL) const |
BesVectorErr | directionErr (double fltL) const |
double | endValidRange () const |
double | endValidRange () const |
virtual void | getAllCovs (double fltL, HepSymMatrix &xxCov, HepSymMatrix &ppCov, HepMatrix &xpCov) const |
virtual void | getAllCovs (double fltL, HepSymMatrix &xxCov, HepSymMatrix &ppCov, HepMatrix &xpCov) const |
virtual void | getAllWeights (const HepPoint3D &pt, HepVector &pos, HepVector &mom, HepSymMatrix &xxWeight, HepSymMatrix &ppWeight, HepMatrix &xpWeight) const |
virtual void | getAllWeights (double fltL, HepVector &pos, HepVector &mom, HepSymMatrix &xxWeight, HepSymMatrix &ppWeight, HepMatrix &xpWeight) const |
virtual void | getAllWeights (const HepPoint3D &pt, HepVector &pos, HepVector &mom, HepSymMatrix &xxWeight, HepSymMatrix &ppWeight, HepMatrix &xpWeight) const |
virtual void | getAllWeights (double fltL, HepVector &pos, HepVector &mom, HepSymMatrix &xxWeight, HepSymMatrix &ppWeight, HepMatrix &xpWeight) const |
Hep3Vector | momentum (double fltL=0.) const |
Hep3Vector | momentum (double fltL=0.) const |
BesVectorErr | momentumErr (double fltL) const |
BesVectorErr | momentumErr (double fltL) const |
int | nDof () const |
int | nDof () const |
const TrkCompTrk & | operator= (const TrkCompTrk &right) |
const TrkCompTrk & | operator= (const TrkCompTrk &right) |
HepPoint3D | position (double fltL) const |
HepPoint3D | position (double fltL) const |
BesPointErr | positionErr (double fltL) const |
BesPointErr | positionErr (double fltL) const |
virtual HepMatrix | posmomCov (double fltL) const |
virtual HepMatrix | posmomCov (double fltL) const |
virtual void | print (std::ostream &) const |
virtual void | print (std::ostream &) const |
virtual void | printAll (std::ostream &) const |
virtual void | printAll (std::ostream &) const |
double | pt (double fltL=0.) const |
double | pt (double fltL=0.) const |
double | startValidRange () const |
double | startValidRange () const |
const TrkDifTraj & | traj () const |
const TrkDifTraj & | traj () const |
TrkCompTrk (const TrkCompTrk &right) | |
TrkCompTrk (const BesPointErr &pos, const BesVectorErr &mom, const HepMatrix &xpCov, int charge, double chisq, int nDoF, const BField *bf) | |
TrkCompTrk (const TrkCompTrk &right) | |
TrkCompTrk (const BesPointErr &pos, const BesVectorErr &mom, const HepMatrix &xpCov, int charge, double chisq, int nDoF, const BField *bf) | |
virtual | ~TrkCompTrk () |
virtual | ~TrkCompTrk () |
Private Attributes | |
const BField * | _bf |
const BField * | _bf |
int | _charge |
double | _chisq |
int | _nDof |
std::auto_ptr< TrkSimpTraj > | _traj |
std::auto_ptr< TrkSimpTraj > | _traj |
|
00031 : 00032 _chisq(chisq),_nDof(nDof) { 00033 //--------------------------------------------------------------------------- 00034 _bf = bf; 00035 _charge=charge; 00036 if(_charge!=0) { 00037 TrkExchangePar par1 = TrkHelixUtils::helixFromMomErr(pos,mom,xpCov,charge,bField()); 00038 _traj.reset( new HelixTraj(par1.params(), par1.covariance()) ); 00039 } 00040 else { 00041 _traj.reset( new NeutTraj(TrkHelixUtils::lineFromMomErr(pos,mom,xpCov,1,bField())) ); 00042 } 00043 }
|
|
00047 : _bf(rhs._bf),_chisq(rhs._chisq),_nDof(rhs._nDof) { 00048 //--------------------------------------------- 00049 _traj.reset((TrkSimpTraj*)rhs.traj().clone()); 00050 _charge=rhs.charge(); 00051 }
|
|
00054 {
00055 //----------------------------------------------------------------------
00056 }
|
|
|
|
|
|
|
|
00036 {return *_bf;}
|
|
00036 {return *_bf;}
|
|
Implements TrkAbsFit. |
|
Implements TrkAbsFit. 00089 { 00090 //------------------------------------------------------------------------ 00091 return _charge; 00092 }
|
|
Implements TrkAbsFit. |
|
Implements TrkAbsFit. 00080 { 00081 //------------------------------------------------------------------------ 00082 return _chisq; 00083 }
|
|
Implements TrkAbsFit. |
|
Implements TrkAbsFit. 00111 { 00112 //------------------------------------------------------------------------ 00113 return traj().direction(fltL); 00114 }
|
|
Implements TrkAbsFit. |
|
Implements TrkAbsFit. 00139 { 00140 // If getDFInfo is split up, use faster version - done JEA 020300 00141 DifPoint posD; 00142 DifVector dirD; 00143 traj().getDFInfo2(fltL, posD, dirD); 00144 HepMatrix err = dirD.errorMatrix( dirD.x.indepPar()->covariance() ); 00145 BesError symErr(3); 00146 symErr.assign(err); 00147 Hep3Vector dir(dirD.x.number(), dirD.y.number(), dirD.z.number()); 00148 return BesVectorErr(dir, symErr); 00149 }
|
|
Implements TrkAbsFit. |
|
Implements TrkAbsFit.
|
|
Implements TrkAbsFit. |
|
Implements TrkAbsFit. 00219 { 00220 const BField& theField = bField(); 00221 TrkMomCalculator::getAllCovs(*_traj, theField, fltL, 00222 xxCov,ppCov,xpCov); 00223 }
|
|
|
|
Implements TrkAbsFit. |
|
00245 { 00246 double fltL=0; 00247 TrkPoca poca(traj(),fltL, pt); 00248 fltL = poca.flt1(); 00249 getAllWeights(fltL,pos,mom,xxWeight,ppWeight,xpWeight); 00250 }
|
|
Implements TrkAbsFit. 00231 { 00232 const BField& theField = bField(); 00233 TrkMomCalculator::getAllWeights(*_traj, theField, fltL, 00234 pos,mom,xxWeight,ppWeight,xpWeight); 00235 00236 }
|
|
Implements TrkAbsFit. |
|
Implements TrkAbsFit. 00118 { 00119 return TrkMomCalculator::vecMom(*_traj, bField(), fltL); 00120 00121 }
|
|
Implements TrkAbsFit. |
|
Implements TrkAbsFit. 00153 { 00154 return TrkMomCalculator::errMom(*_traj, bField(), fltL); 00155 }
|
|
Implements TrkAbsFit. |
|
Implements TrkAbsFit. 00073 { 00074 //------------------------------------------------------------------------ 00075 return _nDof; 00076 }
|
|
|
|
00060 { 00061 //---------------------------------------------------------------------- 00062 if (&right == this) return *this; 00063 _bf = right._bf; 00064 _traj.reset((TrkSimpTraj*)right.traj().clone()); 00065 _chisq=right.chisq(); 00066 _nDof=right.nDof(); 00067 _charge=right.charge(); 00068 return *this; 00069 }
|
|
Implements TrkAbsFit. |
|
Implements TrkAbsFit. 00104 { 00105 //------------------------------------------------------------------------ 00106 return traj().position(fltL); 00107 }
|
|
Implements TrkAbsFit. |
|
Implements TrkAbsFit. 00125 { 00126 // If getDFInfo is split up, use faster version - done JEA 020300 00127 DifPoint posD; 00128 DifVector dirD; 00129 traj().getDFInfo2(fltL, posD, dirD); 00130 HepMatrix err = posD.errorMatrix( posD.x.indepPar()->covariance() ); 00131 BesError symErr(3); 00132 symErr.assign(err); 00133 HepPoint3D point(posD.x.number(), posD.y.number(), posD.z.number()); 00134 return BesPointErr(point, symErr); 00135 }
|
|
Implements TrkAbsFit. |
|
Implements TrkAbsFit. 00210 { 00211 const BField& theField = bField(); 00212 return TrkMomCalculator::posmomCov(*_traj, theField, fltL); 00213 }
|
|
Implements TrkAbsFit. |
|
Implements TrkAbsFit. 00181 { 00182 ostr << "Traj: "; 00183 if(_charge==-1 || _charge==1) { 00184 ostr << "Charged Particle -> Helix Trajectory" << endl; 00185 HelixTraj& theTraj=(HelixTraj&)traj(); 00186 ostr << " phi0=" << BesAngle(theTraj.phi0()).rad() << endl; 00187 ostr << " d0=" << theTraj.d0() << endl; 00188 ostr << " z0=" << theTraj.z0() << endl; 00189 ostr << " omega=" << theTraj.omega() << endl; 00190 ostr << " tanDip=" << theTraj.tanDip() << endl; 00191 } 00192 else { 00193 ostr << "Neutral Particle -> NeutTraj" << endl; 00194 NeutTraj& theTraj=(NeutTraj&)traj(); 00195 ostr << " phi0=" << BesAngle(theTraj.params().phi0()).rad() << endl; 00196 ostr << " d0=" << theTraj.params().d0() << endl; 00197 ostr << " z0=" << theTraj.params().z0() << endl; 00198 ostr << " p=" << theTraj.params().p() << endl; 00199 ostr << " tanDip=" << theTraj.params().tanDip() << endl; 00200 } 00201 }
|
|
Implements TrkAbsFit. |
|
Implements TrkAbsFit. 00205 { 00206 print(ostr); 00207 }
|
|
Implements TrkAbsFit. |
|
Implements TrkAbsFit. 00159 { 00160 return TrkMomCalculator::ptMom(*_traj, bField(), fltL); 00161 // This could probably be made more efficient. 00162 // Hep3Vector pVec = momentum(fltL); 00163 // return sqrt( pVec.x() * pVec.x() + pVec.y() * pVec.y() ); 00164 }
|
|
Implements TrkAbsFit. |
|
Implements TrkAbsFit.
|
|
Implements TrkAbsFit. |
|
Implements TrkAbsFit. 00097 { 00098 //------------------------------------------------------------------------ 00099 return *_traj; 00100 }
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|