Remove EVE/Reve/ sub-module.
[u/mrichter/AliRoot.git] / EVE / alice-macros / its_clusters.C
1 #ifdef __CINT__
2
3 namespace TEveUtil
4 {
5 class TEveElement;
6 class TEvePointSet;
7 }
8
9 #else
10
11 #include <TEve.h>
12 #include <TEveManager.h>
13 #include <TEvePointSet.h>
14 #include <Alieve/EventAlieve.h>
15
16 #include <AliRunLoader.h>
17 #include <AliCluster.h>
18
19 #include <TClonesArray.h>
20
21 #endif
22
23 TEvePointSet* its_clusters(TEveElement* cont=0, Float_t maxR=50)
24 {
25   Alieve::Event::AssertGeometry();
26
27   AliRunLoader* rl = Alieve::Event::AssertRunLoader();
28   rl->LoadRecPoints("ITS");
29
30   TTree *cTree = rl->GetTreeR("ITS", false);
31
32   TEvePointSet* clusters = new TEvePointSet(10000);
33   clusters->SetOwnIds(kTRUE);
34
35   TClonesArray *cl = NULL;
36   TBranch *branch  = cTree->GetBranch("ITSRecPoints");
37   branch->SetAddress(&cl);
38
39   Int_t nentr=(Int_t)cTree->GetEntries();
40   for (Int_t i=0; i<nentr; i++) {
41     if (!cTree->GetEvent(i)) continue;
42
43     Int_t ncl=cl->GetEntriesFast();
44
45     Float_t maxRsqr = maxR*maxR;
46     while (ncl--) {
47       AliCluster *c=(AliCluster*)cl->UncheckedAt(ncl);
48       Float_t g[3]; //global coordinates
49       c->GetGlobalXYZ(g);
50       if (g[0]*g[0]+g[1]*g[1] < maxRsqr)
51       {
52         clusters->SetNextPoint(g[0], g[1], g[2]);
53         AliCluster *atp = new AliCluster(*c);
54         clusters->SetPointId(atp);
55       }
56     }
57   }
58
59   if (clusters->Size() == 0 && gEve->GetKeepEmptyCont() == kFALSE) {
60     Warning("its_clusters", "No ITS clusters");
61     delete clusters;
62     return 0;
63   }
64
65   clusters->SetMarkerStyle(2);
66   clusters->SetMarkerSize(0.2);
67   clusters->SetMarkerColor(4);
68
69   char form[1000];
70   sprintf(form,"ITS Clusters");
71   clusters->SetName(form);
72
73   char tip[1000];
74   sprintf(tip,"N=%d", clusters->Size());
75   clusters->SetTitle(tip);
76   gEve->AddElement(clusters, cont);
77   gEve->Redraw3D();
78
79   return clusters;
80 }