185 G4RotationMatrix* xRot =
new G4RotationMatrix;
186 xRot->rotateX(90*deg);
188 G4Tubs* hole1 =
new G4Tubs(
"hole1",hole[0],hole[1],hole[2]/2,0,360);
189 G4LogicalVolume* logicalhole1 =
new G4LogicalVolume(hole1, Steel,
"logicalhole1");
191 new G4PVPlacement(xRot,G4ThreeVector(0,(outerCryo[1]+hole[2]/2)*mm,1640*mm),logicalhole1,
"physicalhole1",logicalbes,
false,0);
193 G4Tubs* hole2 =
new G4Tubs(
"hole2",hole[3],hole[4],hole[5]/2,0,360);
194 G4LogicalVolume* logicalhole2 =
new G4LogicalVolume(hole2, Steel,
"logicalhole2");
196 new G4PVPlacement(xRot,G4ThreeVector(0,(outerCryo[1]+hole[2]+hole[5]/2)*mm,1640*mm),logicalhole2,
"physicalhole2",logicalbes,
false,0);
198 G4Tubs* hole3 =
new G4Tubs(
"hole3",hole[6],hole[7],hole[12]/2,0,360);
199 G4LogicalVolume* logicalhole3 =
new G4LogicalVolume(hole3, Steel,
"logicalhole3");
201 new G4PVPlacement(xRot,G4ThreeVector(0,(outerCryo[1]+hole[2]+hole[12]/2)*mm,1640*mm),logicalhole3,
"physicalhole3",logicalbes,
false,0);
203 G4Tubs* hole4 =
new G4Tubs(
"hole4",hole[8],hole[9],hole[12]/2,0,360);
204 G4LogicalVolume* logicalhole4 =
new G4LogicalVolume(hole4, G4Material::GetMaterial(
"Aluminium"),
"logicalhole4");
206 new G4PVPlacement(xRot,G4ThreeVector(0,(l3Adia[1]+pipe2[1]+pipe2[4]+hole[12]/2)*mm,1640*mm),logicalhole4,
"physicalhole4",logicalbes,
false,0);
208 G4Box* hole5 =
new G4Box(
"hole5",hole[10]/2,hole[11]/2,hole[12]/2);
209 G4LogicalVolume* logicalhole5 =
new G4LogicalVolume(hole5, G4Material::GetMaterial(
"Aluminium"),
"logicalhole5");
211 new G4PVPlacement(xRot,G4ThreeVector(0,(l3Adia[1]+pipe2[1]+pipe2[4]+hole[12]/2)*mm,1640*mm),logicalhole5,
"physicalhole5",logicalbes,
false,0);
214 G4Tubs* solidSCM_tmp =
new G4Tubs(
"solidSCM_tmp",innerCryo[0]*mm,1700*mm,(outerCryo[2]+2*endCryo[2])/2.0*mm,0,360);
215 G4Tubs* hole_tmp1 =
new G4Tubs(
"hole_tmp1",0,hole[1],(1700.-1617.5+2)/2.*mm,0,360);
216 G4SubtractionSolid* solidSCM =
new G4SubtractionSolid(
"solidSCM",solidSCM_tmp,hole_tmp1,xRot,G4ThreeVector(0,(1700.+1617.5+2)/2*mm,1640*mm) );
217 logicalSCM =
new G4LogicalVolume(solidSCM, G4Material::GetMaterial(
"Air"),
"logicalSCM");
218 physicalSCM =
new G4PVPlacement(0,G4ThreeVector(0,0,0),logicalSCM,
"physicalSCM",logicalbes,
false,0);
220 G4Tubs* tub1 =
new G4Tubs(
"tub1",innerCryo[0]*mm,innerCryo[1]*mm,innerCryo[2]/2.0*mm,0,360);
221 logicalinnCryo =
new G4LogicalVolume(tub1, Steel,
"logicalinnCryo");
222 physicalinnCryo =
new G4PVPlacement(0,G4ThreeVector(0,0,0),logicalinnCryo,
"physicalinnCryo",logicalSCM,
false,0);
224 G4Tubs* tub2 =
new G4Tubs(
"tub2",l1Adia[0]*mm,l1Adia[1]*mm,l1Adia[2]/2.0*mm,0,360);
225 logicall1Adia =
new G4LogicalVolume(tub2, fibre,
"logicall1Adia");
226 physicall1Adia =
new G4PVPlacement(0,G4ThreeVector(0,0,0),logicall1Adia,
"physicall1Adia",logicalSCM,
false,0);
228 G4Tubs* tub3 =
new G4Tubs(
"tub3",innerShield[0]*mm,innerShield[1]*mm,innerShield[2]/2.0*mm,0,360);
229 logicalinnShield =
new G4LogicalVolume(tub3, G4Material::GetMaterial(
"Aluminium"),
"logicalinnShield");
230 physicalinnShield =
new G4PVPlacement(0,G4ThreeVector(0,0,0),logicalinnShield,
"physicalinnShield",logicalSCM,
false,0);
232 G4Tubs* tub4 =
new G4Tubs(
"tub4",l2Adia[0]*mm,l2Adia[1]*mm,l2Adia[2]/2.0*mm,0,360);
233 logicall2Adia =
new G4LogicalVolume(tub4, fibre,
"logicall2Adia");
234 physicall2Adia =
new G4PVPlacement(0,G4ThreeVector(0,0,0),logicall2Adia,
"physicall2Adia",logicalSCM,
false,0);
236 G4Tubs* hole_tmp3 =
new G4Tubs(
"hole_tmp3",0,hole[8]*mm,25*mm,0,360);
237 G4Tubs* tub5_tmp =
new G4Tubs(
"tub5_tmp",outerShield[0]*mm,outerShield[1]*mm,outerShield[2]/2.0*mm,0,360);
238 G4SubtractionSolid* tub5 =
new G4SubtractionSolid(
"tub5",tub5_tmp,hole_tmp3,xRot,G4ThreeVector(0,(outerShield[0]+outerShield[1])/2*mm,1640*mm) );
239 logicaloutShield =
new G4LogicalVolume(tub5, G4Material::GetMaterial(
"Aluminium"),
"logicaloutShield");
240 physicaloutShield =
new G4PVPlacement(0,G4ThreeVector(0,0,0),logicaloutShield,
"physicaloutShield",logicalSCM,
false,0);
242 G4Tubs* tub6_tmp =
new G4Tubs(
"tub6_tmp",l3Adia[0]*mm,l3Adia[1]*mm,l3Adia[2]/2.0*mm,0,360);
243 G4SubtractionSolid* tub6 =
new G4SubtractionSolid(
"tub6",tub6_tmp,hole_tmp3,xRot,G4ThreeVector(0,(l3Adia[0]+l3Adia[1])/2*mm,1640*mm) );
244 logicall3Adia =
new G4LogicalVolume(tub6, fibre,
"logicall3Adia");
245 physicall3Adia =
new G4PVPlacement(0,G4ThreeVector(0,0,0),logicall3Adia,
"physicall3Adia",logicalSCM,
false,0);
247 G4Tubs* tub7 =
new G4Tubs(
"tub7",endShield[0]*mm,endShield[1]*mm,endShield[2]/2.0*mm,0,360);
248 logicalendShield =
new G4LogicalVolume(tub7, G4Material::GetMaterial(
"Aluminium"),
"logicalendShield");
249 physicalendShield1 =
new G4PVPlacement(0,G4ThreeVector(0,0,endShield[3]*mm),logicalendShield,
"physicalendShield1",logicalSCM,
false,0);
250 physicalendShield2 =
new G4PVPlacement(0,G4ThreeVector(0,0,endShield[4]*mm),logicalendShield,
"physicalendShield2",logicalSCM,
false,1);
252 G4Tubs* tub8 =
new G4Tubs(
"tub8",l1insu[0]*mm,l1insu[1]*mm,l1insu[2]/2.0*mm,0,360);
253 logicall1insu =
new G4LogicalVolume(tub8, fibre,
"logicall1insu");
254 physicall1insu =
new G4PVPlacement(0,G4ThreeVector(0,0,0),logicall1insu,
"physicall1insu",logicalSCM,
false,0);
256 G4Tubs* tub9 =
new G4Tubs(
"tub9",coil[0]*mm,coil[1]*mm,coil[2]/2.0*mm,0,360);
257 logicalcoil =
new G4LogicalVolume(tub9, G4Material::GetMaterial(
"Aluminium"),
"logicalcoil");
258 physicalcoil =
new G4PVPlacement(0,G4ThreeVector(0,0,0),logicalcoil,
"physicalcoil",logicalSCM,
false,0);
260 G4Tubs* tub10 =
new G4Tubs(
"tub10",l2insu[0]*mm,l2insu[1]*mm,l2insu[2]/2.0*mm,0,360);
261 logicall2insu =
new G4LogicalVolume(tub10, fibre,
"logicall2insu");
262 physicall2insu =
new G4PVPlacement(0,G4ThreeVector(0,0,0),logicall2insu,
"physicall2insu",logicalSCM,
false,0);
264 G4Tubs* tub11 =
new G4Tubs(
"tub11",supp[0]*mm,supp[1]*mm,supp[2]/2.0*mm,0,360);
265 logicalsupp =
new G4LogicalVolume(tub11, G4Material::GetMaterial(
"Aluminium"),
"logicalsupp");
266 physicalsupp =
new G4PVPlacement(0,G4ThreeVector(0,0,0),logicalsupp,
"physicalsupp",logicalSCM,
false,0);
268 G4Tubs* tub12 =
new G4Tubs(
"tub12",l4Adia[0]*mm,l4Adia[1]*mm,l4Adia[2]/2.0*mm,0,360);
269 logicall4Adia =
new G4LogicalVolume(tub12, fibre,
"logicall4Adia");
270 physicall4Adia =
new G4PVPlacement(0,G4ThreeVector(0,0,0),logicall4Adia,
"physicall4Adia",logicalSCM,
false,0);
272 G4Tubs* tub13 =
new G4Tubs(
"tub13",endCoil[0]*mm,endCoil[1]*mm,endCoil[2]/2.0*mm,0,360);
273 logicalendCoil =
new G4LogicalVolume(tub13, G4Material::GetMaterial(
"Aluminium"),
"logicalendCoil");
274 physicalendCoil1 =
new G4PVPlacement(0,G4ThreeVector(0,0,endCoil[3]*mm),logicalendCoil,
"physicalendCoil1",logicalSCM,
false,0);
275 physicalendCoil2 =
new G4PVPlacement(0,G4ThreeVector(0,0,endCoil[4]*mm),logicalendCoil,
"physicalendCoil2",logicalSCM,
false,1);
277 G4Tubs* hole_tmp2 =
new G4Tubs(
"hole_tmp2",0,hole[1],18*mm,0,360);
278 G4Tubs* tub14_tmp =
new G4Tubs(
"tub14_tmp",outerCryo[0]*mm,outerCryo[1]*mm,outerCryo[2]/2.0*mm,0,360);
279 G4SubtractionSolid* tub14 =
new G4SubtractionSolid(
"tub14",tub14_tmp,hole_tmp2,xRot,G4ThreeVector(0,(outerCryo[1]-8)*mm,1640*mm) );
280 logicalouterCryo =
new G4LogicalVolume(tub14, Steel,
"logicalouterCryo");
281 physicalouterCryo =
new G4PVPlacement(0,G4ThreeVector(0,0,0),logicalouterCryo,
"physicalouterCryo",logicalSCM,
false,0);
283 G4Tubs* tub15 =
new G4Tubs(
"tub15",endCryo[0]*mm,endCryo[1]*mm,endCryo[2]/2.0*mm,0,360);
284 logicalendCryo =
new G4LogicalVolume(tub15, Steel,
"logicalendCryo");
285 physicalendCryo1 =
new G4PVPlacement(0,G4ThreeVector(0,0,endCryo[3]*mm),logicalendCryo,
"physicalendCryo1",logicalSCM,
false,0);
286 physicalendCryo2 =
new G4PVPlacement(0,G4ThreeVector(0,0,endCryo[4]*mm),logicalendCryo,
"physicalendCryo2",logicalSCM,
false,1);
321 G4Box* solidpipe1 =
new G4Box(
"solidpipe1",pipe1[2]/2*mm,(pipe1[1]+pipe1[4])/2*mm,pipe1[5]/2*mm);
322 logicalpipe1 =
new G4LogicalVolume(solidpipe1, G4Material::GetMaterial(
"Air"),
"logicalpipe1");
323 G4Tubs* tub17 =
new G4Tubs(
"tub17",pipe1[0]*mm,pipe1[1]*mm,pipe1[5]/2*mm,0,360);
324 G4Tubs* tub18 =
new G4Tubs(
"tub18",0,pipe1[1]*mm,pipe1[5]/2*mm,0,360);
325 G4Tubs* tub19 =
new G4Tubs(
"tub19",0,pipe1[0]*mm,pipe1[5]/2*mm,0,360);
326 G4Box* solidbox1 =
new G4Box(
"solidbox1",pipe1[2]/2*mm,pipe1[3]/2*mm,pipe1[5]/2*mm);
327 G4SubtractionSolid* solidsub1 =
new G4SubtractionSolid(
"solidsub1",solidbox1,tub18,0,G4ThreeVector(0,(pipe1[4]-pipe1[3]/2)*mm,0) );
328 G4LogicalVolume* logicalsub1 =
new G4LogicalVolume(solidsub1, G4Material::GetMaterial(
"Aluminium"),
"logicalsub1");
329 G4LogicalVolume* logicaltub17 =
new G4LogicalVolume(tub17, G4Material::GetMaterial(
"Aluminium"),
"logicaltub17");
330 G4LogicalVolume* logicaltub19 =
new G4LogicalVolume(tub19,liquidhelium,
"logicaltub19");
332 new G4PVPlacement(0,G4ThreeVector(0,0,0),logicaltub17,
"physicaltub17",logicalpipe1,
false,0);
334 new G4PVPlacement(0,G4ThreeVector(0,0,0),logicaltub19,
"physicaltub19",logicalpipe1,
false,0);
336 new G4PVPlacement(0,G4ThreeVector(0,-(pipe1[4]-pipe1[3]/2)*mm,0),logicalsub1,
"physicalsub1",logicalpipe1,
false,0);
337 for(G4int i=0; i<24; i++)
339 std::ostringstream osnamerein;
340 osnamerein <<
"physicalpipe1_"<<i;
341 G4RotationMatrix* zRot =
new G4RotationMatrix;
342 zRot->rotateZ(15*i*deg);
344 physicalpipe1=
new G4PVPlacement(zRot,G4ThreeVector(-(std::sqrt(innerShield[0]*innerShield[0]-pipe1[2]/2*pipe1[2]/2)-
345 (pipe1[1]+pipe1[4])/2)*std::sin(15*
pi/180*i)*mm,-(std::sqrt(innerShield[0]*innerShield[0]-
346 pipe1[2]/2*pipe1[2]/2)-(pipe1[1]+pipe1[4])/2)*std::cos(15*
pi/180*i)*mm,0),
347 logicalpipe1,osnamerein.str(),logicalSCM,
false,0);
350 G4Box* solidpipe2 =
new G4Box(
"solidpipe2",pipe2[2]/2*mm,(pipe2[1]+pipe2[4])/2*mm,pipe2[5]/2*mm);
351 logicalpipe2 =
new G4LogicalVolume(solidpipe2,G4Material::GetMaterial(
"Air"),
"logicalpipe2");
352 G4Tubs* tub20 =
new G4Tubs(
"tub20",pipe2[0]*mm,pipe2[1]*mm,pipe2[5]/2*mm,0,360);
353 G4Tubs* tub21 =
new G4Tubs(
"tub21",0,pipe2[1]*mm,pipe2[5]/2*mm,0,360);
354 G4Tubs* tub22 =
new G4Tubs(
"tub22",0,pipe2[0]*mm,pipe2[5]/2*mm,0,360);
355 G4Box* solidbox2 =
new G4Box(
"solidbox2",pipe2[2]/2*mm,pipe2[3]/2*mm,pipe2[5]/2*mm);
356 G4SubtractionSolid* solidsub2 =
new G4SubtractionSolid(
"solidsub2",solidbox2,tub21,0,G4ThreeVector(0,(pipe2[4]-pipe2[3]/2)*mm,0) );
357 G4LogicalVolume* logicalsub2 =
new G4LogicalVolume(solidsub2,G4Material::GetMaterial(
"Aluminium"),
"logicalsub2");
358 G4LogicalVolume* logicaltub20 =
new G4LogicalVolume(tub20,G4Material::GetMaterial(
"Aluminium"),
"logicaltub20");
359 G4LogicalVolume* logicaltub22 =
new G4LogicalVolume(tub22,liquidhelium,
"logicaltub22");
361 new G4PVPlacement(0,G4ThreeVector(0,0,0),logicaltub20,
"physicaltub20",logicalpipe2,
false,0);
363 new G4PVPlacement(0,G4ThreeVector(0,0,0),logicaltub22,
"physicaltub22",logicalpipe2,
false,0);
365 new G4PVPlacement(0,G4ThreeVector(0,-(pipe2[4]-pipe2[3]/2)*mm,0),logicalsub2,
"physicalsub2",logicalpipe2,
false,0);
366 for(G4int i=0; i<24; i++)
368 std::ostringstream osnamerein;
369 osnamerein <<
"physicalpipe2_"<<i;
370 G4RotationMatrix* zRot =
new G4RotationMatrix;
371 zRot->rotateZ(15*i*deg);
372 physicalpipe2=
new G4PVPlacement(zRot,G4ThreeVector(-(l3Adia[1]+(pipe2[1]+pipe2[4])/2)*std::sin(15*
pi/180*i)*mm,
373 -(l3Adia[1]+(pipe2[1]+pipe2[4])/2)*std::cos(15*
pi/180*i)*mm,0),logicalpipe2,osnamerein.str(),
378 G4Box* solidpipe3 =
new G4Box(
"solidpipe3",pipe3[2]/2*mm,(pipe3[1]+pipe3[4])/2*mm,pipe3[5]/2*mm);
379 logicalpipe3 =
new G4LogicalVolume(solidpipe3,G4Material::GetMaterial(
"Air"),
"logicalpipe3");
380 G4Tubs* tub23 =
new G4Tubs(
"tub23",pipe3[0]*mm,pipe3[1]*mm,pipe3[5]/2*mm,0,360);
381 G4Tubs* tub24 =
new G4Tubs(
"tub24",0,pipe3[1]*mm,pipe3[5]/2*mm,0,360);
382 G4Tubs* tub25 =
new G4Tubs(
"tub25",0,pipe3[0]*mm,pipe3[5]/2*mm,0,360);
383 G4Box* solidbox3 =
new G4Box(
"solidbox3",pipe3[2]/2*mm,pipe3[3]/2*mm,pipe3[5]/2*mm);
384 G4SubtractionSolid* solidsub3 =
new G4SubtractionSolid(
"solidsub3",solidbox3,tub24,0,G4ThreeVector(0,(pipe3[4]-pipe3[3]/2)*mm,0));
385 G4LogicalVolume* logicalsub3 =
new G4LogicalVolume(solidsub3,G4Material::GetMaterial(
"Aluminium"),
"logicalsub3");
386 G4LogicalVolume* logicaltub23 =
new G4LogicalVolume(tub23,G4Material::GetMaterial(
"Aluminium"),
"logicaltub23");
387 G4LogicalVolume* logicaltub25 =
new G4LogicalVolume(tub25,liquidhelium,
"logicaltub25");
389 new G4PVPlacement(0,G4ThreeVector(0,0,0),logicaltub23,
"physicaltub23",logicalpipe3,
false,0);
391 new G4PVPlacement(0,G4ThreeVector(0,0,0),logicaltub25,
"physicaltub25",logicalpipe3,
false,0);
393 new G4PVPlacement(0,G4ThreeVector(0,-(pipe3[4]-pipe3[3]/2)*mm,0),logicalsub3,
"physicalsub3",logicalpipe3,
false,0);
394 for(G4int i=0; i<24; i++)
396 std::ostringstream osnamerein;
397 osnamerein <<
"physicalpipe3_"<<i;
398 G4RotationMatrix* zRot =
new G4RotationMatrix;
399 zRot->rotateZ(15*i*deg);
400 physicalpipe3=
new G4PVPlacement(zRot,G4ThreeVector(-(l4Adia[1]+(pipe3[1]+pipe3[4])/2)*std::sin(15*
pi/180*i)*mm,
401 -(l4Adia[1]+(pipe3[1]+pipe3[4])/2)*std::cos(15*
pi/180*i)*mm,0),logicalpipe3,osnamerein.str(),
406 G4VisAttributes* visSCM1 =
new G4VisAttributes(G4Colour(0.,0.,1.));
407 logicalSCM->SetVisAttributes(visSCM1);
408 logicalinnCryo->SetVisAttributes(visSCM1);
410 logicalouterCryo->SetVisAttributes(visSCM1);
412 logicalendCryo->SetVisAttributes(visSCM1);
414 G4VisAttributes* visSCM2 =
new G4VisAttributes(G4Colour(0.,1.,0.));
415 logicall1Adia->SetVisAttributes(visSCM2);
417 logicall2Adia->SetVisAttributes(visSCM2);
419 logicall3Adia->SetVisAttributes(visSCM2);
421 logicall4Adia->SetVisAttributes(visSCM2);
423 G4VisAttributes* visSCM3 =
new G4VisAttributes(G4Colour(1.,0.,0.));
424 logicalinnShield->SetVisAttributes(visSCM3);
426 logicaloutShield->SetVisAttributes(visSCM3);
428 logicalendShield->SetVisAttributes(visSCM3);
431 G4VisAttributes* visSCM4 =
new G4VisAttributes(G4Colour(0.,1.,1.));
432 logicall1insu->SetVisAttributes(visSCM4);
434 logicall2insu->SetVisAttributes(visSCM4);
436 G4VisAttributes* visSCM5 =
new G4VisAttributes(G4Colour(1.,0.,1.));
437 logicalcoil->SetVisAttributes(visSCM5);
439 logicalendCoil->SetVisAttributes(visSCM5);
441 G4VisAttributes* visSCM6 =
new G4VisAttributes(G4Colour(1.,1.,0.));
442 logicalsupp->SetVisAttributes(visSCM6);
447 logicalpipe2->SetVisAttributes(visSCM2);
450 logicaltub17->SetVisAttributes(visSCM2);
452 logicaltub19->SetVisAttributes(visSCM5);
454 logicaltub20->SetVisAttributes(visSCM1);
456 logicaltub22->SetVisAttributes(visSCM1);
458 logicaltub23->SetVisAttributes(visSCM2);
460 logicaltub25->SetVisAttributes(visSCM5);
462 logicalsub1->SetVisAttributes(visSCM4);
464 logicalsub2->SetVisAttributes(visSCM4);
467 logicalsub3->SetVisAttributes(visSCM4);
469 logicalhole1->SetVisAttributes(visSCM3);
471 logicalhole2->SetVisAttributes(visSCM3);
473 logicalhole3->SetVisAttributes(visSCM3);
475 logicalhole4->SetVisAttributes(visSCM3);
477 logicalhole5->SetVisAttributes(visSCM3);