788 switch (module_type) {
808 ((
TGeoXtru*)moduleS)->DefinePolygon(5, x_pos, y_pos);
822 ((
TGeoXtru*)moduleS)->DefinePolygon(5, x_pos, y_pos);
828 Error(
"CreateModule()",
"Incorrect module type selected!!!");
832 TGeoShape* sensor_zone_upper_part_rectS =
838 sensor_zone_upper_part_bevelS->
SetName(
"sensor_zone_upper_part_bevelS");
852 Double_t x_delta_bottom_BP = (y_delta_bottom_BP - (
YBevelSize[module_size] + y_delta))
859 +
XModuleSize[module_size] * 0.5 - x_delta_bottom_BP,
861 Double_t y_pos_sensor_zone_bevel[5] = {
868 ((
TGeoXtru*)sensor_zone_upper_part_bevelS)->DefinePolygon(5, x_pos_sensor_zone_bevel, y_pos_sensor_zone_bevel);
869 ((
TGeoXtru*)sensor_zone_upper_part_bevelS)->DefineSection(0, -
ZModuleSize[module_size] * 0.5);
870 ((
TGeoXtru*)sensor_zone_upper_part_bevelS)->DefineSection(1, +
ZModuleSize[module_size] * 0.5);
874 TGeoShape* sensor_zone_lower_part_rectS =
880 sensor_zone_lower_part_bevelS->
SetName(
"sensor_zone_lower_part_bevelS");
894 Double_t x_delta_bottom_BP = (y_delta_bottom_BP - (
YBevelSize[module_size] + y_delta))
901 +
XModuleSize[module_size] * 0.5 - x_delta_bottom_BP,
903 Double_t y_pos_sensor_zone_bevel[5] = {
910 ((
TGeoXtru*)sensor_zone_lower_part_bevelS)->DefinePolygon(5, x_pos_sensor_zone_bevel, y_pos_sensor_zone_bevel);
911 ((
TGeoXtru*)sensor_zone_lower_part_bevelS)->DefineSection(0, -
ZModuleSize[module_size] * 0.5);
912 ((
TGeoXtru*)sensor_zone_lower_part_bevelS)->DefineSection(1, +
ZModuleSize[module_size] * 0.5);
925 new TGeoVolume(
"Sensor_zone_upper_part_rectV", sensor_zone_upper_part_rectS);
929 new TGeoVolume(
"Sensor_zone_upper_part_bevelV", sensor_zone_upper_part_bevelS);
933 new TGeoVolume(
"Sensor_zone_lower_part_rectV", sensor_zone_lower_part_rectS);
937 new TGeoVolume(
"Sensor_zone_lower_part_bevelV", sensor_zone_lower_part_bevelS);
941 if (silicon_medium) {
943 sensor_zone_upper_part_rectV->
SetMedium(silicon_medium);
944 sensor_zone_upper_part_bevelV->
SetMedium(silicon_medium);
945 sensor_zone_lower_part_rectV->
SetMedium(silicon_medium);
946 sensor_zone_lower_part_bevelV->
SetMedium(silicon_medium);
948 Fatal(
"Main",
"Invalid medium for modules and sensor zones!");
958 switch (module_type) {
966 sensor_zone_upper_part_pos->
SetDy(
969 sensor_zone_upper_part_pos->
SetDz(0.0);
975 sensor_zone_lower_part_pos->
SetDy(
978 sensor_zone_lower_part_pos->
SetDz(0.0);
980 moduleV->
AddNode(sensor_zone_upper_part_rectV, 0, sensor_zone_upper_part_pos);
981 moduleV->
AddNode(sensor_zone_lower_part_rectV, 0, sensor_zone_lower_part_pos);
992 sensor_zone_upper_part_pos->
SetDz(0.0);
994 moduleV->
AddNode(sensor_zone_upper_part_rectV, 0, sensor_zone_upper_part_pos);
1004 sensor_zone_upper_part_pos->
SetDy(
1007 sensor_zone_upper_part_pos->
SetDz(0.0);
1011 sensor_zone_lower_part_bevel_pos->
SetDx(0.0);
1015 sensor_zone_lower_part_bevel_pos->
SetDz(0.0);
1017 moduleV->
AddNode(sensor_zone_upper_part_rectV, 0, sensor_zone_upper_part_pos);
1018 moduleV->
AddNode(sensor_zone_lower_part_bevelV, 0, sensor_zone_lower_part_bevel_pos);
1026 sensor_zone_upper_part_pos->
SetDx(0);
1027 sensor_zone_upper_part_pos->
SetDy(0);
1028 sensor_zone_upper_part_pos->
SetDz(0.0);
1030 moduleV->
AddNode(sensor_zone_upper_part_bevelV, 0, sensor_zone_upper_part_pos);
1035 Error(
"CreateModule()",
"Incorrect module type selected!!!");
1055 switch (module_type) {
1063 +(
XModuleSize[module_size] * 0.5 + leftMargin + 1.0) ,
1064 +(
XModuleSize[module_size] * 0.5 + leftMargin + 1.0) ,
1069 -(
XModuleSize[module_size] * 0.5 + rightMargin + 1.0) ,
1070 -(
XModuleSize[module_size] * 0.5 + rightMargin + 1.0) ,
1082 ((
TGeoXtru*)frameS)->DefinePolygon(12, x_pos, y_pos);
1094 +(
XModuleSize[module_size] * 0.5 + leftMargin + 1.0) ,
1095 +(
XModuleSize[module_size] * 0.5 + leftMargin + 1.0) ,
1100 -(
XModuleSize[module_size] * 0.5 + rightMargin + 1.0) ,
1101 -(
XModuleSize[module_size] * 0.5 + rightMargin + 1.0) ,
1119 ((
TGeoXtru*)frameS)->DefinePolygon(12, x_pos, y_pos);
1131 +(
XModuleSize[module_size] * 0.5 + leftMargin + 1.0) ,
1132 +(
XModuleSize[module_size] * 0.5 + leftMargin + 1.0) ,
1137 -(
XModuleSize[module_size] * 0.5 + rightMargin + 1.0) ,
1138 -(
XModuleSize[module_size] * 0.5 + rightMargin + 1.0) ,
1143 -(
YModuleSize[module_size] * 0.5 + bottomMargin) ,
1157 ((
TGeoXtru*)frameS)->DefinePolygon(13, x_pos, y_pos);
1169 +(
XModuleSize[module_size] * 0.5 + leftMargin + 1.0) ,
1170 +(
XModuleSize[module_size] * 0.5 + leftMargin + 1.0) ,
1175 -(
XModuleSize[module_size] * 0.5 + rightMargin + 1.0) ,
1176 -(
XModuleSize[module_size] * 0.5 + rightMargin + 1.0) ,
1195 ((
TGeoXtru*)frameS)->DefinePolygon(13, x_pos, y_pos);
1201 Error(
"CreateModule()",
"Incorrect module type selected!!!");
1208 TString(
"window_rectS") += module_name, (
XModuleSize[module_size] - innerMargin * 2) * 0.5,
1222 Double_t x_delta_top_BP = innerMargin;
1226 Double_t y_delta_bottom_BP = innerMargin;
1227 Double_t x_delta_bottom_BP = (y_delta_bottom_BP - (
YBevelSize[module_size] + y_delta))
1238 -
YModuleSize[module_size] * 0.25 + y_delta_top_BP};
1240 ((
TGeoXtru*)window_bevelS)->DefinePolygon(5, x_pos, y_pos);
1247 upper_window_frame_pos->
SetName(
TString(
"upper_window_frame_pos") += module_name);
1248 upper_window_frame_pos->
SetDx(0.0);
1252 upper_window_frame_pos->
SetDz(0.0);
1256 lower_window_frame_pos->
SetName(
TString(
"lower_window_frame_pos") += module_name);
1257 lower_window_frame_pos->
SetDx(0.0);
1261 lower_window_frame_pos->
SetDz(0.0);
1265 window_half_frame_pos->
SetName(
TString(
"window_half_frame_pos") += module_name);
1266 window_half_frame_pos->
SetDx(0.0);
1267 window_half_frame_pos->
SetDy(0.0);
1268 window_half_frame_pos->
SetDz(0.0);
1272 frame_with_windowsS->
SetName(
"frame_with_windowsS");
1274 switch (module_type) {
1277 TString expression =
"(frameS";
1278 expression += module_name;
1279 expression +=
"-window_rectS";
1280 expression += module_name;
1281 expression +=
":upper_window_frame_pos";
1282 expression += module_name;
1283 expression +=
")-window_rectS";
1284 expression += module_name;
1285 expression +=
":lower_window_frame_pos";
1286 expression += module_name;
1287 frame_with_windowsS->
MakeNode(expression);
1293 TString expression =
"(frameS";
1294 expression += module_name;
1295 expression +=
")-window_rectS";
1296 expression += module_name;
1297 expression +=
":window_half_frame_pos";
1298 expression += module_name;
1299 frame_with_windowsS->
MakeNode(expression);
1305 TString expression =
"(frameS";
1306 expression += module_name;
1307 expression +=
"-window_rectS";
1308 expression += module_name;
1309 expression +=
":upper_window_frame_pos";
1310 expression += module_name;
1311 expression +=
")-window_bevelS";
1312 expression += module_name;
1313 expression +=
":lower_window_frame_pos";
1314 expression += module_name;
1315 frame_with_windowsS->
MakeNode(expression);
1321 TString expression =
"(frameS";
1322 expression += module_name;
1323 expression +=
")-window_bevelS";
1324 expression += module_name;
1325 expression +=
":window_half_frame_pos";
1326 expression += module_name;
1327 frame_with_windowsS->
MakeNode(expression);
1333 Error(
"CreateModule()",
"Incorrect module type selected!!!");
1343 if (carbon_medium) {
1346 Fatal(
"Main",
"Invalid medium for frameV!");
1367 Double_t faceShild_XSize = (NModules / 2.0) * 6.3 - (NModules / 2.0) * 0.3 + 8.6;
1372 faceShildS->
SetName(
"faceShildS");
1374 Double_t x_pos[8] = {faceShild_XSize * 0.5,
1375 faceShild_XSize * 0.5,
1376 -faceShild_XSize * 0.5,
1377 -faceShild_XSize * 0.5,
1382 Double_t y_pos[8] = {-faceShild_YSize * 0.5,
1383 faceShild_YSize * 0.5,
1384 faceShild_YSize * 0.5,
1385 -faceShild_YSize * 0.5,
1386 -faceShild_YSize * 0.5,
1389 -faceShild_YSize * 0.5};
1390 ((
TGeoXtru*)faceShildS)->DefinePolygon(8, x_pos, y_pos);
1391 ((
TGeoXtru*)faceShildS)->DefineSection(0, -faceShild_ZSize * 0.5);
1392 ((
TGeoXtru*)faceShildS)->DefineSection(1, +faceShild_ZSize * 0.5);
1399 if (faceShildV_medium) {
1400 faceShildV->
SetMedium(faceShildV_medium);
1402 Fatal(
"Main",
"Invalid medium for faceShildV!");
1411 faceShild_transf[0]->
SetDy(+faceShild_YSize * 0.5 - 0.95);
1412 faceShild_transf[0]->
SetDz(+0.695 - 1.35
1413 - faceShild_ZSize * 0.5 + 4.31 );
1416 faceShild_transf[1]->
SetDy(+faceShild_YSize * 0.5 - 0.95);
1417 faceShild_transf[1]->
SetDz(+0.695 + 1.35
1418 + faceShild_ZSize * 0.5 + 4.31 );
1421 faceShild_transf[2]->
RotateX(180.0);
1422 faceShild_transf[2]->
SetDy(-faceShild_YSize * 0.5 + 0.95);
1423 faceShild_transf[2]->
SetDz(+0.695 - 1.35
1424 - faceShild_ZSize * 0.5 );
1427 faceShild_transf[3]->
RotateX(180.0);
1428 faceShild_transf[3]->
SetDy(-faceShild_YSize * 0.5 + 0.95);
1429 faceShild_transf[3]->
SetDz(+0.695 + 1.35
1430 + faceShild_ZSize * 0.5 );
1432 frames->
AddNode(faceShildV, 0, faceShild_transf[0]);
1433 frames->
AddNode(faceShildV, 1, faceShild_transf[1]);
1434 frames->
AddNode(faceShildV, 2, faceShild_transf[2]);
1435 frames->
AddNode(faceShildV, 3, faceShild_transf[3]);
1444 new TGeoBBox(
"sideShieldS", sideShild_XSize * 0.5, sideShild_YSize * 0.5, sideShild_ZSize * 0.5);
1450 if (sideShieldV_medium) {
1451 sideShieldV->
SetMedium(sideShieldV_medium);
1453 Fatal(
"Main",
"Invalid medium for sideShieldV!");
1462 sideShild_transf[0]->
SetDx(+(faceShild_XSize * 0.5 - sideShild_XSize * 0.5));
1463 sideShild_transf[0]->
SetDy(+faceShild_YSize * 0.5 - 0.95 + (sideShild_YSize - faceShild_YSize) * 0.5);
1464 sideShild_transf[0]->
SetDz(+0.695 + 4.31 );
1467 sideShild_transf[1]->
SetDx(-(faceShild_XSize * 0.5 - sideShild_XSize * 0.5));
1468 sideShild_transf[1]->
SetDy(+faceShild_YSize * 0.5 - 0.95 + (sideShild_YSize - faceShild_YSize) * 0.5);
1469 sideShild_transf[1]->
SetDz(+0.695 + 4.31 );
1472 sideShild_transf[2]->
SetDx(+(faceShild_XSize * 0.5 - sideShild_XSize * 0.5));
1473 sideShild_transf[2]->
SetDy(-faceShild_YSize * 0.5 + 0.95 - (sideShild_YSize - faceShild_YSize) * 0.5);
1474 sideShild_transf[2]->
SetDz(+0.695 );
1477 sideShild_transf[3]->
SetDx(-(faceShild_XSize * 0.5 - sideShild_XSize * 0.5));
1478 sideShild_transf[3]->
SetDy(-faceShild_YSize * 0.5 + 0.95 - (sideShild_YSize - faceShild_YSize) * 0.5);
1479 sideShild_transf[3]->
SetDz(+0.695 );
1481 frames->
AddNode(sideShieldV, 0, sideShild_transf[0]);
1482 frames->
AddNode(sideShieldV, 1, sideShild_transf[1]);
1483 frames->
AddNode(sideShieldV, 2, sideShild_transf[2]);
1484 frames->
AddNode(sideShieldV, 3, sideShild_transf[3]);
1488 Double_t horizShild_XSize = faceShild_XSize * 0.5 - sideShild_XSize - 2.75 ;
1493 new TGeoBBox(
"horizShieldS", horizShild_XSize * 0.5, horizShild_YSize * 0.5, horizShild_ZSize * 0.5);
1500 if (horizShieldV_medium) {
1501 horizShieldV->
SetMedium(horizShieldV_medium);
1503 Fatal(
"Main",
"Invalid medium for horizShieldV!");
1512 horizShild_transf[0]->
SetDx(+(faceShild_XSize * 0.5 - horizShild_XSize * 0.5 - sideShild_XSize));
1513 horizShild_transf[0]->
SetDy(+(-0.95 + horizShild_YSize * 0.5));
1514 horizShild_transf[0]->
SetDz(+0.695 + 4.31 );
1517 horizShild_transf[1]->
SetDx(-(faceShild_XSize * 0.5 - horizShild_XSize * 0.5 - sideShild_XSize));
1518 horizShild_transf[1]->
SetDy(+(-0.95 + horizShild_YSize * 0.5));
1519 horizShild_transf[1]->
SetDz(+0.695 + 4.31 );
1522 horizShild_transf[2]->
SetDx(+(faceShild_XSize * 0.5 - horizShild_XSize * 0.5 - sideShild_XSize));
1523 horizShild_transf[2]->
SetDy(-(-0.95 + horizShild_YSize * 0.5));
1524 horizShild_transf[2]->
SetDz(+0.695 );
1527 horizShild_transf[3]->
SetDx(-(faceShild_XSize * 0.5 - horizShild_XSize * 0.5 - sideShild_XSize));
1528 horizShild_transf[3]->
SetDy(-(-0.95 + horizShild_YSize * 0.5));
1529 horizShild_transf[3]->
SetDz(+0.695 );
1531 frames->
AddNode(horizShieldV, 0, horizShild_transf[0]);
1532 frames->
AddNode(horizShieldV, 1, horizShild_transf[1]);
1533 frames->
AddNode(horizShieldV, 2, horizShild_transf[2]);
1534 frames->
AddNode(horizShieldV, 3, horizShild_transf[3]);
1538 Double_t plankShild_XSize = faceShild_XSize;
1543 new TGeoBBox(
"plankShieldS", plankShild_XSize * 0.5, plankShild_YSize * 0.5, plankShild_ZSize * 0.5);
1550 if (plankShieldV_medium) {
1551 plankShieldV->
SetMedium(plankShieldV_medium);
1553 Fatal(
"Main",
"Invalid medium for plankShieldV!");
1562 plankShild_transf[0]->
SetDx(0.0);
1563 plankShild_transf[0]->
SetDy(+(-0.95 + faceShild_YSize) - 0.05);
1564 plankShild_transf[0]->
SetDz(
1565 +0.695 - (1.35 + faceShild_ZSize + plankShild_ZSize * 0.5)
1569 plankShild_transf[1]->
SetDx(0.0);
1570 plankShild_transf[1]->
SetDy(+(-0.95 + faceShild_YSize) - 0.05);
1571 plankShild_transf[1]->
SetDz(
1572 +0.695 + (1.35 + faceShild_ZSize + plankShild_ZSize * 0.5)
1576 plankShild_transf[2]->
SetDx(0.0);
1577 plankShild_transf[2]->
SetDy(-(-0.95 + faceShild_YSize) + 0.05);
1578 plankShild_transf[2]->
SetDz(+0.695
1579 - (1.35 + faceShild_ZSize + plankShild_ZSize * 0.5));
1582 plankShild_transf[3]->
SetDx(0.0);
1583 plankShild_transf[3]->
SetDy(-(-0.95 + faceShild_YSize) + 0.05);
1584 plankShild_transf[3]->
SetDz(+0.695
1585 + (1.35 + faceShild_ZSize + plankShild_ZSize * 0.5));
1587 frames->
AddNode(plankShieldV, 0, plankShild_transf[0]);
1588 frames->
AddNode(plankShieldV, 1, plankShild_transf[1]);
1589 frames->
AddNode(plankShieldV, 2, plankShild_transf[2]);
1590 frames->
AddNode(plankShieldV, 3, plankShild_transf[3]);
1594 Double_t baseRailMainPart_XSize = faceShild_XSize + 3.4 * 2 ;
1595 Double_t baseRailMainPart_YSize = 5.0;
1596 Double_t baseRailMainPart_ZSize = 0.7;
1598 cout <<
"baseRailMainPart_XSize = " << baseRailMainPart_XSize <<
"\n";
1600 Double_t baseRailUpperPart_XSize = baseRailMainPart_XSize;
1601 Double_t baseRailUpperPart_YSize = 1.0;
1602 Double_t baseRailUpperPart_ZSize = 0.3;
1604 Double_t baseRailLowerPart_XSize = baseRailMainPart_XSize - 8.8 ;
1605 Double_t baseRailLowerPart_YSize = 0.7;
1606 Double_t baseRailLowerPart_ZSize = 0.3;
1610 baseRailMainPart_YSize * 0.5, baseRailMainPart_ZSize * 0.5);
1613 baseRailUpperPart_YSize * 0.5, baseRailUpperPart_ZSize * 0.5);
1616 baseRailLowerPart_YSize * 0.5, baseRailLowerPart_ZSize * 0.5);
1620 baseRailUpperPart_pos->
SetDx(0.0);
1621 baseRailUpperPart_pos->
SetDy(+(baseRailMainPart_YSize * 0.5 + baseRailUpperPart_YSize * 0.5));
1622 baseRailUpperPart_pos->
SetDz(baseRailMainPart_ZSize * 0.5 - baseRailUpperPart_ZSize * 0.5);
1627 baseRailLowerPart_pos->
SetDx(0.0);
1628 baseRailLowerPart_pos->
SetDy(-(baseRailMainPart_YSize * 0.5 + baseRailLowerPart_YSize * 0.5));
1629 baseRailLowerPart_pos->
SetDz(baseRailMainPart_ZSize * 0.5 - baseRailLowerPart_ZSize * 0.5);
1635 TString expression =
"baseRailMainPartS";
1637 expression +=
"+baseRailUpperPartS";
1639 expression +=
":baseRailUpperPart_pos";
1641 expression +=
"+baseRailLowerPartS";
1643 expression +=
":baseRailLowerPart_pos";
1653 if (baseRailV_medium) {
1656 Fatal(
"Main",
"Invalid medium for baseRailV!");
1665 baseRail_transf[0]->
RotateY(180.0);
1666 baseRail_transf[0]->
SetDx(0.1);
1667 baseRail_transf[0]->
SetDy(+(14.5 + baseRailMainPart_YSize * 0.5));
1668 baseRail_transf[0]->
SetDz(
1670 + (1.35 + faceShild_ZSize + baseRailMainPart_ZSize * 0.5 - baseRailLowerPart_ZSize)
1674 baseRail_transf[1]->
ReflectY(
true);
1675 baseRail_transf[1]->
SetDx(0.0);
1676 baseRail_transf[1]->
SetDy(-(14.5 + baseRailMainPart_YSize * 0.5));
1677 baseRail_transf[1]->
SetDz(+0.695
1678 - (1.35 + faceShild_ZSize + baseRailMainPart_ZSize * 0.5
1679 - baseRailLowerPart_ZSize));
1681 frames->
AddNode(baseRailV, 0, baseRail_transf[0]);
1682 frames->
AddNode(baseRailV, 1, baseRail_transf[1]);
1686 Double_t backRailMainPart_XSize = faceShild_XSize + -0.3 * 2 ;
1687 Double_t backRailMainPart_YSize = 3.0;
1688 Double_t backRailMainPart_ZSize = 0.9;
1690 cout <<
"backRailMainPart_XSize = " << backRailMainPart_XSize <<
"\n";
1692 Double_t backRailLowerPart_XSize = backRailMainPart_XSize - 1.4;
1693 Double_t backRailLowerPart_YSize = 0.7;
1694 Double_t backRailLowerPart_ZSize = 0.6;
1696 Double_t backRailSidePart_XSize = 1.2;
1697 Double_t backRailSidePart_YSize = 3.0;
1698 Double_t backRailSidePart_ZSize = 1.62;
1702 backRailMainPart_YSize * 0.5, backRailMainPart_ZSize * 0.5);
1705 backRailLowerPart_YSize * 0.5, backRailLowerPart_ZSize * 0.5);
1708 backRailSidePart_YSize * 0.5, backRailSidePart_ZSize * 0.5);
1712 backRailLowerPart_pos->
SetDx(0.0);
1713 backRailLowerPart_pos->
SetDy(-(backRailMainPart_YSize * 0.5 + backRailLowerPart_YSize * 0.5));
1714 backRailLowerPart_pos->
SetDz(backRailMainPart_ZSize * 0.5 - backRailLowerPart_ZSize * 0.5);
1719 backRailSidePart1_pos->
SetDx(+(backRailMainPart_XSize * 0.5 - backRailSidePart_XSize * 0.5));
1720 backRailSidePart1_pos->
SetDy(0.0);
1721 backRailSidePart1_pos->
SetDz(backRailMainPart_ZSize * 0.5 + backRailSidePart_ZSize * 0.5);
1726 backRailSidePart2_pos->
SetDx(-(backRailMainPart_XSize * 0.5 - backRailSidePart_XSize * 0.5));
1727 backRailSidePart2_pos->
SetDy(0.0);
1728 backRailSidePart2_pos->
SetDz(backRailMainPart_ZSize * 0.5 + backRailSidePart_ZSize * 0.5);
1734 TString expression =
"backRailMainPartS";
1736 expression +=
"+backRailLowerPartS";
1738 expression +=
":backRailLowerPart_pos";
1740 expression +=
"+backRailSidePartS";
1742 expression +=
":backRailSidePart1_pos";
1744 expression +=
"+backRailSidePartS";
1746 expression +=
":backRailSidePart2_pos";
1756 if (backRailV_medium) {
1759 Fatal(
"Main",
"Invalid medium for backRailV!");
1768 backRail_transf[0]->
SetDx(0.0);
1769 backRail_transf[0]->
SetDy(+(14.5 + backRailMainPart_YSize * 0.5));
1770 backRail_transf[0]->
SetDz(+0.695
1771 - (1.35 + faceShild_ZSize
1772 + (backRailMainPart_ZSize * 0.5 - backRailLowerPart_ZSize))
1776 backRail_transf[1]->
RotateX(180.0);
1777 backRail_transf[1]->
SetDx(0.0);
1778 backRail_transf[1]->
SetDy(-(14.5 + backRailMainPart_YSize * 0.5));
1779 backRail_transf[1]->
SetDz(+0.695
1780 + (1.35 + faceShild_ZSize
1781 + (backRailMainPart_ZSize * 0.5 - backRailLowerPart_ZSize)));
1783 frames->
AddNode(backRailV, 0, backRail_transf[0]);
1784 frames->
AddNode(backRailV, 1, backRail_transf[1]);
1788 Double_t holdBackRail_XSize = backRailMainPart_XSize;
1793 holdBackRailS->
SetName(
"holdBackRailS");
1796 +0.0 , +0.1 , +holdBackRail_ZSize , +holdBackRail_ZSize , +0.0
1799 -holdBackRail_YSize ,
1800 -holdBackRail_YSize ,
1801 -holdBackRail_YSize * 0.5 ,
1805 ((
TGeoXtru*)holdBackRailS)->DefinePolygon(5, x_pos, y_pos);
1806 ((
TGeoXtru*)holdBackRailS)->DefineSection(0, -holdBackRail_XSize * 0.5);
1807 ((
TGeoXtru*)holdBackRailS)->DefineSection(1, +holdBackRail_XSize * 0.5);
1815 if (holdBackRailV_medium) {
1816 holdBackRailV->
SetMedium(holdBackRailV_medium);
1818 Fatal(
"Main",
"Invalid medium for holdBackRailV!");
1827 holdBackRail_transf[0]->
RotateY(90.0);
1828 holdBackRail_transf[0]->
SetDx(0.0);
1829 holdBackRail_transf[0]->
SetDy(+(14.5 + backRailMainPart_YSize));
1830 holdBackRail_transf[0]->
SetDz(
1831 +0.695 - (1.35 + faceShild_ZSize + plankShild_ZSize)
1835 holdBackRail_transf[1]->
RotateY(90.0);
1836 holdBackRail_transf[1]->
RotateX(180.0);
1837 holdBackRail_transf[1]->
SetDx(0.0);
1838 holdBackRail_transf[1]->
SetDy(-(14.5 + backRailMainPart_YSize));
1839 holdBackRail_transf[1]->
SetDz(
1840 +0.695 + (1.35 + faceShild_ZSize + plankShild_ZSize));
1842 frames->
AddNode(holdBackRailV, 0, holdBackRail_transf[0]);
1843 frames->
AddNode(holdBackRailV, 1, holdBackRail_transf[1]);
1847 Double_t backPlane_XSize = (NModules / 2.0) * 6.3 - (NModules / 2.0) * 0.3 + 3.95 * 2 ;
1852 new TGeoBBox(
"backPlaneS", backPlane_XSize * 0.5, backPlane_YSize * 0.5, backPlane_ZSize * 0.5);
1858 if (backPlaneV_medium) {
1859 backPlaneV->
SetMedium(backPlaneV_medium);
1861 Fatal(
"Main",
"Invalid medium for backPlaneV!");
1870 backPlane_transf[0]->
SetDx(0.0);
1871 backPlane_transf[0]->
SetDy(+(16.75 + backPlane_YSize * 0.5));
1872 backPlane_transf[0]->
SetDz(+0.695
1873 - (1.35 + faceShild_ZSize + plankShild_ZSize
1874 + holdBackRail_ZSize + backPlane_ZSize * 0.5)
1878 backPlane_transf[1]->
SetDx(0.0);
1879 backPlane_transf[1]->
SetDy(-(16.75 + backPlane_YSize * 0.5));
1880 backPlane_transf[1]->
SetDz(+0.695
1881 + (1.35 + faceShild_ZSize + plankShild_ZSize
1882 + holdBackRail_ZSize + backPlane_ZSize * 0.5));
1884 frames->
AddNode(backPlaneV, 0, backPlane_transf[0]);
1885 frames->
AddNode(backPlaneV, 1, backPlane_transf[1]);
1889 Double_t frontPlane_XSize = (NModules / 2.0) * 6.3 - (NModules / 2.0) * 0.3 + 1.8 * 2 ;
1894 new TGeoBBox(
"frontPlaneS", frontPlane_XSize * 0.5, frontPlane_YSize * 0.5, frontPlane_ZSize * 0.5);
1900 if (frontPlaneV_medium) {
1901 frontPlaneV->
SetMedium(frontPlaneV_medium);
1903 Fatal(
"Main",
"Invalid medium for frontPlaneV!");
1912 frontPlane_transf[0]->
SetDx(0.0);
1913 frontPlane_transf[0]->
SetDy(+(19.7 + frontPlane_YSize * 0.5));
1914 frontPlane_transf[0]->
SetDz(
1916 + (1.35 + faceShild_ZSize + plankShild_ZSize + frontPlane_ZSize * 0.5)
1920 frontPlane_transf[1]->
SetDx(0.0);
1921 frontPlane_transf[1]->
SetDy(-(19.7 + frontPlane_YSize * 0.5));
1922 frontPlane_transf[1]->
SetDz(
1924 - (1.35 + faceShild_ZSize + plankShild_ZSize + frontPlane_ZSize * 0.5));
1926 frames->
AddNode(frontPlaneV, 0, frontPlane_transf[0]);
1927 frames->
AddNode(frontPlaneV, 1, frontPlane_transf[1]);
1931 Double_t frontPlaneWithWindow_XSize = (NModules / 2.0) * 6.3 - (NModules / 2.0) * 0.3 + 4.0 * 2 ;
1932 Double_t frontPlaneWithWindow_YSize = 18.3;
1933 Double_t frontPlaneWithWindow_ZSize = 0.3;
1935 Double_t frontPlaneWindow_XSize = frontPlaneWithWindow_XSize - 3.0 * 2 ;
1936 Double_t frontPlaneWindow_YSize = 8.6;
1939 TString(
"frontPlaneWithWindowBlankS") +=
TString(
"_") + frames->
GetName(), frontPlaneWithWindow_XSize * 0.5,
1940 frontPlaneWithWindow_YSize * 0.5, frontPlaneWithWindow_ZSize * 0.5);
1943 frontPlaneWindow_YSize * 0.5, (frontPlaneWithWindow_ZSize + 0.001) * 0.5);
1947 frontPlaneWindow_pos->
SetDx(0.0);
1948 frontPlaneWindow_pos->
SetDy(-2.85 );
1949 frontPlaneWindow_pos->
SetDz(0.0);
1955 TString expression =
"frontPlaneWithWindowBlankS";
1957 expression +=
"-frontPlaneWindowS";
1959 expression +=
":frontPlaneWindow_pos";
1961 frontPlaneWithWindowS->
MakeNode(expression);
1970 if (frontPlaneWithWindowV_medium) {
1971 frontPlaneWithWindowV->
SetMedium(frontPlaneWithWindowV_medium);
1973 Fatal(
"Main",
"Invalid medium for frontPlaneWithWindowV!");
1982 frontPlaneWithWindow_transf[0]->
SetDx(0.0);
1983 frontPlaneWithWindow_transf[0]->
SetDy(+(19.5 + frontPlaneWithWindow_YSize * 0.5));
1984 frontPlaneWithWindow_transf[0]->
SetDz(
1986 + (1.35 + faceShild_ZSize + frontPlaneWithWindow_ZSize * 0.5)
1990 frontPlaneWithWindow_transf[1]->
RotateX(180.0);
1991 frontPlaneWithWindow_transf[1]->
SetDx(0.0);
1992 frontPlaneWithWindow_transf[1]->
SetDy(-(19.5 + frontPlaneWithWindow_YSize * 0.5));
1993 frontPlaneWithWindow_transf[1]->
SetDz(
1995 - (1.35 + faceShild_ZSize + frontPlaneWithWindow_ZSize * 0.5));
1997 frames->
AddNode(frontPlaneWithWindowV, 0, frontPlaneWithWindow_transf[0]);
1998 frames->
AddNode(frontPlaneWithWindowV, 1, frontPlaneWithWindow_transf[1]);
2002 Double_t pcb_XSize = (NModules / 2.0) * 6.3 - (NModules / 2.0) * 0.3 + 4.865 ;
2006 TGeoShape* pcbS =
new TGeoBBox(
"pcbS", frontPlane_XSize * 0.5, frontPlane_YSize * 0.5, frontPlane_ZSize * 0.5);
2015 Fatal(
"Main",
"Invalid medium for pcbV!");
2024 pcb_transf[0]->
SetDx(0.0);
2025 pcb_transf[0]->
SetDy(+(26.5 + pcb_YSize * 0.5));
2026 pcb_transf[0]->
SetDz(+0.695 + 4.31 );
2029 pcb_transf[1]->
SetDx(0.0);
2030 pcb_transf[1]->
SetDy(-(26.5 + pcb_YSize * 0.5));
2031 pcb_transf[1]->
SetDz(+0.695 );
2033 frames->
AddNode(pcbV, 0, pcb_transf[0]);
2034 frames->
AddNode(pcbV, 1, pcb_transf[1]);
2038 Double_t upperSideShield_XSize = 4.4;
2039 Double_t upperSideShield_YSize = 12.3;
2040 Double_t upperSideShield_ZSize = 0.8;
2042 Double_t upperSideShieldCut_XSize = 0.9;
2043 Double_t upperSideShieldCut_YSize = 2.4;
2045 Double_t upperSideShieldWindow_XSize = 3.0;
2046 Double_t upperSideShieldWindow_YSize = 7.0;
2052 +upperSideShield_XSize * 0.5 ,
2053 +upperSideShield_XSize * 0.5 ,
2054 -upperSideShield_XSize * 0.5 ,
2055 -upperSideShield_XSize * 0.5 ,
2056 -upperSideShield_XSize * 0.5 + upperSideShieldCut_XSize ,
2057 -upperSideShield_XSize * 0.5 + upperSideShieldCut_XSize
2061 -upperSideShield_YSize * 0.5 ,
2062 +upperSideShield_YSize * 0.5 ,
2063 +upperSideShield_YSize * 0.5 ,
2064 -upperSideShield_YSize * 0.5 + upperSideShieldCut_YSize ,
2065 -upperSideShield_YSize * 0.5 + upperSideShieldCut_YSize ,
2066 -upperSideShield_YSize * 0.5
2069 ((
TGeoXtru*)upperSideShieldBlankS)->DefinePolygon(6, x_pos, y_pos);
2070 ((
TGeoXtru*)upperSideShieldBlankS)->DefineSection(0, -upperSideShield_ZSize * 0.5);
2071 ((
TGeoXtru*)upperSideShieldBlankS)->DefineSection(1, +upperSideShield_ZSize * 0.5);
2075 TString(
"upperSideShieldWindowS") +=
TString(
"_") + frames->
GetName(), upperSideShieldWindow_XSize * 0.5,
2076 upperSideShieldWindow_YSize * 0.5, (upperSideShield_ZSize + 0.001) * 0.5);
2080 upperSideShieldWindow_pos->
SetDx(0.0);
2081 upperSideShieldWindow_pos->
SetDy(+1.65 );
2082 upperSideShieldWindow_pos->
SetDz(0.0);
2088 TString expression =
"upperSideShieldBlankS";
2090 expression +=
"-upperSideShieldWindowS";
2092 expression +=
":upperSideShieldWindow_pos";
2094 upperSideShieldWithWindowS->
MakeNode(expression);
2103 if (upperSideShieldV_medium) {
2104 upperSideShieldV->
SetMedium(upperSideShieldV_medium);
2106 Fatal(
"Main",
"Invalid medium for upperSideShieldV!");
2115 upperSideShield_transf[0]->
RotateY(90.0);
2116 upperSideShield_transf[0]->
SetDx(+(frontPlaneWithWindow_XSize * 0.5 - upperSideShield_ZSize * 0.5));
2117 upperSideShield_transf[0]->
SetDy(+(17.6 + upperSideShield_YSize * 0.5));
2118 upperSideShield_transf[0]->
SetDz(+0.695 - 0.65 + 4.31 );
2121 upperSideShield_transf[1]->
RotateY(90.0);
2122 upperSideShield_transf[1]->
SetDx(-(frontPlaneWithWindow_XSize * 0.5 - upperSideShield_ZSize * 0.5));
2123 upperSideShield_transf[1]->
SetDy(+(17.6 + upperSideShield_YSize * 0.5));
2124 upperSideShield_transf[1]->
SetDz(+0.695 - 0.65 + 4.31 );
2127 upperSideShield_transf[2]->
RotateY(-90.0);
2128 upperSideShield_transf[2]->
ReflectY(
true);
2129 upperSideShield_transf[2]->
SetDx(+(frontPlaneWithWindow_XSize * 0.5 - upperSideShield_ZSize * 0.5));
2130 upperSideShield_transf[2]->
SetDy(-(17.6 + upperSideShield_YSize * 0.5));
2131 upperSideShield_transf[2]->
SetDz(+0.695 + 0.65 );
2134 upperSideShield_transf[3]->
RotateY(-90.0);
2135 upperSideShield_transf[3]->
ReflectY(
true);
2136 upperSideShield_transf[3]->
SetDx(-(frontPlaneWithWindow_XSize * 0.5 - upperSideShield_ZSize * 0.5));
2137 upperSideShield_transf[3]->
SetDy(-(17.6 + upperSideShield_YSize * 0.5));
2138 upperSideShield_transf[3]->
SetDz(+0.695 + 0.65 );
2140 frames->
AddNode(upperSideShieldV, 0, upperSideShield_transf[0]);
2141 frames->
AddNode(upperSideShieldV, 1, upperSideShield_transf[1]);
2142 frames->
AddNode(upperSideShieldV, 2, upperSideShield_transf[2]);
2143 frames->
AddNode(upperSideShieldV, 3, upperSideShield_transf[3]);
2147 Double_t upperSideShieldCover_XSize = 4.4;
2148 Double_t upperSideShieldCover_YSize = 8.5;
2149 Double_t upperSideShieldCover_ZSize = 0.15;
2151 TGeoShape* upperSideShieldCoverS =
new TGeoBBox(
"upperSideShieldCoverS", upperSideShieldCover_XSize * 0.5,
2152 upperSideShieldCover_YSize * 0.5, upperSideShieldCover_ZSize * 0.5);
2159 if (upperSideShieldCoverV_medium) {
2160 upperSideShieldCoverV->
SetMedium(upperSideShieldCoverV_medium);
2162 Fatal(
"Main",
"Invalid medium for upperSideShieldCoverV!");
2171 upperSideShieldCover_transf[0]->
RotateY(90.0);
2172 upperSideShieldCover_transf[0]->
SetDx(+(frontPlaneWithWindow_XSize * 0.5 + upperSideShieldCover_ZSize * 0.5));
2173 upperSideShieldCover_transf[0]->
SetDy(+(20.7 + upperSideShieldCover_YSize * 0.5));
2174 upperSideShieldCover_transf[0]->
SetDz(+0.695 - 0.65 + 4.31 );
2177 upperSideShieldCover_transf[1]->
RotateY(90.0);
2178 upperSideShieldCover_transf[1]->
SetDx(-(frontPlaneWithWindow_XSize * 0.5 + upperSideShieldCover_ZSize * 0.5));
2179 upperSideShieldCover_transf[1]->
SetDy(+(20.7 + upperSideShieldCover_YSize * 0.5));
2180 upperSideShieldCover_transf[1]->
SetDz(+0.695 - 0.65 + 4.31 );
2183 upperSideShieldCover_transf[2]->
RotateY(90.0);
2184 upperSideShieldCover_transf[2]->
SetDx(+(frontPlaneWithWindow_XSize * 0.5 + upperSideShieldCover_ZSize * 0.5));
2185 upperSideShieldCover_transf[2]->
SetDy(-(20.7 + upperSideShieldCover_YSize * 0.5));
2186 upperSideShieldCover_transf[2]->
SetDz(+0.695 + 0.65 );
2189 upperSideShieldCover_transf[3]->
RotateY(90.0);
2190 upperSideShieldCover_transf[3]->
SetDx(-(frontPlaneWithWindow_XSize * 0.5 + upperSideShieldCover_ZSize * 0.5));
2191 upperSideShieldCover_transf[3]->
SetDy(-(20.7 + upperSideShieldCover_YSize * 0.5));
2192 upperSideShieldCover_transf[3]->
SetDz(+0.695 + 0.65 );
2194 frames->
AddNode(upperSideShieldCoverV, 0, upperSideShieldCover_transf[0]);
2195 frames->
AddNode(upperSideShieldCoverV, 1, upperSideShieldCover_transf[1]);
2196 frames->
AddNode(upperSideShieldCoverV, 2, upperSideShieldCover_transf[2]);
2197 frames->
AddNode(upperSideShieldCoverV, 3, upperSideShieldCover_transf[3]);
2215 Double_t faceShild_XSize = (NModules / 2.0) * 6.3 - (NModules / 2.0) * 0.3 + 8.6;
2216 Double_t faceShild_YSize = 14.74 + 6.0;
2220 faceShildS->
SetName(
"faceShildS");
2222 Double_t x_pos[8] = {faceShild_XSize * 0.5,
2223 faceShild_XSize * 0.5,
2224 -faceShild_XSize * 0.5,
2225 -faceShild_XSize * 0.5,
2230 Double_t y_pos[8] = {-faceShild_YSize * 0.5,
2231 faceShild_YSize * 0.5,
2232 faceShild_YSize * 0.5,
2233 -faceShild_YSize * 0.5,
2234 -faceShild_YSize * 0.5,
2237 -faceShild_YSize * 0.5};
2238 ((
TGeoXtru*)faceShildS)->DefinePolygon(8, x_pos, y_pos);
2239 ((
TGeoXtru*)faceShildS)->DefineSection(0, -faceShild_ZSize * 0.5);
2240 ((
TGeoXtru*)faceShildS)->DefineSection(1, +faceShild_ZSize * 0.5);
2247 if (faceShildV_medium) {
2248 faceShildV->
SetMedium(faceShildV_medium);
2250 Fatal(
"Main",
"Invalid medium for faceShildV!");
2259 faceShild_transf[0]->
SetDy(+faceShild_YSize * 0.5 - 0.95);
2260 faceShild_transf[0]->
SetDz(+0.695 - 1.35
2261 - faceShild_ZSize * 0.5 + 4.31 );
2264 faceShild_transf[1]->
SetDy(+faceShild_YSize * 0.5 - 0.95);
2265 faceShild_transf[1]->
SetDz(+0.695 + 1.35
2266 + faceShild_ZSize * 0.5 + 4.31 );
2269 faceShild_transf[2]->
RotateX(180.0);
2270 faceShild_transf[2]->
SetDy(-faceShild_YSize * 0.5 + 0.95);
2271 faceShild_transf[2]->
SetDz(+0.695 - 1.35
2272 - faceShild_ZSize * 0.5 );
2275 faceShild_transf[3]->
RotateX(180.0);
2276 faceShild_transf[3]->
SetDy(-faceShild_YSize * 0.5 + 0.95);
2277 faceShild_transf[3]->
SetDz(+0.695 + 1.35
2278 + faceShild_ZSize * 0.5 );
2280 frames->
AddNode(faceShildV, 0, faceShild_transf[0]);
2281 frames->
AddNode(faceShildV, 1, faceShild_transf[1]);
2282 frames->
AddNode(faceShildV, 2, faceShild_transf[2]);
2283 frames->
AddNode(faceShildV, 3, faceShild_transf[3]);
2288 Double_t sideShild_YSize = 15.2 + 6.0;
2292 new TGeoBBox(
"sideShieldS", sideShild_XSize * 0.5, sideShild_YSize * 0.5, sideShild_ZSize * 0.5);
2298 if (sideShieldV_medium) {
2299 sideShieldV->
SetMedium(sideShieldV_medium);
2301 Fatal(
"Main",
"Invalid medium for sideShieldV!");
2310 sideShild_transf[0]->
SetDx(+(faceShild_XSize * 0.5 - sideShild_XSize * 0.5));
2311 sideShild_transf[0]->
SetDy(+faceShild_YSize * 0.5 - 0.95 + (sideShild_YSize - faceShild_YSize) * 0.5);
2312 sideShild_transf[0]->
SetDz(+0.695 + 4.31 );
2315 sideShild_transf[1]->
SetDx(-(faceShild_XSize * 0.5 - sideShild_XSize * 0.5));
2316 sideShild_transf[1]->
SetDy(+faceShild_YSize * 0.5 - 0.95 + (sideShild_YSize - faceShild_YSize) * 0.5);
2317 sideShild_transf[1]->
SetDz(+0.695 + 4.31 );
2320 sideShild_transf[2]->
SetDx(+(faceShild_XSize * 0.5 - sideShild_XSize * 0.5));
2321 sideShild_transf[2]->
SetDy(-faceShild_YSize * 0.5 + 0.95 - (sideShild_YSize - faceShild_YSize) * 0.5);
2322 sideShild_transf[2]->
SetDz(+0.695 );
2325 sideShild_transf[3]->
SetDx(-(faceShild_XSize * 0.5 - sideShild_XSize * 0.5));
2326 sideShild_transf[3]->
SetDy(-faceShild_YSize * 0.5 + 0.95 - (sideShild_YSize - faceShild_YSize) * 0.5);
2327 sideShild_transf[3]->
SetDz(+0.695 );
2329 frames->
AddNode(sideShieldV, 0, sideShild_transf[0]);
2330 frames->
AddNode(sideShieldV, 1, sideShild_transf[1]);
2331 frames->
AddNode(sideShieldV, 2, sideShild_transf[2]);
2332 frames->
AddNode(sideShieldV, 3, sideShild_transf[3]);
2336 Double_t horizShild_XSize = faceShild_XSize * 0.5 - sideShild_XSize - 2.75 ;
2341 new TGeoBBox(
"horizShieldS", horizShild_XSize * 0.5, horizShild_YSize * 0.5, horizShild_ZSize * 0.5);
2348 if (horizShieldV_medium) {
2349 horizShieldV->
SetMedium(horizShieldV_medium);
2351 Fatal(
"Main",
"Invalid medium for horizShieldV!");
2360 horizShild_transf[0]->
SetDx(+(faceShild_XSize * 0.5 - horizShild_XSize * 0.5 - sideShild_XSize));
2361 horizShild_transf[0]->
SetDy(+(-0.95 + horizShild_YSize * 0.5));
2362 horizShild_transf[0]->
SetDz(+0.695 + 4.31 );
2365 horizShild_transf[1]->
SetDx(-(faceShild_XSize * 0.5 - horizShild_XSize * 0.5 - sideShild_XSize));
2366 horizShild_transf[1]->
SetDy(+(-0.95 + horizShild_YSize * 0.5));
2367 horizShild_transf[1]->
SetDz(+0.695 + 4.31 );
2370 horizShild_transf[2]->
SetDx(+(faceShild_XSize * 0.5 - horizShild_XSize * 0.5 - sideShild_XSize));
2371 horizShild_transf[2]->
SetDy(-(-0.95 + horizShild_YSize * 0.5));
2372 horizShild_transf[2]->
SetDz(+0.695 );
2375 horizShild_transf[3]->
SetDx(-(faceShild_XSize * 0.5 - horizShild_XSize * 0.5 - sideShild_XSize));
2376 horizShild_transf[3]->
SetDy(-(-0.95 + horizShild_YSize * 0.5));
2377 horizShild_transf[3]->
SetDz(+0.695 );
2379 frames->
AddNode(horizShieldV, 0, horizShild_transf[0]);
2380 frames->
AddNode(horizShieldV, 1, horizShild_transf[1]);
2381 frames->
AddNode(horizShieldV, 2, horizShild_transf[2]);
2382 frames->
AddNode(horizShieldV, 3, horizShild_transf[3]);
2386 Double_t plankShild_XSize = faceShild_XSize;
2391 new TGeoBBox(
"plankShieldS", plankShild_XSize * 0.5, plankShild_YSize * 0.5, plankShild_ZSize * 0.5);
2398 if (plankShieldV_medium) {
2399 plankShieldV->
SetMedium(plankShieldV_medium);
2401 Fatal(
"Main",
"Invalid medium for plankShieldV!");
2410 plankShild_transf[0]->
SetDx(0.0);
2411 plankShild_transf[0]->
SetDy(+(-0.95 + faceShild_YSize) - 0.05);
2412 plankShild_transf[0]->
SetDz(
2413 +0.695 - (1.35 + faceShild_ZSize + plankShild_ZSize * 0.5)
2417 plankShild_transf[1]->
SetDx(0.0);
2418 plankShild_transf[1]->
SetDy(+(-0.95 + faceShild_YSize) - 0.05);
2419 plankShild_transf[1]->
SetDz(
2420 +0.695 + (1.35 + faceShild_ZSize + plankShild_ZSize * 0.5)
2424 plankShild_transf[2]->
SetDx(0.0);
2425 plankShild_transf[2]->
SetDy(-(-0.95 + faceShild_YSize) + 0.05);
2426 plankShild_transf[2]->
SetDz(+0.695
2427 - (1.35 + faceShild_ZSize + plankShild_ZSize * 0.5));
2430 plankShild_transf[3]->
SetDx(0.0);
2431 plankShild_transf[3]->
SetDy(-(-0.95 + faceShild_YSize) + 0.05);
2432 plankShild_transf[3]->
SetDz(+0.695
2433 + (1.35 + faceShild_ZSize + plankShild_ZSize * 0.5));
2435 frames->
AddNode(plankShieldV, 0, plankShild_transf[0]);
2436 frames->
AddNode(plankShieldV, 1, plankShild_transf[1]);
2437 frames->
AddNode(plankShieldV, 2, plankShild_transf[2]);
2438 frames->
AddNode(plankShieldV, 3, plankShild_transf[3]);
2442 Double_t baseRailMainPart_XSize = faceShild_XSize + 3.4 * 2 ;
2443 Double_t baseRailMainPart_YSize = 5.0;
2444 Double_t baseRailMainPart_ZSize = 0.7;
2446 cout <<
"baseRailMainPart_XSize = " << baseRailMainPart_XSize <<
"\n";
2448 Double_t baseRailUpperPart_XSize = baseRailMainPart_XSize;
2449 Double_t baseRailUpperPart_YSize = 1.0;
2450 Double_t baseRailUpperPart_ZSize = 0.3;
2452 Double_t baseRailLowerPart_XSize = baseRailMainPart_XSize - 8.8 ;
2453 Double_t baseRailLowerPart_YSize = 0.7;
2454 Double_t baseRailLowerPart_ZSize = 0.3;
2458 baseRailMainPart_YSize * 0.5, baseRailMainPart_ZSize * 0.5);
2461 baseRailUpperPart_YSize * 0.5, baseRailUpperPart_ZSize * 0.5);
2464 baseRailLowerPart_YSize * 0.5, baseRailLowerPart_ZSize * 0.5);
2468 baseRailUpperPart_pos->
SetDx(0.0);
2469 baseRailUpperPart_pos->
SetDy(+(baseRailMainPart_YSize * 0.5 + baseRailUpperPart_YSize * 0.5));
2470 baseRailUpperPart_pos->
SetDz(baseRailMainPart_ZSize * 0.5 - baseRailUpperPart_ZSize * 0.5);
2475 baseRailLowerPart_pos->
SetDx(0.0);
2476 baseRailLowerPart_pos->
SetDy(-(baseRailMainPart_YSize * 0.5 + baseRailLowerPart_YSize * 0.5));
2477 baseRailLowerPart_pos->
SetDz(baseRailMainPart_ZSize * 0.5 - baseRailLowerPart_ZSize * 0.5);
2483 TString expression =
"baseRailMainPartS";
2485 expression +=
"+baseRailUpperPartS";
2487 expression +=
":baseRailUpperPart_pos";
2489 expression +=
"+baseRailLowerPartS";
2491 expression +=
":baseRailLowerPart_pos";
2501 if (baseRailV_medium) {
2504 Fatal(
"Main",
"Invalid medium for baseRailV!");
2513 baseRail_transf[0]->
RotateY(180.0);
2514 baseRail_transf[0]->
SetDx(0.1);
2515 baseRail_transf[0]->
SetDy(+(14.5 + baseRailMainPart_YSize * 0.5 + 6.0));
2516 baseRail_transf[0]->
SetDz(
2518 + (1.35 + faceShild_ZSize + baseRailMainPart_ZSize * 0.5 - baseRailLowerPart_ZSize)
2522 baseRail_transf[1]->
ReflectY(
true);
2523 baseRail_transf[1]->
SetDx(0.0);
2524 baseRail_transf[1]->
SetDy(-(14.5 + baseRailMainPart_YSize * 0.5 + 6.0));
2525 baseRail_transf[1]->
SetDz(+0.695
2526 - (1.35 + faceShild_ZSize + baseRailMainPart_ZSize * 0.5
2527 - baseRailLowerPart_ZSize));
2529 frames->
AddNode(baseRailV, 0, baseRail_transf[0]);
2530 frames->
AddNode(baseRailV, 1, baseRail_transf[1]);
2534 Double_t backRailMainPart_XSize = faceShild_XSize + -0.3 * 2 ;
2535 Double_t backRailMainPart_YSize = 3.0;
2536 Double_t backRailMainPart_ZSize = 0.9;
2538 Double_t backRailLowerPart_XSize = backRailMainPart_XSize - 1.4;
2539 Double_t backRailLowerPart_YSize = 0.7;
2540 Double_t backRailLowerPart_ZSize = 0.6;
2542 Double_t backRailSidePart_XSize = 1.2;
2543 Double_t backRailSidePart_YSize = 3.0;
2544 Double_t backRailSidePart_ZSize = 1.62;
2548 backRailMainPart_YSize * 0.5, backRailMainPart_ZSize * 0.5);
2551 backRailLowerPart_YSize * 0.5, backRailLowerPart_ZSize * 0.5);
2554 backRailSidePart_YSize * 0.5, backRailSidePart_ZSize * 0.5);
2558 backRailLowerPart_pos->
SetDx(0.0);
2559 backRailLowerPart_pos->
SetDy(-(backRailMainPart_YSize * 0.5 + backRailLowerPart_YSize * 0.5));
2560 backRailLowerPart_pos->
SetDz(backRailMainPart_ZSize * 0.5 - backRailLowerPart_ZSize * 0.5);
2565 backRailSidePart1_pos->
SetDx(+(backRailMainPart_XSize * 0.5 - backRailSidePart_XSize * 0.5));
2566 backRailSidePart1_pos->
SetDy(0.0);
2567 backRailSidePart1_pos->
SetDz(backRailMainPart_ZSize * 0.5 + backRailSidePart_ZSize * 0.5);
2572 backRailSidePart2_pos->
SetDx(-(backRailMainPart_XSize * 0.5 - backRailSidePart_XSize * 0.5));
2573 backRailSidePart2_pos->
SetDy(0.0);
2574 backRailSidePart2_pos->
SetDz(backRailMainPart_ZSize * 0.5 + backRailSidePart_ZSize * 0.5);
2580 TString expression =
"backRailMainPartS";
2582 expression +=
"+backRailLowerPartS";
2584 expression +=
":backRailLowerPart_pos";
2586 expression +=
"+backRailSidePartS";
2588 expression +=
":backRailSidePart1_pos";
2590 expression +=
"+backRailSidePartS";
2592 expression +=
":backRailSidePart2_pos";
2602 if (backRailV_medium) {
2605 Fatal(
"Main",
"Invalid medium for backRailV!");
2614 backRail_transf[0]->
SetDx(0.0);
2615 backRail_transf[0]->
SetDy(+(14.5 + backRailMainPart_YSize * 0.5 + 6.0));
2616 backRail_transf[0]->
SetDz(+0.695
2617 - (1.35 + faceShild_ZSize
2618 + (backRailMainPart_ZSize * 0.5 - backRailLowerPart_ZSize))
2622 backRail_transf[1]->
RotateX(180.0);
2623 backRail_transf[1]->
SetDx(0.0);
2624 backRail_transf[1]->
SetDy(-(14.5 + backRailMainPart_YSize * 0.5 + 6.0));
2625 backRail_transf[1]->
SetDz(+0.695
2626 + (1.35 + faceShild_ZSize
2627 + (backRailMainPart_ZSize * 0.5 - backRailLowerPart_ZSize)));
2629 frames->
AddNode(backRailV, 0, backRail_transf[0]);
2630 frames->
AddNode(backRailV, 1, backRail_transf[1]);
2634 Double_t holdBackRail_XSize = backRailMainPart_XSize;
2639 holdBackRailS->
SetName(
"holdBackRailS");
2642 +0.0 , +0.1 , +holdBackRail_ZSize , +holdBackRail_ZSize , +0.0
2645 -holdBackRail_YSize ,
2646 -holdBackRail_YSize ,
2647 -holdBackRail_YSize * 0.5 ,
2651 ((
TGeoXtru*)holdBackRailS)->DefinePolygon(5, x_pos, y_pos);
2652 ((
TGeoXtru*)holdBackRailS)->DefineSection(0, -holdBackRail_XSize * 0.5);
2653 ((
TGeoXtru*)holdBackRailS)->DefineSection(1, +holdBackRail_XSize * 0.5);
2661 if (holdBackRailV_medium) {
2662 holdBackRailV->
SetMedium(holdBackRailV_medium);
2664 Fatal(
"Main",
"Invalid medium for holdBackRailV!");
2673 holdBackRail_transf[0]->
RotateY(90.0);
2674 holdBackRail_transf[0]->
SetDx(0.0);
2675 holdBackRail_transf[0]->
SetDy(+(14.5 + backRailMainPart_YSize + 6.0));
2676 holdBackRail_transf[0]->
SetDz(
2677 +0.695 - (1.35 + faceShild_ZSize + plankShild_ZSize)
2681 holdBackRail_transf[1]->
RotateY(90.0);
2682 holdBackRail_transf[1]->
RotateX(180.0);
2683 holdBackRail_transf[1]->
SetDx(0.0);
2684 holdBackRail_transf[1]->
SetDy(-(14.5 + backRailMainPart_YSize + 6.0));
2685 holdBackRail_transf[1]->
SetDz(
2686 +0.695 + (1.35 + faceShild_ZSize + plankShild_ZSize));
2688 frames->
AddNode(holdBackRailV, 0, holdBackRail_transf[0]);
2689 frames->
AddNode(holdBackRailV, 1, holdBackRail_transf[1]);
2693 Double_t backPlane_XSize = (NModules / 2.0) * 6.3 - (NModules / 2.0) * 0.3 + 3.95 * 2 ;
2698 new TGeoBBox(
"backPlaneS", backPlane_XSize * 0.5, backPlane_YSize * 0.5, backPlane_ZSize * 0.5);
2704 if (backPlaneV_medium) {
2705 backPlaneV->
SetMedium(backPlaneV_medium);
2707 Fatal(
"Main",
"Invalid medium for backPlaneV!");
2716 backPlane_transf[0]->
SetDx(0.0);
2717 backPlane_transf[0]->
SetDy(+(16.75 + backPlane_YSize * 0.5 + 6.0));
2718 backPlane_transf[0]->
SetDz(+0.695
2719 - (1.35 + faceShild_ZSize + plankShild_ZSize
2720 + holdBackRail_ZSize + backPlane_ZSize * 0.5)
2724 backPlane_transf[1]->
SetDx(0.0);
2725 backPlane_transf[1]->
SetDy(-(16.75 + backPlane_YSize * 0.5 + 6.0));
2726 backPlane_transf[1]->
SetDz(+0.695
2727 + (1.35 + faceShild_ZSize + plankShild_ZSize
2728 + holdBackRail_ZSize + backPlane_ZSize * 0.5));
2730 frames->
AddNode(backPlaneV, 0, backPlane_transf[0]);
2731 frames->
AddNode(backPlaneV, 1, backPlane_transf[1]);
2735 Double_t frontPlane_XSize = (NModules / 2.0) * 6.3 - (NModules / 2.0) * 0.3 + 1.8 * 2 ;
2740 new TGeoBBox(
"frontPlaneS", frontPlane_XSize * 0.5, frontPlane_YSize * 0.5, frontPlane_ZSize * 0.5);
2746 if (frontPlaneV_medium) {
2747 frontPlaneV->
SetMedium(frontPlaneV_medium);
2749 Fatal(
"Main",
"Invalid medium for frontPlaneV!");
2758 frontPlane_transf[0]->
SetDx(0.0);
2759 frontPlane_transf[0]->
SetDy(+(19.7 + frontPlane_YSize * 0.5 + 6.0));
2760 frontPlane_transf[0]->
SetDz(
2762 + (1.35 + faceShild_ZSize + plankShild_ZSize + frontPlane_ZSize * 0.5)
2766 frontPlane_transf[1]->
SetDx(0.0);
2767 frontPlane_transf[1]->
SetDy(-(19.7 + frontPlane_YSize * 0.5 + 6.0));
2768 frontPlane_transf[1]->
SetDz(
2770 - (1.35 + faceShild_ZSize + plankShild_ZSize + frontPlane_ZSize * 0.5));
2772 frames->
AddNode(frontPlaneV, 0, frontPlane_transf[0]);
2773 frames->
AddNode(frontPlaneV, 1, frontPlane_transf[1]);
2777 Double_t frontPlaneWithWindow_XSize = (NModules / 2.0) * 6.3 - (NModules / 2.0) * 0.3 + 4.0 * 2 ;
2778 Double_t frontPlaneWithWindow_YSize = 18.3;
2779 Double_t frontPlaneWithWindow_ZSize = 0.3;
2781 Double_t frontPlaneWindow_XSize = frontPlaneWithWindow_XSize - 3.0 * 2 ;
2782 Double_t frontPlaneWindow_YSize = 8.6;
2785 TString(
"frontPlaneWithWindowBlankS") +=
TString(
"_") + frames->
GetName(), frontPlaneWithWindow_XSize * 0.5,
2786 frontPlaneWithWindow_YSize * 0.5, frontPlaneWithWindow_ZSize * 0.5);
2789 frontPlaneWindow_YSize * 0.5, (frontPlaneWithWindow_ZSize + 0.001) * 0.5);
2793 frontPlaneWindow_pos->
SetDx(0.0);
2794 frontPlaneWindow_pos->
SetDy(-2.85 );
2795 frontPlaneWindow_pos->
SetDz(0.0);
2801 TString expression =
"frontPlaneWithWindowBlankS";
2803 expression +=
"-frontPlaneWindowS";
2805 expression +=
":frontPlaneWindow_pos";
2807 frontPlaneWithWindowS->
MakeNode(expression);
2816 if (frontPlaneWithWindowV_medium) {
2817 frontPlaneWithWindowV->
SetMedium(frontPlaneWithWindowV_medium);
2819 Fatal(
"Main",
"Invalid medium for frontPlaneWithWindowV!");
2828 frontPlaneWithWindow_transf[0]->
SetDx(0.0);
2829 frontPlaneWithWindow_transf[0]->
SetDy(+(19.5 + frontPlaneWithWindow_YSize * 0.5 + 6.0));
2830 frontPlaneWithWindow_transf[0]->
SetDz(
2832 + (1.35 + faceShild_ZSize + frontPlaneWithWindow_ZSize * 0.5)
2836 frontPlaneWithWindow_transf[1]->
RotateX(180.0);
2837 frontPlaneWithWindow_transf[1]->
SetDx(0.0);
2838 frontPlaneWithWindow_transf[1]->
SetDy(-(19.5 + frontPlaneWithWindow_YSize * 0.5 + 6.0));
2839 frontPlaneWithWindow_transf[1]->
SetDz(
2841 - (1.35 + faceShild_ZSize + frontPlaneWithWindow_ZSize * 0.5));
2843 frames->
AddNode(frontPlaneWithWindowV, 0, frontPlaneWithWindow_transf[0]);
2844 frames->
AddNode(frontPlaneWithWindowV, 1, frontPlaneWithWindow_transf[1]);
2848 Double_t pcb_XSize = (NModules / 2.0) * 6.3 - (NModules / 2.0) * 0.3 + 4.865 ;
2852 TGeoShape* pcbS =
new TGeoBBox(
"pcbS", frontPlane_XSize * 0.5, frontPlane_YSize * 0.5, frontPlane_ZSize * 0.5);
2861 Fatal(
"Main",
"Invalid medium for pcbV!");
2870 pcb_transf[0]->
SetDx(0.0);
2871 pcb_transf[0]->
SetDy(+(26.5 + pcb_YSize * 0.5 + 6.0));
2872 pcb_transf[0]->
SetDz(+0.695 + 4.31 );
2875 pcb_transf[1]->
SetDx(0.0);
2876 pcb_transf[1]->
SetDy(-(26.5 + pcb_YSize * 0.5 + 6.0));
2877 pcb_transf[1]->
SetDz(+0.695 );
2879 frames->
AddNode(pcbV, 0, pcb_transf[0]);
2880 frames->
AddNode(pcbV, 1, pcb_transf[1]);
2884 Double_t upperSideShield_XSize = 4.4;
2885 Double_t upperSideShield_YSize = 12.3;
2886 Double_t upperSideShield_ZSize = 0.8;
2888 Double_t upperSideShieldCut_XSize = 0.9;
2889 Double_t upperSideShieldCut_YSize = 2.4;
2891 Double_t upperSideShieldWindow_XSize = 3.0;
2892 Double_t upperSideShieldWindow_YSize = 7.0;
2898 +upperSideShield_XSize * 0.5 ,
2899 +upperSideShield_XSize * 0.5 ,
2900 -upperSideShield_XSize * 0.5 ,
2901 -upperSideShield_XSize * 0.5 ,
2902 -upperSideShield_XSize * 0.5 + upperSideShieldCut_XSize ,
2903 -upperSideShield_XSize * 0.5 + upperSideShieldCut_XSize
2907 -upperSideShield_YSize * 0.5 ,
2908 +upperSideShield_YSize * 0.5 ,
2909 +upperSideShield_YSize * 0.5 ,
2910 -upperSideShield_YSize * 0.5 + upperSideShieldCut_YSize ,
2911 -upperSideShield_YSize * 0.5 + upperSideShieldCut_YSize ,
2912 -upperSideShield_YSize * 0.5
2915 ((
TGeoXtru*)upperSideShieldBlankS)->DefinePolygon(6, x_pos, y_pos);
2916 ((
TGeoXtru*)upperSideShieldBlankS)->DefineSection(0, -upperSideShield_ZSize * 0.5);
2917 ((
TGeoXtru*)upperSideShieldBlankS)->DefineSection(1, +upperSideShield_ZSize * 0.5);
2921 TString(
"upperSideShieldWindowS") +=
TString(
"_") + frames->
GetName(), upperSideShieldWindow_XSize * 0.5,
2922 upperSideShieldWindow_YSize * 0.5, (upperSideShield_ZSize + 0.001) * 0.5);
2926 upperSideShieldWindow_pos->
SetDx(0.0);
2927 upperSideShieldWindow_pos->
SetDy(+1.65 );
2928 upperSideShieldWindow_pos->
SetDz(0.0);
2934 TString expression =
"upperSideShieldBlankS";
2936 expression +=
"-upperSideShieldWindowS";
2938 expression +=
":upperSideShieldWindow_pos";
2940 upperSideShieldWithWindowS->
MakeNode(expression);
2949 if (upperSideShieldV_medium) {
2950 upperSideShieldV->
SetMedium(upperSideShieldV_medium);
2952 Fatal(
"Main",
"Invalid medium for upperSideShieldV!");
2961 upperSideShield_transf[0]->
RotateY(90.0);
2962 upperSideShield_transf[0]->
SetDx(+(frontPlaneWithWindow_XSize * 0.5 - upperSideShield_ZSize * 0.5));
2963 upperSideShield_transf[0]->
SetDy(+(17.6 + upperSideShield_YSize * 0.5 + 6.0));
2964 upperSideShield_transf[0]->
SetDz(+0.695 - 0.65 + 4.31 );
2967 upperSideShield_transf[1]->
RotateY(90.0);
2968 upperSideShield_transf[1]->
SetDx(-(frontPlaneWithWindow_XSize * 0.5 - upperSideShield_ZSize * 0.5));
2969 upperSideShield_transf[1]->
SetDy(+(17.6 + upperSideShield_YSize * 0.5 + 6.0));
2970 upperSideShield_transf[1]->
SetDz(+0.695 - 0.65 + 4.31 );
2973 upperSideShield_transf[2]->
RotateY(-90.0);
2974 upperSideShield_transf[2]->
ReflectY(
true);
2975 upperSideShield_transf[2]->
SetDx(+(frontPlaneWithWindow_XSize * 0.5 - upperSideShield_ZSize * 0.5));
2976 upperSideShield_transf[2]->
SetDy(-(17.6 + upperSideShield_YSize * 0.5 + 6.0));
2977 upperSideShield_transf[2]->
SetDz(+0.695 + 0.65 );
2980 upperSideShield_transf[3]->
RotateY(-90.0);
2981 upperSideShield_transf[3]->
ReflectY(
true);
2982 upperSideShield_transf[3]->
SetDx(-(frontPlaneWithWindow_XSize * 0.5 - upperSideShield_ZSize * 0.5));
2983 upperSideShield_transf[3]->
SetDy(-(17.6 + upperSideShield_YSize * 0.5 + 6.0));
2984 upperSideShield_transf[3]->
SetDz(+0.695 + 0.65 );
2986 frames->
AddNode(upperSideShieldV, 0, upperSideShield_transf[0]);
2987 frames->
AddNode(upperSideShieldV, 1, upperSideShield_transf[1]);
2988 frames->
AddNode(upperSideShieldV, 2, upperSideShield_transf[2]);
2989 frames->
AddNode(upperSideShieldV, 3, upperSideShield_transf[3]);
2993 Double_t upperSideShieldCover_XSize = 4.4;
2994 Double_t upperSideShieldCover_YSize = 8.5;
2995 Double_t upperSideShieldCover_ZSize = 0.15;
2997 TGeoShape* upperSideShieldCoverS =
new TGeoBBox(
"upperSideShieldCoverS", upperSideShieldCover_XSize * 0.5,
2998 upperSideShieldCover_YSize * 0.5, upperSideShieldCover_ZSize * 0.5);
3005 if (upperSideShieldCoverV_medium) {
3006 upperSideShieldCoverV->
SetMedium(upperSideShieldCoverV_medium);
3008 Fatal(
"Main",
"Invalid medium for upperSideShieldCoverV!");
3017 upperSideShieldCover_transf[0]->
RotateY(90.0);
3018 upperSideShieldCover_transf[0]->
SetDx(+(frontPlaneWithWindow_XSize * 0.5 + upperSideShieldCover_ZSize * 0.5));
3019 upperSideShieldCover_transf[0]->
SetDy(+(20.7 + upperSideShieldCover_YSize * 0.5 + 6.0));
3020 upperSideShieldCover_transf[0]->
SetDz(+0.695 - 0.65 + 4.31 );
3023 upperSideShieldCover_transf[1]->
RotateY(90.0);
3024 upperSideShieldCover_transf[1]->
SetDx(-(frontPlaneWithWindow_XSize * 0.5 + upperSideShieldCover_ZSize * 0.5));
3025 upperSideShieldCover_transf[1]->
SetDy(+(20.7 + upperSideShieldCover_YSize * 0.5 + 6.0));
3026 upperSideShieldCover_transf[1]->
SetDz(+0.695 - 0.65 + 4.31 );
3029 upperSideShieldCover_transf[2]->
RotateY(90.0);
3030 upperSideShieldCover_transf[2]->
SetDx(+(frontPlaneWithWindow_XSize * 0.5 + upperSideShieldCover_ZSize * 0.5));
3031 upperSideShieldCover_transf[2]->
SetDy(-(20.7 + upperSideShieldCover_YSize * 0.5 + 6.0));
3032 upperSideShieldCover_transf[2]->
SetDz(+0.695 + 0.65 );
3035 upperSideShieldCover_transf[3]->
RotateY(90.0);
3036 upperSideShieldCover_transf[3]->
SetDx(-(frontPlaneWithWindow_XSize * 0.5 + upperSideShieldCover_ZSize * 0.5));
3037 upperSideShieldCover_transf[3]->
SetDy(-(20.7 + upperSideShieldCover_YSize * 0.5 + 6.0));
3038 upperSideShieldCover_transf[3]->
SetDz(+0.695 + 0.65 );
3040 frames->
AddNode(upperSideShieldCoverV, 0, upperSideShieldCover_transf[0]);
3041 frames->
AddNode(upperSideShieldCoverV, 1, upperSideShieldCover_transf[1]);
3042 frames->
AddNode(upperSideShieldCoverV, 2, upperSideShieldCover_transf[2]);
3043 frames->
AddNode(upperSideShieldCoverV, 3, upperSideShieldCover_transf[3]);