// Note: This script is slow. Start with nPatches=10. void TFacet(Int_t nPatches) { if (nPatches < 1) return; Float_t maxD = (Float_t)nPatches; TGeoManager *manager = new TGeoManager("world","My World"); TGeoMaterial *air = new TGeoMaterial("Vacuum",0,0,0); TGeoMedium *vacuum = new TGeoMedium("Vacuum",1,air); TGeoVolume *top = manager->MakeBox("Top",vacuum,maxD,maxD,maxD); manager->SetTopVolume(top); Float_t dx=1., dy=1., dz=1.; Int_t count=0, jcount=0, icount=0; for (Int_t i=0; iMakeBox(Form("inode%d",icount++),vacuum,1.,maxD,maxD); top->AddNode(inode,icount,tr_x); inode->SetVisibility(kFALSE); for (Int_t j=0; jMakeBox(Form("jnode%d",jcount++),vacuum,.4,.4,maxD); inode->AddNode(jnode,jcount,tr_y); jnode->SetVisibility(kTRUE); TString boxIds; for (Int_t k=0; kRegisterYourself(); TGeoBBox *box1 = new TGeoBBox(Form("box%d",count),.15*gRandom->Uniform(),.15*gRandom->Uniform(),.15*gRandom->Uniform()); boxIds += Form("+box%d:t%d",count,count++); } boxIds.Remove(0,1); TGeoCompositeShape *cs = new TGeoCompositeShape("cs",boxIds.Data()); TGeoVolume *comp = new TGeoVolume("comp",cs); comp->SetLineColor(kBlue); jnode->AddNode(comp,count); } } manager->CloseGeometry(); manager->SetVisLevel(3); top->Draw("ogl"); }