#include "AliEveTrack.h"
#include "AliESDtrack.h"
#include "AliAODTrack.h"
#include <TROOT.h>
#include <TMath.h>
ClassImp(AliEveTrack)
AliEveTrack::AliEveTrack() :
TEveTrack()
{
}
AliEveTrack::AliEveTrack(TParticle* t, Int_t label, TEveTrackPropagator* prop) :
TEveTrack(t, label, prop)
{
}
AliEveTrack::AliEveTrack(TEveMCTrack* t, TEveTrackPropagator* prop) :
TEveTrack(t, prop)
{
}
AliEveTrack::AliEveTrack(TEveRecTrack* t, TEveTrackPropagator* prop) :
TEveTrack(t, prop)
{
}
AliEveTrack::AliEveTrack(AliESDtrack* t, TEveTrackPropagator* prop) :
TEveTrack()
{
Double_t buf[3];
t->GetXYZ(buf); fV.Set(buf);
t->GetPxPyPz(buf); fP.Set(buf);
Double_t ep = t->GetP(), mc = t->GetMass();
fBeta = ep/TMath::Sqrt(ep*ep + mc*mc);
fCharge = TMath::Nint(t->GetSign());
fLabel = t->GetLabel();
fIndex = t->GetID();
SetPropagator(prop);
}
AliEveTrack::AliEveTrack(AliAODTrack* t, TEveTrackPropagator* prop) :
TEveTrack()
{
Double_t buf[3];
t->GetXYZ(buf); fV.Set(buf);
t->PxPyPz(buf); fP.Set(buf);
fCharge= t->Charge();
fLabel = t->GetLabel();
fIndex = t->GetID();
SetPropagator(prop);
}
AliEveTrack::AliEveTrack(const AliEveTrack& t) :
TEveTrack(t)
{
}
AliEveTrack::~AliEveTrack()
{
}
void AliEveTrack::SetStartParams(const AliExternalTrackParam* tp)
{
Double_t buf[3];
tp->GetXYZ(buf); fV.Set(buf);
tp->PxPyPz(buf); fP.Set(buf);
}
void AliEveTrack::ImportHits()
{
TEveUtil::LoadMacro("hits_from_label.C");
gROOT->ProcessLine(Form("hits_from_label(%d, (TEveElement*)%p);",
fLabel, this));
}
void AliEveTrack::ImportClustersFromLabel()
{
TEveUtil::LoadMacro("clusters_from_label.C");
gROOT->ProcessLine(Form("clusters_from_label(%d, (TEveElement*)%p);",
fLabel, this));
}
void AliEveTrack::ImportClustersFromIndex()
{
static const TEveException kEH("AliEveTrack::ImportClustersFromIndex ");
if (fIndex == kMinInt)
throw kEH + "index not set.";
TEveUtil::LoadMacro("clusters_from_index.C");
gROOT->ProcessLine(Form("clusters_from_index(%d, (TEveElement*)%p);",
fIndex, this));
}
void AliEveTrack::ImportKine()
{
static const TEveException kEH("AliEveTrack::ImportKine ");
if (fLabel == kMinInt)
throw kEH + "label not set.";
Int_t label;
if (fLabel < 0) {
Warning(kEH, "label negative, taking absolute value.");
label = -fLabel;
} else {
label = fLabel;
}
TEveUtil::LoadMacro("kine_tracks.C");
gROOT->ProcessLine(Form("kine_track(%d, kTRUE, kTRUE, kTRUE, kTRUE, (TEveElement*)%p);",
label, this));
}
void AliEveTrack::ImportKineWithArgs(Bool_t importMother, Bool_t importDaugters,
Bool_t colorPdg, Bool_t recurse)
{
static const TEveException kEH("AliEveTrack::ImportKineWithArgs ");
if (fLabel == kMinInt)
throw kEH + "label not set.";
Int_t label;
if (fLabel < 0) {
Warning(kEH, "label negative, taking absolute value.");
label = -fLabel;
} else {
label = fLabel;
}
TEveUtil::LoadMacro("kine_tracks.C");
gROOT->ProcessLine(Form("kine_track(%d, %d, %d, %d, %d, (TEveElement*)%p);",
label, importMother, importDaugters, colorPdg, recurse, this));
}
void AliEveTrack::PrintKineStack()
{
static const TEveException kEH("AliEveTrack::PrintKineStack ");
if (fLabel == kMinInt)
throw kEH + "label not set.";
Int_t label;
if (fLabel < 0) {
Warning(kEH, "label negative, taking absolute value.");
label = -fLabel;
} else {
label = fLabel;
}
TEveUtil::LoadMacro("print_kine_from_label.C");
gROOT->ProcessLine(Form("print_kine_from_label(%d);", label));
}
void AliEveTrack::SecSelected(TEveTrack* track)
{
Emit("SecSelected(TEveTrack*)", (Long_t)track);
SecSelectedTrack((AliEveTrack*) track);
}
void AliEveTrack::SecSelectedTrack(AliEveTrack* track)
{
Emit("SecSelectedTrack(AliEveTrack*)", (Long_t)track);
}
AliESDtrack* AliEveTrack::GetESDTrack() const
{
return dynamic_cast<AliESDtrack*>(GetSourceObject());
}
AliAODTrack* AliEveTrack::GetAODTrack() const
{
return dynamic_cast<AliAODTrack*>(GetSourceObject());
}