58{
59
61
62
63
64 G4double env_sizeXY = 20*cm, env_sizeZ = 30*cm;
65 G4Material* env_mat = nist->FindOrBuildMaterial(
"G4_WATER");
66
67
68
69 G4bool checkOverlaps = true;
70
71
72
73
74 G4double world_sizeXY = 1.2*env_sizeXY;
75 G4double world_sizeZ = 1.2*env_sizeZ;
76 G4Material* world_mat = nist->FindOrBuildMaterial(
"G4_AIR");
77
80 0.5*world_sizeXY, 0.5*world_sizeXY, 0.5*world_sizeZ);
81
84 world_mat,
85 "World");
86
89 G4ThreeVector(),
90 logicWorld,
91 "World",
92 0,
93 false,
94 0,
95 checkOverlaps);
96
97
98
99
101 new G4Box(
"Envelope",
102 0.5*env_sizeXY, 0.5*env_sizeXY, 0.5*env_sizeZ);
103
106 env_mat,
107 "Envelope");
108
110 G4ThreeVector(),
111 logicEnv,
112 "Envelope",
113 logicWorld,
114 false,
115 0,
116 checkOverlaps);
117
118
119
120
121 G4Material* shape1_mat = nist->FindOrBuildMaterial(
"G4_A-150_TISSUE");
122 G4ThreeVector pos1 = G4ThreeVector(0, 2*cm, -7*cm);
123
124
125 G4double shape1_rmina = 0.*cm, shape1_rmaxa = 2.*cm;
126 G4double shape1_rminb = 0.*cm, shape1_rmaxb = 4.*cm;
127 G4double shape1_hz = 3.*cm;
128 G4double shape1_phimin = 0.*deg, shape1_phimax = 360.*deg;
131 shape1_rmina, shape1_rmaxa, shape1_rminb, shape1_rmaxb, shape1_hz,
132 shape1_phimin, shape1_phimax);
133
136 shape1_mat,
137 "Shape1");
138
140 pos1,
141 logicShape1,
142 "Shape1",
143 logicEnv,
144 false,
145 0,
146 checkOverlaps);
147
148
149
150
151
152 G4Material* shape2_mat = nist->FindOrBuildMaterial(
"G4_BONE_COMPACT_ICRU");
153 G4ThreeVector pos2 = G4ThreeVector(0, -1*cm, 7*cm);
154
155
156 G4double shape2_dxa = 12*cm, shape2_dxb = 12*cm;
157 G4double shape2_dya = 10*cm, shape2_dyb = 16*cm;
158 G4double shape2_dz = 6*cm;
161 0.5*shape2_dxa, 0.5*shape2_dxb,
162 0.5*shape2_dya, 0.5*shape2_dyb, 0.5*shape2_dz);
163
166 shape2_mat,
167 "Shape2");
168
170 pos2,
171 logicShape2,
172 "Shape2",
173 logicEnv,
174 false,
175 0,
176 checkOverlaps);
177
178
179
181
182
183
184
185 return physWorld;
186}