TRD tracks macro removed from the online display due to memory leaks. In the macro...
[u/mrichter/AliRoot.git] / EVE / macros / alieve_online.C
1 /**************************************************************************
2  * Copyright(c) 1998-2008, ALICE Experiment at CERN, all rights reserved. *
3  * See http://aliceinfo.cern.ch/Offline/AliRoot/License.html for          *
4  * full copyright notice.                                                 *
5  **************************************************************************/
6
7 class TEveProjectionManager;
8 class TEveGeoShape;
9 class TEveUtil;
10
11 TEveGeoShape *gGeomGentle = 0;
12
13 TEveScene *gRPhiGeomScene  = 0;
14 TEveScene *gRhoZGeomScene  = 0;
15 TEveScene *gRPhiEventScene = 0;
16 TEveScene *gRhoZEventScene = 0;
17
18 TEveProjectionManager *gRPhiMgr = 0;
19 TEveProjectionManager *gRhoZMgr = 0;
20
21 TEveViewer *g3DView   = 0;
22 TEveViewer *gRPhiView = 0;
23 TEveViewer *gRhoZView = 0;
24
25 Bool_t gCenterProjectionsAtPrimaryVertex = kFALSE;
26
27 void alieve_online_init()
28 {
29   gROOT->LoadMacro("geom_gentle.C");
30
31   gROOT->LoadMacro("primary_vertex.C");
32   gROOT->LoadMacro("esd_tracks.C");
33   //  Disabled due to memory leaks
34   //  gROOT->LoadMacro("trd_tracks.C++");
35   gROOT->LoadMacro("trd_detectors.C++");
36
37   gROOT->LoadMacro("its_clusters.C++");
38   gROOT->LoadMacro("tpc_clusters.C++");
39   gROOT->LoadMacro("tof_clusters.C++");
40   gROOT->LoadMacro("hmpid_clusters.C++");
41
42   gROOT->LoadMacro("acorde_raw.C");
43   gROOT->LoadMacro("its_raw.C");
44   gROOT->LoadMacro("tpc_raw.C");
45   gROOT->LoadMacro("tof_raw.C");
46
47   TEveUtil::AssertMacro("VizDB_scan.C");
48
49   TEveBrowser         *browser = gEve->GetBrowser();
50   browser->ShowCloseTab(kFALSE);
51
52   // Temp fix !!!
53   TGeoManager *man = gGeoManager;
54   gGeomGentle = geom_gentle();
55   gGeomGentleRPhi = geom_gentle_rphi(); gGeomGentleRPhi->IncDenyDestroy();
56   gGeomGentleRhoZ = geom_gentle_rhoz(); gGeomGentleRhoZ->IncDenyDestroy();
57   // Temp fix !!!
58   gGeoManager = man;
59
60   // Scenes
61   gRPhiGeomScene  = gEve->SpawnNewScene("RPhi Geometry",
62                     "Scene holding projected geometry for the RPhi view.");
63   gRhoZGeomScene  = gEve->SpawnNewScene("RhoZ Geometry",
64                     "Scene holding projected geometry for the RhoZ view.");
65   gRPhiEventScene = gEve->SpawnNewScene("RPhi Event Data",
66                     "Scene holding projected geometry for the RPhi view.");
67   gRhoZEventScene = gEve->SpawnNewScene("RhoZ Event Data",
68                     "Scene holding projected geometry for the RhoZ view.");
69
70   gRPhiMgr = new TEveProjectionManager();
71   gRPhiMgr->SetProjection(TEveProjection::kPT_RPhi);
72   gEve->AddToListTree(gRPhiMgr, kFALSE);
73   {
74     TEveProjectionAxes* a = new TEveProjectionAxes(gRPhiMgr);
75     a->SetMainColor(kWhite);
76     a->SetTitle("R-Phi");
77     a->SetTitleSize(0.05);
78     a->SetTitleFont(102);
79     a->SetLabelSize(0.025);
80     a->SetLabelFont(102);
81     gRPhiGeomScene->AddElement(a);
82   }
83   gRPhiMgr->SetCurrentDepth(-10);
84   gRPhiMgr->ImportElements(gGeomGentleRPhi, gRPhiGeomScene);
85   gRPhiMgr->SetCurrentDepth(0);
86
87   gRhoZMgr = new TEveProjectionManager();
88   gRhoZMgr->SetProjection(TEveProjection::kPT_RhoZ);
89   gEve->AddToListTree(gRhoZMgr, kFALSE);
90   {
91     TEveProjectionAxes* a = new TEveProjectionAxes(gRhoZMgr);
92     a->SetMainColor(kWhite);
93     a->SetTitle("Rho-Z");
94     a->SetTitleSize(0.05);
95     a->SetTitleFont(102);
96     a->SetLabelSize(0.025);
97     a->SetLabelFont(102);
98     gRhoZGeomScene->AddElement(a);
99   }
100   gRhoZMgr->SetCurrentDepth(-10);
101   gRhoZMgr->ImportElements(gGeomGentleRhoZ, gRhoZGeomScene);
102   gRhoZMgr->SetCurrentDepth(0);
103
104   // Viewers
105   TEveWindowSlot *slot = 0;
106   TEveWindowPack *pack = 0;
107
108   slot = TEveWindow::CreateWindowInTab(browser->GetTabRight());
109   pack = slot->MakePack();
110   pack->SetElementName("Multi View");
111   pack->SetHorizontal();
112   pack->SetShowTitleBar(kFALSE);
113   pack->NewSlot()->MakeCurrent();
114   g3DView = gEve->SpawnNewViewer("3D View", "");
115   g3DView->AddScene(gEve->GetGlobalScene());
116   g3DView->AddScene(gEve->GetEventScene());
117
118   pack = pack->NewSlot()->MakePack();
119   pack->SetShowTitleBar(kFALSE);
120   pack->NewSlot()->MakeCurrent();
121   gRPhiView = gEve->SpawnNewViewer("RPhi View", "");
122   gRPhiView->GetGLViewer()->SetCurrentCamera(TGLViewer::kCameraOrthoXOY);
123   gRPhiView->AddScene(gRPhiGeomScene);
124   gRPhiView->AddScene(gRPhiEventScene);
125
126   pack->NewSlot()->MakeCurrent();
127   gRhoZView = gEve->SpawnNewViewer("RhoZ View", "");
128   gRhoZView->GetGLViewer()->SetCurrentCamera(TGLViewer::kCameraOrthoXOY);
129   gRhoZView->AddScene(gRhoZGeomScene);
130   gRhoZView->AddScene(gRhoZEventScene);
131
132
133   browser->StartEmbedding(TRootBrowser::kBottom);
134   new AliEveEventManagerWindow(AliEveEventManager::GetMaster());
135   browser->StopEmbedding("EventCtrl");
136
137   gEve->Redraw3D(kTRUE);
138 }
139
140 void alieve_online_on_new_event()
141 {
142   if (AliEveEventManager::HasRawReader())
143     its_raw();
144   its_clusters();
145
146   if (AliEveEventManager::HasRawReader())
147     tpc_raw();
148   tpc_clusters();
149
150   if (AliEveEventManager::HasRawReader())
151     tof_raw();
152   tof_clusters();
153
154   hmpid_clusters();
155
156   if (AliEveEventManager::HasRawReader())
157     acorde_raw();
158
159   primary_vertex();
160   esd_tracks();
161
162   //  Disabled due to memory leaks
163   //  if (AliEveEventManager::HasESDfriend()) trd_tracks();
164   //  AliSysInfo::AddStamp("EveTRDTr");
165   trd_detectors();
166
167   AliESDEvent* esd = AliEveEventManager::AssertESD();
168   Double_t x[3];
169   esd->GetPrimaryVertex()->GetXYZ(x);
170
171   TEveElement* top = gEve->GetCurrentEvent();
172
173   if (gRPhiMgr && top)
174   {
175     gRPhiEventScene->DestroyElements();
176     if (gCenterProjectionsAtPrimaryVertex)
177       gRPhiMgr->SetCenter(x[0], x[1], x[2]);
178     gRPhiMgr->ImportElements(top, gRPhiEventScene);
179   }
180   if (gRhoZMgr && top)
181   {
182     gRhoZEventScene->DestroyElements();
183     if (gCenterProjectionsAtPrimaryVertex)
184       gRhoZMgr->SetCenter(x[0], x[1], x[2]);
185     gRhoZMgr->ImportElements(top, gRhoZEventScene);
186   }
187 }