Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches
projection_prescale.C
Go to the documentation of this file.
1/// \file
2/// \ingroup tutorial_eve
3/// Demonstrates usage pre-scaling for automatic 2D projections.
4///
5/// \image html eve_projection_prescale.png
6/// \macro_code
7///
8/// \author Matevz Tadel
9
10const char* esd_geom_file_name =
11 "http://root.cern/files/alice_ESDgeometry.root";
12
14{
17
18 auto pev = gEve->SpawnNewViewer("Projections");
19
20 // camera
21 auto s = gEve->SpawnNewScene("Projected Geom");
22 pev->AddScene(s);
23
24 auto pgv = pev->GetGLViewer();
25 pgv->SetCurrentCamera(TGLViewer::kCameraOrthoXOY);
26 TGLOrthoCamera& cam = (TGLOrthoCamera&) pgv->CurrentCamera();
27 cam.SetZoomMinMax(0.2, 20);
28
29 // projections
30 auto mng = new TEveProjectionManager();
31 {
32 mng->SetProjection(TEveProjection::kPT_RPhi);
33 auto p = mng->GetProjection();
34 p->AddPreScaleEntry(0, 0, 4); // r scale 4 from 0
35 p->AddPreScaleEntry(0, 45, 1); // r scale 1 from 45
36 p->AddPreScaleEntry(0, 310, 0.5);
37 p->SetUsePreScale(kTRUE);
38 }
39 {
40 mng->SetProjection(TEveProjection::kPT_RhoZ);
41 auto p = mng->GetProjection();
42 // Increase silicon tracker
43 p->AddPreScaleEntry(0, 0, 4); // rho scale 4 from 0
44 p->AddPreScaleEntry(1, 0, 4); // z scale 4 from 0
45 // Normal for TPC
46 p->AddPreScaleEntry(0, 45, 1); // rho scale 1 from 45
47 p->AddPreScaleEntry(1, 110, 1); // z scale 1 from 110
48 // Reduce the rest
49 p->AddPreScaleEntry(0, 310, 0.5);
50 p->AddPreScaleEntry(1, 250, 0.5);
51 p->SetUsePreScale(kTRUE);
52 }
53 mng->SetProjection(TEveProjection::kPT_RPhi);
54 s->AddElement(mng);
55
56 auto axes = new TEveProjectionAxes(mng);
57 s->AddElement(axes);
58 gEve->AddToListTree(axes, kTRUE);
60
61 // Simple geometry
62 auto geom = TFile::Open(esd_geom_file_name, "CACHEREAD");
63 if (!geom)
64 return;
65
66 auto gse = (TEveGeoShapeExtract*) geom->Get("Gentle");
67 auto gsre = TEveGeoShape::ImportShapeExtract(gse, 0);
68 geom->Close();
69 delete geom;
71 mng->ImportElements(gsre);
72
73 auto line = new TEveLine;
74 line->SetMainColor(kGreen);
75 for (Int_t i=0; i<160; ++i)
76 line->SetNextPoint(120*sin(0.2*i), 120*cos(0.2*i), 80-i);
78 mng->ImportElements(line);
79 line->SetRnrSelf(kFALSE);
80
81
82 //-------------------------------------------------------------------------
83 // Scaled 3D "projection"
84 //-------------------------------------------------------------------------
85
86 auto sev = gEve->SpawnNewViewer("Scaled 3D");
88 auto sp = smng->GetProjection();
89 sp->SetUsePreScale(kTRUE);
90 sp->AddPreScaleEntry(2, 0, 1);
91 sp->AddPreScaleEntry(2, 100, 0.2);
92
93 auto ss = gEve->SpawnNewScene("Scaled Geom");
94 sev->AddScene(ss);
95 ss->AddElement(smng);
96
97 smng->ImportElements(gsre);
98
99 //-------------------------------------------------------------------------
100
102
104}
int Int_t
Definition RtypesCore.h:45
constexpr Bool_t kFALSE
Definition RtypesCore.h:94
constexpr Bool_t kTRUE
Definition RtypesCore.h:93
@ kGreen
Definition Rtypes.h:66
R__EXTERN TEveManager * gEve
winID h TVirtualViewer3D TVirtualGLPainter p
virtual void AddElement(TEveElement *el)
Add el to the list of children.
Globally positioned TGeoShape with rendering attributes and an optional list of daughter shape-extrac...
static TEveGeoShape * ImportShapeExtract(TEveGeoShapeExtract *gse, TEveElement *parent=nullptr)
Import a shape extract 'gse' under element 'parent'.
An arbitrary polyline with fixed line and marker attributes.
Definition TEveLine.h:26
void AddElement(TEveElement *element, TEveElement *parent=nullptr)
Add an element.
void AddGlobalElement(TEveElement *element, TEveElement *parent=nullptr)
Add a global element, i.e.
TEveBrowser * GetBrowser() const
TEveViewer * SpawnNewViewer(const char *name, const char *title="", Bool_t embed=kTRUE)
Create a new GL viewer.
static TEveManager * Create(Bool_t map_window=kTRUE, Option_t *opt="FIV")
If global TEveManager* gEve is not set initialize it.
TGListTreeItem * AddToListTree(TEveElement *re, Bool_t open, TGListTree *lt=nullptr)
void Redraw3D(Bool_t resetCameras=kFALSE, Bool_t dropLogicals=kFALSE)
TEveScene * SpawnNewScene(const char *name, const char *title="")
Create a new scene.
Axes for non-linear projections.
Manager class for steering of projections and managing projected objects.
static TFile * Open(const char *name, Option_t *option="", const char *ftitle="", Int_t compress=ROOT::RCompressionSetting::EDefaults::kUseCompiledDefault, Int_t netopt=0)
Create / open a file.
Definition TFile.cxx:4089
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:4626
Orthographic projection camera.
void SetZoomMinMax(Double_t min, Double_t max)
@ kCameraOrthoXOY
Definition TGLViewer.h:62
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
TGTab * GetTabRight() const
TLine * line
void projection_prescale(std::string type="RPhi")
RVec< PromoteType< T > > cos(const RVec< T > &v)
Definition RVec.hxx:1852
RVec< PromoteType< T > > sin(const RVec< T > &v)
Definition RVec.hxx:1851