21 gSystem->Load(
"libGeom");
23 auto c =
new TCanvas(
"composite shape",
"A * B - C");
26 if (gGeoManager)
delete gGeoManager;
28 new TGeoManager(
"xtru",
"poza12");
29 auto mat =
new TGeoMaterial(
"Al", 26.98,13,2.7);
30 auto med =
new TGeoMedium(
"MED",1,mat);
31 auto top = gGeoManager->MakeBox(
"TOP",med,100,100,100);
32 gGeoManager->SetTopVolume(top);
35 auto box =
new TGeoBBox(
"box", 20., 20., 20.);
36 auto box1 =
new TGeoBBox(
"box1", 5., 5., 5.);
37 auto sph =
new TGeoSphere(
"sph", 5., 25.);
38 auto sph1 =
new TGeoSphere(
"sph1", 1., 15.);
40 auto tr =
new TGeoTranslation(0., 30., 0.);
41 auto tr1 =
new TGeoTranslation(0., 40., 0.);
42 auto tr2 =
new TGeoTranslation(0., 30., 0.);
43 auto tr3 =
new TGeoTranslation(0., 30., 0.);
49 tr->RegisterYourself();
50 tr1->RegisterYourself();
51 tr2->RegisterYourself();
52 tr3->RegisterYourself();
54 TGeoCompositeShape *cs =
new TGeoCompositeShape
55 (
"mir",
"(sph * box) + (sph1:tr - box1:tr1)");
57 auto vol =
new TGeoVolume(
"COMP4", cs);
58 vol->SetLineColor(kMagenta);
60 gGeoManager->CloseGeometry();
63 gGeoManager->SetNsegments(40);
64 TEveGeoNode::SetCSGExportNSeg(40);
66 TGLFaceSet::SetEnforceTriangles(kTRUE);
67 TEveManager::Create();
69 auto node = gGeoManager->GetTopNode();
70 auto en =
new TEveGeoTopNode(gGeoManager, node);
72 en->GetNode()->GetVolume()->SetVisibility(kFALSE);
74 gEve->AddGlobalElement(en);
76 gEve->Redraw3D(kTRUE);
78 en->ExpandIntoListTreesRecursively();
79 en->SaveExtract(
"csg.root",
"CSG Demo", kFALSE);