48 G4NistManager* nist = G4NistManager::Instance();
52 G4Material* matAir = nist->FindOrBuildMaterial(
"G4_AIR");
53 G4Material* matWater = nist->FindOrBuildMaterial(
"G4_WATER");
54 G4Material* matShape1 = nist->FindOrBuildMaterial(
"G4_A-150_TISSUE");
55 G4Material* matShape2 = nist->FindOrBuildMaterial(
"G4_BONE_COMPACT_ICRU");
59 const G4double envSizeXY = 20.0 * cm;
60 const G4double envSizeZ = 30.0 * cm;
64 auto* worldSolid =
new G4Box(
"World", 0.6 * envSizeXY, 0.6 * envSizeXY, 0.8 * envSizeZ);
65 auto* worldLV =
new G4LogicalVolume(worldSolid, matAir,
"World");
67 new G4PVPlacement(
nullptr, G4ThreeVector(), worldLV,
"World",
nullptr,
false, 0,
true);
71 auto* envSolid =
new G4Box(
"Envelope", 0.5 * envSizeXY, 0.5 * envSizeXY, 0.5 * envSizeZ);
72 auto* envLV =
new G4LogicalVolume(envSolid, matWater,
"Envelope");
73 new G4PVPlacement(
nullptr, G4ThreeVector(), envLV,
"Envelope", worldLV,
false, 0,
true);
78 const std::string stepDir = G4OCCT_B1_STEP_DIR;
79 TopoDS_Shape occtShape1 = LoadStepFile(stepDir +
"/shape1.step");
80 auto* solid1 =
new G4OCCTSolid(
"Shape1", occtShape1);
81 auto* lv1 =
new G4LogicalVolume(solid1, matShape1,
"Shape1");
82 new G4PVPlacement(
nullptr, G4ThreeVector(0, 2.0 * cm, -7.0 * cm), lv1,
"Shape1", envLV,
false, 0,
90 TopoDS_Shape occtShape2 = LoadStepFile(stepDir +
"/shape2.step");
91 auto* solid2 =
new G4OCCTSolid(
"Shape2", occtShape2);
92 auto* lv2 =
new G4LogicalVolume(solid2, matShape2,
"Shape2");
93 new G4PVPlacement(
nullptr, G4ThreeVector(-1.0 * cm, -1.5 * cm, 5.0 * cm), lv2,
"Shape2", envLV,