void test1() { // Mirror parameters const Double_t kR1 = 1363; const Double_t kRad = 425; const Double_t kR2 = 1363 + 8; TGeoManager* manager = new TGeoManager("manager", "test"); // Make the world TGeoBBox* box1 = new TGeoBBox("box1", 2000, 2000, 2000); TGeoVolume *top = new TGeoVolume("top", box1); manager->SetTopVolume(top); // Mirror Double_t r = kR2*TMath::Tan(TMath::ASin(kRad/kR1)); Double_t deg2rad = TMath::Pi()/180; TGeoPgon* cut = new TGeoPgon("cut", 0, 360, 6, 2); cut->DefineSection(0, 0, 0, 0); cut->DefineSection(1, kR2, 0, r*TMath::Sqrt(3)/2); TGeoSphere* mirSph = new TGeoSphere("mirSph", kR1, kR2, 0, TMath::ASin(kRad/kR1)/deg2rad); TGeoCompositeShape* mirSphCut = new TGeoCompositeShape("cs", "mirSph*cut"); TGeoVolume* mirror = new TGeoVolume("mirror", mirSphCut); top->AddNode(mirror, 1); manager->CloseGeometry(); top->Draw(); }