Logo ROOT  
Reference Guide
Loading...
Searching...
No Matches
geom_cms_stereo.C
Go to the documentation of this file.
1/// \file
2/// \ingroup tutorial_eve
3/// Shows CMS geometry in stereo mode.
4/// This requires quad-buffer support in the OpenGL hardware / driver,
5/// otherwise a fatal error occurs.
6///
7/// \image html eve_geom_cms_stereo.png
8/// \macro_code
9///
10/// \author Matevz Tadel
11
12void geom_cms_stereo(Bool_t quad_buf = kTRUE)
13{
15
17 gGeoManager = gEve->GetGeometry("http://root.cern/files/cms.root");
18 gGeoManager->DefaultColors();
19
20 auto top = gGeoManager->GetTopVolume()->FindNode("CMSE_1")->GetVolume();
21
22 auto trk = new TEveGeoTopNode(gGeoManager, top->FindNode("TRAK_1"));
23 trk->SetVisLevel(6);
24 gEve->AddGlobalElement(trk);
25
26 auto calo = new TEveGeoTopNode(gGeoManager, top->FindNode("CALO_1"));
27 calo->SetVisLevel(3);
28 gEve->AddGlobalElement(calo);
29
30 auto muon = new TEveGeoTopNode(gGeoManager, top->FindNode("MUON_1"));
31 muon->SetVisLevel(4);
32 gEve->AddGlobalElement(muon);
33
34 // --- Stereo ---
35
36 TEveWindowSlot *slot = 0;
37 slot = TEveWindow::CreateWindowInTab(gEve->GetBrowser()->GetTabRight());
38
39 auto sv = new TEveViewer("Stereo GL", "Stereoscopic view");
40 sv->SpawnGLViewer(gEve->GetEditor(), kTRUE, quad_buf);
41 sv->AddScene(gEve->GetGlobalScene());
42
43 slot->ReplaceWindow(sv);
44
45 gEve->GetViewers()->AddElement(sv);
46
47 gEve->GetBrowser()->GetTabRight()->SetTab(1);
48
49 // --- Redraw ---
50
51 gEve->FullRedraw3D(kTRUE);
52 gEve->EditElement(sv);
53
54 // --- Fix editor ---
55
56 // EClipType not exported to CINT (see TGLUtil.h):
57 // 0 - no clip, 1 - clip plane, 2 - clip box
58 auto v = gEve->GetDefaultGLViewer();
59 v->GetClipSet()->SetClipType(TGLClip::EType(1));
60 v->ColorSet().Background().SetColor(kMagenta + 4);
61 v->SetGuideState(TGLUtil::kAxesEdge, kTRUE, kFALSE, 0);
62 v->RefreshPadEditor(v);
63
64 v->CurrentCamera().RotateRad(-1.2, 0.5);
65 v->DoDraw();
66}
bool Bool_t
Boolean (0=false, 1=true) (bool).
Definition RtypesCore.h:77
constexpr Bool_t kFALSE
Definition RtypesCore.h:108
constexpr Bool_t kTRUE
Definition RtypesCore.h:107
@ kMagenta
Definition Rtypes.h:67
externTEveManager * gEve
externTGeoManager * gGeoManager
A wrapper over a TGeoNode, possibly displaced with a global trasformation stored in TEveElement.
Definition TEveGeoNode.h:90
static TEveManager * Create(Bool_t map_window=kTRUE, Option_t *opt="FIV")
If global TEveManager* gEve is not set initialize it.
Eve representation of TGLViewer.
Definition TEveViewer.h:31
Description of TEveWindowSlot.
Definition TEveWindow.h:302
void ReplaceWindow(TEveWindow *w)
Replace this window with the passed one.
static TEveWindowSlot * CreateWindowInTab(TGTab *tab, TEveWindow *eve_parent=nullptr)
Create a new tab in a given tab-widget and populate it with a default window-slot.
static Bool_t SetCacheFileDir(std::string_view cacheDir, Bool_t operateDisconnected=kTRUE, Bool_t forceCacheread=kFALSE)
Sets the directory where to locally stage/cache remote files.
Definition TFile.cxx:4328
@ kAxesEdge
Definition TGLUtil.h:952