#include "THaGoldenTrack.h"
#include "THaSpectrometer.h"
#include "THaTrack.h"
#include "TClonesArray.h"
#include "VarDef.h"
ClassImp(THaGoldenTrack)
THaGoldenTrack::THaGoldenTrack( const char* name, const char* description,
const char* spectro ) :
THaPhysicsModule(name,description), fIndex(-1), fTrack(NULL),
fSpectroName(spectro), fSpectro(NULL)
{
}
THaGoldenTrack::~THaGoldenTrack()
{
DefineVariables( kDelete );
}
THaAnalysisObject::EStatus THaGoldenTrack::Init( const TDatime& run_time )
{
if( THaPhysicsModule::Init( run_time ) != kOK )
return fStatus;
fSpectro = static_cast<THaSpectrometer*>
( FindModule( fSpectroName.Data(), "THaSpectrometer"));
return fStatus;
}
Int_t THaGoldenTrack::DefineVariables( EMode mode )
{
if( mode == kDefine && fIsSetup ) return kOK;
fIsSetup = ( mode == kDefine );
const char* var_prefix = "fTrkIfo.";
const RVarDef var1[] = {
{ "x", "Target x coordinate", "fX"},
{ "y", "Target y coordinate", "fY"},
{ "th", "Tangent of target theta angle", "fTheta"},
{ "ph", "Tangent of target phi angle", "fPhi"},
{ "dp", "Target delta", "fDp"},
{ "p", "Lab momentum x (GeV)", "fP"},
{ "px", "Lab momentum x (GeV)", "GetPx()"},
{ "py", "Lab momentum y (GeV)", "GetPy()"},
{ "pz", "Lab momentum z (GeV)", "GetPz()"},
{ "ok", "Data valid status flag (1=ok)", "fOK" },
{ 0 }
};
DefineVarsFromList( var1, mode, var_prefix );
const RVarDef var2[] = {
{ "index", "Index of Golden Track", "fIndex" },
{ 0 }
};
DefineVarsFromList( var2, mode );
return 0;
}
Int_t THaGoldenTrack::Process( const THaEvData& )
{
if( !IsOK() ) return -1;
fTrack = fSpectro->GetGoldenTrack();
if( !fTrack ) return 1;
if( !(fTrack->HasTarget())) return 2;
fTrkIfo = *fTrack;
Int_t ntracks = fSpectro->GetNTracks();
if( ntracks == 1 )
fIndex = 0;
else {
TClonesArray* tracks = fSpectro->GetTracks();
for( Int_t i=0; i<ntracks; i++ ) {
THaTrack* theTrack = static_cast<THaTrack*>( tracks->At(i));
if( theTrack == fTrack ) {
fIndex = i;
break;
}
}
}
fDataValid = true;
return 0;
}
Last change: Sat Nov 7 21:26:47 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.