Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

TrkCompTrk Class Reference

#include <TrkCompTrk.h>

Inheritance diagram for TrkCompTrk:

TrkAbsFit TrkAbsFit List of all members.

Public Member Functions

const BFieldbField () const
const BFieldbField () 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 TrkCompTrkoperator= (const TrkCompTrk &right)
const TrkCompTrkoperator= (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 TrkDifTrajtraj () const
const TrkDifTrajtraj () 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

Constructor & Destructor Documentation

TrkCompTrk::TrkCompTrk const BesPointErr pos,
const BesVectorErr mom,
const HepMatrix &  xpCov,
int  charge,
double  chisq,
int  nDoF,
const BField bf
 

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 }

TrkCompTrk::TrkCompTrk const TrkCompTrk right  ) 
 

00047                                             : _bf(rhs._bf),_chisq(rhs._chisq),_nDof(rhs._nDof) {
00048 //---------------------------------------------
00049   _traj.reset((TrkSimpTraj*)rhs.traj().clone());
00050   _charge=rhs.charge();
00051 }

TrkCompTrk::~TrkCompTrk  )  [virtual]
 

00054                         {
00055 //----------------------------------------------------------------------
00056 }

TrkCompTrk::TrkCompTrk const BesPointErr pos,
const BesVectorErr mom,
const HepMatrix &  xpCov,
int  charge,
double  chisq,
int  nDoF,
const BField bf
 

TrkCompTrk::TrkCompTrk const TrkCompTrk right  ) 
 

virtual TrkCompTrk::~TrkCompTrk  )  [virtual]
 


Member Function Documentation

const BField& TrkCompTrk::bField  )  const [inline]
 

00036 {return *_bf;}

const BField& TrkCompTrk::bField  )  const [inline]
 

00036 {return *_bf;}

int TrkCompTrk::charge  )  const [virtual]
 

Implements TrkAbsFit.

int TrkCompTrk::charge  )  const [virtual]
 

Implements TrkAbsFit.

00089                          {
00090 //------------------------------------------------------------------------
00091   return _charge;
00092 }

double TrkCompTrk::chisq  )  const [virtual]
 

Implements TrkAbsFit.

double TrkCompTrk::chisq  )  const [virtual]
 

Implements TrkAbsFit.

00080                         {
00081 //------------------------------------------------------------------------
00082   return _chisq;
00083 }

Hep3Vector TrkCompTrk::direction double  fltL  )  const [virtual]
 

Implements TrkAbsFit.

Hep3Vector TrkCompTrk::direction double  fltL  )  const [virtual]
 

Implements TrkAbsFit.

00111                                        {
00112 //------------------------------------------------------------------------
00113   return traj().direction(fltL);
00114 }

BesVectorErr TrkCompTrk::directionErr double  fltL  )  const [virtual]
 

Implements TrkAbsFit.

BesVectorErr TrkCompTrk::directionErr double  fltL  )  const [virtual]
 

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 }

double TrkCompTrk::endValidRange  )  const [virtual]
 

Implements TrkAbsFit.

double TrkCompTrk::endValidRange  )  const [virtual]
 

Implements TrkAbsFit.

00175 {
00176  return traj().hiRange();
00177 }

virtual void TrkCompTrk::getAllCovs double  fltL,
HepSymMatrix &  xxCov,
HepSymMatrix &  ppCov,
HepMatrix &  xpCov
const [virtual]
 

Implements TrkAbsFit.

void TrkCompTrk::getAllCovs double  fltL,
HepSymMatrix &  xxCov,
HepSymMatrix &  ppCov,
HepMatrix &  xpCov
const [virtual]
 

Implements TrkAbsFit.

00219 {
00220   const BField& theField = bField();
00221   TrkMomCalculator::getAllCovs(*_traj, theField, fltL,
00222                                xxCov,ppCov,xpCov);
00223 }

virtual void TrkCompTrk::getAllWeights const HepPoint3D pt,
HepVector &  pos,
HepVector &  mom,
HepSymMatrix &  xxWeight,
HepSymMatrix &  ppWeight,
HepMatrix &  xpWeight
const [virtual]
 

virtual void TrkCompTrk::getAllWeights double  fltL,
HepVector &  pos,
HepVector &  mom,
HepSymMatrix &  xxWeight,
HepSymMatrix &  ppWeight,
HepMatrix &  xpWeight
const [virtual]
 

Implements TrkAbsFit.

void TrkCompTrk::getAllWeights const HepPoint3D pt,
HepVector &  pos,
HepVector &  mom,
HepSymMatrix &  xxWeight,
HepSymMatrix &  ppWeight,
HepMatrix &  xpWeight
const [virtual]
 

