Show only the PHOS modules which are installed
[u/mrichter/AliRoot.git] / EVE / hlt-macros / onlineDisplay.C
CommitLineData
9e78371d 1//-*- Mode: C++ -*-
2
3// ** USED macros :
4// ***************************************************
5// - hlt_alieve_init.C
6// - VizDB_scan.C
7// - geom_gentle_hlt.C
8// - geom_gentle_muon.C
9// ***************************************************
10
11#include "unistd.h"
12#include <TEvePointSet.h>
13#include "EveBase/AliEveEventManager.h"
14#include <AliCluster.h>
15#include <TPC/AliTPCClustersRow.h>
16
17class TEveProjectionManager;
18class TEveGeoShape;
19class TEveUtil;
20class AliEveMacroExecutor;
21class TEveScene;
22class TEveElement;
23class TEveText;
24class AliHLTTriggerDecision;
25class TEvePointSet;
26
27// -----------------------------------------------------------------
28// -- Geometry / Scenes --
29// -----------------------------------------------------------------
30
31TEveProjectionManager *gRPhiMgr = 0;
32TEveProjectionManager *gRhoZMgr = 0;
33
34// -----------------------------------------------------------------
35// -- Geometry / Scenes Parameters --
36// -----------------------------------------------------------------
37
38// -- Parameters to show different geometries
39Bool_t gShowMUON = kTRUE;
40Bool_t gShowMUONRPhi = kFALSE;
41Bool_t gShowMUONRhoZ = kTRUE;
42
43// -----------------------------------------------------------------
44// -- Members --
45// -----------------------------------------------------------------
46
47// -- Timer for automatic event loop
48TTimer eventTimer;
49
50// -- HOMERManager
51AliEveHOMERManager* gHomerManager = 0;
52
53// -- Cluster members
54TEvePointSet* gPHOSClusters = 0;
55TEvePointSet* gTPCClusters = 0;
56TEvePointSet* gSPDClusters = 0;
57
58// -- Tracks members
59TEveTrackList* gTPCTrack = 0;
60
61// -----------------------------------------------------------------
62// -- Methods --
63// -----------------------------------------------------------------
64
65Int_t initializeEveViewer( Bool_t showExtraGeo );
66
67Int_t nextEvent();
68
69Int_t processPHOSClusters( AliHLTHOMERBlockDesc* block);
70
71Int_t processEsdTracks( AliHLTHOMERBlockDesc* block, TEveTrackList* cont );
72
73Int_t processHLTRDLST( AliHLTHOMERBlockDesc* block );
74
75Int_t processROOTTOBJ( AliHLTHOMERBlockDesc* block );
76
77Int_t processTPCClusters (AliHLTHOMERBlockDesc * block, TEvePointSet cont );
78
79// #################################################################
80// #################################################################
81// #################################################################
82
83// -----------------------------------------------------------------
84void onlineDisplay(Bool_t showMuonGeo=kFALSE) {
85
86 // -- Loading Geometry
87 // ---------------------
88 Int_t run = 67179;
89 AliCDBManager::Instance()->SetDefaultStorage("local://$ALICE_ROOT/OCDB");
90 AliCDBManager::Instance()->SetRun(run);
91 AliGeomManager::LoadGeometry();
92
93 // -- Create new hM object
94 // -------------------------
95 gHomerManager = new AliEveHOMERManager();
96 gHomerManager->SetRetryCount(50,5);
97
98 Int_t iResult = gHomerManager->Initialize();
99 if (iResult) {
100 printf("Error Initializing AliHLTHOMERManager, quitting");
101 return;
102 }
103
104 // -- Add hM to EveTree
105 // ----------------------
106 gEve->AddToListTree(gHomerManager, kTRUE);
107
108 // -- Create SourceList
109 // ----------------------
110 iResult = gHomerManager->CreateEveSourcesListLoop();
111 if (iResult) {
112 printf ("Couldn't find active services. returning\n");
113 return;
114 }
115
116 // -- Initialize pointsets and add macros
117 // ----------------------------------------
118 TEveUtil::LoadMacro("hlt_alieve_init.C");
119 hlt_alieve_init(".", -1);
120
121 // -- Initialize Eve
122 // -------------------
123 initializeEveViewer( showMuonGeo );
124
125 // -- Finalize Eve
126 // -----------------
127 gSystem->ProcessEvents();
128 gEve->Redraw3D(kTRUE);
129}
130
131// -----------------------------------------------------------------
132Int_t initializeEveViewer( Bool_t showMuonGeo ) {
133
134 //==============================================================================
135 // Geometry, scenes, projections and viewers
136 //==============================================================================
137
138 TEveGeoShape *geomGentle = 0;
139 TEveGeoShape *geomGentleRPhi = 0;
140 TEveGeoShape *geomGentleRhoZ = 0;
141 TEveGeoShape *geomGentleTRD = 0;
142 TEveGeoShape *geomGentleMUON = 0;
143
144 // -- Disable extra geometry
145 // ---------------------------
146 if ( ! showMuonGeo ) {
147 gShowMUON = gShowMUONRPhi = gShowMUONRhoZ = kFALSE;
148 }
149
150 // -- Load Geometry
151 // ------------------
152 TEveUtil::LoadMacro("geom_gentle_hlt.C");
153 geomGentle = geom_gentle_hlt();
154 geomGentleRPhi = geom_gentle_rphi(); geomGentleRPhi->IncDenyDestroy();
155 geomGentleRhoZ = geom_gentle_rhoz(); geomGentleRhoZ->IncDenyDestroy();
156 geomGentleTRD = geom_gentle_trd();
157
158 if (gShowMUON) {
159 TEveUtil::LoadMacro("geom_gentle_muon.C");
160 geomGentleMUON = geom_gentle_muon(kFALSE);
161 }
162
163 // -- Scenes
164 // -----------
165
166 TEveScene *rPhiGeomScene = gEve->SpawnNewScene("RPhi Geometry",
167 "Scene holding projected geometry for the RPhi view.");
168 TEveScene *rhoZGeomScene = gEve->SpawnNewScene("RhoZ Geometry",
169 "Scene holding projected geometry for the RhoZ view.");
170 TEveScene *rPhiEventScene = gEve->SpawnNewScene("RPhi Event Data",
171 "Scene holding projected geometry for the RPhi view.");
172 TEveScene *rhoZEventScene = gEve->SpawnNewScene("RhoZ Event Data",
173 "Scene holding projected geometry for the RhoZ view.");
174
175 // -- Projection managers
176 // ------------------------
177
178 // -- R-Phi Projection
179 gRPhiMgr = new TEveProjectionManager();
180 gRPhiMgr->SetProjection(TEveProjection::kPT_RPhi);
181 gEve->AddToListTree(gRPhiMgr, kFALSE);
182 {
183 TEveProjectionAxes* a = new TEveProjectionAxes(gRPhiMgr);
184 a->SetMainColor(kWhite);
185 a->SetTitle("R-Phi");
186 a->SetTitleSize(0.05);
187 a->SetTitleFont(102);
188 a->SetLabelSize(0.025);
189 a->SetLabelFont(102);
190 rPhiGeomScene->AddElement(a);
191 }
192
193 gRPhiMgr->SetCurrentDepth(-10);
194 gRPhiMgr->ImportElements(geomGentleRPhi, rPhiGeomScene);
195 gRPhiMgr->SetCurrentDepth(0);
196 gRPhiMgr->ImportElements(geomGentleTRD, rPhiGeomScene);
197 if (gShowMUONRPhi) gRPhiMgr->ImportElements(geomGentleMUON, rPhiGeomScene);
198
199 // -- Rho-Z Projection
200 gRhoZMgr = new TEveProjectionManager();
201 gRhoZMgr->SetProjection(TEveProjection::kPT_RhoZ);
202 gEve->AddToListTree(gRhoZMgr, kFALSE);
203 {
204 TEveProjectionAxes* a = new TEveProjectionAxes(gRhoZMgr);
205 a->SetMainColor(kWhite);
206 a->SetTitle("Rho-Z");
207 a->SetTitleSize(0.05);
208 a->SetTitleFont(102);
209 a->SetLabelSize(0.025);
210 a->SetLabelFont(102);
211 rhoZGeomScene->AddElement(a);
212 }
213 gRhoZMgr->SetCurrentDepth(-10);
214 gRhoZMgr->ImportElements(geomGentleRhoZ, rhoZGeomScene);
215 gRhoZMgr->SetCurrentDepth(0);
216 gRhoZMgr->ImportElements(geomGentleTRD, rhoZGeomScene);
217 if (gShowMUONRhoZ) gRhoZMgr->ImportElements(geomGentleMUON, rhoZGeomScene);
218
219 // -- Viewers
220 // ------------
221 TEveBrowser *browser = gEve->GetBrowser();
222 browser->ShowCloseTab(kFALSE);
223
9e78371d 224 TEveViewer *threeDView = 0;
225 TEveViewer *rPhiView = 0;
226 TEveViewer *rhoZView = 0;
227
228 TEveWindowSlot *slot = TEveWindow::CreateWindowInTab(browser->GetTabRight());
229 TEveWindowPack *pack = slot->MakePack();
230 pack->SetElementName("Multi View");
231 pack->SetHorizontal();
232 pack->SetShowTitleBar(kFALSE);
233 pack->NewSlot()->MakeCurrent();
234 threeDView = gEve->SpawnNewViewer("3D View", "");
235 threeDView->AddScene(gEve->GetGlobalScene());
236 threeDView->AddScene(gEve->GetEventScene());
237
238 pack = pack->NewSlot()->MakePack();
239 pack->SetShowTitleBar(kFALSE);
240 pack->NewSlot()->MakeCurrent();
241 rPhiView = gEve->SpawnNewViewer("RPhi View", "");
242 rPhiView->GetGLViewer()->SetCurrentCamera(TGLViewer::kCameraOrthoXOY);
243 rPhiView->AddScene(rPhiGeomScene);
244 rPhiView->AddScene(rPhiEventScene);
245
246 pack->NewSlot()->MakeCurrent();
247 rhoZView = gEve->SpawnNewViewer("RhoZ View", "");
248 rhoZView->GetGLViewer()->SetCurrentCamera(TGLViewer::kCameraOrthoXOY);
249 rhoZView->AddScene(rhoZGeomScene);
250 rhoZView->AddScene(rhoZEventScene);
251
252 TEveViewerList *viewerlist = new TEveViewerList();
253 viewerlist->AddElement(gEve->GetDefaultViewer());
254
255 viewerlist->AddElement(threeDView);
256 viewerlist->AddElement(rhoZView);
257 viewerlist->AddElement(rPhiView);
258 viewerlist->AddElement(threeDView);
259 viewerlist->SwitchColorSet();
260
261 //==============================================================================
262 // Macros / QA histograms
263 //==============================================================================
264
265 // -- Registration of per-event macros
266 // -------------------------------------
267
268 AliEveMacroExecutor *exec = new AliEveMacroExecutor();
269#if 0
270 exec->AddMacro(new AliEveMacro(AliEveMacro::kRunLoader, "SIM Track", "kine_tracks.C", "kine_tracks", "", kFALSE));
271
272 exec->AddMacro(new AliEveMacro(AliEveMacro::kRunLoader, "SIM Hit ITS", "its_hits.C", "its_hits", "", kFALSE));
273 exec->AddMacro(new AliEveMacro(AliEveMacro::kRunLoader, "SIM Hit TPC", "tpc_hits.C", "tpc_hits", "", kFALSE));
274 exec->AddMacro(new AliEveMacro(AliEveMacro::kRunLoader, "SIM Hit T0", "t0_hits.C", "t0_hits", "", kFALSE));
275 exec->AddMacro(new AliEveMacro(AliEveMacro::kRunLoader, "SIM Hit FMD", "fmd_hits.C", "fmd_hits", "", kFALSE));
276
277 exec->AddMacro(new AliEveMacro(AliEveMacro::kRunLoader, "DIG FMD", "fmd_digits.C", "fmd_digits", "", kFALSE));
278
279 exec->AddMacro(new AliEveMacro(AliEveMacro::kRawReader, "RAW TPC", "tpc_raw.C", "tpc_raw", "", kFALSE));
280 exec->AddMacro(new AliEveMacro(AliEveMacro::kRawReader, "RAW T0", "t0_raw.C", "t0_raw", "", kFALSE));
281 exec->AddMacro(new AliEveMacro(AliEveMacro::kRawReader, "RAW FMD", "fmd_raw.C", "fmd_raw", "", kFALSE));
282 exec->AddMacro(new AliEveMacro(AliEveMacro::kRawReader, "RAW VZERO", "vzero_raw.C", "vzero_raw", "", kFALSE));
283 exec->AddMacro(new AliEveMacro(AliEveMacro::kRawReader, "RAW ACORDE", "acorde_raw.C", "acorde_raw", "", kFALSE));
284
285 exec->AddMacro(new AliEveMacro(AliEveMacro::kESD, "REC PVTX", "primary_vertex.C", "primary_vertex", "", kTRUE));
286 exec->AddMacro(new AliEveMacro(AliEveMacro::kESD, "REC PVTX Ellipse", "primary_vertex.C", "primary_vertex_ellipse", "", kTRUE));
287 exec->AddMacro(new AliEveMacro(AliEveMacro::kESD, "REC PVTX Box", "primary_vertex.C", "primary_vertex_box", "kFALSE, 3, 3, 3", kFALSE));
288 exec->AddMacro(new AliEveMacro(AliEveMacro::kESD, "REC PVTX", "primary_vertex.C", "primary_vertex_spd", "", kTRUE));
289 exec->AddMacro(new AliEveMacro(AliEveMacro::kESD, "REC PVTX Ellipse", "primary_vertex.C", "primary_vertex_ellipse_spd", "", kTRUE));
290 exec->AddMacro(new AliEveMacro(AliEveMacro::kESD, "REC PVTX Box", "primary_vertex.C", "primary_vertex_box_spd", "kFALSE, 3, 3, 3", kFALSE));
291 exec->AddMacro(new AliEveMacro(AliEveMacro::kESD, "REC PVTX", "primary_vertex.C", "primary_vertex_tpc", "", kFALSE));
292 exec->AddMacro(new AliEveMacro(AliEveMacro::kESD, "REC PVTX Ellipse", "primary_vertex.C", "primary_vertex_ellipse_tpc", "", kFALSE));
293 exec->AddMacro(new AliEveMacro(AliEveMacro::kESD, "REC PVTX Box", "primary_vertex.C", "primary_vertex_box_tpc", "kFALSE, 3, 3, 3", kFALSE));
294#endif
295 exec->AddMacro(new AliEveMacro(AliEveMacro::kESD, "REC V0", "esd_V0_points.C", "esd_V0_points_onfly"));
296 exec->AddMacro(new AliEveMacro(AliEveMacro::kESD, "REC V0", "esd_V0_points.C", "esd_V0_points_offline"));
297 exec->AddMacro(new AliEveMacro(AliEveMacro::kESD, "REC V0", "esd_V0.C", "esd_V0"));
298 exec->AddMacro(new AliEveMacro(AliEveMacro::kESD, "REC CSCD", "esd_cascade_points.C", "esd_cascade_points"));
299 exec->AddMacro(new AliEveMacro(AliEveMacro::kESD, "REC CSCD", "esd_cascade.C", "esd_cascade"));
300 exec->AddMacro(new AliEveMacro(AliEveMacro::kESD, "REC KINK", "esd_kink_points.C", "esd_kink_points"));
301 exec->AddMacro(new AliEveMacro(AliEveMacro::kESD, "REC KINK", "esd_kink.C", "esd_kink"));
302
303 exec->AddMacro(new AliEveMacro(AliEveMacro::kESD, "REC Track", "esd_tracks.C", "esd_tracks", "", kFALSE));
304 exec->AddMacro(new AliEveMacro(AliEveMacro::kESD, "REC Track", "esd_tracks.C", "esd_tracks_MI", "", kFALSE));
305 exec->AddMacro(new AliEveMacro(AliEveMacro::kESD, "REC Track", "esd_tracks.C", "esd_tracks_by_category", "", kTRUE));
306
307 exec->AddMacro(new AliEveMacro(AliEveMacro::kESD, "REC Tracklet", "esd_spd_tracklets.C", "esd_spd_tracklets", "", kFALSE));
308
309 exec->AddMacro(new AliEveMacro(AliEveMacro::kESD, "REC ZDC", "esd_zdc.C", "esd_zdc", "", kFALSE));
310#if 0
311 exec->AddMacro(new AliEveMacro(AliEveMacro::kRunLoader, "REC Clus", "clusters.C+", "clusters", "", kFALSE));
312 exec->AddMacro(new AliEveMacro(AliEveMacro::kRunLoader, "REC Clus ITS", "its_clusters.C+", "its_clusters"));
313 exec->AddMacro(new AliEveMacro(AliEveMacro::kRunLoader, "REC Clus TPC", "tpc_clusters.C+", "tpc_clusters"));
314 exec->AddMacro(new AliEveMacro(AliEveMacro::kRunLoader, "REC Clus TRD", "trd_clusters.C+", "trd_clusters"));
315 exec->AddMacro(new AliEveMacro(AliEveMacro::kRunLoader, "REC Clus TOF", "tof_clusters.C+", "tof_clusters"));
316
317 exec->AddMacro(new AliEveMacro(AliEveMacro::kRunLoader, "REC Clus TPC", "vplot_tpc.C+", "vplot_tpc", "", kFALSE));
318
319 exec->AddMacro(new AliEveMacro(AliEveMacro::kAOD, "ANA HF", "aod_HF.C", "aod_HF", "", kFALSE));
320 exec->AddMacro(new AliEveMacro(AliEveMacro::kAOD, "ANA Jets", "jetplane.C", "jetplane", "", kFALSE));
321
322 // -- QA Viewer
323 // --------------
324
325 slot = TEveWindow::CreateWindowInTab(browser->GetTabRight());
326 slot->StartEmbedding();
327 new AliQAHistViewer(gClient->GetRoot(), 600, 400, kTRUE);
328 slot->StopEmbedding("QA histograms");
329
330#endif
331
332 //==============================================================================
333 // Additional GUI components
334 //==============================================================================
335
336 slot = TEveWindow::CreateWindowInTab(browser->GetTabRight());
337 TEveWindowTab *store_tab = slot->MakeTab();
338 store_tab->SetElementNameTitle("WindowStore",
339 "Undocked windows whose previous container is not known\n"
340 "are placed here when the main-frame is closed.");
341 gEve->GetWindowManager()->SetDefaultContainer(store_tab);
342
343 return 0;
344}
345
346// -----------------------------------------------------------------
347Int_t nextEvent() {
348
349 Int_t iResult = 0;
350
351 gStyle->SetPalette(1, 0);
352 gEve->DisableRedraw();
353
354 // -- Get Next Event from HOMER
355 // ------------------------------
356 if ( ( iResult = gHomerManager->NextEvent()) ){
357 return iResult;
358 }
359
360 // -- Reset
361 // ----------
362 if ( gTPCClusters ) gTPCClusters->Reset();
363 if ( gPHOSClusters ) gPHOSClusters->Reset();
364 if ( gTPCTrack ) gTPCTrack->DestroyElements();
365
366 if (gHomerManager->GetBlockList()->IsEmpty() ) {
367 printf ("No Blocks in list ... ");
368 return;
369 }
370
371 TIter next(gHomerManager->GetBlockList());
372 AliHLTHOMERBlockDesc* block = 0;
373
374 // -- Iterate over blocks in the block list
375 // ------------------------------------------
376 while ((block = (AliHLTHOMERBlockDesc*)next())) {
377
378 printf( "------------------- xxxxxxxxxxxxxxx ----------------------\n");
379 printf( "Detector : %s\n", block->GetDetector().Data() );
380 printf( "Datatype : %s\n", block->GetDataType().Data() );
381 if (block->IsTObject() )
382 printf( "Is TObject of class: %s\n", block->GetClassName().Data() );
383 printf( "------------------- xxxxxxxxxxxxxxx ----------------------\n");
384
385 // -- CHECK SOURCE
386 // -----------------------------------------------------
387
388 // ++ HLT BLOCK
389 // +++++++++++++++++++++++++++++++++++++++++++++++++++++++
390 if ( ! block->GetDetector().CompareTo("HLT") ) {
391
392 // -- ESDTREE
393 if ( ! block->GetDataType().CompareTo("ALIESDV0") ) {
394 cout << "ALIESDV0 ------- ALIESDV0 ------ ALIESDV0" << endl;
395
396 if(!gTPCTrack){
397 gTPCTrack = new TEveTrackList("ESD Tracks");
398 gTPCTrack->SetMainColor(6);
399 gEve->AddElement(gTPCTrack);
400 }
401
402 iResult = processEsdTracks(block, gTPCTrack);
403 }
404
405 // -- Process ROOTObj
406 else if ( ! block->GetDataType().CompareTo("ROOTTOBJ") ) {
407 processROOTTOBJ( block );
408 }
409
410 // -- Process HLT RDLST
411 else if ( ! block->GetDataType().CompareTo("HLTRDLST") ) {
412 processHLTRDLST( block );
413 }
414 } // if ( ! block->GetDetector().CompareTo("HLT") ) {
415
416 // ++ TPC BLOCK
417 // +++++++++++++++++++++++++++++++++++++++++++++++++++++++
418 else if ( ! block->GetDetector().CompareTo("TPC") ) {
419
420 // -- ESDTREE
421 if ( ! block->GetDataType().CompareTo("ALIESDV0") ) {
422
423 }
424 } // else if ( ! block->GetDetector().CompareTo("HLT") ) {
425
426 // ++ ITS - SPD BLOCK
427 // +++++++++++++++++++++++++++++++++++++++++++++++++++++++
428 else if ( ! block->GetDetector().CompareTo("ISPD") ){
429 if ( block->GetDataType().CompareTo("CLUSTERS") == 0 ) {
430 //processISPDClusters( block );
431 }
432 } // else if ( ! block->GetDetector().CompareTo("ISPD") ){
433
434 } // while ((block = (AliHLTHOMERBlockDesc*)next())) {
435
436 if ( gTPCClusters ) gTPCClusters->ResetBBox();
437 if ( gPHOSClusters ) gPHOSClusters->ResetBBox();
438 if ( gSPDClusters ) gSPDClusters->ResetBBox();
439 if ( gTPCTrack ) gTPCTrack->ElementChanged();
440
441
442#if 0
443 TTimeStamp ts(esd->GetTimeStamp());
444 TString win_title("Eve Main Window -- Timestamp: ");
445 win_title += ts.AsString("s");
446 win_title += "; Event # in ESD file: ";
447 win_title += esd->GetEventNumberInFile();
448 gEve->GetBrowser()->SetWindowName(win_title);
449#endif
450
451 // -- Set Projections
452 // --------------------------------------------
453 TEveElement* top = gEve->GetCurrentEvent();
454
455 // XXX Primary vertex ... to be retrieved from the ESD
456 Double_t x[3] = { 0, 0, 0 };
457
458 if (gRPhiMgr && top) {
459 gRPhiMgr->DestroyElements();
460 gRPhiMgr->SetCenter(x[0], x[1], x[2]);
461 gRPhiMgr->ImportElements(geomGentleRPhi);
462 gRPhiMgr->ImportElements(top);
463 }
464 if (gRhoZMgr && top) {
465 gRhoZMgr->DestroyElements();
466 gRhoZMgr->SetCenter(x[0], x[1], x[2]);
467 gRhoZMgr->ImportElements(geomGentleRhoZ);
468 gRhoZMgr->ImportElements(geomMuon);
469 gRhoZMgr->ImportElements(top);
470 }
471 // --------------------------------------------
472
473 gEve->Redraw3D(0,1); // (0, 1)
474 gEve->EnableRedraw();
475
476 return iResult;
477}
478
479// -----------------------------------------------------------------
480void loopEvent() {
481 eventTimer.SetCommand("nextEvent()");
482 eventTimer.Start(6000);
483}
484
485// -----------------------------------------------------------------
486void stopLoopEvent() {
487 eventTimer.Stop();
488}
489
490// -----------------------------------------------------------------
491Int_t processHLTRDLST(AliHLTHOMERBlockDesc* block) {
492
493 return 0;
494}
495
496// -----------------------------------------------------------------
497Int_t processISPDClusters(AliHLTHOMERBlockDesc* block) {
498 cout<<"ISPD dump:"<<endl;
499 TObject ob = block->GetTObject();
500 ob.Dump();
501
502 return 0;
503}
504
505// -----------------------------------------------------------------
506Int_t processROOTTOBJ(AliHLTHOMERBlockDesc* block) {
507
508 // -- AliHLTGlobalTriggerDecision
509 if ( ! block->GetClassName().CompareTo("AliHLTGlobalTriggerDecision") ) {
510
511 AliHLTGlobalTriggerDecision *trig = dynamic_cast<AliHLTGlobalTriggerDecision*> block->GetTObject();
512 trig->Print();
513
514 TEveText* tt = new TEveText("Trigger: Class is known ;-) ");
515 gEve->AddElement(tt);
516
517 }
518 else {
519 printf(" Unknown root object %s",block->GetClassName().Data() );
520 }
521
522 return 0;
523}
524
525// -----------------------------------------------------------------
526Int_t processEsdTracks( AliHLTHOMERBlockDesc* block, TEveTrackList* cont ) {
527
528 AliESDEvent* esd = (AliESDEvent *) (block->GetTObject());
529 esd->GetStdContent();
530
531 esd_track_propagator_setup(cont->GetPropagator(),0.1*esd->GetMagneticField(), 520);
532
533 printf( "Number of ESD Tracks : %d \n", esd->GetNumberOfTracks());
534
535 for (Int_t iter = 0; iter < esd->GetNumberOfTracks(); ++iter) {
536 AliEveTrack* track = esd_make_track(esd->GetTrack(iter), cont);
537 cont->AddElement(track);
538 }
539
540 cont->SetTitle(Form("N=%d", esd->GetNumberOfTracks()) );
541 cont->MakeTracks();
542
543 return 0;
544}
545
546
547// Int_t tpc_clusters(TEveElement* cont=0, Float_t maxR=270)
548// {
549
550
551// AliTPCClustersRow *clrow = new AliTPCClustersRow();
552// clrow->SetClass("AliTPCclusterMI");
553// clrow->SetArray(kMaxCl);
554// cTree->SetBranchAddress("Segment", &clrow);
555
556// tTPCClusters->SetOwnIds(kTRUE);
557
558
559// Float_t maxRsqr = maxR*maxR;
560// Int_t nentr=(Int_t)cTree->GetEntries();
561// for (Int_t i=0; i<nentr; i++)
562// {
563// if (!cTree->GetEvent(i)) continue;
564
565// TClonesArray *cl = clrow->GetArray();
566// Int_t ncl = cl->GetEntriesFast();
567
568// while (ncl--)
569// {
570// AliCluster *c = (AliCluster*) cl->UncheckedAt(ncl);
571// Float_t g[3]; //global coordinates
572// c->GetGlobalXYZ(g);
573// if (g[0]*g[0]+g[1]*g[1] < maxRsqr)
574// {
575// clusters->SetNextPoint(g[0], g[1], g[2]);
576// AliCluster *atp = new AliCluster(*c);
577// clusters->SetPointId(atp);
578// }
579// }
580// cl->Clear();
581// }
582
583// delete clrow;
584
585// if (clusters->Size() == 0 && gEve->GetKeepEmptyCont() == kFALSE)
586// {
587// Warning("tpc_clusters.C", "No TPC clusters");
588// delete clusters;
589// return 1;
590// }
591
592// char form[1000];
593// sprintf(form,"TPC Clusters");
594// gTPCClusters->SetName(form);
595
596// char tip[1000];
597// sprintf(tip,"N=%d", gTPCClusters->Size());
598// gTPCClusters->SetTitle(tip);
599
600// const TString viz_tag("TPC Clusters");
601// gTPCClusters->ApplyVizTag(viz_tag, "Clusters");
602
603// return 0;
604// }
605
606
607
608 Int_t processTPCClusters(AliHLTHOMERBlockDesc* block, TEvePointSet * cont) {
609 Int_t iResult = 0;
610
611 Int_t slice = block->GetSubDetector().Atoi();
612 Int_t patch = block->GetSubSubDetector().Atoi();
613 Float_t phi = ( slice + 0.5 ) * TMath::Pi() / 9.0;
614 Float_t cos = TMath::Cos( phi );
615 Float_t sin = TMath::Sin( phi );
616
617 AliHLTTPCClusterData *cd = (AliHLTTPCClusterData*) block->GetData();
618 UChar_t *data = (UChar_t*) cd->fSpacePoints;
619
620 if ( cd->fSpacePointCnt == 0 ) {
621 printf ("No Clusters found in sector %d patch %d.\n", slice, patch );
622 iResult = -1;
623 }
624 else {
625
626 for (Int_t ii = 0; ii < cd->fSpacePointCnt; ++ii, data += sizeof(AliHLTTPCSpacePointData)) {
627 AliHLTTPCSpacePointData *sp = (AliHLTTPCSpacePointData *) data;
628
629 cont->SetNextPoint(cos*sp->fX - sin*sp->fY, sin*sp->fX + cos*sp->fY, sp->fZ);
630 }
631 }
632
633 return iResult;
634}
635