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 *gGeomGentleRPhi = 0;
19 TEveGeoShape *gGeomGentleRhoZ = 0;
20 TEveGeoShape *gGeomGentleTRD = 0;
22 Bool_t gShowTRD = kFALSE;
26 TEveUtil::LoadMacro("alieve_init.C");
29 AliEveTrackFitter* fitter = new AliEveTrackFitter();
30 gEve->AddToListTree(fitter, 1);
31 gEve->AddElement(fitter, gEve->GetEventScene());
33 AliEveTrackCounter* g_trkcnt = new AliEveTrackCounter("Primary Counter");
34 gEve->AddToListTree(g_trkcnt, kFALSE);
37 gROOT->ProcessLine(".L SplitGLView.C+");
38 TEveBrowser* browser = gEve->GetBrowser();
39 browser->ExecPlugin("SplitGLView", 0, "new SplitGLView(gClient->GetRoot(), 600, 450, kTRUE)");
42 TEveProjectionAxes* a = new TEveProjectionAxes(gRPhiMgr);
43 a->SetNumTickMarks(3);
45 a->SetFontFile("comicbd");
47 gEve->GetScenes()->FindChild("R-Phi Projection")->AddElement(a);
50 TEveProjectionAxes* a = new TEveProjectionAxes(gRhoZMgr);
51 a->SetNumTickMarks(3);
53 a->SetFontFile("comicbd");
55 gEve->GetScenes()->FindChild("Rho-Z Projection")->AddElement(a);
59 TEveUtil::LoadMacro("geom_gentle.C");
60 gGeomGentle = geom_gentle();
61 gGeomGentleRPhi = geom_gentle_rphi(); gGeomGentleRPhi->IncDenyDestroy();
62 gGeomGentleRhoZ = geom_gentle_rhoz(); gGeomGentleRhoZ->IncDenyDestroy();
64 TEveUtil::LoadMacro("geom_gentle_trd.C");
65 gGeomGentleTRD = geom_gentle_trd();
69 TEveUtil::LoadMacro("primary_vertex.C");
70 TEveUtil::LoadMacro("esd_V0_points.C");
71 TEveUtil::LoadMacro("esd_V0.C");
72 TEveUtil::LoadMacro("esd_tracks.C");
73 TEveUtil::LoadMacro("its_clusters.C+");
74 TEveUtil::LoadMacro("tpc_clusters.C+");
75 TEveUtil::LoadMacro("trd_clusters.C+");
76 TEveUtil::LoadMacro("tof_clusters.C+");
78 TEveLine::SetDefaultSmooth(1);
80 TEveBrowser* browser = gEve->GetBrowser();
82 browser->StartEmbedding(TRootBrowser::kBottom);
83 new AliEveEventManagerWindow;
84 browser->StopEmbedding("EventCtrl");
87 gAliEveEvent->AddNewEventCommand("on_new_event();");
88 gAliEveEvent->GotoEvent(0);
90 gEve->EditElement(g_trkcnt);
92 gEve->Redraw3D(kTRUE);
95 /******************************************************************************/
100 TEvePointSet* itsc = its_clusters();
102 itsc->SetMarkerColor(5);
105 TEvePointSet* tpcc = tpc_clusters();
107 tpcc->SetMarkerColor(4);
110 TEvePointSet* trdc = trd_clusters();
112 trdc->SetMarkerColor(7);
113 trdc->SetMarkerStyle(4);
114 trdc->SetMarkerSize(0.5);
117 TEvePointSet* tofc = tof_clusters();
119 tofc->SetMarkerColor(kOrange);
120 tofc->SetMarkerStyle(4);
121 tofc->SetMarkerSize(0.5);
124 catch(TEveException& exc) {
125 printf("Exception loading ITS/TPC clusters: %s\n", exc.Data());
128 primary_vertex(1, 1);
132 TEveElementList* cont = esd_tracks_vertex_cut();
134 // Here we expect five TEveTrackList containers.
135 // First two have reasonable primaries (sigma-to-prim-vertex < 5).
136 // Other three are almost certainly secondaries.
138 AliEveTrackCounter* g_trkcnt = AliEveTrackCounter::fgInstance;
140 g_trkcnt->SetEventId(gAliEveEvent->GetEventId());
141 TEveElement::List_i i = cont->BeginChildren();
142 while (i != cont->EndChildren()) {
143 TEveTrackList* l = dynamic_cast<TEveTrackList*>(*i);
145 // l->SetLineWidth(2);
146 g_trkcnt->RegisterTracks(l, (count <= 2));
152 AliESDEvent* esd = AliEveEventManager::AssertESD();
154 TTimeStamp ts(esd->GetTimeStamp());
155 TString win_title("Eve Main Window -- Timestamp: ");
156 win_title += ts.AsString("s");
157 win_title += "; Event # in ESD file: ";
158 win_title += esd->GetEventNumberInFile();
159 gEve->GetBrowser()->SetWindowName(win_title);
162 esd->GetPrimaryVertex()->GetXYZ(x);
164 TEveElement* top = gEve->GetCurrentEvent();
166 if (gRPhiMgr && top) {
167 gRPhiMgr->DestroyElements();
168 gRPhiMgr->SetCenter(x[0], x[1], x[2]);
169 gRPhiMgr->ImportElements(gGeomGentleRPhi);
170 if (gShowTRD) gRPhiMgr->ImportElements(gGeomGentleTRD);
171 gRPhiMgr->ImportElements(top);
173 if (gRhoZMgr && top) {
174 gRhoZMgr->DestroyElements();
175 gRhoZMgr->SetCenter(x[0], x[1], x[2]);
176 gRhoZMgr->ImportElements(gGeomGentleRhoZ);
177 if (gShowTRD) gRhoZMgr->ImportElements(gGeomGentleTRD);
178 gRhoZMgr->ImportElements(top);
181 gROOT->ProcessLine("SplitGLView::UpdateSummary()");
184 /******************************************************************************/
186 TParticle* id(Int_t label=0, Bool_t showParents=kTRUE)
188 AliRunLoader* rl = AliEveEventManager::AssertRunLoader();
189 rl->LoadKinematics();
190 AliStack* stack = rl->Stack();
192 printf("Number primaries %d, all particles %d, label %d\n",
193 stack->GetNprimary(), stack->GetNtrack(), label);
194 if (label < 0 || label >= stack->GetNtrack()) {
195 printf(" Label exceeds available range.\n");
199 TParticle* part = stack->Particle(label);
203 while (part->GetMother(0) >= 0) {
204 part = stack->Particle(part->GetMother(0));
209 return stack->Particle(label);