8fa007ba056d12c8cd7dadab66b2d8c24208846d
[u/mrichter/AliRoot.git] / EVE / alice-macros / clusters_from_index.C
1 // $Id$
2
3 Reve::PointSet* clusters_from_index(Int_t index=0)
4 {
5   AliESD* esd = Alieve::Event::AssertESD();
6
7   if (index < 0 || index >= esd->GetNumberOfTracks()) {
8     Warning("clusters_from_index", "index out of range.");
9     return 0;
10   }
11
12   Reve::PointSet* clusters = new Reve::PointSet(64);
13   clusters->SetOwnIds(kTRUE);
14
15   AliESDtrack* at = esd->GetTrack(index);
16     const AliTrackPointArray* pArr = at->GetTrackPointArray();
17     if (pArr == 0) {
18       Warning("clusters_from_index", "TrackPointArray not stored with ESD track.");
19       continue;
20     }
21     Int_t np =  pArr->GetNPoints();
22     const Float_t* x = pArr->GetX();
23     const Float_t* y = pArr->GetY();
24     const Float_t* z = pArr->GetZ();
25     for (Int_t i=0; i<np; ++i) {
26       clusters->SetNextPoint(x[i], y[i], z[i]);
27       AliTrackPoint *atp = new AliTrackPoint;
28       pArr->GetPoint(*atp, i);
29       clusters->SetPointId(atp);    }
30
31   clusters->SetMarkerStyle(2);
32   clusters->SetMarkerSize(0.5);
33   clusters->SetMarkerColor(4);
34
35   //PH The line below is replaced waiting for a fix in Root
36   //PH which permits to use variable siza arguments in CINT
37   //PH on some platforms (alphalinuxgcc, solariscc5, etc.)
38   //PH  clusters->SetName(Form("Clusters idx=%d", index));
39   char form[1000];
40   sprintf(form,"Clusters idx=%d", index);
41   clusters->SetName(form);
42
43   using namespace Reve;
44   gReve->AddRenderElement(clusters);
45   gReve->Redraw3D();
46
47   return clusters;
48 }