]> git.uio.no Git - u/mrichter/AliRoot.git/blob - EVE/alice-macros/NLT_trackcount_init.C
136d9bb1c8366284561278a1b8eac45bee79c407
[u/mrichter/AliRoot.git] / EVE / alice-macros / NLT_trackcount_init.C
1 namespace Reve
2 {
3 class NLTProjector;
4 class GeoShapeRnrEl;
5 class RnrElement*;
6 }
7
8 Reve::NLTProjector  * proj = 0;
9 Reve::GeoShapeRnrEl * geom = 0;
10
11 void NLT_trackcount_init()
12 {
13   Reve::LoadMacro("alieve_init.C");
14   alieve_init(".", -1);
15
16   Reve::LoadMacro("geom_gentle.C");
17
18   Reve::LoadMacro("primary_vertex.C");
19   Reve::LoadMacro("esd_tracks.C");
20   Reve::LoadMacro("its_clusters.C+");
21   Reve::LoadMacro("tpc_clusters.C+");
22
23   Reve::Viewer* nv = gReve->SpawnNewViewer("NLT Projected");
24   Reve::Scene*  ns = gReve->SpawnNewScene("NLT"); 
25   nv->AddScene(ns);
26   TGLViewer* v = nv->GetGLViewer();
27   v->SetCurrentCamera(TGLViewer::kCameraOrthoXOY);
28   TGLCameraMarkupStyle* mup = v->GetCameraMarkup();
29   if(mup) mup->SetShow(kFALSE);
30
31   Reve::TrackCounter* g_trkcnt = new Reve::TrackCounter("Primary Counter");
32   gReve->AddToListTree(g_trkcnt, kFALSE);
33
34   Reve::NLTProjector* p = new Reve::NLTProjector; proj = p;
35   gReve->AddToListTree(p, kTRUE);
36   gReve->AddRenderElement(proj, ns);
37
38   // geometry
39   Reve::GeoShapeRnrEl* gg = geom_gentle();
40   geom = gg;
41
42   // event
43   Alieve::gEvent->AddNewEventCommand("on_new_event();");
44   Alieve::gEvent->GotoEvent(0);
45
46   gReve->Redraw3D(kTRUE);
47 }
48
49 /**************************************************************************/
50
51 void on_new_event()
52 {
53   try {
54     Reve::PointSet* itsc = its_clusters();
55     itsc->SetMarkerColor(5);
56
57     Reve::PointSet* tpcc = tpc_clusters();
58     tpcc->SetMarkerColor(4);
59   }
60   catch(Reve::Exc_t& exc) {
61     printf("Exception loading ITS/TPC clusters: %s\n", exc.Data());
62   }
63
64   primary_vertex(1, 1);
65
66   Reve::RenderElementList* cont = esd_tracks_vertex_cut();
67
68   // Here we expect five TrackList containers.
69   // First two have reasonable primaries (sigma-to-prim-vertex < 5).
70   // Other three are almost certainly secondaries.
71   Int_t count = 1;
72   Reve::TrackCounter* g_trkcnt = Reve::TrackCounter::fgInstance;
73   g_trkcnt->Reset();
74   g_trkcnt->SetEventId(Alieve::gEvent->GetEventId());
75   Reve::RenderElement::List_i i = cont->BeginChildren();
76   while (i != cont->EndChildren()) {
77     Reve::TrackList* l = dynamic_cast<Reve::TrackList*>(*i);
78     if (l != 0) {
79       l->SetLineWidth(2);
80       g_trkcnt->RegisterTracks(l, (count <= 2));
81       ++count;
82     }
83     ++i;
84   }
85   Reve::RenderElement* top = gReve->GetCurrentEvent();
86   proj->DestroyElements();
87   AliESDEvent* esd = Alieve::Event::AssertESD();
88   Double_t x[3];
89   esd->GetPrimaryVertex()->GetXYZ(x);
90   proj->SetCenter(x[0], x[1], x[2]);
91
92   // geom
93   proj->ImportElements(geom);
94   // event
95   proj->ImportElements(top);
96   // top->SetRnrState(kFALSE);
97 }
98
99 /**************************************************************************/
100
101 TParticle* id(Int_t label=0, Bool_t showParents=kTRUE)
102 {
103   AliRunLoader* rl = Alieve::Event::AssertRunLoader();
104   rl->LoadKinematics();
105   AliStack* stack = rl->Stack();
106
107   printf("Number primaries %d, all particles %d, label %d\n",
108          stack->GetNprimary(), stack->GetNtrack(), label);
109   if (label < 0 || label >= stack->GetNtrack()) {
110     printf("  Label exceeds available range.\n");
111     return 0;
112   }
113
114   TParticle* part = stack->Particle(label);
115   if(part != 0) {
116     part->Print();
117     if(showParents) {
118       while(part->GetMother(0) >= 0) {
119         part = stack->Particle(part->GetMother(0));
120         part->Print();
121       }
122     }
123   }
124   return stack->Particle(label);
125 }