49{
50
52
53
54
55 G4double env_sizeXY = 20*cm, env_sizeZ = 30*cm;
56 G4Material* env_mat = nist->FindOrBuildMaterial(
"G4_WATER");
57
58
59
60 G4bool checkOverlaps = true;
61
62
63
64
65 G4double world_sizeXY = 1.2*env_sizeXY;
66 G4double world_sizeZ = 1.2*env_sizeZ;
67 G4Material* world_mat = nist->FindOrBuildMaterial(
"G4_AIR");
68
69 auto solidWorld =
new G4Box(
"World",
70 0.5 * world_sizeXY, 0.5 * world_sizeXY, 0.5 * world_sizeZ);
71
73 world_mat,
74 "World");
75
77 G4ThreeVector(),
78 logicWorld,
79 "World",
80 nullptr,
81 false,
82 0,
83 checkOverlaps);
84
85
86
87
88 auto solidEnv =
new G4Box(
"Envelope",
89 0.5 * env_sizeXY, 0.5 * env_sizeXY, 0.5 * env_sizeZ);
90
92 env_mat,
93 "Envelope");
94
96 G4ThreeVector(),
97 logicEnv,
98 "Envelope",
99 logicWorld,
100 false,
101 0,
102 checkOverlaps);
103
104
105
106
107 G4Material* shape1_mat = nist->FindOrBuildMaterial(
"G4_A-150_TISSUE");
108 G4ThreeVector pos1 = G4ThreeVector(0, 2*cm, -7*cm);
109
110
111 G4double shape1_rmina = 0.*cm, shape1_rmaxa = 2.*cm;
112 G4double shape1_rminb = 0.*cm, shape1_rmaxb = 4.*cm;
113 G4double shape1_hz = 3.*cm;
114 G4double shape1_phimin = 0.*deg, shape1_phimax = 360.*deg;
115 auto solidShape1 =
new G4Cons(
"Shape1", shape1_rmina, shape1_rmaxa, shape1_rminb, shape1_rmaxb,
116 shape1_hz, shape1_phimin, shape1_phimax);
117
119 shape1_mat,
120 "Shape1");
121
123 pos1,
124 logicShape1,
125 "Shape1",
126 logicEnv,
127 false,
128 0,
129 checkOverlaps);
130
131
132
133
134 G4Material* shape2_mat = nist->FindOrBuildMaterial(
"G4_BONE_COMPACT_ICRU");
135 G4ThreeVector pos2 = G4ThreeVector(0, -1*cm, 7*cm);
136
137
138 G4double shape2_dxa = 12*cm, shape2_dxb = 12*cm;
139 G4double shape2_dya = 10*cm, shape2_dyb = 16*cm;
140 G4double shape2_dz = 6*cm;
141 auto solidShape2 =
new G4Trd(
"Shape2",
142 0.5 * shape2_dxa, 0.5 * shape2_dxb, 0.5 * shape2_dya, 0.5 * shape2_dyb,
143 0.5 * shape2_dz);
144
146 shape2_mat,
147 "Shape2");
148
150 pos2,
151 logicShape2,
152 "Shape2",
153 logicEnv,
154 false,
155 0,
156 checkOverlaps);
157
158
159
161
162
163
164
165 return physWorld;
166}
G4LogicalVolume * fScoringVolume