00245 {
00246   double fltL=0;
00247   TrkPoca poca(traj(),fltL, pt);
00248   fltL = poca.flt1();
00249   getAllWeights(fltL,pos,mom,xxWeight,ppWeight,xpWeight);
00250 }

void TrkCompTrk::getAllWeights double  fltL,
HepVector &  pos,
HepVector &  mom,
HepSymMatrix &  xxWeight,
HepSymMatrix &  ppWeight,
HepMatrix &  xpWeight
const [virtual]
 

Implements TrkAbsFit.

00231 {
00232   const BField& theField = bField();
00233   TrkMomCalculator::getAllWeights(*_traj, theField, fltL,
00234                                   pos,mom,xxWeight,ppWeight,xpWeight);
00235 
00236 }

Hep3Vector TrkCompTrk::momentum double  fltL = 0.  )  const [virtual]
 

Implements TrkAbsFit.

Hep3Vector TrkCompTrk::momentum double  fltL = 0.  )  const [virtual]
 

Implements TrkAbsFit.

00118 {
00119   return TrkMomCalculator::vecMom(*_traj, bField(), fltL);
00120 
00121 }

BesVectorErr TrkCompTrk::momentumErr double  fltL  )  const [virtual]
 

Implements TrkAbsFit.

BesVectorErr TrkCompTrk::momentumErr double  fltL  )  const [virtual]
 

Implements TrkAbsFit.

00153 {
00154   return TrkMomCalculator::errMom(*_traj, bField(), fltL);
00155 }

int TrkCompTrk::nDof  )  const [virtual]
 

Implements TrkAbsFit.

int TrkCompTrk::nDof  )  const [virtual]
 

Implements TrkAbsFit.

00073                        {
00074 //------------------------------------------------------------------------
00075   return _nDof;
00076 }

const TrkCompTrk& TrkCompTrk::operator= const TrkCompTrk right  ) 
 

const TrkCompTrk & TrkCompTrk::operator= const TrkCompTrk right  ) 
 

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 }

HepPoint3D TrkCompTrk::position double  fltL  )  const [virtual]
 

Implements TrkAbsFit.

HepPoint3D TrkCompTrk::position double  fltL  )  const [virtual]
 

Implements TrkAbsFit.

00104                                        {
00105 //------------------------------------------------------------------------
00106   return traj().position(fltL);
00107 }

BesPointErr TrkCompTrk::positionErr double  fltL  )  const [virtual]
 

Implements TrkAbsFit.

BesPointErr TrkCompTrk::positionErr double  fltL  )  const [virtual]
 

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 }

virtual HepMatrix TrkCompTrk::posmomCov double  fltL  )  const [virtual]
 

Implements TrkAbsFit.

HepMatrix TrkCompTrk::posmomCov double  fltL  )  const [virtual]
 

Implements TrkAbsFit.

00210 {
00211   const BField& theField = bField();
00212   return TrkMomCalculator::posmomCov(*_traj, theField, fltL);
00213 }

virtual void TrkCompTrk::print std::ostream  )  const [virtual]
 

Implements TrkAbsFit.

void TrkCompTrk::print std::ostream  )  const [virtual]
 

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 }

virtual void TrkCompTrk::printAll std::ostream  )  const [virtual]
 

Implements TrkAbsFit.

void TrkCompTrk::printAll std::ostream  )  const [virtual]
 

Implements TrkAbsFit.

00205 {
00206   print(ostr);
00207 }

double TrkCompTrk::pt double  fltL = 0.  )  const [virtual]
 

Implements TrkAbsFit.

double TrkCompTrk::pt double  fltL = 0.  )  const [virtual]
 

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 }

double TrkCompTrk::startValidRange  )  const [virtual]
 

Implements TrkAbsFit.

double TrkCompTrk::startValidRange  )  const [virtual]
 

Implements TrkAbsFit.

00169 {
00170   return traj().lowRange();
00171 }

const TrkDifTraj& TrkCompTrk::traj  )  const [virtual]
 

Implements TrkAbsFit.

const TrkDifTraj & TrkCompTrk::traj  )  const [virtual]
 

Implements TrkAbsFit.

00097                        {
00098 //------------------------------------------------------------------------
00099   return *_traj;
00100 }


Member Data Documentation

const BField* TrkCompTrk::_bf [private]
 

const BField* TrkCompTrk::_bf [private]
 

int TrkCompTrk::_charge [private]
 

double TrkCompTrk::_chisq [private]
 

int TrkCompTrk::_nDof [private]
 

std::auto_ptr<TrkSimpTraj> TrkCompTrk::_traj [private]
 

std::auto_ptr<TrkSimpTraj> TrkCompTrk::_traj [private]
 


The documentation for this class was generated from the following files:
Generated on Wed Feb 2 19:06:19 2011 for BOSS6.5.5 by  doxygen 1.3.9.1