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