2 // Author: Matevz Tadel 2009
4 /**************************************************************************
5 * Copyright(c) 1998-2009, ALICE Experiment at CERN, all rights reserved. *
6 * See http://aliceinfo.cern.ch/Offline/AliRoot/License.html for *
7 * full copyright notice. *
8 **************************************************************************/
10 #include "AliEveMultiView.h"
13 //______________________________________________________________________________
14 // Full description of AliEveMultiView
17 ClassImp(AliEveMultiView)
19 AliEveMultiView* AliEveMultiView::fgInstance = 0;
21 AliEveMultiView* AliEveMultiView::Instance()
23 // Return static instance.
28 AliEveMultiView::AliEveMultiView() :
29 fRPhiMgr(0), fRhoZMgr(0),
30 f3DView(0), fRPhiView(0), fRhoZView(0),
31 fRPhiGeomScene(0), fRhoZGeomScene(0), fRPhiEventScene(0), fRhoZEventScene(0),
32 fGeomGentle(0), fGeomGentleRPhi(0), fGeomGentleRhoZ(0),
33 fGeomGentleTrd(0), fGeomGentleMuon(0)
35 // Constructor --- creates required scenes, projection managers
39 throw TEveException("AliEveMultiView::AliEveMultiView already instantiated.");
45 fRPhiGeomScene = gEve->SpawnNewScene("RPhi Geometry",
46 "Scene holding projected geometry for the RPhi view.");
47 fRhoZGeomScene = gEve->SpawnNewScene("RhoZ Geometry",
48 "Scene holding projected geometry for the RhoZ view.");
49 fRPhiEventScene = gEve->SpawnNewScene("RPhi Event Data",
50 "Scene holding projected event-data for the RPhi view.");
51 fRhoZEventScene = gEve->SpawnNewScene("RhoZ Event Data",
52 "Scene holding projected event-data for the RhoZ view.");
55 // Projection managers
56 //=====================
58 fRPhiMgr = new TEveProjectionManager();
59 fRPhiMgr->SetProjection(TEveProjection::kPT_RPhi);
60 gEve->AddToListTree(fRPhiMgr, kFALSE);
62 TEveProjectionAxes* a = new TEveProjectionAxes(fRPhiMgr);
63 a->SetMainColor(kWhite);
65 a->SetTitleSize(0.05);
67 a->SetLabelSize(0.025);
69 fRPhiGeomScene->AddElement(a);
72 fRhoZMgr = new TEveProjectionManager();
73 fRhoZMgr->SetProjection(TEveProjection::kPT_RhoZ);
74 gEve->AddToListTree(fRhoZMgr, kFALSE);
76 TEveProjectionAxes* a = new TEveProjectionAxes(fRhoZMgr);
77 a->SetMainColor(kWhite);
79 a->SetTitleSize(0.05);
81 a->SetLabelSize(0.025);
83 fRhoZGeomScene->AddElement(a);
90 TEveWindowSlot *slot = 0;
91 TEveWindowPack *pack = 0;
93 slot = TEveWindow::CreateWindowInTab(gEve->GetBrowser()->GetTabRight());
94 pack = slot->MakePack();
95 pack->SetElementName("Multi View");
96 pack->SetHorizontal();
97 pack->SetShowTitleBar(kFALSE);
98 pack->NewSlot()->MakeCurrent();
99 f3DView = gEve->SpawnNewViewer("3D View", "");
100 f3DView->AddScene(gEve->GetGlobalScene());
101 f3DView->AddScene(gEve->GetEventScene());
103 pack = pack->NewSlot()->MakePack();
104 pack->SetShowTitleBar(kFALSE);
105 pack->NewSlot()->MakeCurrent();
106 fRPhiView = gEve->SpawnNewViewer("RPhi View", "");
107 fRPhiView->GetGLViewer()->SetCurrentCamera(TGLViewer::kCameraOrthoXOY);
108 fRPhiView->AddScene(fRPhiGeomScene);
109 fRPhiView->AddScene(fRPhiEventScene);
111 pack->NewSlot()->MakeCurrent();
112 fRhoZView = gEve->SpawnNewViewer("RhoZ View", "");
113 fRhoZView->GetGLViewer()->SetCurrentCamera(TGLViewer::kCameraOrthoXOY);
114 fRhoZView->AddScene(fRhoZGeomScene);
115 fRhoZView->AddScene(fRhoZEventScene);
118 //-------------------------------------------------------------------------
120 void AliEveMultiView::InitGeomGentle(TEveGeoShape* g3d, TEveGeoShape* grphi, TEveGeoShape* grhoz)
122 // Initialize gentle geometry.
125 fGeomGentleRPhi = grphi; fGeomGentleRPhi->IncDenyDestroy();
126 fGeomGentleRhoZ = grhoz; fGeomGentleRhoZ->IncDenyDestroy();
128 ImportGeomRPhi(fGeomGentleRPhi);
129 ImportGeomRhoZ(fGeomGentleRhoZ);
132 void AliEveMultiView::InitGeomGentleTrd(TEveGeoShape* gtrd)
134 // Initialize gentle geometry TRD.
136 fGeomGentleTrd = gtrd;
137 ImportGeomRPhi(fGeomGentleTrd);
138 ImportGeomRhoZ(fGeomGentleTrd);
141 void AliEveMultiView::InitGeomGentleMuon(TEveGeoShape* gmuon, Bool_t showRPhi, Bool_t showRhoZ)
143 // Initialize gentle geometry for MUON.
145 fGeomGentleMuon = gmuon;
146 if (showRPhi) ImportGeomRPhi(fGeomGentleMuon);
147 if (showRhoZ) ImportGeomRhoZ(fGeomGentleMuon);
150 //-------------------------------------------------------------------------
152 void AliEveMultiView::SetDepth(Float_t d)
154 // Set current depth on all projection managers.
156 fRPhiMgr->SetCurrentDepth(d);
157 fRhoZMgr->SetCurrentDepth(d);
160 //-------------------------------------------------------------------------
162 void AliEveMultiView::ImportGeomRPhi(TEveElement* el)
164 // Import el into r-phi geometry scene.
166 fRPhiMgr->ImportElements(el, fRPhiGeomScene);
169 void AliEveMultiView::ImportGeomRhoZ(TEveElement* el)
171 // Import el into rho-z geometry scene.
173 fRhoZMgr->ImportElements(el, fRhoZGeomScene);
176 void AliEveMultiView::ImportEventRPhi(TEveElement* el)
178 // Import el into r-phi event scene.
180 fRPhiMgr->ImportElements(el, fRPhiEventScene);
183 void AliEveMultiView::ImportEventRhoZ(TEveElement* el)
185 // Import el into rho-z event scene.
187 fRhoZMgr->ImportElements(el, fRhoZEventScene);
190 void AliEveMultiView::DestroyEventRPhi()
192 // Destroy all elements in r-phi event scene.
194 fRPhiEventScene->DestroyElements();
197 void AliEveMultiView::DestroyEventRhoZ()
199 // Destroy all elements in rho-z event scene.
201 fRhoZEventScene->DestroyElements();
204 //-------------------------------------------------------------------------
206 void AliEveMultiView::SetCenterRPhi(Double_t x, Double_t y, Double_t z)
208 // Set center of r-phi manager.
210 fRPhiMgr->SetCenter(x, y, z);
213 void AliEveMultiView::SetCenterRhoZ(Double_t x, Double_t y, Double_t z)
215 // Set center of rho-z manager.
217 fRhoZMgr->SetCenter(x, y, z);