]> git.uio.no Git - u/mrichter/AliRoot.git/blob - EVE/alice-macros/clusters_from_label.C
AliInfo displays better than std::cout
[u/mrichter/AliRoot.git] / EVE / alice-macros / clusters_from_label.C
1 // $Id$
2 // Main authors: Matevz Tadel & Alja Mrak-Tadel: 2006, 2007
3
4 /**************************************************************************
5  * Copyright(c) 1998-2008, ALICE Experiment at CERN, all rights reserved. *
6  * See http://aliceinfo.cern.ch/Offline/AliRoot/License.html for          *
7  * full copyright notice.                                                 *
8  **************************************************************************/
9 #if !defined(__CINT__) || defined(__MAKECINT__)
10 #include <TEveManager.h>
11 #include <TEveElement.h>
12 #include <TEvePointSet.h>
13
14 #include <AliESDEvent.h>
15 #include <AliESDtrack.h>
16 #include <AliTrackPointArray.h>
17 #include <AliEveEventManager.h>
18 #include <AliEveMultiView.h>
19 #endif
20
21 TEvePointSet* clusters_from_label(Int_t label=0, TEveElement* cont=0)
22 {
23   AliESDEvent* esd = AliEveEventManager::AssertESD();
24   TEvePointSet* clusters = new TEvePointSet(64);
25   clusters->SetOwnIds(kTRUE);
26
27   for (Int_t n=0; n<esd->GetNumberOfTracks(); n++)
28   {
29     AliESDtrack* at = esd->GetTrack(n);
30     if (at->GetLabel() == label) {
31       const AliTrackPointArray* pArr = at->GetTrackPointArray();
32       if (pArr == 0) {
33         Warning("clusters_from_label", "TrackPointArray not stored with ESD track.");
34         continue;
35       }
36       Int_t np =  pArr->GetNPoints();
37       const Float_t* x = pArr->GetX();
38       const Float_t* y = pArr->GetY();
39       const Float_t* z = pArr->GetZ();
40       for (Int_t i=0; i<np; ++i) {
41         clusters->SetNextPoint(x[i], y[i], z[i]);
42         AliTrackPoint *atp = new AliTrackPoint;
43         pArr->GetPoint(*atp, i);
44         clusters->SetPointId(atp);
45       }
46     }
47   }
48
49   if(clusters->Size() == 0 && gEve->GetKeepEmptyCont() == kFALSE) {
50     Warning("clusters_from_label", "No clusters match label '%d'", label);
51     delete clusters;
52     return 0;
53   }
54
55   clusters->SetMarkerStyle(2);
56   clusters->SetMarkerSize(0.5);
57   clusters->SetMarkerColor(4);
58   //PH The line below is replaced waiting for a fix in Root
59   //PH which permits to use variable siza arguments in CINT
60   //PH on some platforms (alphalinuxgcc, solariscc5, etc.)
61   //PH  clusters->SetName(Form("Clusters lab=%d", label));
62   char form[1000];
63   sprintf(form,"Clusters lab=%d", label);
64   clusters->SetName(form);
65
66   char tip[1000];
67   sprintf(tip,"N=%d", clusters->Size());
68   clusters->SetTitle(tip);
69   gEve->AddElement(clusters, cont);
70   gEve->Redraw3D();
71
72   return clusters;
73 }