183 G4RotationMatrix* xRot =
new G4RotationMatrix;
184 xRot->rotateX(90*deg);
186 G4Tubs* hole1 =
new G4Tubs(
"hole1",hole[0],hole[1],hole[2]/2,0,360);
187 G4LogicalVolume* logicalhole1 =
new G4LogicalVolume(hole1, Steel,
"logicalhole1");
189 new G4PVPlacement(xRot,G4ThreeVector(0,(outerCryo[1]+hole[2]/2)*mm,1640*mm),logicalhole1,
"physicalhole1",logicalbes,
false,0);
191 G4Tubs* hole2 =
new G4Tubs(
"hole2",hole[3],hole[4],hole[5]/2,0,360);
192 G4LogicalVolume* logicalhole2 =
new G4LogicalVolume(hole2, Steel,
"logicalhole2");
194 new G4PVPlacement(xRot,G4ThreeVector(0,(outerCryo[1]+hole[2]+hole[5]/2)*mm,1640*mm),logicalhole2,
"physicalhole2",logicalbes,
false,0);
196 G4Tubs* hole3 =
new G4Tubs(
"hole3",hole[6],hole[7],hole[12]/2,0,360);
197 G4LogicalVolume* logicalhole3 =
new G4LogicalVolume(hole3, Steel,
"logicalhole3");
199 new G4PVPlacement(xRot,G4ThreeVector(0,(outerCryo[1]+hole[2]+hole[12]/2)*mm,1640*mm),logicalhole3,
"physicalhole3",logicalbes,
false,0);
201 G4Tubs* hole4 =
new G4Tubs(
"hole4",hole[8],hole[9],hole[12]/2,0,360);
202 G4LogicalVolume* logicalhole4 =
new G4LogicalVolume(hole4, G4Material::GetMaterial(
"Aluminium"),
"logicalhole4");
204 new G4PVPlacement(xRot,G4ThreeVector(0,(l3Adia[1]+pipe2[1]+pipe2[4]+hole[12]/2)*mm,1640*mm),logicalhole4,
"physicalhole4",logicalbes,
false,0);
206 G4Box* hole5 =
new G4Box(
"hole5",hole[10]/2,hole[11]/2,hole[12]/2);
207 G4LogicalVolume* logicalhole5 =
new G4LogicalVolume(hole5, G4Material::GetMaterial(
"Aluminium"),
"logicalhole5");
209 new G4PVPlacement(xRot,G4ThreeVector(0,(l3Adia[1]+pipe2[1]+pipe2[4]+hole[12]/2)*mm,1640*mm),logicalhole5,
"physicalhole5",logicalbes,
false,0);
212 G4Tubs* solidSCM_tmp =
new G4Tubs(
"solidSCM_tmp",innerCryo[0]*mm,1700*mm,(outerCryo[2]+2*endCryo[2])/2.0*mm,0,360);
213 G4Tubs* hole_tmp1 =
new G4Tubs(
"hole_tmp1",0,hole[1],(1700.-1617.5+2)/2.*mm,0,360);
214 G4SubtractionSolid* solidSCM =
new G4SubtractionSolid(
"solidSCM",solidSCM_tmp,hole_tmp1,xRot,G4ThreeVector(0,(1700.+1617.5+2)/2*mm,1640*mm) );
215 logicalSCM =
new G4LogicalVolume(solidSCM, G4Material::GetMaterial(
"Air"),
"logicalSCM");
216 physicalSCM =
new G4PVPlacement(0,G4ThreeVector(0,0,0),logicalSCM,
"physicalSCM",logicalbes,
false,0);
218 G4Tubs* tub1 =
new G4Tubs(
"tub1",innerCryo[0]*mm,innerCryo[1]*mm,innerCryo[2]/2.0*mm,0,360);
219 logicalinnCryo =
new G4LogicalVolume(tub1, Steel,
"logicalinnCryo");
220 physicalinnCryo =
new G4PVPlacement(0,G4ThreeVector(0,0,0),logicalinnCryo,
"physicalinnCryo",logicalSCM,
false,0);
222 G4Tubs* tub2 =
new G4Tubs(
"tub2",l1Adia[0]*mm,l1Adia[1]*mm,l1Adia[2]/2.0*mm,0,360);
223 logicall1Adia =
new G4LogicalVolume(tub2, fibre,
"logicall1Adia");
224 physicall1Adia =
new G4PVPlacement(0,G4ThreeVector(0,0,0),logicall1Adia,
"physicall1Adia",logicalSCM,
false,0);
226 G4Tubs* tub3 =
new G4Tubs(
"tub3",innerShield[0]*mm,innerShield[1]*mm,innerShield[2]/2.0*mm,0,360);
227 logicalinnShield =
new G4LogicalVolume(tub3, G4Material::GetMaterial(
"Aluminium"),
"logicalinnShield");
228 physicalinnShield =
new G4PVPlacement(0,G4ThreeVector(0,0,0),logicalinnShield,
"physicalinnShield",logicalSCM,
false,0);
230 G4Tubs* tub4 =
new G4Tubs(
"tub4",l2Adia[0]*mm,l2Adia[1]*mm,l2Adia[2]/2.0*mm,0,360);
231 logicall2Adia =
new G4LogicalVolume(tub4, fibre,
"logicall2Adia");
232 physicall2Adia =
new G4PVPlacement(0,G4ThreeVector(0,0,0),logicall2Adia,
"physicall2Adia",logicalSCM,
false,0);
234 G4Tubs* hole_tmp3 =
new G4Tubs(
"hole_tmp3",0,hole[8]*mm,25*mm,0,360);
235 G4Tubs* tub5_tmp =
new G4Tubs(
"tub5_tmp",outerShield[0]*mm,outerShield[1]*mm,outerShield[2]/2.0*mm,0,360);
236 G4SubtractionSolid* tub5 =
new G4SubtractionSolid(
"tub5",tub5_tmp,hole_tmp3,xRot,G4ThreeVector(0,(outerShield[0]+outerShield[1])/2*mm,1640*mm) );
237 logicaloutShield =
new G4LogicalVolume(tub5, G4Material::GetMaterial(
"Aluminium"),
"logicaloutShield");
238 physicaloutShield =
new G4PVPlacement(0,G4ThreeVector(0,0,0),logicaloutShield,
"physicaloutShield",logicalSCM,
false,0);
240 G4Tubs* tub6_tmp =
new G4Tubs(
"tub6_tmp",l3Adia[0]*mm,l3Adia[1]*mm,l3Adia[2]/2.0*mm,0,360);
241 G4SubtractionSolid* tub6 =
new G4SubtractionSolid(
"tub6",tub6_tmp,hole_tmp3,xRot,G4ThreeVector(0,(l3Adia[0]+l3Adia[1])/2*mm,1640*mm) );
242 logicall3Adia =
new G4LogicalVolume(tub6, fibre,
"logicall3Adia");
243 physicall3Adia =
new G4PVPlacement(0,G4ThreeVector(0,0,0),logicall3Adia,
"physicall3Adia",logicalSCM,
false,0);
245 G4Tubs* tub7 =
new G4Tubs(
"tub7",endShield[0]*mm,endShield[1]*mm,endShield[2]/2.0*mm,0,360);
246 logicalendShield =
new G4LogicalVolume(tub7, G4Material::GetMaterial(
"Aluminium"),
"logicalendShield");
247 physicalendShield1 =
new G4PVPlacement(0,G4ThreeVector(0,0,endShield[3]*mm),logicalendShield,
"physicalendShield1",logicalSCM,
false,0);
248 physicalendShield2 =
new G4PVPlacement(0,G4ThreeVector(0,0,endShield[4]*mm),logicalendShield,
"physicalendShield2",logicalSCM,
false,1);
250 G4Tubs* tub8 =
new G4Tubs(
"tub8",l1insu[0]*mm,l1insu[1]*mm,l1insu[2]/2.0*mm,0,360);
251 logicall1insu =
new G4LogicalVolume(tub8, fibre,
"logicall1insu");
252 physicall1insu =
new G4PVPlacement(0,G4ThreeVector(0,0,0),logicall1insu,
"physicall1insu",logicalSCM,
false,0);
254 G4Tubs* tub9 =
new G4Tubs(
"tub9",coil[0]*mm,coil[1]*mm,coil[2]/2.0*mm,0,360);
255 logicalcoil =
new G4LogicalVolume(tub9, G4Material::GetMaterial(
"Aluminium"),
"logicalcoil");
256 physicalcoil =
new G4PVPlacement(0,G4ThreeVector(0,0,0),logicalcoil,
"physicalcoil",logicalSCM,
false,0);
258 G4Tubs* tub10 =
new G4Tubs(
"tub10",l2insu[0]*mm,l2insu[1]*mm,l2insu[2]/2.0*mm,0,360);
259 logicall2insu =
new G4LogicalVolume(tub10, fibre,
"logicall2insu");
260 physicall2insu =
new G4PVPlacement(0,G4ThreeVector(0,0,0),logicall2insu,
"physicall2insu",logicalSCM,
false,0);
262 G4Tubs* tub11 =
new G4Tubs(
"tub11",supp[0]*mm,supp[1]*mm,supp[2]/2.0*mm,0,360);
263 logicalsupp =
new G4LogicalVolume(tub11, G4Material::GetMaterial(
"Aluminium"),
"logicalsupp");
264 physicalsupp =
new G4PVPlacement(0,G4ThreeVector(0,0,0),logicalsupp,
"physicalsupp",logicalSCM,
false,0);
266 G4Tubs* tub12 =
new G4Tubs(
"tub12",l4Adia[0]*mm,l4Adia[1]*mm,l4Adia[2]/2.0*mm,0,360);
267 logicall4Adia =
new G4LogicalVolume(tub12, fibre,
"logicall4Adia");
268 physicall4Adia =
new G4PVPlacement(0,G4ThreeVector(0,0,0),logicall4Adia,
"physicall4Adia",logicalSCM,
false,0);
270 G4Tubs* tub13 =
new G4Tubs(
"tub13",endCoil[0]*mm,endCoil[1]*mm,endCoil[2]/2.0*mm,0,360);
271 logicalendCoil =
new G4LogicalVolume(tub13, G4Material::GetMaterial(
"Aluminium"),
"logicalendCoil");
272 physicalendCoil1 =
new G4PVPlacement(0,G4ThreeVector(0,0,endCoil[3]*mm),logicalendCoil,
"physicalendCoil1",logicalSCM,
false,0);
273 physicalendCoil2 =
new G4PVPlacement(0,G4ThreeVector(0,0,endCoil[4]*mm),logicalendCoil,
"physicalendCoil2",logicalSCM,
false,1);
275 G4Tubs* hole_tmp2 =
new G4Tubs(
"hole_tmp2",0,hole[1],18*mm,0,360);
276 G4Tubs* tub14_tmp =
new G4Tubs(
"tub14_tmp",outerCryo[0]*mm,outerCryo[1]*mm,outerCryo[2]/2.0*mm,0,360);
277 G4SubtractionSolid* tub14 =
new G4SubtractionSolid(
"tub14",tub14_tmp,hole_tmp2,xRot,G4ThreeVector(0,(outerCryo[1]-8)*mm,1640*mm) );
278 logicalouterCryo =
new G4LogicalVolume(tub14, Steel,
"logicalouterCryo");
279 physicalouterCryo =
new G4PVPlacement(0,G4ThreeVector(0,0,0),logicalouterCryo,
"physicalouterCryo",logicalSCM,
false,0);
281 G4Tubs* tub15 =
new G4Tubs(
"tub15",endCryo[0]*mm,endCryo[1]*mm,endCryo[2]/2.0*mm,0,360);
282 logicalendCryo =
new G4LogicalVolume(tub15, Steel,
"logicalendCryo");
283 physicalendCryo1 =
new G4PVPlacement(0,G4ThreeVector(0,0,endCryo[3]*mm),logicalendCryo,
"physicalendCryo1",logicalSCM,
false,0);
284 physicalendCryo2 =
new G4PVPlacement(0,G4ThreeVector(0,0,endCryo[4]*mm),logicalendCryo,
"physicalendCryo2",logicalSCM,
false,1);
319 G4Box* solidpipe1 =
new G4Box(
"solidpipe1",pipe1[2]/2*mm,(pipe1[1]+pipe1[4])/2*mm,pipe1[5]/2*mm);
320 logicalpipe1 =
new G4LogicalVolume(solidpipe1, G4Material::GetMaterial(
"Air"),
"logicalpipe1");
321 G4Tubs* tub17 =
new G4Tubs(
"tub17",pipe1[0]*mm,pipe1[1]*mm,pipe1[5]/2*mm,0,360);
322 G4Tubs* tub18 =
new G4Tubs(
"tub18",0,pipe1[1]*mm,pipe1[5]/2*mm,0,360);
323 G4Tubs* tub19 =
new G4Tubs(
"tub19",0,pipe1[0]*mm,pipe1[5]/2*mm,0,360);
324 G4Box* solidbox1 =
new G4Box(
"solidbox1",pipe1[2]/2*mm,pipe1[3]/2*mm,pipe1[5]/2*mm);
325 G4SubtractionSolid* solidsub1 =
new G4SubtractionSolid(
"solidsub1",solidbox1,tub18,0,G4ThreeVector(0,(pipe1[4]-pipe1[3]/2)*mm,0) );
326 G4LogicalVolume* logicalsub1 =
new G4LogicalVolume(solidsub1, G4Material::GetMaterial(
"Aluminium"),
"logicalsub1");
327 G4LogicalVolume* logicaltub17 =
new G4LogicalVolume(tub17, G4Material::GetMaterial(
"Aluminium"),
"logicaltub17");
328 G4LogicalVolume* logicaltub19 =
new G4LogicalVolume(tub19,liquidhelium,
"logicaltub19");
330 new G4PVPlacement(0,G4ThreeVector(0,0,0),logicaltub17,
"physicaltub17",logicalpipe1,
false,0);
332 new G4PVPlacement(0,G4ThreeVector(0,0,0),logicaltub19,
"physicaltub19",logicalpipe1,
false,0);
334 new G4PVPlacement(0,G4ThreeVector(0,-(pipe1[4]-pipe1[3]/2)*mm,0),logicalsub1,
"physicalsub1",logicalpipe1,
false,0);
335 for(G4int i=0; i<24; i++)
337 std::ostringstream osnamerein;
338 osnamerein <<
"physicalpipe1_"<<i;
339 G4RotationMatrix* zRot =
new G4RotationMatrix;
340 zRot->rotateZ(15*i*deg);
342 physicalpipe1=
new G4PVPlacement(zRot,G4ThreeVector(-(std::sqrt(innerShield[0]*innerShield[0]-pipe1[2]/2*pipe1[2]/2)-
343 (pipe1[1]+pipe1[4])/2)*std::sin(15*
pi/180*i)*mm,-(std::sqrt(innerShield[0]*innerShield[0]-
344 pipe1[2]/2*pipe1[2]/2)-(pipe1[1]+pipe1[4])/2)*std::cos(15*
pi/180*i)*mm,0),
345 logicalpipe1,osnamerein.str(),logicalSCM,
false,0);
348 G4Box* solidpipe2 =
new G4Box(
"solidpipe2",pipe2[2]/2*mm,(pipe2[1]+pipe2[4])/2*mm,pipe2[5]/2*mm);
349 logicalpipe2 =
new G4LogicalVolume(solidpipe2,G4Material::GetMaterial(
"Air"),
"logicalpipe2");
350 G4Tubs* tub20 =
new G4Tubs(
"tub20",pipe2[0]*mm,pipe2[1]*mm,pipe2[5]/2*mm,0,360);
351 G4Tubs* tub21 =
new G4Tubs(
"tub21",0,pipe2[1]*mm,pipe2[5]/2*mm,0,360);
352 G4Tubs* tub22 =
new G4Tubs(
"tub22",0,pipe2[0]*mm,pipe2[5]/2*mm,0,360);
353 G4Box* solidbox2 =
new G4Box(
"solidbox2",pipe2[2]/2*mm,pipe2[3]/2*mm,pipe2[5]/2*mm);
354 G4SubtractionSolid* solidsub2 =
new G4SubtractionSolid(
"solidsub2",solidbox2,tub21,0,G4ThreeVector(0,(pipe2[4]-pipe2[3]/2)*mm,0) );
355 G4LogicalVolume* logicalsub2 =
new G4LogicalVolume(solidsub2,G4Material::GetMaterial(
"Aluminium"),
"logicalsub2");
356 G4LogicalVolume* logicaltub20 =
new G4LogicalVolume(tub20,G4Material::GetMaterial(
"Aluminium"),
"logicaltub20");
357 G4LogicalVolume* logicaltub22 =
new G4LogicalVolume(tub22,liquidhelium,
"logicaltub22");
359 new G4PVPlacement(0,G4ThreeVector(0,0,0),logicaltub20,
"physicaltub20",logicalpipe2,
false,0);
361 new G4PVPlacement(0,G4ThreeVector(0,0,0),logicaltub22,
"physicaltub22",logicalpipe2,
false,0);
363 new G4PVPlacement(0,G4ThreeVector(0,-(pipe2[4]-pipe2[3]/2)*mm,0),logicalsub2,
"physicalsub2",logicalpipe2,
false,0);
364 for(G4int i=0; i<24; i++)
366 std::ostringstream osnamerein;
367 osnamerein <<
"physicalpipe2_"<<i;
368 G4RotationMatrix* zRot =
new G4RotationMatrix;
369 zRot->rotateZ(15*i*deg);
370 physicalpipe2=
new G4PVPlacement(zRot,G4ThreeVector(-(l3Adia[1]+(pipe2[1]+pipe2[4])/2)*std::sin(15*
pi/180*i)*mm,
371 -(l3Adia[1]+(pipe2[1]+pipe2[4])/2)*std::cos(15*
pi/180*i)*mm,0),logicalpipe2,osnamerein.str(),
376 G4Box* solidpipe3 =
new G4Box(
"solidpipe3",pipe3[2]/2*mm,(pipe3[1]+pipe3[4])/2*mm,pipe3[5]/2*mm);
377 logicalpipe3 =
new G4LogicalVolume(solidpipe3,G4Material::GetMaterial(
"Air"),
"logicalpipe3");
378 G4Tubs* tub23 =
new G4Tubs(
"tub23",pipe3[0]*mm,pipe3[1]*mm,pipe3[5]/2*mm,0,360);
379 G4Tubs* tub24 =
new G4Tubs(
"tub24",0,pipe3[1]*mm,pipe3[5]/2*mm,0,360);
380 G4Tubs* tub25 =
new G4Tubs(
"tub25",0,pipe3[0]*mm,pipe3[5]/2*mm,0,360);
381 G4Box* solidbox3 =
new G4Box(
"solidbox3",pipe3[2]/2*mm,pipe3[3]/2*mm,pipe3[5]/2*mm);
382 G4SubtractionSolid* solidsub3 =
new G4SubtractionSolid(
"solidsub3",solidbox3,tub24,0,G4ThreeVector(0,(pipe3[4]-pipe3[3]/2)*mm,0));
383 G4LogicalVolume* logicalsub3 =
new G4LogicalVolume(solidsub3,G4Material::GetMaterial(
"Aluminium"),
"logicalsub3");
384 G4LogicalVolume* logicaltub23 =
new G4LogicalVolume(tub23,G4Material::GetMaterial(
"Aluminium"),
"logicaltub23");
385 G4LogicalVolume* logicaltub25 =
new G4LogicalVolume(tub25,liquidhelium,
"logicaltub25");
387 new G4PVPlacement(0,G4ThreeVector(0,0,0),logicaltub23,
"physicaltub23",logicalpipe3,
false,0);
389 new G4PVPlacement(0,G4ThreeVector(0,0,0),logicaltub25,
"physicaltub25",logicalpipe3,
false,0);
391 new G4PVPlacement(0,G4ThreeVector(0,-(pipe3[4]-pipe3[3]/2)*mm,0),logicalsub3,
"physicalsub3",logicalpipe3,
false,0);
392 for(G4int i=0; i<24; i++)
394 std::ostringstream osnamerein;
395 osnamerein <<
"physicalpipe3_"<<i;
396 G4RotationMatrix* zRot =
new G4RotationMatrix;
397 zRot->rotateZ(15*i*deg);
398 physicalpipe3=
new G4PVPlacement(zRot,G4ThreeVector(-(l4Adia[1]+(pipe3[1]+pipe3[4])/2)*std::sin(15*
pi/180*i)*mm,
399 -(l4Adia[1]+(pipe3[1]+pipe3[4])/2)*std::cos(15*
pi/180*i)*mm,0),logicalpipe3,osnamerein.str(),
404 G4VisAttributes* visSCM1 =
new G4VisAttributes(G4Colour(0.,0.,1.));
405 logicalSCM->SetVisAttributes(visSCM1);
406 logicalinnCryo->SetVisAttributes(visSCM1);
408 logicalouterCryo->SetVisAttributes(visSCM1);
410 logicalendCryo->SetVisAttributes(visSCM1);
412 G4VisAttributes* visSCM2 =
new G4VisAttributes(G4Colour(0.,1.,0.));
413 logicall1Adia->SetVisAttributes(visSCM2);
415 logicall2Adia->SetVisAttributes(visSCM2);
417 logicall3Adia->SetVisAttributes(visSCM2);
419 logicall4Adia->SetVisAttributes(visSCM2);
421 G4VisAttributes* visSCM3 =
new G4VisAttributes(G4Colour(1.,0.,0.));
422 logicalinnShield->SetVisAttributes(visSCM3);
424 logicaloutShield->SetVisAttributes(visSCM3);
426 logicalendShield->SetVisAttributes(visSCM3);
429 G4VisAttributes* visSCM4 =
new G4VisAttributes(G4Colour(0.,1.,1.));
430 logicall1insu->SetVisAttributes(visSCM4);
432 logicall2insu->SetVisAttributes(visSCM4);
434 G4VisAttributes* visSCM5 =
new G4VisAttributes(G4Colour(1.,0.,1.));
435 logicalcoil->SetVisAttributes(visSCM5);
437 logicalendCoil->SetVisAttributes(visSCM5);
439 G4VisAttributes* visSCM6 =
new G4VisAttributes(G4Colour(1.,1.,0.));
440 logicalsupp->SetVisAttributes(visSCM6);
445 logicalpipe2->SetVisAttributes(visSCM2);
448 logicaltub17->SetVisAttributes(visSCM2);
450 logicaltub19->SetVisAttributes(visSCM5);
452 logicaltub20->SetVisAttributes(visSCM1);
454 logicaltub22->SetVisAttributes(visSCM1);
456 logicaltub23->SetVisAttributes(visSCM2);
458 logicaltub25->SetVisAttributes(visSCM5);
460 logicalsub1->SetVisAttributes(visSCM4);
462 logicalsub2->SetVisAttributes(visSCM4);
465 logicalsub3->SetVisAttributes(visSCM4);
467 logicalhole1->SetVisAttributes(visSCM3);
469 logicalhole2->SetVisAttributes(visSCM3);
471 logicalhole3->SetVisAttributes(visSCM3);
473 logicalhole4->SetVisAttributes(visSCM3);
475 logicalhole5->SetVisAttributes(visSCM3);