|
16 | 16 | #include <TGeoPcon.h> |
17 | 17 | #include <TGeoTorus.h> |
18 | 18 | #include <TGeoTube.h> |
| 19 | +#include <TGeoEltu.h> |
19 | 20 | #include <TVirtualMC.h> |
20 | 21 | #include "TGeoManager.h" // for TGeoManager, gGeoManager |
21 | 22 | #include "TGeoMaterial.h" // for TGeoMaterial |
@@ -629,14 +630,14 @@ void Pipe::ConstructGeometry() |
629 | 630 | // |
630 | 631 |
|
631 | 632 | // Copper Tube RB24/1 |
632 | | - const Float_t kRB24CuTubeL = 393.5; |
633 | | - const Float_t kRB24cCuTubeL = 167.775; |
634 | | - const Float_t kRB24bCuTubeL = 393.5 - kRB24cCuTubeL; |
| 633 | + const Float_t kRB24CuTubeL = 381.5; |
| 634 | + const Float_t kRB24cCuTubeL = 155.775; |
| 635 | + const Float_t kRB24bCuTubeL = kRB24CuTubeL - kRB24cCuTubeL; |
635 | 636 | const Float_t kRB24CuTubeRi = 8.0 / 2.; |
636 | 637 | const Float_t kRB24CuTubeRo = 8.4 / 2.; |
637 | 638 | const Float_t kRB24CuTubeFRo = 7.6; |
638 | 639 | const Float_t kRB24CuTubeFL = 1.86; |
639 | | - const Float_t kRB24CL = 2. * 598.74752; |
| 640 | + const Float_t kRB24CL = 2. * 597.9; |
640 | 641 | // |
641 | 642 | // introduce cut at end of barrel 714.6m |
642 | 643 | // |
@@ -1466,28 +1467,63 @@ void Pipe::ConstructGeometry() |
1466 | 1467 | // |
1467 | 1468 | // Copper Tube RB24/2 |
1468 | 1469 | // mainly inside the compensator magnet |
1469 | | - const Float_t kRB242CuTubeL = 330.0; |
1470 | | - |
| 1470 | + const Float_t kRB242CuTubeL = 350.0; |
| 1471 | + // 20 cm straight - 20 cm transition to final oval - 270 oval - 20 cm transition to final oval - 20 cm straight |
| 1472 | + // |
| 1473 | + // mother volume for transition region |
| 1474 | + TGeoVolume* voRB242CuOvTransMo = new TGeoVolume("voRB24CuOvTransMo", new TGeoTube(0., 4.75, 10.), kMedAir); |
| 1475 | + const Int_t nTrans = 10; |
| 1476 | + TGeoVolume* voRB242CuOvTransV[nTrans]; |
| 1477 | + TGeoVolume* voRB242CuOvTransI[nTrans]; |
| 1478 | + Float_t dovX = 4.; |
| 1479 | + Float_t dovY = 4.; |
| 1480 | + Float_t dovZ = -9.0; |
| 1481 | + for (Int_t i = 0; i < nTrans; i++) { |
| 1482 | + dovX -= 0.0625; |
| 1483 | + dovY += 0.075; |
| 1484 | + char vname[20]; |
| 1485 | + sprintf(vname, "voRB242CuOvTransV%d", i); |
| 1486 | + voRB242CuOvTransV[i] = new TGeoVolume(vname, new TGeoEltu(dovX, dovY, 1.0), kMedCuHC); |
| 1487 | + sprintf(vname, "voRB242CuOvTransI%d", i); |
| 1488 | + voRB242CuOvTransI[i] = new TGeoVolume(vname, new TGeoEltu(dovX - 0.2, dovY - 0.2, 1.0), kMedVacHC); |
| 1489 | + voRB242CuOvTransV[i]->AddNode(voRB242CuOvTransI[i], 1, gGeoIdentity); |
| 1490 | + voRB242CuOvTransMo->AddNode(voRB242CuOvTransV[i], 1, new TGeoTranslation(0., 0., dovZ)); |
| 1491 | + dovZ += 2.; |
| 1492 | + } |
| 1493 | + // |
1471 | 1494 | TGeoVolume* voRB242CuTubeM = |
1472 | | - new TGeoVolume("voRB242CuTubeM", new TGeoTube(0., kRB24CuTubeRo, kRB242CuTubeL / 2.), kMedVacHC); |
1473 | | - voRB24CuTubeM->SetVisibility(0); |
| 1495 | + new TGeoVolume("voRB242CuTubeM", new TGeoTube(0., kRB24CuTubeRo, 10.), kMedVacHC); |
1474 | 1496 | TGeoVolume* voRB242CuTube = |
1475 | | - new TGeoVolume("voRB242CuTube", new TGeoTube(kRB24CuTubeRi, kRB24CuTubeRo, kRB242CuTubeL / 2.), kMedCuHC); |
| 1497 | + new TGeoVolume("voRB242CuTube", new TGeoTube(kRB24CuTubeRi, kRB24CuTubeRo, 10.), kMedCuHC); |
1476 | 1498 | voRB242CuTubeM->AddNode(voRB242CuTube, 1, gGeoIdentity); |
1477 | | - |
| 1499 | + TGeoVolume* voRB242CuOvalM = |
| 1500 | + new TGeoVolume("voRB242CuOvalM", new TGeoEltu(3.375, 4.75, 135.), kMedCuHC); |
| 1501 | + TGeoVolume* voRB242CuOval = |
| 1502 | + new TGeoVolume("voRB242CuOval", new TGeoEltu(3.175, 4.55, 135.), kMedVacHC); |
| 1503 | + voRB242CuOvalM->AddNode(voRB242CuOval, 1, gGeoIdentity); |
| 1504 | + // |
1478 | 1505 | TGeoVolumeAssembly* voRB242 = new TGeoVolumeAssembly("RB242"); |
1479 | | - voRB242->AddNode(voRB242CuTube, 1, gGeoIdentity); |
| 1506 | + voRB242->AddNode(voRB242CuOvalM, 1, gGeoIdentity); |
1480 | 1507 | z = -kRB242CuTubeL / 2 + kRB24CuTubeFL / 2.; |
1481 | 1508 | voRB242->AddNode(voRB24CuTubeF, 3, new TGeoTranslation(0., 0., z)); |
1482 | 1509 | z = +kRB242CuTubeL / 2 - kRB24CuTubeFL / 2.; |
1483 | 1510 | voRB242->AddNode(voRB24CuTubeF, 4, new TGeoTranslation(0., 0., z)); |
1484 | | - z = -kRB24cCuTubeL / 2 - kRB24VMABCL - kRB242CuTubeL / 2.; |
| 1511 | + z = 135. + 10.; |
| 1512 | + voRB242->AddNode(voRB242CuOvTransMo, 1, new TGeoCombiTrans(0., 0., z, rot180)); |
| 1513 | + z = -135. - 10.; |
| 1514 | + voRB242->AddNode(voRB242CuOvTransMo, 2, new TGeoTranslation(0., 0., z)); |
| 1515 | + z = -135. - 30.; |
| 1516 | + voRB242->AddNode(voRB242CuTubeM, 1, new TGeoTranslation(0., 0., z)); |
| 1517 | + z = 135. + 30.; |
| 1518 | + voRB242->AddNode(voRB242CuTubeM, 2, new TGeoTranslation(0., 0., z)); |
| 1519 | + z = -kRB24cCuTubeL / 2 - kRB24VMABCL - kRB242CuTubeL / 2. - 1.2; |
1485 | 1520 | voRB24C->AddNode(voRB242, 1, new TGeoTranslation(0., 0., z)); |
1486 | 1521 | // |
1487 | 1522 | // RB24/3 |
1488 | 1523 | // |
1489 | 1524 | // Copper Tube RB24/3 |
1490 | | - const Float_t kRB243CuTubeL = 303.35; |
| 1525 | + // the lenth of the tube is 296.85 on the drawing but this is inconsistent with the total length tube + bellow |
| 1526 | + const Float_t kRB243CuTubeL = 297.85; |
1491 | 1527 |
|
1492 | 1528 | TGeoVolume* voRB243CuTubeM = |
1493 | 1529 | new TGeoVolume("voRB243CuTubeM", new TGeoTube(0., kRB24CuTubeRo, kRB243CuTubeL / 2.), kMedVacNF); |
@@ -1515,7 +1551,7 @@ void Pipe::ConstructGeometry() |
1515 | 1551 | z = -2. * (kRB243CuTubeL + kRB24B1L) - (kRB24VMABCL - kRB24VMABCRBT1L / 2) + 1.; |
1516 | 1552 | voRB243->AddNode(voRB24VMABCRB, 3, new TGeoTranslation(0., 0., z)); |
1517 | 1553 |
|
1518 | | - z = -kRB24cCuTubeL / 2 - kRB24VMABCL - kRB242CuTubeL; |
| 1554 | + z = -kRB24cCuTubeL / 2 - kRB24VMABCL - kRB242CuTubeL - 1.2; |
1519 | 1555 | voRB24C->AddNode(voRB243, 1, new TGeoTranslation(0., 0., z)); |
1520 | 1556 |
|
1521 | 1557 | // |
|
0 commit comments