#include "THaTrack.h"
#include "THaCluster.h"
#include "THaTrackID.h"
#include <iostream>
using namespace std;
const Double_t THaTrack::kBig = 1e38;
THaTrack::~THaTrack()
{
delete fID;
}
void THaTrack::Clear( const Option_t* opt )
{
if( opt && (*opt == 'F') ) {
fTheta = fPhi = fX = fY = fP = fDp = kBig;
fRX = fRY = fRTheta = fRPhi = kBig;
fTX = fTY = fTTheta = fTPhi = kBig;
fDX = fDY = fDTheta = fDPhi = kBig;
fNclusters = fFlag = fType = 0;
if( fPIDinfo ) fPIDinfo->Clear( opt );
fPvect.SetXYZ( kBig, kBig, kBig );
fVertex.SetXYZ( kBig, kBig, kBig );
fVertexError.SetXYZ( kBig, kBig, kBig );
fPathl = fTime = fdTime = fBeta = fdBeta = kBig;
fChi2 = kBig; fNDoF = 0;
memset( fClusters, 0, kMAXCL*sizeof(THaCluster*) );
}
delete fID; fID = 0;
}
Int_t THaTrack::AddCluster( THaCluster* c )
{
if( fNclusters >= kMAXCL )
return 1;
fClusters[ fNclusters++ ] = c;
return 0;
}
void THaTrack::Print( Option_t* opt ) const
{
TObject::Print( opt );
cout << "Momentum = " << fP << " GeV/c\n";
cout << "x_fp = " << fX << " m\n";
cout << "y_fp = " << fY << " m\n";
cout << "theta_fp = " << fTheta << " rad\n";
cout << "phi_fp = " << fPhi << " rad\n";
for( int i=0; i<fNclusters; i++ )
fClusters[i]->Print();
if( fPIDinfo ) fPIDinfo->Print( opt );
}
static Double_t SafeNDoF( Int_t dof )
{
if( dof <= 0 )
return 1e-10;
return static_cast<Double_t>(dof);
}
Int_t THaTrack::Compare(const TObject * obj) const
{
const THaTrack* tr = dynamic_cast<const THaTrack*>(obj);
if (!tr) return 0;
Double_t v1 = GetChi2() / SafeNDoF( GetNDoF() );
Double_t v2 = tr->GetChi2()/ SafeNDoF( tr->GetNDoF() );
if( v1<v2 ) return -1;
else if( v1==v2 ) return 0;
else return 1;
}
ClassImp(THaTrack)
Last change: Sat Nov 7 21:26:52 2009
Last generated: 2009-11-07 21:26
This page has been automatically generated. If you have any comments or suggestions about the page layout send a mail to ROOT support, or contact the developers with any questions or problems regarding ROOT.