void mirror() { // Produce a ray-traced image of a Davis-Cotton mirror component gSystem->Load("libGeom.so"); gGeoManager = new TGeoManager("mirror","Davis-Cotton mirror"); TGeoMaterial *mat = new TGeoMaterial("void", 0,0,0); TGeoMedium *med = new TGeoMedium("void", 1, mat); TGeoPgon *pgon = new TGeoPgon("pg",0.,360.,6,2); pgon->DefineSection(0,0,0,20); pgon->DefineSection(1, 30,0,20); TGeoSphere *sph = new TGeoSphere("sph", 40,45); TGeoTranslation *tr = new TGeoTranslation(0,0,45); tr->SetName("tr"); tr->RegisterYourself(); TGeoCompositeShape *cs = new TGeoCompositeShape("mir", "pg*sph:tr"); TGeoVolume *top = gGeoManager->MakeBox("TOP", med, 30,30,20); gGeoManager->SetTopVolume(top); TGeoVolume *mirror = new TGeoVolume("MIR",cs); mirror->SetLineColor(kRed); top->AddNode(mirror,1); gGeoManager->CloseGeometry(); top->Raytrace(); // point the mouse to the pad where the mirror is drawn, then // press j/k/u/i/h/l to zoom/unzoom/move arround the object }