/// \file /// \ingroup tutorial_eve /// Demonstrates usage of automatic 2D projections - class TEveProjectionManager. /// /// \image html eve_projection.png /// \macro_code /// /// \author Matevz Tadel const char* esd_geom_file_name = "http://root.cern.ch/files/alice_ESDgeometry.root"; void projection() { TFile::SetCacheFileDir("."); TEveManager::Create(); // camera auto s = gEve->SpawnNewScene("Projected Event"); gEve->GetDefaultViewer()->AddScene(s); auto v = gEve->GetDefaultGLViewer(); v->SetCurrentCamera(TGLViewer::kCameraOrthoXOY); TGLOrthoCamera& cam = (TGLOrthoCamera&) v->CurrentCamera(); cam.SetZoomMinMax(0.2, 20); // projections auto mng = new TEveProjectionManager(TEveProjection::kPT_RPhi); s->AddElement(mng); auto axes = new TEveProjectionAxes(mng); axes->SetTitle("TEveProjections demo"); s->AddElement(axes); gEve->AddToListTree(axes, kTRUE); gEve->AddToListTree(mng, kTRUE); // Simple geometry auto geom = TFile::Open(esd_geom_file_name, "CACHEREAD"); if (!geom) return; auto gse = (TEveGeoShapeExtract*) geom->Get("Gentle"); auto gsre = TEveGeoShape::ImportShapeExtract(gse, 0); geom->Close(); delete geom; gsre->SetPickableRecursively(kTRUE); gEve->AddGlobalElement(gsre); gEve->GetGlobalScene()->SetRnrState(kFALSE); mng->ImportElements(gsre); auto line = new TEveLine; line->SetMainColor(kGreen); 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); line->SetRnrSelf(kFALSE); gEve->Redraw3D(kTRUE); }