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