1 // $Id: NLT_trackcount_init.C 24927 2008-04-04 13:46:04Z mtadel $
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 R__EXTERN TEveProjectionManager *gRPhiMgr;
15 R__EXTERN TEveProjectionManager *gRhoZMgr;
17 TEveGeoShape *gGeomGentle = 0;
18 TEveGeoShape *gGeomGentleTRD = 0;
20 Bool_t gShowTRD = kFALSE;
24 TEveUtil::LoadMacro("alieve_init.C");
27 TEveUtil::LoadMacro("geom_gentle.C");
28 if (gShowTRD) TEveUtil::LoadMacro("geom_gentle_trd.C");
30 TEveUtil::LoadMacro("primary_vertex.C");
31 TEveUtil::LoadMacro("esd_V0_points.C");
32 TEveUtil::LoadMacro("esd_V0.C");
33 TEveUtil::LoadMacro("esd_tracks.C");
34 TEveUtil::LoadMacro("its_clusters.C+");
35 TEveUtil::LoadMacro("tpc_clusters.C+");
36 TEveUtil::LoadMacro("trd_clusters.C+");
38 TEveLine::SetDefaultSmooth(1);
41 TEveViewer* nv = gEve->SpawnNewViewer("NLT Projected");
42 TEveScene* ns = gEve->SpawnNewScene("NLT");
44 TGLViewer* v = nv->GetGLViewer();
45 v->SetCurrentCamera(TGLViewer::kCameraOrthoXOY);
46 TGLCameraMarkupStyle* mup = v->GetCameraMarkup();
47 if(mup) mup->SetShow(kFALSE);
50 AliEveTrackFitter* fitter = new AliEveTrackFitter();
51 gEve->AddToListTree(fitter, 1);
52 gEve->AddElement(fitter, gEve->GetEventScene());
54 TEveTrackCounter* g_trkcnt = new TEveTrackCounter("Primary Counter");
55 gEve->AddToListTree(g_trkcnt, kFALSE);
59 gGeomGentle = geom_gentle();
60 if (gShowTRD) gGeomGentleTRD = geom_gentle_trd();
63 gROOT->ProcessLine(".L SplitGLView.C+g"); // !!!! debug-mode
64 TEveBrowser* browser = gEve->GetBrowser();
65 browser->ExecPlugin("SplitGLView", 0, "new SplitGLView(gClient->GetRoot(), 600, 450, kTRUE)");
68 TEveProjectionAxes* a = new TEveProjectionAxes(gRPhiMgr);
69 a->SetNumTickMarks(3);
71 a->SetFontFile("comicbd");
73 gEve->GetScenes()->FindChild("R-Phi Projection")->AddElement(a);
76 TEveProjectionAxes* a = new TEveProjectionAxes(gRhoZMgr);
77 a->SetNumTickMarks(3);
79 a->SetFontFile("comicbd");
81 gEve->GetScenes()->FindChild("Rho-Z Projection")->AddElement(a);
85 gAliEveEvent->AddNewEventCommand("on_new_event();");
86 gAliEveEvent->GotoEvent(0);
88 gEve->Redraw3D(kTRUE);
91 /******************************************************************************/
96 TEvePointSet* itsc = its_clusters();
98 itsc->SetMarkerColor(5);
101 TEvePointSet* tpcc = tpc_clusters();
103 tpcc->SetMarkerColor(4);
106 TEvePointSet* trdc = trd_clusters();
108 trdc->SetMarkerColor(7);
109 trdc->SetMarkerStyle(4);
110 trdc->SetMarkerSize(0.5);
113 catch(TEveException& exc) {
114 printf("Exception loading ITS/TPC clusters: %s\n", exc.Data());
117 primary_vertex(1, 1);
121 TEveElementList* cont = esd_tracks_vertex_cut();
123 // Here we expect five TEveTrackList containers.
124 // First two have reasonable primaries (sigma-to-prim-vertex < 5).
125 // Other three are almost certainly secondaries.
127 TEveTrackCounter* g_trkcnt = TEveTrackCounter::fgInstance;
129 g_trkcnt->SetEventId(gAliEveEvent->GetEventId());
130 TEveElement::List_i i = cont->BeginChildren();
131 while (i != cont->EndChildren()) {
132 TEveTrackList* l = dynamic_cast<TEveTrackList*>(*i);
134 // l->SetLineWidth(2);
135 g_trkcnt->RegisterTracks(l, (count <= 2));
141 AliESDEvent* esd = AliEveEventManager::AssertESD();
143 esd->GetPrimaryVertex()->GetXYZ(x);
145 TEveElement* top = gEve->GetCurrentEvent();
147 if (gRPhiMgr && top) {
148 gRPhiMgr->DestroyElements();
149 gRPhiMgr->SetCenter(x[0], x[1], x[2]);
150 gRPhiMgr->ImportElements(gGeomGentle);
151 if (gShowTRD) gRPhiMgr->ImportElements(gGeomGentleTRD);
152 gRPhiMgr->ImportElements(top);
154 if (gRhoZMgr && top) {
155 gRhoZMgr->DestroyElements();
156 gRhoZMgr->SetCenter(x[0], x[1], x[2]);
157 gRhoZMgr->ImportElements(gGeomGentle);
158 if (gShowTRD) gRhoZMgr->ImportElements(gGeomGentleTRD);
159 gRhoZMgr->ImportElements(top);
162 gROOT->ProcessLine("SplitGLView::UpdateSummary()");
165 /******************************************************************************/
167 TParticle* id(Int_t label=0, Bool_t showParents=kTRUE)
169 AliRunLoader* rl = AliEveEventManager::AssertRunLoader();
170 rl->LoadKinematics();
171 AliStack* stack = rl->Stack();
173 printf("Number primaries %d, all particles %d, label %d\n",
174 stack->GetNprimary(), stack->GetNtrack(), label);
175 if (label < 0 || label >= stack->GetNtrack()) {
176 printf(" Label exceeds available range.\n");
180 TParticle* part = stack->Particle(label);
184 while (part->GetMother(0) >= 0) {
185 part = stack->Particle(part->GetMother(0));
190 return stack->Particle(label);