2 // Main authors: Matevz Tadel & Alja Mrak-Tadel: 2006, 2007
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 **************************************************************************/
10 class TEveProjectionManager;
14 TEveProjectionManager *proj = 0;
15 TEveGeoShape *geom = 0;
17 void trackcount_init()
19 TEveUtil::LoadMacro("alieve_init.C");
22 TEveUtil::LoadMacro("geom_gentle.C");
24 TEveUtil::LoadMacro("primary_vertex.C");
25 TEveUtil::LoadMacro("esd_tracks.C");
26 TEveUtil::LoadMacro("its_clusters.C+");
27 TEveUtil::LoadMacro("tpc_clusters.C+");
29 TEveViewer* nv = gEve->SpawnNewViewer("Projected View");
30 TEveScene* ns = gEve->SpawnNewScene("Projected Scene");
32 TGLViewer* v = nv->GetGLViewer();
33 v->SetCurrentCamera(TGLViewer::kCameraOrthoXOY);
34 TGLCameraMarkupStyle* mup = v->GetCameraMarkup();
35 if(mup) mup->SetShow(kFALSE);
37 AliEveTrackFitter* fitter = new AliEveTrackFitter();
38 gEve->AddToListTree(fitter, 1);
39 gEve->AddElement(fitter, gEve->GetEventScene());
41 TEveTrackCounter* g_trkcnt = new TEveTrackCounter("Primary Counter");
42 gEve->AddToListTree(g_trkcnt, kFALSE);
44 TEveProjectionManager* pm = new TEveProjectionManager();
46 gEve->AddToListTree(proj, kTRUE);
47 gEve->AddElement(proj, ns);
49 TEveProjectionAxes* axes = new TEveProjectionAxes(proj);
50 axes->SetText("Projected Track-Count");
51 axes->SetFontFile("comicbd");
52 axes->SetFontSize(20);
53 gEve->AddElement(axes, ns);
54 gEve->AddToListTree(axes, kTRUE);
57 TEveGeoShape* gg = geom_gentle();
61 gAliEveEvent->AddNewEventCommand("on_new_event();");
62 gAliEveEvent->GotoEvent(0);
64 gEve->Redraw3D(kTRUE);
67 /******************************************************************************/
72 TEvePointSet* itsc = its_clusters();
73 itsc->SetMarkerColor(5);
75 TEvePointSet* tpcc = tpc_clusters();
76 tpcc->SetMarkerColor(4);
78 catch(TEveException& exc) {
79 printf("Exception loading ITS/TPC clusters: %s\n", exc.Data());
84 TEveElementList* cont = esd_tracks_vertex_cut();
86 // Here we expect five TEveTrackList containers.
87 // First two have reasonable primaries (sigma-to-prim-vertex < 5).
88 // Other three are almost certainly secondaries.
90 TEveTrackCounter* g_trkcnt = TEveTrackCounter::fgInstance;
92 g_trkcnt->SetEventId(gAliEveEvent->GetEventId());
93 TEveElement::List_i i = cont->BeginChildren();
94 while (i != cont->EndChildren()) {
95 TEveTrackList* l = dynamic_cast<TEveTrackList*>(*i);
98 g_trkcnt->RegisterTracks(l, (count <= 2));
103 TEveElement* top = gEve->GetCurrentEvent();
104 proj->DestroyElements();
105 AliESDEvent* esd = AliEveEventManager::AssertESD();
107 esd->GetPrimaryVertex()->GetXYZ(x);
108 proj->SetCenter(x[0], x[1], x[2]);
111 proj->ImportElements(geom);
113 proj->ImportElements(top);
114 // top->SetRnrState(kFALSE);
117 /******************************************************************************/
119 TParticle* id(Int_t label=0, Bool_t showParents=kTRUE)
121 AliRunLoader* rl = AliEveEventManager::AssertRunLoader();
122 rl->LoadKinematics();
123 AliStack* stack = rl->Stack();
125 printf("Number primaries %d, all particles %d, label %d\n",
126 stack->GetNprimary(), stack->GetNtrack(), label);
127 if (label < 0 || label >= stack->GetNtrack()) {
128 printf(" Label exceeds available range.\n");
132 TParticle* part = stack->Particle(label);
136 while (part->GetMother(0) >= 0) {
137 part = stack->Particle(part->GetMother(0));
142 return stack->Particle(label);