]>
Commit | Line | Data |
---|---|---|
32e219c2 | 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 | // Reve::RenderElement* pgeom = 0; | |
11 | ||
12 | void 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 | ||
53 | void 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 | ||
94 | TParticle* 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 | } |