664 switch (module_type) {
684 ((
TGeoXtru*)moduleS)->DefinePolygon(5, x_pos, y_pos);
698 ((
TGeoXtru*)moduleS)->DefinePolygon(5, x_pos, y_pos);
704 Error(
"CreateModule()",
"Incorrect module type selected!!!");
708 TGeoShape* sensor_zone_upper_part_rectS =
714 sensor_zone_upper_part_bevelS->
SetName(
"sensor_zone_upper_part_bevelS");
728 Double_t x_delta_bottom_BP = (y_delta_bottom_BP - (
YBevelSize[module_size] + y_delta))
735 +
XModuleSize[module_size] * 0.5 - x_delta_bottom_BP,
737 Double_t y_pos_sensor_zone_bevel[5] = {
744 ((
TGeoXtru*)sensor_zone_upper_part_bevelS)->DefinePolygon(5, x_pos_sensor_zone_bevel, y_pos_sensor_zone_bevel);
745 ((
TGeoXtru*)sensor_zone_upper_part_bevelS)->DefineSection(0, -
ZModuleSize[module_size] * 0.5);
746 ((
TGeoXtru*)sensor_zone_upper_part_bevelS)->DefineSection(1, +
ZModuleSize[module_size] * 0.5);
750 TGeoShape* sensor_zone_lower_part_rectS =
756 sensor_zone_lower_part_bevelS->
SetName(
"sensor_zone_lower_part_bevelS");
770 Double_t x_delta_bottom_BP = (y_delta_bottom_BP - (
YBevelSize[module_size] + y_delta))
777 +
XModuleSize[module_size] * 0.5 - x_delta_bottom_BP,
779 Double_t y_pos_sensor_zone_bevel[5] = {
786 ((
TGeoXtru*)sensor_zone_lower_part_bevelS)->DefinePolygon(5, x_pos_sensor_zone_bevel, y_pos_sensor_zone_bevel);
787 ((
TGeoXtru*)sensor_zone_lower_part_bevelS)->DefineSection(0, -
ZModuleSize[module_size] * 0.5);
788 ((
TGeoXtru*)sensor_zone_lower_part_bevelS)->DefineSection(1, +
ZModuleSize[module_size] * 0.5);
801 new TGeoVolume(
"Sensor_zone_upper_part_rectV", sensor_zone_upper_part_rectS);
805 new TGeoVolume(
"Sensor_zone_upper_part_bevelV", sensor_zone_upper_part_bevelS);
809 new TGeoVolume(
"Sensor_zone_lower_part_rectV", sensor_zone_lower_part_rectS);
813 new TGeoVolume(
"Sensor_zone_lower_part_bevelV", sensor_zone_lower_part_bevelS);
817 if (silicon_medium) {
819 sensor_zone_upper_part_rectV->
SetMedium(silicon_medium);
820 sensor_zone_upper_part_bevelV->
SetMedium(silicon_medium);
821 sensor_zone_lower_part_rectV->
SetMedium(silicon_medium);
822 sensor_zone_lower_part_bevelV->
SetMedium(silicon_medium);
824 Fatal(
"Main",
"Invalid medium for modules and sensor zones!");
834 switch (module_type) {
842 sensor_zone_upper_part_pos->
SetDy(
845 sensor_zone_upper_part_pos->
SetDz(0.0);
851 sensor_zone_lower_part_pos->
SetDy(
854 sensor_zone_lower_part_pos->
SetDz(0.0);
856 moduleV->
AddNode(sensor_zone_upper_part_rectV, 0, sensor_zone_upper_part_pos);
857 moduleV->
AddNode(sensor_zone_lower_part_rectV, 0, sensor_zone_lower_part_pos);
868 sensor_zone_upper_part_pos->
SetDz(0.0);
870 moduleV->
AddNode(sensor_zone_upper_part_rectV, 0, sensor_zone_upper_part_pos);
880 sensor_zone_upper_part_pos->
SetDy(
883 sensor_zone_upper_part_pos->
SetDz(0.0);
887 sensor_zone_lower_part_bevel_pos->
SetDx(0.0);
891 sensor_zone_lower_part_bevel_pos->
SetDz(0.0);
893 moduleV->
AddNode(sensor_zone_upper_part_rectV, 0, sensor_zone_upper_part_pos);
894 moduleV->
AddNode(sensor_zone_lower_part_bevelV, 0, sensor_zone_lower_part_bevel_pos);
902 sensor_zone_upper_part_pos->
SetDx(0);
903 sensor_zone_upper_part_pos->
SetDy(0);
904 sensor_zone_upper_part_pos->
SetDz(0.0);
906 moduleV->
AddNode(sensor_zone_upper_part_bevelV, 0, sensor_zone_upper_part_pos);
911 Error(
"CreateModule()",
"Incorrect module type selected!!!");
932 switch (module_type) {
940 +(
XModuleSize[module_size] * 0.5 + leftMargin + 1.0) ,
941 +(
XModuleSize[module_size] * 0.5 + leftMargin + 1.0) ,
946 -(
XModuleSize[module_size] * 0.5 + rightMargin + 1.0) ,
947 -(
XModuleSize[module_size] * 0.5 + rightMargin + 1.0) ,
959 ((
TGeoXtru*)frameS)->DefinePolygon(12, x_pos, y_pos);
971 +(
XModuleSize[module_size] * 0.5 + leftMargin + 1.0) ,
972 +(
XModuleSize[module_size] * 0.5 + leftMargin + 1.0) ,
977 -(
XModuleSize[module_size] * 0.5 + rightMargin + 1.0) ,
978 -(
XModuleSize[module_size] * 0.5 + rightMargin + 1.0) ,
996 ((
TGeoXtru*)frameS)->DefinePolygon(12, x_pos, y_pos);
1008 +(
XModuleSize[module_size] * 0.5 + leftMargin + 1.0) ,
1009 +(
XModuleSize[module_size] * 0.5 + leftMargin + 1.0) ,
1014 -(
XModuleSize[module_size] * 0.5 + rightMargin + 1.0) ,
1015 -(
XModuleSize[module_size] * 0.5 + rightMargin + 1.0) ,
1020 -(
YModuleSize[module_size] * 0.5 + bottomMargin) ,
1034 ((
TGeoXtru*)frameS)->DefinePolygon(13, x_pos, y_pos);
1046 +(
XModuleSize[module_size] * 0.5 + leftMargin + 1.0) ,
1047 +(
XModuleSize[module_size] * 0.5 + leftMargin + 1.0) ,
1052 -(
XModuleSize[module_size] * 0.5 + rightMargin + 1.0) ,
1053 -(
XModuleSize[module_size] * 0.5 + rightMargin + 1.0) ,
1072 ((
TGeoXtru*)frameS)->DefinePolygon(13, x_pos, y_pos);
1078 Error(
"CreateModule()",
"Incorrect module type selected!!!");
1085 TString(
"window_rectS") += module_name, (
XModuleSize[module_size] - innerMargin * 2) * 0.5,
1099 Double_t x_delta_top_BP = innerMargin;
1103 Double_t y_delta_bottom_BP = innerMargin;
1104 Double_t x_delta_bottom_BP = (y_delta_bottom_BP - (
YBevelSize[module_size] + y_delta))
1115 -
YModuleSize[module_size] * 0.25 + y_delta_top_BP};
1117 ((
TGeoXtru*)window_bevelS)->DefinePolygon(5, x_pos, y_pos);
1124 upper_window_frame_pos->
SetName(
TString(
"upper_window_frame_pos") += module_name);
1125 upper_window_frame_pos->
SetDx(0.0);
1129 upper_window_frame_pos->
SetDz(0.0);
1133 lower_window_frame_pos->
SetName(
TString(
"lower_window_frame_pos") += module_name);
1134 lower_window_frame_pos->
SetDx(0.0);
1138 lower_window_frame_pos->
SetDz(0.0);
1142 window_half_frame_pos->
SetName(
TString(
"window_half_frame_pos") += module_name);
1143 window_half_frame_pos->
SetDx(0.0);
1144 window_half_frame_pos->
SetDy(0.0);
1145 window_half_frame_pos->
SetDz(0.0);
1149 frame_with_windowsS->
SetName(
"frame_with_windowsS");
1151 switch (module_type) {
1154 TString expression =
"(frameS";
1155 expression += module_name;
1156 expression +=
"-window_rectS";
1157 expression += module_name;
1158 expression +=
":upper_window_frame_pos";
1159 expression += module_name;
1160 expression +=
")-window_rectS";
1161 expression += module_name;
1162 expression +=
":lower_window_frame_pos";
1163 expression += module_name;
1164 frame_with_windowsS->
MakeNode(expression);
1170 TString expression =
"(frameS";
1171 expression += module_name;
1172 expression +=
")-window_rectS";
1173 expression += module_name;
1174 expression +=
":window_half_frame_pos";
1175 expression += module_name;
1176 frame_with_windowsS->
MakeNode(expression);
1182 TString expression =
"(frameS";
1183 expression += module_name;
1184 expression +=
"-window_rectS";
1185 expression += module_name;
1186 expression +=
":upper_window_frame_pos";
1187 expression += module_name;
1188 expression +=
")-window_bevelS";
1189 expression += module_name;
1190 expression +=
":lower_window_frame_pos";
1191 expression += module_name;
1192 frame_with_windowsS->
MakeNode(expression);
1198 TString expression =
"(frameS";
1199 expression += module_name;
1200 expression +=
")-window_bevelS";
1201 expression += module_name;
1202 expression +=
":window_half_frame_pos";
1203 expression += module_name;
1204 frame_with_windowsS->
MakeNode(expression);
1210 Error(
"CreateModule()",
"Incorrect module type selected!!!");
1220 if (carbon_medium) {
1223 Fatal(
"Main",
"Invalid medium for frameV!");
1244 Double_t faceShild_XSize = (NModules / 2.0) * 6.3 - (NModules / 2.0) * 0.3 + 8.6;
1249 faceShildS->
SetName(
"faceShildS");
1251 Double_t x_pos[8] = {faceShild_XSize * 0.5,
1252 faceShild_XSize * 0.5,
1253 -faceShild_XSize * 0.5,
1254 -faceShild_XSize * 0.5,
1259 Double_t y_pos[8] = {-faceShild_YSize * 0.5,
1260 faceShild_YSize * 0.5,
1261 faceShild_YSize * 0.5,
1262 -faceShild_YSize * 0.5,
1263 -faceShild_YSize * 0.5,
1266 -faceShild_YSize * 0.5};
1267 ((
TGeoXtru*)faceShildS)->DefinePolygon(8, x_pos, y_pos);
1268 ((
TGeoXtru*)faceShildS)->DefineSection(0, -faceShild_ZSize * 0.5);
1269 ((
TGeoXtru*)faceShildS)->DefineSection(1, +faceShild_ZSize * 0.5);
1276 if (faceShildV_medium) {
1277 faceShildV->
SetMedium(faceShildV_medium);
1279 Fatal(
"Main",
"Invalid medium for faceShildV!");
1288 faceShild_transf[0]->
SetDy(+faceShild_YSize * 0.5 - 0.95);
1289 faceShild_transf[0]->
SetDz(+0.695 - 1.35
1290 - faceShild_ZSize * 0.5 + 4.31 );
1293 faceShild_transf[1]->
SetDy(+faceShild_YSize * 0.5 - 0.95);
1294 faceShild_transf[1]->
SetDz(+0.695 + 1.35
1295 + faceShild_ZSize * 0.5 + 4.31 );
1298 faceShild_transf[2]->
RotateX(180.0);
1299 faceShild_transf[2]->
SetDy(-faceShild_YSize * 0.5 + 0.95);
1300 faceShild_transf[2]->
SetDz(+0.695 - 1.35
1301 - faceShild_ZSize * 0.5 );
1304 faceShild_transf[3]->
RotateX(180.0);
1305 faceShild_transf[3]->
SetDy(-faceShild_YSize * 0.5 + 0.95);
1306 faceShild_transf[3]->
SetDz(+0.695 + 1.35
1307 + faceShild_ZSize * 0.5 );
1309 frames->
AddNode(faceShildV, 0, faceShild_transf[0]);
1310 frames->
AddNode(faceShildV, 1, faceShild_transf[1]);
1311 frames->
AddNode(faceShildV, 2, faceShild_transf[2]);
1312 frames->
AddNode(faceShildV, 3, faceShild_transf[3]);
1321 new TGeoBBox(
"sideShieldS", sideShild_XSize * 0.5, sideShild_YSize * 0.5, sideShild_ZSize * 0.5);
1327 if (sideShieldV_medium) {
1328 sideShieldV->
SetMedium(sideShieldV_medium);
1330 Fatal(
"Main",
"Invalid medium for sideShieldV!");
1339 sideShild_transf[0]->
SetDx(+(faceShild_XSize * 0.5 - sideShild_XSize * 0.5));
1340 sideShild_transf[0]->
SetDy(+faceShild_YSize * 0.5 - 0.95 + (sideShild_YSize - faceShild_YSize) * 0.5);
1341 sideShild_transf[0]->
SetDz(+0.695 + 4.31 );
1344 sideShild_transf[1]->
SetDx(-(faceShild_XSize * 0.5 - sideShild_XSize * 0.5));
1345 sideShild_transf[1]->
SetDy(+faceShild_YSize * 0.5 - 0.95 + (sideShild_YSize - faceShild_YSize) * 0.5);
1346 sideShild_transf[1]->
SetDz(+0.695 + 4.31 );
1349 sideShild_transf[2]->
SetDx(+(faceShild_XSize * 0.5 - sideShild_XSize * 0.5));
1350 sideShild_transf[2]->
SetDy(-faceShild_YSize * 0.5 + 0.95 - (sideShild_YSize - faceShild_YSize) * 0.5);
1351 sideShild_transf[2]->
SetDz(+0.695 );
1354 sideShild_transf[3]->
SetDx(-(faceShild_XSize * 0.5 - sideShild_XSize * 0.5));
1355 sideShild_transf[3]->
SetDy(-faceShild_YSize * 0.5 + 0.95 - (sideShild_YSize - faceShild_YSize) * 0.5);
1356 sideShild_transf[3]->
SetDz(+0.695 );
1358 frames->
AddNode(sideShieldV, 0, sideShild_transf[0]);
1359 frames->
AddNode(sideShieldV, 1, sideShild_transf[1]);
1360 frames->
AddNode(sideShieldV, 2, sideShild_transf[2]);
1361 frames->
AddNode(sideShieldV, 3, sideShild_transf[3]);
1365 Double_t horizShild_XSize = faceShild_XSize * 0.5 - sideShild_XSize - 2.75 ;
1370 new TGeoBBox(
"horizShieldS", horizShild_XSize * 0.5, horizShild_YSize * 0.5, horizShild_ZSize * 0.5);
1377 if (horizShieldV_medium) {
1378 horizShieldV->
SetMedium(horizShieldV_medium);
1380 Fatal(
"Main",
"Invalid medium for horizShieldV!");
1389 horizShild_transf[0]->
SetDx(+(faceShild_XSize * 0.5 - horizShild_XSize * 0.5 - sideShild_XSize));
1390 horizShild_transf[0]->
SetDy(+(-0.95 + horizShild_YSize * 0.5));
1391 horizShild_transf[0]->
SetDz(+0.695 + 4.31 );
1394 horizShild_transf[1]->
SetDx(-(faceShild_XSize * 0.5 - horizShild_XSize * 0.5 - sideShild_XSize));
1395 horizShild_transf[1]->
SetDy(+(-0.95 + horizShild_YSize * 0.5));
1396 horizShild_transf[1]->
SetDz(+0.695 + 4.31 );
1399 horizShild_transf[2]->
SetDx(+(faceShild_XSize * 0.5 - horizShild_XSize * 0.5 - sideShild_XSize));
1400 horizShild_transf[2]->
SetDy(-(-0.95 + horizShild_YSize * 0.5));
1401 horizShild_transf[2]->
SetDz(+0.695 );
1404 horizShild_transf[3]->
SetDx(-(faceShild_XSize * 0.5 - horizShild_XSize * 0.5 - sideShild_XSize));
1405 horizShild_transf[3]->
SetDy(-(-0.95 + horizShild_YSize * 0.5));
1406 horizShild_transf[3]->
SetDz(+0.695 );
1408 frames->
AddNode(horizShieldV, 0, horizShild_transf[0]);
1409 frames->
AddNode(horizShieldV, 1, horizShild_transf[1]);
1410 frames->
AddNode(horizShieldV, 2, horizShild_transf[2]);
1411 frames->
AddNode(horizShieldV, 3, horizShild_transf[3]);
1415 Double_t plankShild_XSize = faceShild_XSize;
1420 new TGeoBBox(
"plankShieldS", plankShild_XSize * 0.5, plankShild_YSize * 0.5, plankShild_ZSize * 0.5);
1427 if (plankShieldV_medium) {
1428 plankShieldV->
SetMedium(plankShieldV_medium);
1430 Fatal(
"Main",
"Invalid medium for plankShieldV!");
1439 plankShild_transf[0]->
SetDx(0.0);
1440 plankShild_transf[0]->
SetDy(+(-0.95 + faceShild_YSize) - 0.05);
1441 plankShild_transf[0]->
SetDz(
1442 +0.695 - (1.35 + faceShild_ZSize + plankShild_ZSize * 0.5)
1446 plankShild_transf[1]->
SetDx(0.0);
1447 plankShild_transf[1]->
SetDy(+(-0.95 + faceShild_YSize) - 0.05);
1448 plankShild_transf[1]->
SetDz(
1449 +0.695 + (1.35 + faceShild_ZSize + plankShild_ZSize * 0.5)
1453 plankShild_transf[2]->
SetDx(0.0);
1454 plankShild_transf[2]->
SetDy(-(-0.95 + faceShild_YSize) + 0.05);
1455 plankShild_transf[2]->
SetDz(+0.695
1456 - (1.35 + faceShild_ZSize + plankShild_ZSize * 0.5));
1459 plankShild_transf[3]->
SetDx(0.0);
1460 plankShild_transf[3]->
SetDy(-(-0.95 + faceShild_YSize) + 0.05);
1461 plankShild_transf[3]->
SetDz(+0.695
1462 + (1.35 + faceShild_ZSize + plankShild_ZSize * 0.5));
1464 frames->
AddNode(plankShieldV, 0, plankShild_transf[0]);
1465 frames->
AddNode(plankShieldV, 1, plankShild_transf[1]);
1466 frames->
AddNode(plankShieldV, 2, plankShild_transf[2]);
1467 frames->
AddNode(plankShieldV, 3, plankShild_transf[3]);
1471 Double_t baseRailMainPart_XSize = faceShild_XSize + 3.4 * 2 ;
1472 Double_t baseRailMainPart_YSize = 5.0;
1473 Double_t baseRailMainPart_ZSize = 0.7;
1475 cout <<
"baseRailMainPart_XSize = " << baseRailMainPart_XSize <<
"\n";
1477 Double_t baseRailUpperPart_XSize = baseRailMainPart_XSize;
1478 Double_t baseRailUpperPart_YSize = 1.0;
1479 Double_t baseRailUpperPart_ZSize = 0.3;
1481 Double_t baseRailLowerPart_XSize = baseRailMainPart_XSize - 8.8 ;
1482 Double_t baseRailLowerPart_YSize = 0.7;
1483 Double_t baseRailLowerPart_ZSize = 0.3;
1487 baseRailMainPart_YSize * 0.5, baseRailMainPart_ZSize * 0.5);
1490 baseRailUpperPart_YSize * 0.5, baseRailUpperPart_ZSize * 0.5);
1493 baseRailLowerPart_YSize * 0.5, baseRailLowerPart_ZSize * 0.5);
1497 baseRailUpperPart_pos->
SetDx(0.0);
1498 baseRailUpperPart_pos->
SetDy(+(baseRailMainPart_YSize * 0.5 + baseRailUpperPart_YSize * 0.5));
1499 baseRailUpperPart_pos->
SetDz(baseRailMainPart_ZSize * 0.5 - baseRailUpperPart_ZSize * 0.5);
1504 baseRailLowerPart_pos->
SetDx(0.0);
1505 baseRailLowerPart_pos->
SetDy(-(baseRailMainPart_YSize * 0.5 + baseRailLowerPart_YSize * 0.5));
1506 baseRailLowerPart_pos->
SetDz(baseRailMainPart_ZSize * 0.5 - baseRailLowerPart_ZSize * 0.5);
1512 TString expression =
"baseRailMainPartS";
1514 expression +=
"+baseRailUpperPartS";
1516 expression +=
":baseRailUpperPart_pos";
1518 expression +=
"+baseRailLowerPartS";
1520 expression +=
":baseRailLowerPart_pos";
1530 if (baseRailV_medium) {
1533 Fatal(
"Main",
"Invalid medium for baseRailV!");
1542 baseRail_transf[0]->
RotateY(180.0);
1543 baseRail_transf[0]->
SetDx(0.1);
1544 baseRail_transf[0]->
SetDy(+(14.5 + baseRailMainPart_YSize * 0.5));
1545 baseRail_transf[0]->
SetDz(
1547 + (1.35 + faceShild_ZSize + baseRailMainPart_ZSize * 0.5 - baseRailLowerPart_ZSize)
1551 baseRail_transf[1]->
ReflectY(
true);
1552 baseRail_transf[1]->
SetDx(0.0);
1553 baseRail_transf[1]->
SetDy(-(14.5 + baseRailMainPart_YSize * 0.5));
1554 baseRail_transf[1]->
SetDz(+0.695
1555 - (1.35 + faceShild_ZSize + baseRailMainPart_ZSize * 0.5
1556 - baseRailLowerPart_ZSize));
1558 frames->
AddNode(baseRailV, 0, baseRail_transf[0]);
1559 frames->
AddNode(baseRailV, 1, baseRail_transf[1]);
1563 Double_t backRailMainPart_XSize = faceShild_XSize + -0.3 * 2 ;
1564 Double_t backRailMainPart_YSize = 3.0;
1565 Double_t backRailMainPart_ZSize = 0.9;
1567 cout <<
"backRailMainPart_XSize = " << backRailMainPart_XSize <<
"\n";
1569 Double_t backRailLowerPart_XSize = backRailMainPart_XSize - 1.4;
1570 Double_t backRailLowerPart_YSize = 0.7;
1571 Double_t backRailLowerPart_ZSize = 0.6;
1573 Double_t backRailSidePart_XSize = 1.2;
1574 Double_t backRailSidePart_YSize = 3.0;
1575 Double_t backRailSidePart_ZSize = 1.62;
1579 backRailMainPart_YSize * 0.5, backRailMainPart_ZSize * 0.5);
1582 backRailLowerPart_YSize * 0.5, backRailLowerPart_ZSize * 0.5);
1585 backRailSidePart_YSize * 0.5, backRailSidePart_ZSize * 0.5);
1589 backRailLowerPart_pos->
SetDx(0.0);
1590 backRailLowerPart_pos->
SetDy(-(backRailMainPart_YSize * 0.5 + backRailLowerPart_YSize * 0.5));
1591 backRailLowerPart_pos->
SetDz(backRailMainPart_ZSize * 0.5 - backRailLowerPart_ZSize * 0.5);
1596 backRailSidePart1_pos->
SetDx(+(backRailMainPart_XSize * 0.5 - backRailSidePart_XSize * 0.5));
1597 backRailSidePart1_pos->
SetDy(0.0);
1598 backRailSidePart1_pos->
SetDz(backRailMainPart_ZSize * 0.5 + backRailSidePart_ZSize * 0.5);
1603 backRailSidePart2_pos->
SetDx(-(backRailMainPart_XSize * 0.5 - backRailSidePart_XSize * 0.5));
1604 backRailSidePart2_pos->
SetDy(0.0);
1605 backRailSidePart2_pos->
SetDz(backRailMainPart_ZSize * 0.5 + backRailSidePart_ZSize * 0.5);
1611 TString expression =
"backRailMainPartS";
1613 expression +=
"+backRailLowerPartS";
1615 expression +=
":backRailLowerPart_pos";
1617 expression +=
"+backRailSidePartS";
1619 expression +=
":backRailSidePart1_pos";
1621 expression +=
"+backRailSidePartS";
1623 expression +=
":backRailSidePart2_pos";
1633 if (backRailV_medium) {
1636 Fatal(
"Main",
"Invalid medium for backRailV!");
1645 backRail_transf[0]->
SetDx(0.0);
1646 backRail_transf[0]->
SetDy(+(14.5 + backRailMainPart_YSize * 0.5));
1647 backRail_transf[0]->
SetDz(+0.695
1648 - (1.35 + faceShild_ZSize
1649 + (backRailMainPart_ZSize * 0.5 - backRailLowerPart_ZSize))
1653 backRail_transf[1]->
RotateX(180.0);
1654 backRail_transf[1]->
SetDx(0.0);
1655 backRail_transf[1]->
SetDy(-(14.5 + backRailMainPart_YSize * 0.5));
1656 backRail_transf[1]->
SetDz(+0.695
1657 + (1.35 + faceShild_ZSize
1658 + (backRailMainPart_ZSize * 0.5 - backRailLowerPart_ZSize)));
1660 frames->
AddNode(backRailV, 0, backRail_transf[0]);
1661 frames->
AddNode(backRailV, 1, backRail_transf[1]);
1665 Double_t holdBackRail_XSize = backRailMainPart_XSize;
1670 holdBackRailS->
SetName(
"holdBackRailS");
1673 +0.0 , +0.1 , +holdBackRail_ZSize , +holdBackRail_ZSize , +0.0
1676 -holdBackRail_YSize ,
1677 -holdBackRail_YSize ,
1678 -holdBackRail_YSize * 0.5 ,
1682 ((
TGeoXtru*)holdBackRailS)->DefinePolygon(5, x_pos, y_pos);
1683 ((
TGeoXtru*)holdBackRailS)->DefineSection(0, -holdBackRail_XSize * 0.5);
1684 ((
TGeoXtru*)holdBackRailS)->DefineSection(1, +holdBackRail_XSize * 0.5);
1692 if (holdBackRailV_medium) {
1693 holdBackRailV->
SetMedium(holdBackRailV_medium);
1695 Fatal(
"Main",
"Invalid medium for holdBackRailV!");
1704 holdBackRail_transf[0]->
RotateY(90.0);
1705 holdBackRail_transf[0]->
SetDx(0.0);
1706 holdBackRail_transf[0]->
SetDy(+(14.5 + backRailMainPart_YSize));
1707 holdBackRail_transf[0]->
SetDz(
1708 +0.695 - (1.35 + faceShild_ZSize + plankShild_ZSize)
1712 holdBackRail_transf[1]->
RotateY(90.0);
1713 holdBackRail_transf[1]->
RotateX(180.0);
1714 holdBackRail_transf[1]->
SetDx(0.0);
1715 holdBackRail_transf[1]->
SetDy(-(14.5 + backRailMainPart_YSize));
1716 holdBackRail_transf[1]->
SetDz(
1717 +0.695 + (1.35 + faceShild_ZSize + plankShild_ZSize));
1719 frames->
AddNode(holdBackRailV, 0, holdBackRail_transf[0]);
1720 frames->
AddNode(holdBackRailV, 1, holdBackRail_transf[1]);
1724 Double_t backPlane_XSize = (NModules / 2.0) * 6.3 - (NModules / 2.0) * 0.3 + 3.95 * 2 ;
1729 new TGeoBBox(
"backPlaneS", backPlane_XSize * 0.5, backPlane_YSize * 0.5, backPlane_ZSize * 0.5);
1735 if (backPlaneV_medium) {
1736 backPlaneV->
SetMedium(backPlaneV_medium);
1738 Fatal(
"Main",
"Invalid medium for backPlaneV!");
1747 backPlane_transf[0]->
SetDx(0.0);
1748 backPlane_transf[0]->
SetDy(+(16.75 + backPlane_YSize * 0.5));
1749 backPlane_transf[0]->
SetDz(+0.695
1750 - (1.35 + faceShild_ZSize + plankShild_ZSize
1751 + holdBackRail_ZSize + backPlane_ZSize * 0.5)
1755 backPlane_transf[1]->
SetDx(0.0);
1756 backPlane_transf[1]->
SetDy(-(16.75 + backPlane_YSize * 0.5));
1757 backPlane_transf[1]->
SetDz(+0.695
1758 + (1.35 + faceShild_ZSize + plankShild_ZSize
1759 + holdBackRail_ZSize + backPlane_ZSize * 0.5));
1761 frames->
AddNode(backPlaneV, 0, backPlane_transf[0]);
1762 frames->
AddNode(backPlaneV, 1, backPlane_transf[1]);
1766 Double_t frontPlane_XSize = (NModules / 2.0) * 6.3 - (NModules / 2.0) * 0.3 + 1.8 * 2 ;
1771 new TGeoBBox(
"frontPlaneS", frontPlane_XSize * 0.5, frontPlane_YSize * 0.5, frontPlane_ZSize * 0.5);
1777 if (frontPlaneV_medium) {
1778 frontPlaneV->
SetMedium(frontPlaneV_medium);
1780 Fatal(
"Main",
"Invalid medium for frontPlaneV!");
1789 frontPlane_transf[0]->
SetDx(0.0);
1790 frontPlane_transf[0]->
SetDy(+(19.7 + frontPlane_YSize * 0.5));
1791 frontPlane_transf[0]->
SetDz(
1793 + (1.35 + faceShild_ZSize + plankShild_ZSize + frontPlane_ZSize * 0.5)
1797 frontPlane_transf[1]->
SetDx(0.0);
1798 frontPlane_transf[1]->
SetDy(-(19.7 + frontPlane_YSize * 0.5));
1799 frontPlane_transf[1]->
SetDz(
1801 - (1.35 + faceShild_ZSize + plankShild_ZSize + frontPlane_ZSize * 0.5));
1803 frames->
AddNode(frontPlaneV, 0, frontPlane_transf[0]);
1804 frames->
AddNode(frontPlaneV, 1, frontPlane_transf[1]);
1808 Double_t frontPlaneWithWindow_XSize = (NModules / 2.0) * 6.3 - (NModules / 2.0) * 0.3 + 4.0 * 2 ;
1809 Double_t frontPlaneWithWindow_YSize = 18.3;
1810 Double_t frontPlaneWithWindow_ZSize = 0.3;
1812 Double_t frontPlaneWindow_XSize = frontPlaneWithWindow_XSize - 3.0 * 2 ;
1813 Double_t frontPlaneWindow_YSize = 8.6;
1816 TString(
"frontPlaneWithWindowBlankS") +=
TString(
"_") + frames->
GetName(), frontPlaneWithWindow_XSize * 0.5,
1817 frontPlaneWithWindow_YSize * 0.5, frontPlaneWithWindow_ZSize * 0.5);
1820 frontPlaneWindow_YSize * 0.5, (frontPlaneWithWindow_ZSize + 0.001) * 0.5);
1824 frontPlaneWindow_pos->
SetDx(0.0);
1825 frontPlaneWindow_pos->
SetDy(-2.85 );
1826 frontPlaneWindow_pos->
SetDz(0.0);
1832 TString expression =
"frontPlaneWithWindowBlankS";
1834 expression +=
"-frontPlaneWindowS";
1836 expression +=
":frontPlaneWindow_pos";
1838 frontPlaneWithWindowS->
MakeNode(expression);
1847 if (frontPlaneWithWindowV_medium) {
1848 frontPlaneWithWindowV->
SetMedium(frontPlaneWithWindowV_medium);
1850 Fatal(
"Main",
"Invalid medium for frontPlaneWithWindowV!");
1859 frontPlaneWithWindow_transf[0]->
SetDx(0.0);
1860 frontPlaneWithWindow_transf[0]->
SetDy(+(19.5 + frontPlaneWithWindow_YSize * 0.5));
1861 frontPlaneWithWindow_transf[0]->
SetDz(
1863 + (1.35 + faceShild_ZSize + frontPlaneWithWindow_ZSize * 0.5)
1867 frontPlaneWithWindow_transf[1]->
RotateX(180.0);
1868 frontPlaneWithWindow_transf[1]->
SetDx(0.0);
1869 frontPlaneWithWindow_transf[1]->
SetDy(-(19.5 + frontPlaneWithWindow_YSize * 0.5));
1870 frontPlaneWithWindow_transf[1]->
SetDz(
1872 - (1.35 + faceShild_ZSize + frontPlaneWithWindow_ZSize * 0.5));
1874 frames->
AddNode(frontPlaneWithWindowV, 0, frontPlaneWithWindow_transf[0]);
1875 frames->
AddNode(frontPlaneWithWindowV, 1, frontPlaneWithWindow_transf[1]);
1879 Double_t pcb_XSize = (NModules / 2.0) * 6.3 - (NModules / 2.0) * 0.3 + 4.865 ;
1883 TGeoShape* pcbS =
new TGeoBBox(
"pcbS", frontPlane_XSize * 0.5, frontPlane_YSize * 0.5, frontPlane_ZSize * 0.5);
1892 Fatal(
"Main",
"Invalid medium for pcbV!");
1901 pcb_transf[0]->
SetDx(0.0);
1902 pcb_transf[0]->
SetDy(+(26.5 + pcb_YSize * 0.5));
1903 pcb_transf[0]->
SetDz(+0.695 + 4.31 );
1906 pcb_transf[1]->
SetDx(0.0);
1907 pcb_transf[1]->
SetDy(-(26.5 + pcb_YSize * 0.5));
1908 pcb_transf[1]->
SetDz(+0.695 );
1910 frames->
AddNode(pcbV, 0, pcb_transf[0]);
1911 frames->
AddNode(pcbV, 1, pcb_transf[1]);
1915 Double_t upperSideShield_XSize = 4.4;
1916 Double_t upperSideShield_YSize = 12.3;
1917 Double_t upperSideShield_ZSize = 0.8;
1919 Double_t upperSideShieldCut_XSize = 0.9;
1920 Double_t upperSideShieldCut_YSize = 2.4;
1922 Double_t upperSideShieldWindow_XSize = 3.0;
1923 Double_t upperSideShieldWindow_YSize = 7.0;
1929 +upperSideShield_XSize * 0.5 ,
1930 +upperSideShield_XSize * 0.5 ,
1931 -upperSideShield_XSize * 0.5 ,
1932 -upperSideShield_XSize * 0.5 ,
1933 -upperSideShield_XSize * 0.5 + upperSideShieldCut_XSize ,
1934 -upperSideShield_XSize * 0.5 + upperSideShieldCut_XSize
1938 -upperSideShield_YSize * 0.5 ,
1939 +upperSideShield_YSize * 0.5 ,
1940 +upperSideShield_YSize * 0.5 ,
1941 -upperSideShield_YSize * 0.5 + upperSideShieldCut_YSize ,
1942 -upperSideShield_YSize * 0.5 + upperSideShieldCut_YSize ,
1943 -upperSideShield_YSize * 0.5
1946 ((
TGeoXtru*)upperSideShieldBlankS)->DefinePolygon(6, x_pos, y_pos);
1947 ((
TGeoXtru*)upperSideShieldBlankS)->DefineSection(0, -upperSideShield_ZSize * 0.5);
1948 ((
TGeoXtru*)upperSideShieldBlankS)->DefineSection(1, +upperSideShield_ZSize * 0.5);
1952 TString(
"upperSideShieldWindowS") +=
TString(
"_") + frames->
GetName(), upperSideShieldWindow_XSize * 0.5,
1953 upperSideShieldWindow_YSize * 0.5, (upperSideShield_ZSize + 0.001) * 0.5);
1957 upperSideShieldWindow_pos->
SetDx(0.0);
1958 upperSideShieldWindow_pos->
SetDy(+1.65 );
1959 upperSideShieldWindow_pos->
SetDz(0.0);
1965 TString expression =
"upperSideShieldBlankS";
1967 expression +=
"-upperSideShieldWindowS";
1969 expression +=
":upperSideShieldWindow_pos";
1971 upperSideShieldWithWindowS->
MakeNode(expression);
1980 if (upperSideShieldV_medium) {
1981 upperSideShieldV->
SetMedium(upperSideShieldV_medium);
1983 Fatal(
"Main",
"Invalid medium for upperSideShieldV!");
1992 upperSideShield_transf[0]->
RotateY(90.0);
1993 upperSideShield_transf[0]->
SetDx(+(frontPlaneWithWindow_XSize * 0.5 - upperSideShield_ZSize * 0.5));
1994 upperSideShield_transf[0]->
SetDy(+(17.6 + upperSideShield_YSize * 0.5));
1995 upperSideShield_transf[0]->
SetDz(+0.695 - 0.65 + 4.31 );
1998 upperSideShield_transf[1]->
RotateY(90.0);
1999 upperSideShield_transf[1]->
SetDx(-(frontPlaneWithWindow_XSize * 0.5 - upperSideShield_ZSize * 0.5));
2000 upperSideShield_transf[1]->
SetDy(+(17.6 + upperSideShield_YSize * 0.5));
2001 upperSideShield_transf[1]->
SetDz(+0.695 - 0.65 + 4.31 );
2004 upperSideShield_transf[2]->
RotateY(-90.0);
2005 upperSideShield_transf[2]->
ReflectY(
true);
2006 upperSideShield_transf[2]->
SetDx(+(frontPlaneWithWindow_XSize * 0.5 - upperSideShield_ZSize * 0.5));
2007 upperSideShield_transf[2]->
SetDy(-(17.6 + upperSideShield_YSize * 0.5));
2008 upperSideShield_transf[2]->
SetDz(+0.695 + 0.65 );
2011 upperSideShield_transf[3]->
RotateY(-90.0);
2012 upperSideShield_transf[3]->
ReflectY(
true);
2013 upperSideShield_transf[3]->
SetDx(-(frontPlaneWithWindow_XSize * 0.5 - upperSideShield_ZSize * 0.5));
2014 upperSideShield_transf[3]->
SetDy(-(17.6 + upperSideShield_YSize * 0.5));
2015 upperSideShield_transf[3]->
SetDz(+0.695 + 0.65 );
2017 frames->
AddNode(upperSideShieldV, 0, upperSideShield_transf[0]);
2018 frames->
AddNode(upperSideShieldV, 1, upperSideShield_transf[1]);
2019 frames->
AddNode(upperSideShieldV, 2, upperSideShield_transf[2]);
2020 frames->
AddNode(upperSideShieldV, 3, upperSideShield_transf[3]);
2024 Double_t upperSideShieldCover_XSize = 4.4;
2025 Double_t upperSideShieldCover_YSize = 8.5;
2026 Double_t upperSideShieldCover_ZSize = 0.15;
2028 TGeoShape* upperSideShieldCoverS =
new TGeoBBox(
"upperSideShieldCoverS", upperSideShieldCover_XSize * 0.5,
2029 upperSideShieldCover_YSize * 0.5, upperSideShieldCover_ZSize * 0.5);
2036 if (upperSideShieldCoverV_medium) {
2037 upperSideShieldCoverV->
SetMedium(upperSideShieldCoverV_medium);
2039 Fatal(
"Main",
"Invalid medium for upperSideShieldCoverV!");
2048 upperSideShieldCover_transf[0]->
RotateY(90.0);
2049 upperSideShieldCover_transf[0]->
SetDx(+(frontPlaneWithWindow_XSize * 0.5 + upperSideShieldCover_ZSize * 0.5));
2050 upperSideShieldCover_transf[0]->
SetDy(+(20.7 + upperSideShieldCover_YSize * 0.5));
2051 upperSideShieldCover_transf[0]->
SetDz(+0.695 - 0.65 + 4.31 );
2054 upperSideShieldCover_transf[1]->
RotateY(90.0);
2055 upperSideShieldCover_transf[1]->
SetDx(-(frontPlaneWithWindow_XSize * 0.5 + upperSideShieldCover_ZSize * 0.5));
2056 upperSideShieldCover_transf[1]->
SetDy(+(20.7 + upperSideShieldCover_YSize * 0.5));
2057 upperSideShieldCover_transf[1]->
SetDz(+0.695 - 0.65 + 4.31 );
2060 upperSideShieldCover_transf[2]->
RotateY(90.0);
2061 upperSideShieldCover_transf[2]->
SetDx(+(frontPlaneWithWindow_XSize * 0.5 + upperSideShieldCover_ZSize * 0.5));
2062 upperSideShieldCover_transf[2]->
SetDy(-(20.7 + upperSideShieldCover_YSize * 0.5));
2063 upperSideShieldCover_transf[2]->
SetDz(+0.695 + 0.65 );
2066 upperSideShieldCover_transf[3]->
RotateY(90.0);
2067 upperSideShieldCover_transf[3]->
SetDx(-(frontPlaneWithWindow_XSize * 0.5 + upperSideShieldCover_ZSize * 0.5));
2068 upperSideShieldCover_transf[3]->
SetDy(-(20.7 + upperSideShieldCover_YSize * 0.5));
2069 upperSideShieldCover_transf[3]->
SetDz(+0.695 + 0.65 );
2071 frames->
AddNode(upperSideShieldCoverV, 0, upperSideShieldCover_transf[0]);
2072 frames->
AddNode(upperSideShieldCoverV, 1, upperSideShieldCover_transf[1]);
2073 frames->
AddNode(upperSideShieldCoverV, 2, upperSideShieldCover_transf[2]);
2074 frames->
AddNode(upperSideShieldCoverV, 3, upperSideShieldCover_transf[3]);
2092 Double_t faceShild_XSize = (NModules / 2.0) * 6.3 - (NModules / 2.0) * 0.3 + 8.6;
2093 Double_t faceShild_YSize = 14.74 + 6.0;
2097 faceShildS->
SetName(
"faceShildS");
2099 Double_t x_pos[8] = {faceShild_XSize * 0.5,
2100 faceShild_XSize * 0.5,
2101 -faceShild_XSize * 0.5,
2102 -faceShild_XSize * 0.5,
2107 Double_t y_pos[8] = {-faceShild_YSize * 0.5,
2108 faceShild_YSize * 0.5,
2109 faceShild_YSize * 0.5,
2110 -faceShild_YSize * 0.5,
2111 -faceShild_YSize * 0.5,
2114 -faceShild_YSize * 0.5};
2115 ((
TGeoXtru*)faceShildS)->DefinePolygon(8, x_pos, y_pos);
2116 ((
TGeoXtru*)faceShildS)->DefineSection(0, -faceShild_ZSize * 0.5);
2117 ((
TGeoXtru*)faceShildS)->DefineSection(1, +faceShild_ZSize * 0.5);
2124 if (faceShildV_medium) {
2125 faceShildV->
SetMedium(faceShildV_medium);
2127 Fatal(
"Main",
"Invalid medium for faceShildV!");
2136 faceShild_transf[0]->
SetDy(+faceShild_YSize * 0.5 - 0.95);
2137 faceShild_transf[0]->
SetDz(+0.695 - 1.35
2138 - faceShild_ZSize * 0.5 + 4.31 );
2141 faceShild_transf[1]->
SetDy(+faceShild_YSize * 0.5 - 0.95);
2142 faceShild_transf[1]->
SetDz(+0.695 + 1.35
2143 + faceShild_ZSize * 0.5 + 4.31 );
2146 faceShild_transf[2]->
RotateX(180.0);
2147 faceShild_transf[2]->
SetDy(-faceShild_YSize * 0.5 + 0.95);
2148 faceShild_transf[2]->
SetDz(+0.695 - 1.35
2149 - faceShild_ZSize * 0.5 );
2152 faceShild_transf[3]->
RotateX(180.0);
2153 faceShild_transf[3]->
SetDy(-faceShild_YSize * 0.5 + 0.95);
2154 faceShild_transf[3]->
SetDz(+0.695 + 1.35
2155 + faceShild_ZSize * 0.5 );
2157 frames->
AddNode(faceShildV, 0, faceShild_transf[0]);
2158 frames->
AddNode(faceShildV, 1, faceShild_transf[1]);
2159 frames->
AddNode(faceShildV, 2, faceShild_transf[2]);
2160 frames->
AddNode(faceShildV, 3, faceShild_transf[3]);
2165 Double_t sideShild_YSize = 15.2 + 6.0;
2169 new TGeoBBox(
"sideShieldS", sideShild_XSize * 0.5, sideShild_YSize * 0.5, sideShild_ZSize * 0.5);
2175 if (sideShieldV_medium) {
2176 sideShieldV->
SetMedium(sideShieldV_medium);
2178 Fatal(
"Main",
"Invalid medium for sideShieldV!");
2187 sideShild_transf[0]->
SetDx(+(faceShild_XSize * 0.5 - sideShild_XSize * 0.5));
2188 sideShild_transf[0]->
SetDy(+faceShild_YSize * 0.5 - 0.95 + (sideShild_YSize - faceShild_YSize) * 0.5);
2189 sideShild_transf[0]->
SetDz(+0.695 + 4.31 );
2192 sideShild_transf[1]->
SetDx(-(faceShild_XSize * 0.5 - sideShild_XSize * 0.5));
2193 sideShild_transf[1]->
SetDy(+faceShild_YSize * 0.5 - 0.95 + (sideShild_YSize - faceShild_YSize) * 0.5);
2194 sideShild_transf[1]->
SetDz(+0.695 + 4.31 );
2197 sideShild_transf[2]->
SetDx(+(faceShild_XSize * 0.5 - sideShild_XSize * 0.5));
2198 sideShild_transf[2]->
SetDy(-faceShild_YSize * 0.5 + 0.95 - (sideShild_YSize - faceShild_YSize) * 0.5);
2199 sideShild_transf[2]->
SetDz(+0.695 );
2202 sideShild_transf[3]->
SetDx(-(faceShild_XSize * 0.5 - sideShild_XSize * 0.5));
2203 sideShild_transf[3]->
SetDy(-faceShild_YSize * 0.5 + 0.95 - (sideShild_YSize - faceShild_YSize) * 0.5);
2204 sideShild_transf[3]->
SetDz(+0.695 );
2206 frames->
AddNode(sideShieldV, 0, sideShild_transf[0]);
2207 frames->
AddNode(sideShieldV, 1, sideShild_transf[1]);
2208 frames->
AddNode(sideShieldV, 2, sideShild_transf[2]);
2209 frames->
AddNode(sideShieldV, 3, sideShild_transf[3]);
2213 Double_t horizShild_XSize = faceShild_XSize * 0.5 - sideShild_XSize - 2.75 ;
2218 new TGeoBBox(
"horizShieldS", horizShild_XSize * 0.5, horizShild_YSize * 0.5, horizShild_ZSize * 0.5);
2225 if (horizShieldV_medium) {
2226 horizShieldV->
SetMedium(horizShieldV_medium);
2228 Fatal(
"Main",
"Invalid medium for horizShieldV!");
2237 horizShild_transf[0]->
SetDx(+(faceShild_XSize * 0.5 - horizShild_XSize * 0.5 - sideShild_XSize));
2238 horizShild_transf[0]->
SetDy(+(-0.95 + horizShild_YSize * 0.5));
2239 horizShild_transf[0]->
SetDz(+0.695 + 4.31 );
2242 horizShild_transf[1]->
SetDx(-(faceShild_XSize * 0.5 - horizShild_XSize * 0.5 - sideShild_XSize));
2243 horizShild_transf[1]->
SetDy(+(-0.95 + horizShild_YSize * 0.5));
2244 horizShild_transf[1]->
SetDz(+0.695 + 4.31 );
2247 horizShild_transf[2]->
SetDx(+(faceShild_XSize * 0.5 - horizShild_XSize * 0.5 - sideShild_XSize));
2248 horizShild_transf[2]->
SetDy(-(-0.95 + horizShild_YSize * 0.5));
2249 horizShild_transf[2]->
SetDz(+0.695 );
2252 horizShild_transf[3]->
SetDx(-(faceShild_XSize * 0.5 - horizShild_XSize * 0.5 - sideShild_XSize));
2253 horizShild_transf[3]->
SetDy(-(-0.95 + horizShild_YSize * 0.5));
2254 horizShild_transf[3]->
SetDz(+0.695 );
2256 frames->
AddNode(horizShieldV, 0, horizShild_transf[0]);
2257 frames->
AddNode(horizShieldV, 1, horizShild_transf[1]);
2258 frames->
AddNode(horizShieldV, 2, horizShild_transf[2]);
2259 frames->
AddNode(horizShieldV, 3, horizShild_transf[3]);
2263 Double_t plankShild_XSize = faceShild_XSize;
2268 new TGeoBBox(
"plankShieldS", plankShild_XSize * 0.5, plankShild_YSize * 0.5, plankShild_ZSize * 0.5);
2275 if (plankShieldV_medium) {
2276 plankShieldV->
SetMedium(plankShieldV_medium);
2278 Fatal(
"Main",
"Invalid medium for plankShieldV!");
2287 plankShild_transf[0]->
SetDx(0.0);
2288 plankShild_transf[0]->
SetDy(+(-0.95 + faceShild_YSize) - 0.05);
2289 plankShild_transf[0]->
SetDz(
2290 +0.695 - (1.35 + faceShild_ZSize + plankShild_ZSize * 0.5)
2294 plankShild_transf[1]->
SetDx(0.0);
2295 plankShild_transf[1]->
SetDy(+(-0.95 + faceShild_YSize) - 0.05);
2296 plankShild_transf[1]->
SetDz(
2297 +0.695 + (1.35 + faceShild_ZSize + plankShild_ZSize * 0.5)
2301 plankShild_transf[2]->
SetDx(0.0);
2302 plankShild_transf[2]->
SetDy(-(-0.95 + faceShild_YSize) + 0.05);
2303 plankShild_transf[2]->
SetDz(+0.695
2304 - (1.35 + faceShild_ZSize + plankShild_ZSize * 0.5));
2307 plankShild_transf[3]->
SetDx(0.0);
2308 plankShild_transf[3]->
SetDy(-(-0.95 + faceShild_YSize) + 0.05);
2309 plankShild_transf[3]->
SetDz(+0.695
2310 + (1.35 + faceShild_ZSize + plankShild_ZSize * 0.5));
2312 frames->
AddNode(plankShieldV, 0, plankShild_transf[0]);
2313 frames->
AddNode(plankShieldV, 1, plankShild_transf[1]);
2314 frames->
AddNode(plankShieldV, 2, plankShild_transf[2]);
2315 frames->
AddNode(plankShieldV, 3, plankShild_transf[3]);
2319 Double_t baseRailMainPart_XSize = faceShild_XSize + 3.4 * 2 ;
2320 Double_t baseRailMainPart_YSize = 5.0;
2321 Double_t baseRailMainPart_ZSize = 0.7;
2323 cout <<
"baseRailMainPart_XSize = " << baseRailMainPart_XSize <<
"\n";
2325 Double_t baseRailUpperPart_XSize = baseRailMainPart_XSize;
2326 Double_t baseRailUpperPart_YSize = 1.0;
2327 Double_t baseRailUpperPart_ZSize = 0.3;
2329 Double_t baseRailLowerPart_XSize = baseRailMainPart_XSize - 8.8 ;
2330 Double_t baseRailLowerPart_YSize = 0.7;
2331 Double_t baseRailLowerPart_ZSize = 0.3;
2335 baseRailMainPart_YSize * 0.5, baseRailMainPart_ZSize * 0.5);
2338 baseRailUpperPart_YSize * 0.5, baseRailUpperPart_ZSize * 0.5);
2341 baseRailLowerPart_YSize * 0.5, baseRailLowerPart_ZSize * 0.5);
2345 baseRailUpperPart_pos->
SetDx(0.0);
2346 baseRailUpperPart_pos->
SetDy(+(baseRailMainPart_YSize * 0.5 + baseRailUpperPart_YSize * 0.5));
2347 baseRailUpperPart_pos->
SetDz(baseRailMainPart_ZSize * 0.5 - baseRailUpperPart_ZSize * 0.5);
2352 baseRailLowerPart_pos->
SetDx(0.0);
2353 baseRailLowerPart_pos->
SetDy(-(baseRailMainPart_YSize * 0.5 + baseRailLowerPart_YSize * 0.5));
2354 baseRailLowerPart_pos->
SetDz(baseRailMainPart_ZSize * 0.5 - baseRailLowerPart_ZSize * 0.5);
2360 TString expression =
"baseRailMainPartS";
2362 expression +=
"+baseRailUpperPartS";
2364 expression +=
":baseRailUpperPart_pos";
2366 expression +=
"+baseRailLowerPartS";
2368 expression +=
":baseRailLowerPart_pos";
2378 if (baseRailV_medium) {
2381 Fatal(
"Main",
"Invalid medium for baseRailV!");
2390 baseRail_transf[0]->
RotateY(180.0);
2391 baseRail_transf[0]->
SetDx(0.1);
2392 baseRail_transf[0]->
SetDy(+(14.5 + baseRailMainPart_YSize * 0.5 + 6.0));
2393 baseRail_transf[0]->
SetDz(
2395 + (1.35 + faceShild_ZSize + baseRailMainPart_ZSize * 0.5 - baseRailLowerPart_ZSize)
2399 baseRail_transf[1]->
ReflectY(
true);
2400 baseRail_transf[1]->
SetDx(0.0);
2401 baseRail_transf[1]->
SetDy(-(14.5 + baseRailMainPart_YSize * 0.5 + 6.0));
2402 baseRail_transf[1]->
SetDz(+0.695
2403 - (1.35 + faceShild_ZSize + baseRailMainPart_ZSize * 0.5
2404 - baseRailLowerPart_ZSize));
2406 frames->
AddNode(baseRailV, 0, baseRail_transf[0]);
2407 frames->
AddNode(baseRailV, 1, baseRail_transf[1]);
2411 Double_t backRailMainPart_XSize = faceShild_XSize + -0.3 * 2 ;
2412 Double_t backRailMainPart_YSize = 3.0;
2413 Double_t backRailMainPart_ZSize = 0.9;
2415 Double_t backRailLowerPart_XSize = backRailMainPart_XSize - 1.4;
2416 Double_t backRailLowerPart_YSize = 0.7;
2417 Double_t backRailLowerPart_ZSize = 0.6;
2419 Double_t backRailSidePart_XSize = 1.2;
2420 Double_t backRailSidePart_YSize = 3.0;
2421 Double_t backRailSidePart_ZSize = 1.62;
2425 backRailMainPart_YSize * 0.5, backRailMainPart_ZSize * 0.5);
2428 backRailLowerPart_YSize * 0.5, backRailLowerPart_ZSize * 0.5);
2431 backRailSidePart_YSize * 0.5, backRailSidePart_ZSize * 0.5);
2435 backRailLowerPart_pos->
SetDx(0.0);
2436 backRailLowerPart_pos->
SetDy(-(backRailMainPart_YSize * 0.5 + backRailLowerPart_YSize * 0.5));
2437 backRailLowerPart_pos->
SetDz(backRailMainPart_ZSize * 0.5 - backRailLowerPart_ZSize * 0.5);
2442 backRailSidePart1_pos->
SetDx(+(backRailMainPart_XSize * 0.5 - backRailSidePart_XSize * 0.5));
2443 backRailSidePart1_pos->
SetDy(0.0);
2444 backRailSidePart1_pos->
SetDz(backRailMainPart_ZSize * 0.5 + backRailSidePart_ZSize * 0.5);
2449 backRailSidePart2_pos->
SetDx(-(backRailMainPart_XSize * 0.5 - backRailSidePart_XSize * 0.5));
2450 backRailSidePart2_pos->
SetDy(0.0);
2451 backRailSidePart2_pos->
SetDz(backRailMainPart_ZSize * 0.5 + backRailSidePart_ZSize * 0.5);
2457 TString expression =
"backRailMainPartS";
2459 expression +=
"+backRailLowerPartS";
2461 expression +=
":backRailLowerPart_pos";
2463 expression +=
"+backRailSidePartS";
2465 expression +=
":backRailSidePart1_pos";
2467 expression +=
"+backRailSidePartS";
2469 expression +=
":backRailSidePart2_pos";
2479 if (backRailV_medium) {
2482 Fatal(
"Main",
"Invalid medium for backRailV!");
2491 backRail_transf[0]->
SetDx(0.0);
2492 backRail_transf[0]->
SetDy(+(14.5 + backRailMainPart_YSize * 0.5 + 6.0));
2493 backRail_transf[0]->
SetDz(+0.695
2494 - (1.35 + faceShild_ZSize
2495 + (backRailMainPart_ZSize * 0.5 - backRailLowerPart_ZSize))
2499 backRail_transf[1]->
RotateX(180.0);
2500 backRail_transf[1]->
SetDx(0.0);
2501 backRail_transf[1]->
SetDy(-(14.5 + backRailMainPart_YSize * 0.5 + 6.0));
2502 backRail_transf[1]->
SetDz(+0.695
2503 + (1.35 + faceShild_ZSize
2504 + (backRailMainPart_ZSize * 0.5 - backRailLowerPart_ZSize)));
2506 frames->
AddNode(backRailV, 0, backRail_transf[0]);
2507 frames->
AddNode(backRailV, 1, backRail_transf[1]);
2511 Double_t holdBackRail_XSize = backRailMainPart_XSize;
2516 holdBackRailS->
SetName(
"holdBackRailS");
2519 +0.0 , +0.1 , +holdBackRail_ZSize , +holdBackRail_ZSize , +0.0
2522 -holdBackRail_YSize ,
2523 -holdBackRail_YSize ,
2524 -holdBackRail_YSize * 0.5 ,
2528 ((
TGeoXtru*)holdBackRailS)->DefinePolygon(5, x_pos, y_pos);
2529 ((
TGeoXtru*)holdBackRailS)->DefineSection(0, -holdBackRail_XSize * 0.5);
2530 ((
TGeoXtru*)holdBackRailS)->DefineSection(1, +holdBackRail_XSize * 0.5);
2538 if (holdBackRailV_medium) {
2539 holdBackRailV->
SetMedium(holdBackRailV_medium);
2541 Fatal(
"Main",
"Invalid medium for holdBackRailV!");
2550 holdBackRail_transf[0]->
RotateY(90.0);
2551 holdBackRail_transf[0]->
SetDx(0.0);
2552 holdBackRail_transf[0]->
SetDy(+(14.5 + backRailMainPart_YSize + 6.0));
2553 holdBackRail_transf[0]->
SetDz(
2554 +0.695 - (1.35 + faceShild_ZSize + plankShild_ZSize)
2558 holdBackRail_transf[1]->
RotateY(90.0);
2559 holdBackRail_transf[1]->
RotateX(180.0);
2560 holdBackRail_transf[1]->
SetDx(0.0);
2561 holdBackRail_transf[1]->
SetDy(-(14.5 + backRailMainPart_YSize + 6.0));
2562 holdBackRail_transf[1]->
SetDz(
2563 +0.695 + (1.35 + faceShild_ZSize + plankShild_ZSize));
2565 frames->
AddNode(holdBackRailV, 0, holdBackRail_transf[0]);
2566 frames->
AddNode(holdBackRailV, 1, holdBackRail_transf[1]);
2570 Double_t backPlane_XSize = (NModules / 2.0) * 6.3 - (NModules / 2.0) * 0.3 + 3.95 * 2 ;
2575 new TGeoBBox(
"backPlaneS", backPlane_XSize * 0.5, backPlane_YSize * 0.5, backPlane_ZSize * 0.5);
2581 if (backPlaneV_medium) {
2582 backPlaneV->
SetMedium(backPlaneV_medium);
2584 Fatal(
"Main",
"Invalid medium for backPlaneV!");
2593 backPlane_transf[0]->
SetDx(0.0);
2594 backPlane_transf[0]->
SetDy(+(16.75 + backPlane_YSize * 0.5 + 6.0));
2595 backPlane_transf[0]->
SetDz(+0.695
2596 - (1.35 + faceShild_ZSize + plankShild_ZSize
2597 + holdBackRail_ZSize + backPlane_ZSize * 0.5)
2601 backPlane_transf[1]->
SetDx(0.0);
2602 backPlane_transf[1]->
SetDy(-(16.75 + backPlane_YSize * 0.5 + 6.0));
2603 backPlane_transf[1]->
SetDz(+0.695
2604 + (1.35 + faceShild_ZSize + plankShild_ZSize
2605 + holdBackRail_ZSize + backPlane_ZSize * 0.5));
2607 frames->
AddNode(backPlaneV, 0, backPlane_transf[0]);
2608 frames->
AddNode(backPlaneV, 1, backPlane_transf[1]);
2612 Double_t frontPlane_XSize = (NModules / 2.0) * 6.3 - (NModules / 2.0) * 0.3 + 1.8 * 2 ;
2617 new TGeoBBox(
"frontPlaneS", frontPlane_XSize * 0.5, frontPlane_YSize * 0.5, frontPlane_ZSize * 0.5);
2623 if (frontPlaneV_medium) {
2624 frontPlaneV->
SetMedium(frontPlaneV_medium);
2626 Fatal(
"Main",
"Invalid medium for frontPlaneV!");
2635 frontPlane_transf[0]->
SetDx(0.0);
2636 frontPlane_transf[0]->
SetDy(+(19.7 + frontPlane_YSize * 0.5 + 6.0));
2637 frontPlane_transf[0]->
SetDz(
2639 + (1.35 + faceShild_ZSize + plankShild_ZSize + frontPlane_ZSize * 0.5)
2643 frontPlane_transf[1]->
SetDx(0.0);
2644 frontPlane_transf[1]->
SetDy(-(19.7 + frontPlane_YSize * 0.5 + 6.0));
2645 frontPlane_transf[1]->
SetDz(
2647 - (1.35 + faceShild_ZSize + plankShild_ZSize + frontPlane_ZSize * 0.5));
2649 frames->
AddNode(frontPlaneV, 0, frontPlane_transf[0]);
2650 frames->
AddNode(frontPlaneV, 1, frontPlane_transf[1]);
2654 Double_t frontPlaneWithWindow_XSize = (NModules / 2.0) * 6.3 - (NModules / 2.0) * 0.3 + 4.0 * 2 ;
2655 Double_t frontPlaneWithWindow_YSize = 18.3;
2656 Double_t frontPlaneWithWindow_ZSize = 0.3;
2658 Double_t frontPlaneWindow_XSize = frontPlaneWithWindow_XSize - 3.0 * 2 ;
2659 Double_t frontPlaneWindow_YSize = 8.6;
2662 TString(
"frontPlaneWithWindowBlankS") +=
TString(
"_") + frames->
GetName(), frontPlaneWithWindow_XSize * 0.5,
2663 frontPlaneWithWindow_YSize * 0.5, frontPlaneWithWindow_ZSize * 0.5);
2666 frontPlaneWindow_YSize * 0.5, (frontPlaneWithWindow_ZSize + 0.001) * 0.5);
2670 frontPlaneWindow_pos->
SetDx(0.0);
2671 frontPlaneWindow_pos->
SetDy(-2.85 );
2672 frontPlaneWindow_pos->
SetDz(0.0);
2678 TString expression =
"frontPlaneWithWindowBlankS";
2680 expression +=
"-frontPlaneWindowS";
2682 expression +=
":frontPlaneWindow_pos";
2684 frontPlaneWithWindowS->
MakeNode(expression);
2693 if (frontPlaneWithWindowV_medium) {
2694 frontPlaneWithWindowV->
SetMedium(frontPlaneWithWindowV_medium);
2696 Fatal(
"Main",
"Invalid medium for frontPlaneWithWindowV!");
2705 frontPlaneWithWindow_transf[0]->
SetDx(0.0);
2706 frontPlaneWithWindow_transf[0]->
SetDy(+(19.5 + frontPlaneWithWindow_YSize * 0.5 + 6.0));
2707 frontPlaneWithWindow_transf[0]->
SetDz(
2709 + (1.35 + faceShild_ZSize + frontPlaneWithWindow_ZSize * 0.5)
2713 frontPlaneWithWindow_transf[1]->
RotateX(180.0);
2714 frontPlaneWithWindow_transf[1]->
SetDx(0.0);
2715 frontPlaneWithWindow_transf[1]->
SetDy(-(19.5 + frontPlaneWithWindow_YSize * 0.5 + 6.0));
2716 frontPlaneWithWindow_transf[1]->
SetDz(
2718 - (1.35 + faceShild_ZSize + frontPlaneWithWindow_ZSize * 0.5));
2720 frames->
AddNode(frontPlaneWithWindowV, 0, frontPlaneWithWindow_transf[0]);
2721 frames->
AddNode(frontPlaneWithWindowV, 1, frontPlaneWithWindow_transf[1]);
2725 Double_t pcb_XSize = (NModules / 2.0) * 6.3 - (NModules / 2.0) * 0.3 + 4.865 ;
2729 TGeoShape* pcbS =
new TGeoBBox(
"pcbS", frontPlane_XSize * 0.5, frontPlane_YSize * 0.5, frontPlane_ZSize * 0.5);
2738 Fatal(
"Main",
"Invalid medium for pcbV!");
2747 pcb_transf[0]->
SetDx(0.0);
2748 pcb_transf[0]->
SetDy(+(26.5 + pcb_YSize * 0.5 + 6.0));
2749 pcb_transf[0]->
SetDz(+0.695 + 4.31 );
2752 pcb_transf[1]->
SetDx(0.0);
2753 pcb_transf[1]->
SetDy(-(26.5 + pcb_YSize * 0.5 + 6.0));
2754 pcb_transf[1]->
SetDz(+0.695 );
2756 frames->
AddNode(pcbV, 0, pcb_transf[0]);
2757 frames->
AddNode(pcbV, 1, pcb_transf[1]);
2761 Double_t upperSideShield_XSize = 4.4;
2762 Double_t upperSideShield_YSize = 12.3;
2763 Double_t upperSideShield_ZSize = 0.8;
2765 Double_t upperSideShieldCut_XSize = 0.9;
2766 Double_t upperSideShieldCut_YSize = 2.4;
2768 Double_t upperSideShieldWindow_XSize = 3.0;
2769 Double_t upperSideShieldWindow_YSize = 7.0;
2775 +upperSideShield_XSize * 0.5 ,
2776 +upperSideShield_XSize * 0.5 ,
2777 -upperSideShield_XSize * 0.5 ,
2778 -upperSideShield_XSize * 0.5 ,
2779 -upperSideShield_XSize * 0.5 + upperSideShieldCut_XSize ,
2780 -upperSideShield_XSize * 0.5 + upperSideShieldCut_XSize
2784 -upperSideShield_YSize * 0.5 ,
2785 +upperSideShield_YSize * 0.5 ,
2786 +upperSideShield_YSize * 0.5 ,
2787 -upperSideShield_YSize * 0.5 + upperSideShieldCut_YSize ,
2788 -upperSideShield_YSize * 0.5 + upperSideShieldCut_YSize ,
2789 -upperSideShield_YSize * 0.5
2792 ((
TGeoXtru*)upperSideShieldBlankS)->DefinePolygon(6, x_pos, y_pos);
2793 ((
TGeoXtru*)upperSideShieldBlankS)->DefineSection(0, -upperSideShield_ZSize * 0.5);
2794 ((
TGeoXtru*)upperSideShieldBlankS)->DefineSection(1, +upperSideShield_ZSize * 0.5);
2798 TString(
"upperSideShieldWindowS") +=
TString(
"_") + frames->
GetName(), upperSideShieldWindow_XSize * 0.5,
2799 upperSideShieldWindow_YSize * 0.5, (upperSideShield_ZSize + 0.001) * 0.5);
2803 upperSideShieldWindow_pos->
SetDx(0.0);
2804 upperSideShieldWindow_pos->
SetDy(+1.65 );
2805 upperSideShieldWindow_pos->
SetDz(0.0);
2811 TString expression =
"upperSideShieldBlankS";
2813 expression +=
"-upperSideShieldWindowS";
2815 expression +=
":upperSideShieldWindow_pos";
2817 upperSideShieldWithWindowS->
MakeNode(expression);
2826 if (upperSideShieldV_medium) {
2827 upperSideShieldV->
SetMedium(upperSideShieldV_medium);
2829 Fatal(
"Main",
"Invalid medium for upperSideShieldV!");
2838 upperSideShield_transf[0]->
RotateY(90.0);
2839 upperSideShield_transf[0]->
SetDx(+(frontPlaneWithWindow_XSize * 0.5 - upperSideShield_ZSize * 0.5));
2840 upperSideShield_transf[0]->
SetDy(+(17.6 + upperSideShield_YSize * 0.5 + 6.0));
2841 upperSideShield_transf[0]->
SetDz(+0.695 - 0.65 + 4.31 );
2844 upperSideShield_transf[1]->
RotateY(90.0);
2845 upperSideShield_transf[1]->
SetDx(-(frontPlaneWithWindow_XSize * 0.5 - upperSideShield_ZSize * 0.5));
2846 upperSideShield_transf[1]->
SetDy(+(17.6 + upperSideShield_YSize * 0.5 + 6.0));
2847 upperSideShield_transf[1]->
SetDz(+0.695 - 0.65 + 4.31 );
2850 upperSideShield_transf[2]->
RotateY(-90.0);
2851 upperSideShield_transf[2]->
ReflectY(
true);
2852 upperSideShield_transf[2]->
SetDx(+(frontPlaneWithWindow_XSize * 0.5 - upperSideShield_ZSize * 0.5));
2853 upperSideShield_transf[2]->
SetDy(-(17.6 + upperSideShield_YSize * 0.5 + 6.0));
2854 upperSideShield_transf[2]->
SetDz(+0.695 + 0.65 );
2857 upperSideShield_transf[3]->
RotateY(-90.0);
2858 upperSideShield_transf[3]->
ReflectY(
true);
2859 upperSideShield_transf[3]->
SetDx(-(frontPlaneWithWindow_XSize * 0.5 - upperSideShield_ZSize * 0.5));
2860 upperSideShield_transf[3]->
SetDy(-(17.6 + upperSideShield_YSize * 0.5 + 6.0));
2861 upperSideShield_transf[3]->
SetDz(+0.695 + 0.65 );
2863 frames->
AddNode(upperSideShieldV, 0, upperSideShield_transf[0]);
2864 frames->
AddNode(upperSideShieldV, 1, upperSideShield_transf[1]);
2865 frames->
AddNode(upperSideShieldV, 2, upperSideShield_transf[2]);
2866 frames->
AddNode(upperSideShieldV, 3, upperSideShield_transf[3]);
2870 Double_t upperSideShieldCover_XSize = 4.4;
2871 Double_t upperSideShieldCover_YSize = 8.5;
2872 Double_t upperSideShieldCover_ZSize = 0.15;
2874 TGeoShape* upperSideShieldCoverS =
new TGeoBBox(
"upperSideShieldCoverS", upperSideShieldCover_XSize * 0.5,
2875 upperSideShieldCover_YSize * 0.5, upperSideShieldCover_ZSize * 0.5);
2882 if (upperSideShieldCoverV_medium) {
2883 upperSideShieldCoverV->
SetMedium(upperSideShieldCoverV_medium);
2885 Fatal(
"Main",
"Invalid medium for upperSideShieldCoverV!");
2894 upperSideShieldCover_transf[0]->
RotateY(90.0);
2895 upperSideShieldCover_transf[0]->
SetDx(+(frontPlaneWithWindow_XSize * 0.5 + upperSideShieldCover_ZSize * 0.5));
2896 upperSideShieldCover_transf[0]->
SetDy(+(20.7 + upperSideShieldCover_YSize * 0.5 + 6.0));
2897 upperSideShieldCover_transf[0]->
SetDz(+0.695 - 0.65 + 4.31 );
2900 upperSideShieldCover_transf[1]->
RotateY(90.0);
2901 upperSideShieldCover_transf[1]->
SetDx(-(frontPlaneWithWindow_XSize * 0.5 + upperSideShieldCover_ZSize * 0.5));
2902 upperSideShieldCover_transf[1]->
SetDy(+(20.7 + upperSideShieldCover_YSize * 0.5 + 6.0));
2903 upperSideShieldCover_transf[1]->
SetDz(+0.695 - 0.65 + 4.31 );
2906 upperSideShieldCover_transf[2]->
RotateY(90.0);
2907 upperSideShieldCover_transf[2]->
SetDx(+(frontPlaneWithWindow_XSize * 0.5 + upperSideShieldCover_ZSize * 0.5));
2908 upperSideShieldCover_transf[2]->
SetDy(-(20.7 + upperSideShieldCover_YSize * 0.5 + 6.0));
2909 upperSideShieldCover_transf[2]->
SetDz(+0.695 + 0.65 );
2912 upperSideShieldCover_transf[3]->
RotateY(90.0);
2913 upperSideShieldCover_transf[3]->
SetDx(-(frontPlaneWithWindow_XSize * 0.5 + upperSideShieldCover_ZSize * 0.5));
2914 upperSideShieldCover_transf[3]->
SetDy(-(20.7 + upperSideShieldCover_YSize * 0.5 + 6.0));
2915 upperSideShieldCover_transf[3]->
SetDz(+0.695 + 0.65 );
2917 frames->
AddNode(upperSideShieldCoverV, 0, upperSideShieldCover_transf[0]);
2918 frames->
AddNode(upperSideShieldCoverV, 1, upperSideShieldCover_transf[1]);
2919 frames->
AddNode(upperSideShieldCoverV, 2, upperSideShieldCover_transf[2]);
2920 frames->
AddNode(upperSideShieldCoverV, 3, upperSideShieldCover_transf[3]);