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");
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);
25
26 auto calo = new TEveGeoTopNode(gGeoManager, top->FindNode("CALO_1"));
27 calo->SetVisLevel(3);
29
30 auto muon = new TEveGeoTopNode(gGeoManager, top->FindNode("MUON_1"));
31 muon->SetVisLevel(4);
33
34 // --- Stereo ---
35
36 TEveWindowSlot* slot = 0;
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
46
48
49 // --- Redraw ---
50
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();
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
Definition RtypesCore.h:63
constexpr Bool_t kFALSE
Definition RtypesCore.h:101
constexpr Bool_t kTRUE
Definition RtypesCore.h:100
@ kMagenta
Definition Rtypes.h:66
R__EXTERN TEveManager * gEve
R__EXTERN TGeoManager * gGeoManager
A wrapper over a TGeoNode, possibly displaced with a global trasformation stored in TEveElement.
Definition TEveGeoNode.h:90
void AddGlobalElement(TEveElement *element, TEveElement *parent=nullptr)
Add a global element, i.e.
TEveViewerList * GetViewers() const
TGLViewer * GetDefaultGLViewer() const
Get TGLViewer of the default TEveViewer.
TEveScene * GetGlobalScene() const
TEveBrowser * GetBrowser() const
void EditElement(TEveElement *element)
Show element in default editor.
TEveGedEditor * GetEditor() const
Returns main object editor.
static TEveManager * Create(Bool_t map_window=kTRUE, Option_t *opt="FIV")
If global TEveManager* gEve is not set initialize it.
void FullRedraw3D(Bool_t resetCameras=kFALSE, Bool_t dropLogicals=kFALSE)
Perform 3D redraw of all scenes and viewers.
TGeoManager * GetGeometry(const TString &filename)
Get geometry with given filename.
void AddElement(TEveElement *el) override
Call base-class implementation.
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:4618
void SetClipType(TGLClip::EType type)
Set current clip active in viewer - 'type' is one of kClipNone kClipPlane or kClipBox.
Definition TGLClip.cxx:580
@ kAxesEdge
Definition TGLUtil.h:952
TGLClipSet * GetClipSet() const
Definition TGLViewer.h:263
virtual Bool_t SetTab(Int_t tabIndex, Bool_t emit=kTRUE)
Brings the composite frame with the index tabIndex to the front and generate the following event if t...
Definition TGTab.cxx:558
void DefaultColors()
Set default volume colors according to A of material.
TGeoNode * FindNode(Bool_t safe_start=kTRUE)
Returns deepest node containing current point.
TGeoVolume * GetTopVolume() const
TGeoVolume * GetVolume() const
Definition TGeoNode.h:99
TGeoNode * FindNode(const char *name) const
search a daughter inside the list of nodes
TGTab * GetTabRight() const