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