// $Id$
-
-Reve::Track* esd_make_track(Reve::TrackRnrStyle* rnrStyle,
- Int_t index,
- AliESDtrack* at,
- AliExternalTrackParam* tp=0)
+// Main authors: Matevz Tadel & Alja Mrak-Tadel: 2006, 2007
+
+/**************************************************************************
+ * Copyright(c) 1998-2008, ALICE Experiment at CERN, all rights reserved. *
+ * See http://aliceinfo.cern.ch/Offline/AliRoot/License.html for *
+ * full copyright notice. *
+ **************************************************************************/
+
+TEveTrack* esd_make_track(TEveTrackPropagator* rnrStyle,
+ Int_t index,
+ AliESDtrack* at,
+ AliExternalTrackParam* tp=0)
{
// Helper function
- Double_t pbuf[3], vbuf[3];
- Reve::RecTrack rt;
+ Double_t pbuf[3], vbuf[3];
+ TEveRecTrack rt;
if(tp == 0) tp = at;
- rt.label = at->GetLabel();
- rt.index = index;
- rt.status = (Int_t) at->GetStatus();
- rt.sign = tp->GetSign();
+ rt.fLabel = at->GetLabel();
+ rt.fIndex = index;
+ rt.fStatus = (Int_t) at->GetStatus();
+ rt.fSign = tp->GetSign();
tp->GetXYZ(vbuf);
- rt.V.Set(vbuf);
+ rt.fV.Set(vbuf);
tp->GetPxPyPz(pbuf);
- rt.P.Set(pbuf);
+ rt.fP.Set(pbuf);
Double_t ep = at->GetP(), mc = at->GetMass();
- rt.beta = ep/TMath::Sqrt(ep*ep + mc*mc);
-
- Reve::Track* track = new Reve::Track(&rt, rnrStyle);
+ rt.fBeta = ep/TMath::Sqrt(ep*ep + mc*mc);
+
+ TEveTrack* track = new TEveTrack(&rt, rnrStyle);
//PH The line below is replaced waiting for a fix in Root
//PH which permits to use variable siza arguments in CINT
//PH on some platforms (alphalinuxgcc, solariscc5, etc.)
- //PH track->SetName(Form("ESDTrack %d", rt.label));
+ //PH track->SetName(Form("ESDTrack %d", rt.fLabel));
//PH track->SetTitle(Form("pT=%.3f, pZ=%.3f; V=(%.3f, %.3f, %.3f)",
- //PH rt.sign*TMath::Hypot(rt.P.x, rt.P.y), rt.P.z,
- //PH rt.V.x, rt.V.y, rt.V.z));
+ //PH rt.fSign*TMath::Hypot(rt.fP.fX, rt.fP.fY), rt.fP.fZ,
+ //PH rt.fV.fX, rt.fV.fY, rt.fV.fZ));
char form[1000];
- sprintf(form,"ESDTrack %d", rt.label);
+ sprintf(form,"TEveTrack %d", rt.fIndex);
track->SetName(form);
- sprintf(form,"Index=%d, Label=%d\npT=%.3f, pZ=%.3f\nV=(%.3f, %.3f, %.3f)",
- index, rt.label,
- rt.sign*TMath::Hypot(rt.P.x, rt.P.y), rt.P.z,
- rt.V.x, rt.V.y, rt.V.z);
- track->SetTitle(form);
+ track->SetStdTitle();
return track;
}
-Bool_t gkFixFailedITSExtr = kFALSE;
+void esd_track_add_param(TEveTrack* track, AliExternalTrackParam* tp)
+{
+ if (tp == 0)
+ return;
+
+ Double_t pbuf[3], vbuf[3];
+ tp->GetXYZ(vbuf);
+ tp->GetPxPyPz(pbuf);
+
+ TEvePathMark pm(TEvePathMark::kReference);
+ pm.fV.Set(vbuf);
+ pm.fP.Set(pbuf);
+ track->AddPathMark(pm);
+}
+
+// Use inner-tpc track params when its refit failed.
+Bool_t gkFixFailedITSExtr = kFALSE;
-Reve::TrackList* esd_tracks(Double_t min_pt=0.1, Double_t max_pt=100)
+// Also show lines as generated by AliESDtrack.
+Bool_t gkMakeTrackParamLines = kFALSE;
+
+TEveTrackList* esd_tracks(Double_t min_pt=0.1, Double_t max_pt=100)
{
- AliESDEvent* esd = Alieve::Event::AssertESD();
+ AliESDEvent* esd = AliEveEventManager::AssertESD();
Double_t minptsq = min_pt*min_pt;
Double_t maxptsq = max_pt*max_pt;
Double_t ptsq;
- Reve::TrackList* cont = new Reve::TrackList("ESD Tracks");
+ TEveTrackList* cont = new TEveTrackList("ESD Tracks");
cont->SetMainColor(Color_t(6));
- Reve::TrackRnrStyle* rnrStyle = cont->GetRnrStyle();
- rnrStyle->SetMagField( esd->GetMagneticField() );
+ TEveTrackPropagator* rnrStyle = cont->GetPropagator();
+ rnrStyle->SetMagField( 0.1*esd->GetMagneticField() );
- gReve->AddRenderElement(cont);
+ gEve->AddElement(cont);
+
+ TEveElementList* contLines = 0;
+ if (gkMakeTrackParamLines)
+ {
+ contLines = new TEveElementList("MyTracks");
+ gEve->AddElement(contLines);
+ }
Int_t count = 0;
Double_t pbuf[3];
// If gkFixFailedITSExtr is TRUE (FALSE by default) and
// if ITS refit failed, take track parameters at inner TPC radius.
+ Bool_t innerTaken = kFALSE;
AliExternalTrackParam* tp = at;
if (gkFixFailedITSExtr && !at->IsOn(AliESDtrack::kITSrefit)) {
- tp = at->GetInnerParam();
+ tp = at->GetInnerParam();
+ innerTaken = kTRUE;
}
- Reve::Track* track = esd_make_track(rnrStyle, n, at, tp);
+ TEveTrack* track = esd_make_track(rnrStyle, n, at, tp);
track->SetAttLineAttMarker(cont);
- gReve->AddRenderElement(track, cont);
+
+ if (!innerTaken) {
+ esd_track_add_param(track, at->GetInnerParam());
+ }
+ // esd_track_add_param(track, at->GetOuterParam());
+
+ gEve->AddElement(track, cont);
+
+ if (gkMakeTrackParamLines) {
+ TEveLine* l = new TEveLine;
+ l->SetName(Form("Track%d", count));
+ l->SetLineColor((Color_t)5);
+ at->FillPolymarker(l, esd->GetMagneticField(), 0, 250, 5);
+ contLines->AddElement(l);
+ }
}
//PH The line below is replaced waiting for a fix in Root
cont->MakeTracks();
- gReve->Redraw3D();
+ gEve->Redraw3D();
return cont;
}
-/**************************************************************************/
+/******************************************************************************/
// esd_tracks_from_array()
-/**************************************************************************/
+/******************************************************************************/
-Reve::TrackList* esd_tracks_from_array(TCollection* col, AliESDEvent* esd=0)
+TEveTrackList* esd_tracks_from_array(TCollection* col, AliESDEvent* esd=0)
{
// Retrieves AliESDTrack's from collection.
// See example usage with AliAnalysisTrackCuts in the next function.
- if(esd == 0) esd = Alieve::Event::AssertESD();
+ if (esd == 0) esd = AliEveEventManager::AssertESD();
- Reve::TrackList* cont = new Reve::TrackList("ESD Tracks");
+ TEveTrackList* cont = new TEveTrackList("ESD Tracks");
cont->SetMainColor(Color_t(6));
- Reve::TrackRnrStyle* rnrStyle = cont->GetRnrStyle();
- rnrStyle->SetMagField( esd->GetMagneticField() );
+ TEveTrackPropagator* rnrStyle = cont->GetPropagator();
+ rnrStyle->SetMagField( 0.1*esd->GetMagneticField() );
- gReve->AddRenderElement(cont);
+ gEve->AddElement(cont);
Int_t count = 0;
TIter next(col);
TObject *obj;
- while((obj = next()) != 0)
+ while ((obj = next()) != 0)
{
- if(obj->IsA()->InheritsFrom("AliESDtrack") == kFALSE) {
+ if (obj->IsA()->InheritsFrom("AliESDtrack") == kFALSE) {
Warning("Object '%s', '%s' is not an AliESDtrack.",
obj->GetName(), obj->GetTitle());
continue;
++count;
AliESDtrack* at = (AliESDtrack*) obj;
- Reve::Track* track = esd_make_track(rnrStyle, count, at);
+ TEveTrack* track = esd_make_track(rnrStyle, count, at);
track->SetAttLineAttMarker(cont);
- gReve->AddRenderElement(track, cont);
+ gEve->AddElement(track, cont);
}
//PH The line below is replaced waiting for a fix in Root
cont->MakeTracks();
- gReve->Redraw3D();
+ gEve->Redraw3D();
return cont;
}
void esd_tracks_alianalcuts_demo()
{
- AliESDEvent* esd = Alieve::Event::AssertESD();
+ AliESDEvent* esd = AliEveEventManager::AssertESD();
gSystem->Load("libANALYSIS");
AliAnalysisTrackCuts atc;
esd_tracks_from_array(atc.GetAcceptedParticles(esd), esd);
}
-/**************************************************************************/
+/******************************************************************************/
// esd_tracks_vertex_cut
-/**************************************************************************/
+/******************************************************************************/
Float_t get_sigma_to_vertex(AliESDtrack* esdTrack)
{
return d;
}
-Reve::RenderElementList* esd_tracks_vertex_cut()
+TEveElementList* esd_tracks_vertex_cut()
{
// Import ESD tracks, separate them into five containers according to
// primary-vertex cut and ITS refit status.
- AliESDEvent* esd = Alieve::Event::AssertESD();
+ AliESDEvent* esd = AliEveEventManager::AssertESD();
- Reve::RenderElementList* cont = new Reve::RenderElementList("ESD Tracks", 0, kTRUE);
- gReve->AddRenderElement(cont);
- Reve::TrackList *tl[5];
+ TEveElementList* cont = new TEveElementList("ESD Tracks", 0, kTRUE);
+ gEve->AddElement(cont);
+ TEveTrackList *tl[5];
Int_t tc[5];
Int_t count = 0;
- tl[0] = new Reve::TrackList("Sigma < 3");
+ tl[0] = new TEveTrackList("Sigma < 3");
tc[0] = 0;
- tl[0]->GetRnrStyle()->SetMagField( esd->GetMagneticField() );
+ tl[0]->GetPropagator()->SetMagField( 0.1*esd->GetMagneticField() );
tl[0]->SetMainColor(Color_t(3));
- gReve->AddRenderElement(tl[0], cont);
+ gEve->AddElement(tl[0], cont);
- tl[1] = new Reve::TrackList("3 < Sigma < 5");
+ tl[1] = new TEveTrackList("3 < Sigma < 5");
tc[1] = 0;
- tl[1]->GetRnrStyle()->SetMagField( esd->GetMagneticField() );
+ tl[1]->GetPropagator()->SetMagField( 0.1*esd->GetMagneticField() );
tl[1]->SetMainColor(Color_t(7));
- gReve->AddRenderElement(tl[1], cont);
+ gEve->AddElement(tl[1], cont);
- tl[2] = new Reve::TrackList("5 < Sigma");
+ tl[2] = new TEveTrackList("5 < Sigma");
tc[2] = 0;
- tl[2]->GetRnrStyle()->SetMagField( esd->GetMagneticField() );
+ tl[2]->GetPropagator()->SetMagField( 0.1*esd->GetMagneticField() );
tl[2]->SetMainColor(Color_t(46));
- gReve->AddRenderElement(tl[2], cont);
+ gEve->AddElement(tl[2], cont);
- tl[3] = new Reve::TrackList("no ITS refit; Sigma < 5");
+ tl[3] = new TEveTrackList("no ITS refit; Sigma < 5");
tc[3] = 0;
- tl[3]->GetRnrStyle()->SetMagField( esd->GetMagneticField() );
+ tl[3]->GetPropagator()->SetMagField( 0.1*esd->GetMagneticField() );
tl[3]->SetMainColor(Color_t(41));
- gReve->AddRenderElement(tl[3], cont);
+ gEve->AddElement(tl[3], cont);
- tl[4] = new Reve::TrackList("no ITS refit; Sigma > 5");
+ tl[4] = new TEveTrackList("no ITS refit; Sigma > 5");
tc[4] = 0;
- tl[4]->GetRnrStyle()->SetMagField( esd->GetMagneticField() );
+ tl[4]->GetPropagator()->SetMagField( 0.1*esd->GetMagneticField() );
tl[4]->SetMainColor(Color_t(48));
- gReve->AddRenderElement(tl[4], cont);
+ gEve->AddElement(tl[4], cont);
for (Int_t n=0; n<esd->GetNumberOfTracks(); n++)
{
ti = (ti == 2) ? 4 : 3;
}
- Reve::TrackList* tlist = tl[ti];
+ TEveTrackList* tlist = tl[ti];
++tc[ti];
++count;
- Reve::Track* track = esd_make_track(tlist->GetRnrStyle(), n, at, tp);
- track->SetAttLineAttMarker(tlist);
+ TEveTrack* track = esd_make_track(tlist->GetPropagator(), n, at, tp);
+ track->SetAttLineAttMarker(tlist);
//PH The line below is replaced waiting for a fix in Root
//PH which permits to use variable siza arguments in CINT
//PH on some platforms (alphalinuxgcc, solariscc5, etc.)
//PH track->SetName(Form("track %d, sigma=%5.3f", at->GetLabel(), s));
char form[1000];
- sprintf(form,"Track lbl=%d, sigma=%5.3f", at->GetLabel(), s);
+ sprintf(form,"TEveTrack idx=%d, sigma=%5.3f", at->GetID(), s);
track->SetName(form);
- gReve->AddRenderElement(track, tlist);
+ gEve->AddElement(track, tlist);
}
for (Int_t ti=0; ti<5; ++ti) {
- Reve::TrackList* tlist = tl[ti];
+ TEveTrackList* tlist = tl[ti];
//PH The line below is replaced waiting for a fix in Root
//PH which permits to use variable siza arguments in CINT
//PH on some platforms (alphalinuxgcc, solariscc5, etc.)
sprintf(form,"N all tracks = %d", count);
cont->SetTitle(form);
cont->UpdateItems();
- gReve->Redraw3D();
+ gEve->Redraw3D();
return cont;
}