]> git.uio.no Git - u/mrichter/AliRoot.git/blob - EVE/macros/trackcount_init.C
85107d4cf4e7970ec387d2f6946b6af695d3704b
[u/mrichter/AliRoot.git] / EVE / macros / trackcount_init.C
1 void trackcount_init()
2 {
3   Reve::LoadMacro("alieve_init.C");
4   alieve_init(".", -1);
5
6   Reve::LoadMacro("primary_vertex.C");
7   Reve::LoadMacro("esd_tracks.C");
8   Reve::LoadMacro("its_clusters.C+");
9   Reve::LoadMacro("tpc_clusters.C+");
10
11   Reve::TrackCounter* g_trkcnt = new Reve::TrackCounter("Primary Counter");
12   gReve->AddGlobalRenderElement(g_trkcnt);
13
14   Alieve::gEvent->AddNewEventCommand("on_new_event();");
15   Alieve::gEvent->GotoEvent(0);
16
17   gReve->Redraw3D(kTRUE);
18 }
19
20 void on_new_event()
21 {
22   Reve::PointSet* itsc = its_clusters();
23   itsc->SetMarkerColor(5);
24
25   Reve::PointSet* tpcc = tpc_clusters();
26   tpcc->SetMarkerColor(4);
27
28   primary_vertex(1, 1);
29
30   Reve::RenderElementList* cont = esd_tracks_vertex_cut();
31   TGListTree* lt = gReve->GetListTree();
32   TGListTreeItem* ti = cont->FindListTreeItem(lt);
33   lt->OpenItem(ti);
34
35   // Here we expect five TrackList containers.
36   // First two have reasonable primaries (sigma-to-prim-vertex < 5).
37   // Other three are almost certainly secondaries.
38   Int_t count = 1;
39   Reve::TrackCounter* g_trkcnt = Reve::TrackCounter::fgInstance;
40   g_trkcnt->Reset();
41   g_trkcnt->SetEventId(Alieve::gEvent->GetEventId());
42   Reve::RenderElement::List_i i = cont->BeginChildren();
43   while (i != cont->EndChildren()) {
44     Reve::TrackList* l = dynamic_cast<Reve::TrackList*>(*i);
45     if (l != 0) {
46       l->SetLineWidth(2);
47       g_trkcnt->RegisterTracks(l, (count <= 2));
48       ++count;
49     }
50     ++i;
51   }
52 }
53
54 TParticle* id(Int_t label=0, Bool_t showParents=kTRUE)
55 {
56   AliRunLoader* rl = Alieve::Event::AssertRunLoader();
57   rl->LoadKinematics();
58   AliStack* stack = rl->Stack();
59
60   printf("Number primaries %d, all particles %d, label %d\n",
61          stack->GetNprimary(), stack->GetNtrack(), label);
62   if (label < 0 || label >= stack->GetNtrack()) {
63     printf("  Label exceeds available range.\n");
64     return 0;
65   }
66
67   TParticle* part = stack->Particle(label);
68   if(part != 0) {
69     part->Print();
70     if(showParents) {
71       while(part->GetMother(0) >= 0) {
72         part = stack->Particle(part->GetMother(0));
73         part->Print();
74       }
75     }
76   }
77
78   return stack->Particle(label);
79 }