that it can also be used for online reco viz.
This is in new file / class MultiView.
--- /dev/null
+// Multi-view (3d, rphi, rhoz) service class using EVE Window Manager.
+// Author: Matevz Tadel 2009
+
+#include <TEveManager.h>
+
+#include <TEveViewer.h>
+#include <TGLViewer.h>
+
+#include <TEveScene.h>
+#include <TEveGeoShape.h>
+
+#include <TEveProjectionManager.h>
+#include <TEveProjectionAxes.h>
+
+#include <TEveBrowser.h>
+#include <TEveWindow.h>
+
+// MultiView
+//
+// Structure encapsulating standard views: 3D, r-phi and rho-z.
+// Includes scenes and projection managers.
+//
+// Should be used in compiled mode.
+
+class MultiView
+{
+public:
+ TEveProjectionManager *fRPhiMgr;
+ TEveProjectionManager *fRhoZMgr;
+
+ TEveViewer *f3DView;
+ TEveViewer *fRPhiView;
+ TEveViewer *fRhoZView;
+
+ TEveScene *fRPhiGeomScene;
+ TEveScene *fRhoZGeomScene;
+ TEveScene *fRPhiEventScene;
+ TEveScene *fRhoZEventScene;
+
+ TEveGeoShape *fGeomGentle;
+ TEveGeoShape *fGeomGentleRPhi;
+ TEveGeoShape *fGeomGentleRhoZ;
+ TEveGeoShape *fGeomGentleTrd;
+ TEveGeoShape *fGeomGentleMuon;
+
+ //-------------------------------------------------------------------------
+
+ MultiView() :
+ fGeomGentle(0), fGeomGentleRPhi(0), fGeomGentleRhoZ(0),
+ fGeomGentleTrd(0), fGeomGentleMuon(0)
+ {
+ // Constructor --- creates required scenes, projection managers
+ // and GL viewers.
+
+ // Scenes
+ //========
+
+ fRPhiGeomScene = gEve->SpawnNewScene("RPhi Geometry",
+ "Scene holding projected geometry for the RPhi view.");
+ fRhoZGeomScene = gEve->SpawnNewScene("RhoZ Geometry",
+ "Scene holding projected geometry for the RhoZ view.");
+ fRPhiEventScene = gEve->SpawnNewScene("RPhi Event Data",
+ "Scene holding projected event-data for the RPhi view.");
+ fRhoZEventScene = gEve->SpawnNewScene("RhoZ Event Data",
+ "Scene holding projected event-data for the RhoZ view.");
+
+
+ // Projection managers
+ //=====================
+
+ fRPhiMgr = new TEveProjectionManager();
+ fRPhiMgr->SetProjection(TEveProjection::kPT_RPhi);
+ gEve->AddToListTree(fRPhiMgr, kFALSE);
+ {
+ TEveProjectionAxes* a = new TEveProjectionAxes(fRPhiMgr);
+ a->SetMainColor(kWhite);
+ a->SetTitle("R-Phi");
+ a->SetTitleSize(0.05);
+ a->SetTitleFont(102);
+ a->SetLabelSize(0.025);
+ a->SetLabelFont(102);
+ fRPhiGeomScene->AddElement(a);
+ }
+
+ fRhoZMgr = new TEveProjectionManager();
+ fRhoZMgr->SetProjection(TEveProjection::kPT_RhoZ);
+ gEve->AddToListTree(fRhoZMgr, kFALSE);
+ {
+ TEveProjectionAxes* a = new TEveProjectionAxes(fRhoZMgr);
+ a->SetMainColor(kWhite);
+ a->SetTitle("Rho-Z");
+ a->SetTitleSize(0.05);
+ a->SetTitleFont(102);
+ a->SetLabelSize(0.025);
+ a->SetLabelFont(102);
+ fRhoZGeomScene->AddElement(a);
+ }
+
+
+ // Viewers
+ //=========
+
+ TEveWindowSlot *slot = 0;
+ TEveWindowPack *pack = 0;
+
+ slot = TEveWindow::CreateWindowInTab(gEve->GetBrowser()->GetTabRight());
+ pack = slot->MakePack();
+ pack->SetElementName("Multi View");
+ pack->SetHorizontal();
+ pack->SetShowTitleBar(kFALSE);
+ pack->NewSlot()->MakeCurrent();
+ f3DView = gEve->SpawnNewViewer("3D View", "");
+ f3DView->AddScene(gEve->GetGlobalScene());
+ f3DView->AddScene(gEve->GetEventScene());
+
+ pack = pack->NewSlot()->MakePack();
+ pack->SetShowTitleBar(kFALSE);
+ pack->NewSlot()->MakeCurrent();
+ fRPhiView = gEve->SpawnNewViewer("RPhi View", "");
+ fRPhiView->GetGLViewer()->SetCurrentCamera(TGLViewer::kCameraOrthoXOY);
+ fRPhiView->AddScene(fRPhiGeomScene);
+ fRPhiView->AddScene(fRPhiEventScene);
+
+ pack->NewSlot()->MakeCurrent();
+ fRhoZView = gEve->SpawnNewViewer("RhoZ View", "");
+ fRhoZView->GetGLViewer()->SetCurrentCamera(TGLViewer::kCameraOrthoXOY);
+ fRhoZView->AddScene(fRhoZGeomScene);
+ fRhoZView->AddScene(fRhoZEventScene);
+ }
+
+ //-------------------------------------------------------------------------
+
+ void InitGeomGentle(TEveGeoShape* g3d, TEveGeoShape* grphi, TEveGeoShape* grhoz)
+ {
+ fGeomGentle = g3d;
+ fGeomGentleRPhi = grphi; fGeomGentleRPhi->IncDenyDestroy();
+ fGeomGentleRhoZ = grhoz; fGeomGentleRhoZ->IncDenyDestroy();
+
+ fRPhiMgr->SetCurrentDepth(-10);
+ ImportGeomRPhi(fGeomGentleRPhi);
+ fRPhiMgr->SetCurrentDepth(0);
+
+ fRhoZMgr->SetCurrentDepth(-10);
+ ImportGeomRhoZ(fGeomGentleRhoZ);
+ fRhoZMgr->SetCurrentDepth(0);
+ }
+
+ void InitGeomGentleTrd(TEveGeoShape* gtrd)
+ {
+ fGeomGentleTrd = gtrd;
+ ImportGeomRPhi(fGeomGentleTrd);
+ ImportGeomRhoZ(fGeomGentleTrd);
+ }
+
+ void InitGeomGentleMuon(TEveGeoShape* gmuon, Bool_t showRPhi, Bool_t showRhoZ)
+ {
+ fGeomGentleMuon = gmuon;
+ if (showRPhi) ImportGeomRPhi(fGeomGentleMuon);
+ if (showRhoZ) ImportGeomRhoZ(fGeomGentleMuon);
+ }
+
+ //-------------------------------------------------------------------------
+
+ void ImportGeomRPhi(TEveElement* el)
+ {
+ fRPhiMgr->ImportElements(el, fRPhiGeomScene);
+ }
+
+ void ImportGeomRhoZ(TEveElement* el)
+ {
+ fRhoZMgr->ImportElements(el, fRhoZGeomScene);
+ }
+
+ void ImportEventRPhi(TEveElement* el)
+ {
+ fRPhiMgr->ImportElements(el, fRPhiEventScene);
+ }
+
+ void ImportEventRhoZ(TEveElement* el)
+ {
+ fRhoZMgr->ImportElements(el, fRhoZEventScene);
+ }
+
+ void DestroyEventRPhi()
+ {
+ fRPhiEventScene->DestroyElements();
+ }
+
+ void DestroyEventRhoZ()
+ {
+ fRhoZEventScene->DestroyElements();
+ }
+
+ void SetCenterRPhi(Double_t x, Double_t y, Double_t z)
+ {
+ fRPhiMgr->SetCenter(x, y, z);
+ }
+
+ void SetCenterRhoZ(Double_t x, Double_t y, Double_t z)
+ {
+ fRhoZMgr->SetCenter(x, y, z);
+ }
+};
+
+MultiView *gMultiView = 0;
class TEveGeoShape;
class TEveUtil;
-TEveGeoShape *gGeomGentle = 0;
-
-TEveScene *gRPhiGeomScene = 0;
-TEveScene *gRhoZGeomScene = 0;
-TEveScene *gRPhiEventScene = 0;
-TEveScene *gRhoZEventScene = 0;
-
-TEveProjectionManager *gRPhiMgr = 0;
-TEveProjectionManager *gRhoZMgr = 0;
-
-TEveViewer *g3DView = 0;
-TEveViewer *gRPhiView = 0;
-TEveViewer *gRhoZView = 0;
-
Bool_t gCenterProjectionsAtPrimaryVertex = kFALSE;
+
void alieve_online_init()
{
- gROOT->LoadMacro("geom_gentle.C");
+ if (gROOT->LoadMacro("MultiView.C+") != 0)
+ {
+ gEnv->SetValue("Root.Stacktrace", "no");
+ Fatal("alieve_online.C", "Failed loading MultiView.C in compiled mode.");
+ }
gROOT->LoadMacro("primary_vertex.C");
gROOT->LoadMacro("esd_tracks.C");
TEveBrowser *browser = gEve->GetBrowser();
browser->ShowCloseTab(kFALSE);
- // Temp fix !!!
- TGeoManager *man = gGeoManager;
- gGeomGentle = geom_gentle();
- gGeomGentleRPhi = geom_gentle_rphi(); gGeomGentleRPhi->IncDenyDestroy();
- gGeomGentleRhoZ = geom_gentle_rhoz(); gGeomGentleRhoZ->IncDenyDestroy();
- // Temp fix !!!
- gGeoManager = man;
-
- // Scenes
- gRPhiGeomScene = gEve->SpawnNewScene("RPhi Geometry",
- "Scene holding projected geometry for the RPhi view.");
- gRhoZGeomScene = gEve->SpawnNewScene("RhoZ Geometry",
- "Scene holding projected geometry for the RhoZ view.");
- gRPhiEventScene = gEve->SpawnNewScene("RPhi Event Data",
- "Scene holding projected geometry for the RPhi view.");
- gRhoZEventScene = gEve->SpawnNewScene("RhoZ Event Data",
- "Scene holding projected geometry for the RhoZ view.");
-
- gRPhiMgr = new TEveProjectionManager();
- gRPhiMgr->SetProjection(TEveProjection::kPT_RPhi);
- gEve->AddToListTree(gRPhiMgr, kFALSE);
- {
- TEveProjectionAxes* a = new TEveProjectionAxes(gRPhiMgr);
- a->SetMainColor(kWhite);
- a->SetTitle("R-Phi");
- a->SetTitleSize(0.05);
- a->SetTitleFont(102);
- a->SetLabelSize(0.025);
- a->SetLabelFont(102);
- gRPhiGeomScene->AddElement(a);
- }
- gRPhiMgr->SetCurrentDepth(-10);
- gRPhiMgr->ImportElements(gGeomGentleRPhi, gRPhiGeomScene);
- gRPhiMgr->SetCurrentDepth(0);
+ // Gentle-geom loading changes gGeoManager.
+ TEveGeoManagerHolder mgrRestore;
- gRhoZMgr = new TEveProjectionManager();
- gRhoZMgr->SetProjection(TEveProjection::kPT_RhoZ);
- gEve->AddToListTree(gRhoZMgr, kFALSE);
- {
- TEveProjectionAxes* a = new TEveProjectionAxes(gRhoZMgr);
- a->SetMainColor(kWhite);
- a->SetTitle("Rho-Z");
- a->SetTitleSize(0.05);
- a->SetTitleFont(102);
- a->SetLabelSize(0.025);
- a->SetLabelFont(102);
- gRhoZGeomScene->AddElement(a);
- }
- gRhoZMgr->SetCurrentDepth(-10);
- gRhoZMgr->ImportElements(gGeomGentleRhoZ, gRhoZGeomScene);
- gRhoZMgr->SetCurrentDepth(0);
-
- // Viewers
- TEveWindowSlot *slot = 0;
- TEveWindowPack *pack = 0;
-
- slot = TEveWindow::CreateWindowInTab(browser->GetTabRight());
- pack = slot->MakePack();
- pack->SetElementName("Multi View");
- pack->SetHorizontal();
- pack->SetShowTitleBar(kFALSE);
- pack->NewSlot()->MakeCurrent();
- g3DView = gEve->SpawnNewViewer("3D View", "");
- g3DView->AddScene(gEve->GetGlobalScene());
- g3DView->AddScene(gEve->GetEventScene());
-
- pack = pack->NewSlot()->MakePack();
- pack->SetShowTitleBar(kFALSE);
- pack->NewSlot()->MakeCurrent();
- gRPhiView = gEve->SpawnNewViewer("RPhi View", "");
- gRPhiView->GetGLViewer()->SetCurrentCamera(TGLViewer::kCameraOrthoXOY);
- gRPhiView->AddScene(gRPhiGeomScene);
- gRPhiView->AddScene(gRPhiEventScene);
-
- pack->NewSlot()->MakeCurrent();
- gRhoZView = gEve->SpawnNewViewer("RhoZ View", "");
- gRhoZView->GetGLViewer()->SetCurrentCamera(TGLViewer::kCameraOrthoXOY);
- gRhoZView->AddScene(gRhoZGeomScene);
- gRhoZView->AddScene(gRhoZEventScene);
+ gMultiView = new MultiView;
+
+ TEveUtil::LoadMacro("geom_gentle.C");
+ gMultiView->InitGeomGentle(geom_gentle(),
+ geom_gentle_rphi(),
+ geom_gentle_rhoz());
+
+ // See visscan_init.C for how to add TRD / MUON geometry.
browser->GetTabRight()->SetTab(1);
TEveElement* top = gEve->GetCurrentEvent();
- if (gRPhiMgr && top)
- {
- gRPhiEventScene->DestroyElements();
- if (gCenterProjectionsAtPrimaryVertex)
- gRPhiMgr->SetCenter(x[0], x[1], x[2]);
- gRPhiMgr->ImportElements(top, gRPhiEventScene);
- }
- if (gRhoZMgr && top)
- {
- gRhoZEventScene->DestroyElements();
- if (gCenterProjectionsAtPrimaryVertex)
- gRhoZMgr->SetCenter(x[0], x[1], x[2]);
- gRhoZMgr->ImportElements(top, gRhoZEventScene);
- }
+ gMultiView->DestroyEventRPhi();
+ if (gCenterProjectionsAtPrimaryVertex)
+ gMultiView->SetCenterRPhi(x[0], x[1], x[2]);
+ gMultiView->ImportEventRPhi(top);
+
+ gMultiView->DestroyEventRhoZ();
+ if (gCenterProjectionsAtPrimaryVertex)
+ gMultiView->SetCenterRhoZ(x[0], x[1], x[2]);
+ gMultiView->ImportEventRhoZ(top);
}
**************************************************************************/
class AliEveMacroExecutor;
-
+class MultiView;
class TEveProjectionManager;
class TEveGeoShape;
class TEveUtil;
-TEveGeoShape *gGeomGentle = 0;
-TEveGeoShape *gGeomGentleRPhi = 0;
-TEveGeoShape *gGeomGentleRhoZ = 0;
-TEveGeoShape *gGeomGentleTRD = 0;
-TEveGeoShape *gGeomGentleMUON = 0;
-
-TEveScene *gRPhiGeomScene = 0;
-TEveScene *gRhoZGeomScene = 0;
-TEveScene *gRPhiEventScene = 0;
-TEveScene *gRhoZEventScene = 0;
-
-TEveProjectionManager *gRPhiMgr = 0;
-TEveProjectionManager *gRhoZMgr = 0;
-TEveViewer *g3DView = 0;
-TEveViewer *gRPhiView = 0;
-TEveViewer *gRhoZView = 0;
-
-Bool_t gShowTRD = kFALSE;
-Bool_t gShowMUON = kTRUE;
-Bool_t gShowMUONRPhi = kFALSE;
-Bool_t gShowMUONRhoZ = kTRUE;
+Bool_t gShowTrd = kTRUE;
+Bool_t gShowMuonRPhi = kFALSE;
+Bool_t gShowMuonRhoZ = kTRUE;
Bool_t gCenterProjectionsAtPrimaryVertex = kFALSE;
Fatal("visscan_init.C", "OCDB path MUST be specified as the first argument.");
}
+ if (gROOT->LoadMacro("MultiView.C+") != 0)
+ {
+ gEnv->SetValue("Root.Stacktrace", "no");
+ Fatal("visscan_init.C", "Failed loading MultiView.C in compiled mode.");
+ }
+
if (!show_extra_geo)
{
- gShowTRD = gShowMUON = gShowMUONRPhi = gShowMUONRhoZ = kFALSE;
+ gShowTrd = gShowMuonRPhi = gShowMuonRhoZ = kFALSE;
}
AliEveEventManager::AddAODfriend("AliAOD.VertexingHF.root");
AliEveMacroExecutor *exec = AliEveEventManager::GetMaster()->GetExecutor();
TEveBrowser *browser = gEve->GetBrowser();
+ browser->ShowCloseTab(kFALSE);
+
//==============================================================================
// Geometry, scenes, projections and viewers
//==============================================================================
- browser->ShowCloseTab(kFALSE);
-
- // Geometry
+ gMultiView = new MultiView;
TEveUtil::LoadMacro("geom_gentle.C");
- gGeomGentle = geom_gentle();
- gGeomGentleRPhi = geom_gentle_rphi(); gGeomGentleRPhi->IncDenyDestroy();
- gGeomGentleRhoZ = geom_gentle_rhoz(); gGeomGentleRhoZ->IncDenyDestroy();
- if (gShowTRD) {
+ gMultiView->InitGeomGentle(geom_gentle(),
+ geom_gentle_rphi(),
+ geom_gentle_rhoz());
+
+ if (gShowTrd) {
TEveUtil::LoadMacro("geom_gentle_trd.C");
- gGeomGentleTRD = geom_gentle_trd();
+ gMultiView->InitGeomGentleTrd(geom_gentle_trd());
}
- if (gShowMUON) {
- TEveUtil::LoadMacro("geom_gentle_muon.C");
- gGeomGentleMUON = geom_gentle_muon(kFALSE);
- }
-
- // Scenes
-
- gRPhiGeomScene = gEve->SpawnNewScene("RPhi Geometry",
- "Scene holding projected geometry for the RPhi view.");
- gRhoZGeomScene = gEve->SpawnNewScene("RhoZ Geometry",
- "Scene holding projected geometry for the RhoZ view.");
- gRPhiEventScene = gEve->SpawnNewScene("RPhi Event Data",
- "Scene holding projected geometry for the RPhi view.");
- gRhoZEventScene = gEve->SpawnNewScene("RhoZ Event Data",
- "Scene holding projected geometry for the RhoZ view.");
- // Projection managers
-
- gRPhiMgr = new TEveProjectionManager();
- gRPhiMgr->SetProjection(TEveProjection::kPT_RPhi);
- gEve->AddToListTree(gRPhiMgr, kFALSE);
- {
- TEveProjectionAxes* a = new TEveProjectionAxes(gRPhiMgr);
- a->SetMainColor(kWhite);
- a->SetTitle("R-Phi");
- a->SetTitleSize(0.05);
- a->SetTitleFont(102);
- a->SetLabelSize(0.025);
- a->SetLabelFont(102);
- gRPhiGeomScene->AddElement(a);
- }
- gRPhiMgr->SetCurrentDepth(-10);
- gRPhiMgr->ImportElements(gGeomGentleRPhi, gRPhiGeomScene);
- gRPhiMgr->SetCurrentDepth(0);
- if (gShowTRD) gRPhiMgr->ImportElements(gGeomGentleTRD, gRPhiGeomScene);
- if (gShowMUONRPhi) gRPhiMgr->ImportElements(gGeomGentleMUON, gRPhiGeomScene);
-
- gRhoZMgr = new TEveProjectionManager();
- gRhoZMgr->SetProjection(TEveProjection::kPT_RhoZ);
- gEve->AddToListTree(gRhoZMgr, kFALSE);
- {
- TEveProjectionAxes* a = new TEveProjectionAxes(gRhoZMgr);
- a->SetMainColor(kWhite);
- a->SetTitle("Rho-Z");
- a->SetTitleSize(0.05);
- a->SetTitleFont(102);
- a->SetLabelSize(0.025);
- a->SetLabelFont(102);
- gRhoZGeomScene->AddElement(a);
+ if (gShowMuonRPhi || gShowMuonRhoZ) {
+ TEveUtil::LoadMacro("geom_gentle_muon.C");
+ gMultiView->InitGeomGentleMuon(geom_gentle_muon(kFALSE), gShowMuonRPhi, gShowMuonRhoZ);
}
- gRhoZMgr->SetCurrentDepth(-10);
- gRhoZMgr->ImportElements(gGeomGentleRhoZ, gRhoZGeomScene);
- gRhoZMgr->SetCurrentDepth(0);
- if (gShowTRD) gRhoZMgr->ImportElements(gGeomGentleTRD, gRhoZGeomScene);
- if (gShowMUONRhoZ) gRhoZMgr->ImportElements(gGeomGentleMUON, gRhoZGeomScene);
-
- // Viewers
-
- TEveWindowSlot *slot = 0;
- TEveWindowPack *pack = 0;
-
- slot = TEveWindow::CreateWindowInTab(browser->GetTabRight());
- pack = slot->MakePack();
- pack->SetElementName("Multi View");
- pack->SetHorizontal();
- pack->SetShowTitleBar(kFALSE);
- pack->NewSlot()->MakeCurrent();
- g3DView = gEve->SpawnNewViewer("3D View", "");
- g3DView->AddScene(gEve->GetGlobalScene());
- g3DView->AddScene(gEve->GetEventScene());
-
- pack = pack->NewSlot()->MakePack();
- pack->SetShowTitleBar(kFALSE);
- pack->NewSlot()->MakeCurrent();
- gRPhiView = gEve->SpawnNewViewer("RPhi View", "");
- gRPhiView->GetGLViewer()->SetCurrentCamera(TGLViewer::kCameraOrthoXOY);
- gRPhiView->AddScene(gRPhiGeomScene);
- gRPhiView->AddScene(gRPhiEventScene);
-
- pack->NewSlot()->MakeCurrent();
- gRhoZView = gEve->SpawnNewViewer("RhoZ View", "");
- gRhoZView->GetGLViewer()->SetCurrentCamera(TGLViewer::kCameraOrthoXOY);
- gRhoZView->AddScene(gRhoZGeomScene);
- gRhoZView->AddScene(gRhoZEventScene);
//==============================================================================
exec->AddMacro(new AliEveMacro(AliEveMacro::kAOD, "ANA HF", "aod_HF.C", "aod_HF", "", kFALSE));
exec->AddMacro(new AliEveMacro(AliEveMacro::kAOD, "ANA Jets", "jetplane.C", "jetplane", "", kFALSE));
+
//==============================================================================
// Additional GUI components
//==============================================================================
"are placed here when the main-frame is closed.");
gEve->GetWindowManager()->SetDefaultContainer(store_tab);
+
//==============================================================================
// AliEve objects - global tools
//==============================================================================
TEveElement* top = gEve->GetCurrentEvent();
- if (gRPhiMgr && top)
- {
- gRPhiEventScene->DestroyElements();
- if (gCenterProjectionsAtPrimaryVertex)
- gRPhiMgr->SetCenter(x[0], x[1], x[2]);
- gRPhiMgr->ImportElements(top, gRPhiEventScene);
- }
- if (gRhoZMgr && top)
- {
- gRhoZEventScene->DestroyElements();
- if (gCenterProjectionsAtPrimaryVertex)
- gRhoZMgr->SetCenter(x[0], x[1], x[2]);
- gRhoZMgr->ImportElements(top, gRhoZEventScene);
- }
+ gMultiView->DestroyEventRPhi();
+ if (gCenterProjectionsAtPrimaryVertex)
+ gMultiView->SetCenterRPhi(x[0], x[1], x[2]);
+ gMultiView->ImportEventRPhi(top);
+
+ gMultiView->DestroyEventRhoZ();
+ if (gCenterProjectionsAtPrimaryVertex)
+ gMultiView->SetCenterRhoZ(x[0], x[1], x[2]);
+ gMultiView->ImportEventRhoZ(top);
}