Logo ROOT   6.08/07
Reference Guide
projection_prescale.C File Reference

Detailed Description

Demonstates usage pre-scaling for automatic 2D projections.

eve_projection_prescale.png
const char* esd_geom_file_name =
"http://root.cern.ch/files/alice_ESDgeometry.root";
void projection_prescale()
{
TEveViewer *pev = gEve->SpawnNewViewer("Projections");
// camera
TEveScene* s = gEve->SpawnNewScene("Projected Geom");
pev->AddScene(s);
TGLViewer* pgv = pev->GetGLViewer();
cam.SetZoomMinMax(0.2, 20);
// projections
{
p->AddPreScaleEntry(0, 0, 4); // r scale 4 from 0
p->AddPreScaleEntry(0, 45, 1); // r scale 1 from 45
p->AddPreScaleEntry(0, 310, 0.5);
}
{
// Increase silicon tracker
p->AddPreScaleEntry(0, 0, 4); // rho scale 4 from 0
p->AddPreScaleEntry(1, 0, 4); // z scale 4 from 0
// Normal for TPC
p->AddPreScaleEntry(0, 45, 1); // rho scale 1 from 45
p->AddPreScaleEntry(1, 110, 1); // z scale 1 from 110
// Reduce the rest
p->AddPreScaleEntry(0, 310, 0.5);
p->AddPreScaleEntry(1, 250, 0.5);
}
s->AddElement(mng);
s->AddElement(axes);
// Simple geometry
TFile* geom = TFile::Open(esd_geom_file_name, "CACHEREAD");
if (!geom)
return;
TEveGeoShapeExtract* gse = (TEveGeoShapeExtract*) geom->Get("Gentle");
geom->Close();
delete geom;
mng->ImportElements(gsre);
TEveLine* line = new TEveLine;
for (Int_t i=0; i<160; ++i)
line->SetNextPoint(120*sin(0.2*i), 120*cos(0.2*i), 80-i);
gEve->AddElement(line);
mng->ImportElements(line);
//-------------------------------------------------------------------------
// Scaled 3D "projection"
//-------------------------------------------------------------------------
TEveViewer *sev = gEve->SpawnNewViewer("Scaled 3D");
sp->AddPreScaleEntry(2, 0, 1);
sp->AddPreScaleEntry(2, 100, 0.2);
TEveScene* ss = gEve->SpawnNewScene("Scaled Geom");
sev->AddScene(ss);
ss->AddElement(smng);
smng->ImportElements(gsre);
//-------------------------------------------------------------------------
}
Author
Matevz Tadel

Definition in file projection_prescale.C.