]> git.uio.no Git - u/mrichter/AliRoot.git/blob - EVE/alice-macros/clusters_from_label.C
Merged EVE-dev-after-merge to EVE-dev into HEAD. Requires ROOT-5.17.04.
[u/mrichter/AliRoot.git] / EVE / alice-macros / clusters_from_label.C
1 // $Id$
2
3 Reve::PointSet* clusters_from_label(Int_t label=0, Reve::RenderElement* cont=0)
4 {
5   AliESDEvent* esd = Alieve::Event::AssertESD();
6   Reve::PointSet* clusters = new Reve::PointSet(64);
7   clusters->SetOwnIds(kTRUE);
8
9   for (Int_t n=0; n<esd->GetNumberOfTracks(); n++)
10   {
11     AliESDtrack* at = esd->GetTrack(n);
12     if (at->GetLabel() == label) {
13       const AliTrackPointArray* pArr = at->GetTrackPointArray();
14       if (pArr == 0) {
15         Warning("clusters_from_label", "TrackPointArray not stored with ESD track.");
16         continue;
17       }
18       Int_t np =  pArr->GetNPoints();
19       const Float_t* x = pArr->GetX();
20       const Float_t* y = pArr->GetY();
21       const Float_t* z = pArr->GetZ();
22       for (Int_t i=0; i<np; ++i) {
23         clusters->SetNextPoint(x[i], y[i], z[i]);
24         AliTrackPoint *atp = new AliTrackPoint;
25         pArr->GetPoint(*atp, i);
26         clusters->SetPointId(atp);
27       }
28     }
29   }
30
31   if(clusters->Size() == 0 && gReve->GetKeepEmptyCont() == kFALSE) {
32     Warning("clusters_from_label", Form("No clusters match label '%d'", label));
33     delete clusters;
34     return 0;
35   }
36
37   clusters->SetMarkerStyle(2);
38   clusters->SetMarkerSize(0.5);
39   clusters->SetMarkerColor(4);
40   //PH The line below is replaced waiting for a fix in Root
41   //PH which permits to use variable siza arguments in CINT
42   //PH on some platforms (alphalinuxgcc, solariscc5, etc.)
43   //PH  clusters->SetName(Form("Clusters lab=%d", label));
44   char form[1000];
45   sprintf(form,"Clusters lab=%d", label);
46   clusters->SetName(form);
47
48   char tip[1000];
49   sprintf(tip,"N=%d", clusters->Size());
50   clusters->SetTitle(tip);
51
52   using namespace Reve;
53   gReve->AddRenderElement(clusters, cont);
54   gReve->Redraw3D();
55
56   return clusters;
57 }