122{
123
124
125
126
127
128
129
131 G4Material* air = NISTman->FindOrBuildMaterial(
"G4_AIR");
132 G4Material* water = NISTman->FindOrBuildMaterial(
"G4_WATER");
133 G4Material* lead = NISTman->FindOrBuildMaterial(
"G4_Pb");
134
135
136
137 G4cout << G4endl << "The materials defined are : " << G4endl << G4endl;
138 G4cout << *(G4Material::GetMaterialTable()) << G4endl;
139
140
141
142
143
144
145
146
147
148 G4ThreeVector worldSize = G4ThreeVector(200*cm, 200*cm, 200*cm);
149
151 =
new G4Box(
"world", worldSize.x()/2., worldSize.y()/2., worldSize.z()/2.);
154
155
156
159 G4ThreeVector(),
160 logicWorld,
161 "World",
162 0,
163 false,
164 0);
165
166
167
168
169
170
171
172
173
174
176
178 =
new G4Box(
"phantom",
179 phantomSize.x()/2., phantomSize.y()/2., phantomSize.z()/2.);
182
183 G4RotationMatrix* rot = new G4RotationMatrix();
184
185 G4ThreeVector positionPhantom;
186
188 positionPhantom,
189 logicPhantom,
190 "Phantom",
191 logicWorld,
192 false,
193 0);
194
195
196
197
198
199 G4cout << "<-- RE02DetectorConstruction::Construct-------" <<G4endl;
200 G4cout <<
" Water Phantom Size " <<
fPhantomSize/mm << G4endl;
201 G4cout <<
" Segmentation ("<<
fNx<<
","<<
fNy<<
","<<
fNz<<
")"<< G4endl;
202 G4cout <<
" Lead plate at even copy # (0-False,1-True): " <<
IsLeadSegment()
203 << G4endl;
204 G4cout << "<---------------------------------------------"<< G4endl;
205
206
210
211 G4ThreeVector sensSize;
212 sensSize.setX(phantomSize.x()/(G4double)nxCells);
213 sensSize.setY(phantomSize.y()/(G4double)nyCells);
214 sensSize.setZ(phantomSize.z()/(G4double)nzCells);
215
216
217
218
219
222 new G4Box(yRepName,phantomSize.x()/2.,sensSize.y()/2.,phantomSize.z()/2.);
225
226 new G4PVReplica(yRepName,logYRep,logicPhantom,kYAxis,
fNy,sensSize.y());
227
230 new G4Box(xRepName,sensSize.x()/2.,sensSize.y()/2.,phantomSize.z()/2.);
233
234 new G4PVReplica(xRepName,logXRep,logYRep,kXAxis,
fNx,sensSize.x());
235
236
237
238
239
240
243 new G4Box(zVoxName,sensSize.x()/2.,sensSize.y()/2.,sensSize.z()/2.);
245
246
247 std::vector<G4Material*> phantomMat(2,water);
249
250
251
252
255
258 logXRep,
259 kUndefined,
260 nzCells,
261 paramPhantom);
262
263
264
265
266
267
268
269
271 logicWorld ->SetVisAttributes(boxVisAtt);
272
273
274
276 logicPhantom->SetVisAttributes(phantomVisAtt);
277
278
280 logYRep->SetVisAttributes(yRepVisAtt);
282 logXRep->SetVisAttributes(xRepVisAtt);
283
284
285 fLVPhantomSens->SetVisAttributes(G4VisAttributes::GetInvisible());
286
287
288 return physiWorld;
289}
G4LogicalVolume * fLVPhantomSens
A nested parameterisation class for a phantom.