659 switch (module_type) {
679 ((
TGeoXtru*)moduleS)->DefinePolygon(5, x_pos, y_pos);
693 ((
TGeoXtru*)moduleS)->DefinePolygon(5, x_pos, y_pos);
699 Error(
"CreateModule()",
"Incorrect module type selected!!!");
703 TGeoShape* sensor_zone_upper_part_rectS =
709 sensor_zone_upper_part_bevelS->
SetName(
"sensor_zone_upper_part_bevelS");
723 Double_t x_delta_bottom_BP = (y_delta_bottom_BP - (
YBevelSize[module_size] + y_delta))
730 +
XModuleSize[module_size] * 0.5 - x_delta_bottom_BP,
732 Double_t y_pos_sensor_zone_bevel[5] = {
739 ((
TGeoXtru*)sensor_zone_upper_part_bevelS)->DefinePolygon(5, x_pos_sensor_zone_bevel, y_pos_sensor_zone_bevel);
740 ((
TGeoXtru*)sensor_zone_upper_part_bevelS)->DefineSection(0, -
ZModuleSize[module_size] * 0.5);
741 ((
TGeoXtru*)sensor_zone_upper_part_bevelS)->DefineSection(1, +
ZModuleSize[module_size] * 0.5);
745 TGeoShape* sensor_zone_lower_part_rectS =
751 sensor_zone_lower_part_bevelS->
SetName(
"sensor_zone_lower_part_bevelS");
765 Double_t x_delta_bottom_BP = (y_delta_bottom_BP - (
YBevelSize[module_size] + y_delta))
772 +
XModuleSize[module_size] * 0.5 - x_delta_bottom_BP,
774 Double_t y_pos_sensor_zone_bevel[5] = {
781 ((
TGeoXtru*)sensor_zone_lower_part_bevelS)->DefinePolygon(5, x_pos_sensor_zone_bevel, y_pos_sensor_zone_bevel);
782 ((
TGeoXtru*)sensor_zone_lower_part_bevelS)->DefineSection(0, -
ZModuleSize[module_size] * 0.5);
783 ((
TGeoXtru*)sensor_zone_lower_part_bevelS)->DefineSection(1, +
ZModuleSize[module_size] * 0.5);
796 new TGeoVolume(
"Sensor_zone_upper_part_rectV", sensor_zone_upper_part_rectS);
800 new TGeoVolume(
"Sensor_zone_upper_part_bevelV", sensor_zone_upper_part_bevelS);
804 new TGeoVolume(
"Sensor_zone_lower_part_rectV", sensor_zone_lower_part_rectS);
808 new TGeoVolume(
"Sensor_zone_lower_part_bevelV", sensor_zone_lower_part_bevelS);
812 if (silicon_medium) {
814 sensor_zone_upper_part_rectV->
SetMedium(silicon_medium);
815 sensor_zone_upper_part_bevelV->
SetMedium(silicon_medium);
816 sensor_zone_lower_part_rectV->
SetMedium(silicon_medium);
817 sensor_zone_lower_part_bevelV->
SetMedium(silicon_medium);
819 Fatal(
"Main",
"Invalid medium for modules and sensor zones!");
829 switch (module_type) {
837 sensor_zone_upper_part_pos->
SetDy(
840 sensor_zone_upper_part_pos->
SetDz(0.0);
846 sensor_zone_lower_part_pos->
SetDy(
849 sensor_zone_lower_part_pos->
SetDz(0.0);
851 moduleV->
AddNode(sensor_zone_upper_part_rectV, 0, sensor_zone_upper_part_pos);
852 moduleV->
AddNode(sensor_zone_lower_part_rectV, 0, sensor_zone_lower_part_pos);
863 sensor_zone_upper_part_pos->
SetDz(0.0);
865 moduleV->
AddNode(sensor_zone_upper_part_rectV, 0, sensor_zone_upper_part_pos);
875 sensor_zone_upper_part_pos->
SetDy(
878 sensor_zone_upper_part_pos->
SetDz(0.0);
882 sensor_zone_lower_part_bevel_pos->
SetDx(0.0);
886 sensor_zone_lower_part_bevel_pos->
SetDz(0.0);
888 moduleV->
AddNode(sensor_zone_upper_part_rectV, 0, sensor_zone_upper_part_pos);
889 moduleV->
AddNode(sensor_zone_lower_part_bevelV, 0, sensor_zone_lower_part_bevel_pos);
897 sensor_zone_upper_part_pos->
SetDx(0);
898 sensor_zone_upper_part_pos->
SetDy(0);
899 sensor_zone_upper_part_pos->
SetDz(0.0);
901 moduleV->
AddNode(sensor_zone_upper_part_bevelV, 0, sensor_zone_upper_part_pos);
906 Error(
"CreateModule()",
"Incorrect module type selected!!!");
927 switch (module_type) {
935 +(
XModuleSize[module_size] * 0.5 + leftMargin + 1.0) ,
936 +(
XModuleSize[module_size] * 0.5 + leftMargin + 1.0) ,
941 -(
XModuleSize[module_size] * 0.5 + rightMargin + 1.0) ,
942 -(
XModuleSize[module_size] * 0.5 + rightMargin + 1.0) ,
954 ((
TGeoXtru*)frameS)->DefinePolygon(12, x_pos, y_pos);
966 +(
XModuleSize[module_size] * 0.5 + leftMargin + 1.0) ,
967 +(
XModuleSize[module_size] * 0.5 + leftMargin + 1.0) ,
972 -(
XModuleSize[module_size] * 0.5 + rightMargin + 1.0) ,
973 -(
XModuleSize[module_size] * 0.5 + rightMargin + 1.0) ,
991 ((
TGeoXtru*)frameS)->DefinePolygon(12, x_pos, y_pos);
1003 +(
XModuleSize[module_size] * 0.5 + leftMargin + 1.0) ,
1004 +(
XModuleSize[module_size] * 0.5 + leftMargin + 1.0) ,
1009 -(
XModuleSize[module_size] * 0.5 + rightMargin + 1.0) ,
1010 -(
XModuleSize[module_size] * 0.5 + rightMargin + 1.0) ,
1015 -(
YModuleSize[module_size] * 0.5 + bottomMargin) ,
1029 ((
TGeoXtru*)frameS)->DefinePolygon(13, x_pos, y_pos);
1041 +(
XModuleSize[module_size] * 0.5 + leftMargin + 1.0) ,
1042 +(
XModuleSize[module_size] * 0.5 + leftMargin + 1.0) ,
1047 -(
XModuleSize[module_size] * 0.5 + rightMargin + 1.0) ,
1048 -(
XModuleSize[module_size] * 0.5 + rightMargin + 1.0) ,
1067 ((
TGeoXtru*)frameS)->DefinePolygon(13, x_pos, y_pos);
1073 Error(
"CreateModule()",
"Incorrect module type selected!!!");
1080 TString(
"window_rectS") += module_name, (
XModuleSize[module_size] - innerMargin * 2) * 0.5,
1094 Double_t x_delta_top_BP = innerMargin;
1098 Double_t y_delta_bottom_BP = innerMargin;
1099 Double_t x_delta_bottom_BP = (y_delta_bottom_BP - (
YBevelSize[module_size] + y_delta))
1110 -
YModuleSize[module_size] * 0.25 + y_delta_top_BP};
1112 ((
TGeoXtru*)window_bevelS)->DefinePolygon(5, x_pos, y_pos);
1119 upper_window_frame_pos->
SetName(
TString(
"upper_window_frame_pos") += module_name);
1120 upper_window_frame_pos->
SetDx(0.0);
1124 upper_window_frame_pos->
SetDz(0.0);
1128 lower_window_frame_pos->
SetName(
TString(
"lower_window_frame_pos") += module_name);
1129 lower_window_frame_pos->
SetDx(0.0);
1133 lower_window_frame_pos->
SetDz(0.0);
1137 window_half_frame_pos->
SetName(
TString(
"window_half_frame_pos") += module_name);
1138 window_half_frame_pos->
SetDx(0.0);
1139 window_half_frame_pos->
SetDy(0.0);
1140 window_half_frame_pos->
SetDz(0.0);
1144 frame_with_windowsS->
SetName(
"frame_with_windowsS");
1146 switch (module_type) {
1149 TString expression =
"(frameS";
1150 expression += module_name;
1151 expression +=
"-window_rectS";
1152 expression += module_name;
1153 expression +=
":upper_window_frame_pos";
1154 expression += module_name;
1155 expression +=
")-window_rectS";
1156 expression += module_name;
1157 expression +=
":lower_window_frame_pos";
1158 expression += module_name;
1159 frame_with_windowsS->
MakeNode(expression);
1165 TString expression =
"(frameS";
1166 expression += module_name;
1167 expression +=
")-window_rectS";
1168 expression += module_name;
1169 expression +=
":window_half_frame_pos";
1170 expression += module_name;
1171 frame_with_windowsS->
MakeNode(expression);
1177 TString expression =
"(frameS";
1178 expression += module_name;
1179 expression +=
"-window_rectS";
1180 expression += module_name;
1181 expression +=
":upper_window_frame_pos";
1182 expression += module_name;
1183 expression +=
")-window_bevelS";
1184 expression += module_name;
1185 expression +=
":lower_window_frame_pos";
1186 expression += module_name;
1187 frame_with_windowsS->
MakeNode(expression);
1193 TString expression =
"(frameS";
1194 expression += module_name;
1195 expression +=
")-window_bevelS";
1196 expression += module_name;
1197 expression +=
":window_half_frame_pos";
1198 expression += module_name;
1199 frame_with_windowsS->
MakeNode(expression);
1205 Error(
"CreateModule()",
"Incorrect module type selected!!!");
1215 if (carbon_medium) {
1218 Fatal(
"Main",
"Invalid medium for frameV!");
1239 Double_t faceShild_XSize = (NModules / 2.0) * 6.3 - (NModules / 2.0) * 0.3 + 8.6;
1244 faceShildS->
SetName(
"faceShildS");
1246 Double_t x_pos[8] = {faceShild_XSize * 0.5,
1247 faceShild_XSize * 0.5,
1248 -faceShild_XSize * 0.5,
1249 -faceShild_XSize * 0.5,
1254 Double_t y_pos[8] = {-faceShild_YSize * 0.5,
1255 faceShild_YSize * 0.5,
1256 faceShild_YSize * 0.5,
1257 -faceShild_YSize * 0.5,
1258 -faceShild_YSize * 0.5,
1261 -faceShild_YSize * 0.5};
1262 ((
TGeoXtru*)faceShildS)->DefinePolygon(8, x_pos, y_pos);
1263 ((
TGeoXtru*)faceShildS)->DefineSection(0, -faceShild_ZSize * 0.5);
1264 ((
TGeoXtru*)faceShildS)->DefineSection(1, +faceShild_ZSize * 0.5);
1271 if (faceShildV_medium) {
1272 faceShildV->
SetMedium(faceShildV_medium);
1274 Fatal(
"Main",
"Invalid medium for faceShildV!");
1283 faceShild_transf[0]->
SetDy(+faceShild_YSize * 0.5 - 0.95);
1284 faceShild_transf[0]->
SetDz(+0.695 - 1.35
1285 - faceShild_ZSize * 0.5 + 4.31 );
1288 faceShild_transf[1]->
SetDy(+faceShild_YSize * 0.5 - 0.95);
1289 faceShild_transf[1]->
SetDz(+0.695 + 1.35
1290 + faceShild_ZSize * 0.5 + 4.31 );
1293 faceShild_transf[2]->
RotateX(180.0);
1294 faceShild_transf[2]->
SetDy(-faceShild_YSize * 0.5 + 0.95);
1295 faceShild_transf[2]->
SetDz(+0.695 - 1.35
1296 - faceShild_ZSize * 0.5 );
1299 faceShild_transf[3]->
RotateX(180.0);
1300 faceShild_transf[3]->
SetDy(-faceShild_YSize * 0.5 + 0.95);
1301 faceShild_transf[3]->
SetDz(+0.695 + 1.35
1302 + faceShild_ZSize * 0.5 );
1304 frames->
AddNode(faceShildV, 0, faceShild_transf[0]);
1305 frames->
AddNode(faceShildV, 1, faceShild_transf[1]);
1306 frames->
AddNode(faceShildV, 2, faceShild_transf[2]);
1307 frames->
AddNode(faceShildV, 3, faceShild_transf[3]);
1316 new TGeoBBox(
"sideShieldS", sideShild_XSize * 0.5, sideShild_YSize * 0.5, sideShild_ZSize * 0.5);
1322 if (sideShieldV_medium) {
1323 sideShieldV->
SetMedium(sideShieldV_medium);
1325 Fatal(
"Main",
"Invalid medium for sideShieldV!");
1334 sideShild_transf[0]->
SetDx(+(faceShild_XSize * 0.5 - sideShild_XSize * 0.5));
1335 sideShild_transf[0]->
SetDy(+faceShild_YSize * 0.5 - 0.95 + (sideShild_YSize - faceShild_YSize) * 0.5);
1336 sideShild_transf[0]->
SetDz(+0.695 + 4.31 );
1339 sideShild_transf[1]->
SetDx(-(faceShild_XSize * 0.5 - sideShild_XSize * 0.5));
1340 sideShild_transf[1]->
SetDy(+faceShild_YSize * 0.5 - 0.95 + (sideShild_YSize - faceShild_YSize) * 0.5);
1341 sideShild_transf[1]->
SetDz(+0.695 + 4.31 );
1344 sideShild_transf[2]->
SetDx(+(faceShild_XSize * 0.5 - sideShild_XSize * 0.5));
1345 sideShild_transf[2]->
SetDy(-faceShild_YSize * 0.5 + 0.95 - (sideShild_YSize - faceShild_YSize) * 0.5);
1346 sideShild_transf[2]->
SetDz(+0.695 );
1349 sideShild_transf[3]->
SetDx(-(faceShild_XSize * 0.5 - sideShild_XSize * 0.5));
1350 sideShild_transf[3]->
SetDy(-faceShild_YSize * 0.5 + 0.95 - (sideShild_YSize - faceShild_YSize) * 0.5);
1351 sideShild_transf[3]->
SetDz(+0.695 );
1353 frames->
AddNode(sideShieldV, 0, sideShild_transf[0]);
1354 frames->
AddNode(sideShieldV, 1, sideShild_transf[1]);
1355 frames->
AddNode(sideShieldV, 2, sideShild_transf[2]);
1356 frames->
AddNode(sideShieldV, 3, sideShild_transf[3]);
1360 Double_t horizShild_XSize = faceShild_XSize * 0.5 - sideShild_XSize - 2.75 ;
1365 new TGeoBBox(
"horizShieldS", horizShild_XSize * 0.5, horizShild_YSize * 0.5, horizShild_ZSize * 0.5);
1372 if (horizShieldV_medium) {
1373 horizShieldV->
SetMedium(horizShieldV_medium);
1375 Fatal(
"Main",
"Invalid medium for horizShieldV!");
1384 horizShild_transf[0]->
SetDx(+(faceShild_XSize * 0.5 - horizShild_XSize * 0.5 - sideShild_XSize));
1385 horizShild_transf[0]->
SetDy(+(-0.95 + horizShild_YSize * 0.5));
1386 horizShild_transf[0]->
SetDz(+0.695 + 4.31 );
1389 horizShild_transf[1]->
SetDx(-(faceShild_XSize * 0.5 - horizShild_XSize * 0.5 - sideShild_XSize));
1390 horizShild_transf[1]->
SetDy(+(-0.95 + horizShild_YSize * 0.5));
1391 horizShild_transf[1]->
SetDz(+0.695 + 4.31 );
1394 horizShild_transf[2]->
SetDx(+(faceShild_XSize * 0.5 - horizShild_XSize * 0.5 - sideShild_XSize));
1395 horizShild_transf[2]->
SetDy(-(-0.95 + horizShild_YSize * 0.5));
1396 horizShild_transf[2]->
SetDz(+0.695 );
1399 horizShild_transf[3]->
SetDx(-(faceShild_XSize * 0.5 - horizShild_XSize * 0.5 - sideShild_XSize));
1400 horizShild_transf[3]->
SetDy(-(-0.95 + horizShild_YSize * 0.5));
1401 horizShild_transf[3]->
SetDz(+0.695 );
1403 frames->
AddNode(horizShieldV, 0, horizShild_transf[0]);
1404 frames->
AddNode(horizShieldV, 1, horizShild_transf[1]);
1405 frames->
AddNode(horizShieldV, 2, horizShild_transf[2]);
1406 frames->
AddNode(horizShieldV, 3, horizShild_transf[3]);
1410 Double_t plankShild_XSize = faceShild_XSize;
1415 new TGeoBBox(
"plankShieldS", plankShild_XSize * 0.5, plankShild_YSize * 0.5, plankShild_ZSize * 0.5);
1422 if (plankShieldV_medium) {
1423 plankShieldV->
SetMedium(plankShieldV_medium);
1425 Fatal(
"Main",
"Invalid medium for plankShieldV!");
1434 plankShild_transf[0]->
SetDx(0.0);
1435 plankShild_transf[0]->
SetDy(+(-0.95 + faceShild_YSize) - 0.05);
1436 plankShild_transf[0]->
SetDz(
1437 +0.695 - (1.35 + faceShild_ZSize + plankShild_ZSize * 0.5)
1441 plankShild_transf[1]->
SetDx(0.0);
1442 plankShild_transf[1]->
SetDy(+(-0.95 + faceShild_YSize) - 0.05);
1443 plankShild_transf[1]->
SetDz(
1444 +0.695 + (1.35 + faceShild_ZSize + plankShild_ZSize * 0.5)
1448 plankShild_transf[2]->
SetDx(0.0);
1449 plankShild_transf[2]->
SetDy(-(-0.95 + faceShild_YSize) + 0.05);
1450 plankShild_transf[2]->
SetDz(+0.695
1451 - (1.35 + faceShild_ZSize + plankShild_ZSize * 0.5));
1454 plankShild_transf[3]->
SetDx(0.0);
1455 plankShild_transf[3]->
SetDy(-(-0.95 + faceShild_YSize) + 0.05);
1456 plankShild_transf[3]->
SetDz(+0.695
1457 + (1.35 + faceShild_ZSize + plankShild_ZSize * 0.5));
1459 frames->
AddNode(plankShieldV, 0, plankShild_transf[0]);
1460 frames->
AddNode(plankShieldV, 1, plankShild_transf[1]);
1461 frames->
AddNode(plankShieldV, 2, plankShild_transf[2]);
1462 frames->
AddNode(plankShieldV, 3, plankShild_transf[3]);
1466 Double_t baseRailMainPart_XSize = faceShild_XSize + 3.4 * 2 ;
1467 Double_t baseRailMainPart_YSize = 5.0;
1468 Double_t baseRailMainPart_ZSize = 0.7;
1470 cout <<
"baseRailMainPart_XSize = " << baseRailMainPart_XSize <<
"\n";
1472 Double_t baseRailUpperPart_XSize = baseRailMainPart_XSize;
1473 Double_t baseRailUpperPart_YSize = 1.0;
1474 Double_t baseRailUpperPart_ZSize = 0.3;
1476 Double_t baseRailLowerPart_XSize = baseRailMainPart_XSize - 8.8 ;
1477 Double_t baseRailLowerPart_YSize = 0.7;
1478 Double_t baseRailLowerPart_ZSize = 0.3;
1482 baseRailMainPart_YSize * 0.5, baseRailMainPart_ZSize * 0.5);
1485 baseRailUpperPart_YSize * 0.5, baseRailUpperPart_ZSize * 0.5);
1488 baseRailLowerPart_YSize * 0.5, baseRailLowerPart_ZSize * 0.5);
1492 baseRailUpperPart_pos->
SetDx(0.0);
1493 baseRailUpperPart_pos->
SetDy(+(baseRailMainPart_YSize * 0.5 + baseRailUpperPart_YSize * 0.5));
1494 baseRailUpperPart_pos->
SetDz(baseRailMainPart_ZSize * 0.5 - baseRailUpperPart_ZSize * 0.5);
1499 baseRailLowerPart_pos->
SetDx(0.0);
1500 baseRailLowerPart_pos->
SetDy(-(baseRailMainPart_YSize * 0.5 + baseRailLowerPart_YSize * 0.5));
1501 baseRailLowerPart_pos->
SetDz(baseRailMainPart_ZSize * 0.5 - baseRailLowerPart_ZSize * 0.5);
1507 TString expression =
"baseRailMainPartS";
1509 expression +=
"+baseRailUpperPartS";
1511 expression +=
":baseRailUpperPart_pos";
1513 expression +=
"+baseRailLowerPartS";
1515 expression +=
":baseRailLowerPart_pos";
1525 if (baseRailV_medium) {
1528 Fatal(
"Main",
"Invalid medium for baseRailV!");
1537 baseRail_transf[0]->
RotateY(180.0);
1538 baseRail_transf[0]->
SetDx(0.1);
1539 baseRail_transf[0]->
SetDy(+(14.5 + baseRailMainPart_YSize * 0.5));
1540 baseRail_transf[0]->
SetDz(
1542 + (1.35 + faceShild_ZSize + baseRailMainPart_ZSize * 0.5 - baseRailLowerPart_ZSize)
1546 baseRail_transf[1]->
ReflectY(
true);
1547 baseRail_transf[1]->
SetDx(0.0);
1548 baseRail_transf[1]->
SetDy(-(14.5 + baseRailMainPart_YSize * 0.5));
1549 baseRail_transf[1]->
SetDz(+0.695
1550 - (1.35 + faceShild_ZSize + baseRailMainPart_ZSize * 0.5
1551 - baseRailLowerPart_ZSize));
1553 frames->
AddNode(baseRailV, 0, baseRail_transf[0]);
1554 frames->
AddNode(baseRailV, 1, baseRail_transf[1]);
1558 Double_t backRailMainPart_XSize = faceShild_XSize + -0.3 * 2 ;
1559 Double_t backRailMainPart_YSize = 3.0;
1560 Double_t backRailMainPart_ZSize = 0.9;
1562 Double_t backRailLowerPart_XSize = backRailMainPart_XSize - 1.4;
1563 Double_t backRailLowerPart_YSize = 0.7;
1564 Double_t backRailLowerPart_ZSize = 0.6;
1566 Double_t backRailSidePart_XSize = 1.2;
1567 Double_t backRailSidePart_YSize = 3.0;
1568 Double_t backRailSidePart_ZSize = 1.62;
1572 backRailMainPart_YSize * 0.5, backRailMainPart_ZSize * 0.5);
1575 backRailLowerPart_YSize * 0.5, backRailLowerPart_ZSize * 0.5);
1578 backRailSidePart_YSize * 0.5, backRailSidePart_ZSize * 0.5);
1582 backRailLowerPart_pos->
SetDx(0.0);
1583 backRailLowerPart_pos->
SetDy(-(backRailMainPart_YSize * 0.5 + backRailLowerPart_YSize * 0.5));
1584 backRailLowerPart_pos->
SetDz(backRailMainPart_ZSize * 0.5 - backRailLowerPart_ZSize * 0.5);
1589 backRailSidePart1_pos->
SetDx(+(backRailMainPart_XSize * 0.5 - backRailSidePart_XSize * 0.5));
1590 backRailSidePart1_pos->
SetDy(0.0);
1591 backRailSidePart1_pos->
SetDz(backRailMainPart_ZSize * 0.5 + backRailSidePart_ZSize * 0.5);
1596 backRailSidePart2_pos->
SetDx(-(backRailMainPart_XSize * 0.5 - backRailSidePart_XSize * 0.5));
1597 backRailSidePart2_pos->
SetDy(0.0);
1598 backRailSidePart2_pos->
SetDz(backRailMainPart_ZSize * 0.5 + backRailSidePart_ZSize * 0.5);
1604 TString expression =
"backRailMainPartS";
1606 expression +=
"+backRailLowerPartS";
1608 expression +=
":backRailLowerPart_pos";
1610 expression +=
"+backRailSidePartS";
1612 expression +=
":backRailSidePart1_pos";
1614 expression +=
"+backRailSidePartS";
1616 expression +=
":backRailSidePart2_pos";
1626 if (backRailV_medium) {
1629 Fatal(
"Main",
"Invalid medium for backRailV!");
1638 backRail_transf[0]->
SetDx(0.0);
1639 backRail_transf[0]->
SetDy(+(14.5 + backRailMainPart_YSize * 0.5));
1640 backRail_transf[0]->
SetDz(+0.695
1641 - (1.35 + faceShild_ZSize
1642 + (backRailMainPart_ZSize * 0.5 - backRailLowerPart_ZSize))
1646 backRail_transf[1]->
RotateX(180.0);
1647 backRail_transf[1]->
SetDx(0.0);
1648 backRail_transf[1]->
SetDy(-(14.5 + backRailMainPart_YSize * 0.5));
1649 backRail_transf[1]->
SetDz(+0.695
1650 + (1.35 + faceShild_ZSize
1651 + (backRailMainPart_ZSize * 0.5 - backRailLowerPart_ZSize)));
1653 frames->
AddNode(backRailV, 0, backRail_transf[0]);
1654 frames->
AddNode(backRailV, 1, backRail_transf[1]);
1658 Double_t holdBackRail_XSize = backRailMainPart_XSize;
1663 holdBackRailS->
SetName(
"holdBackRailS");
1666 +0.0 , +0.1 , +holdBackRail_ZSize , +holdBackRail_ZSize , +0.0
1669 -holdBackRail_YSize ,
1670 -holdBackRail_YSize ,
1671 -holdBackRail_YSize * 0.5 ,
1675 ((
TGeoXtru*)holdBackRailS)->DefinePolygon(5, x_pos, y_pos);
1676 ((
TGeoXtru*)holdBackRailS)->DefineSection(0, -holdBackRail_XSize * 0.5);
1677 ((
TGeoXtru*)holdBackRailS)->DefineSection(1, +holdBackRail_XSize * 0.5);
1685 if (holdBackRailV_medium) {
1686 holdBackRailV->
SetMedium(holdBackRailV_medium);
1688 Fatal(
"Main",
"Invalid medium for holdBackRailV!");
1697 holdBackRail_transf[0]->
RotateY(90.0);
1698 holdBackRail_transf[0]->
SetDx(0.0);
1699 holdBackRail_transf[0]->
SetDy(+(14.5 + backRailMainPart_YSize));
1700 holdBackRail_transf[0]->
SetDz(
1701 +0.695 - (1.35 + faceShild_ZSize + plankShild_ZSize)
1705 holdBackRail_transf[1]->
RotateY(90.0);
1706 holdBackRail_transf[1]->
RotateX(180.0);
1707 holdBackRail_transf[1]->
SetDx(0.0);
1708 holdBackRail_transf[1]->
SetDy(-(14.5 + backRailMainPart_YSize));
1709 holdBackRail_transf[1]->
SetDz(
1710 +0.695 + (1.35 + faceShild_ZSize + plankShild_ZSize));
1712 frames->
AddNode(holdBackRailV, 0, holdBackRail_transf[0]);
1713 frames->
AddNode(holdBackRailV, 1, holdBackRail_transf[1]);
1717 Double_t backPlane_XSize = (NModules / 2.0) * 6.3 - (NModules / 2.0) * 0.3 + 3.95 * 2 ;
1722 new TGeoBBox(
"backPlaneS", backPlane_XSize * 0.5, backPlane_YSize * 0.5, backPlane_ZSize * 0.5);
1728 if (backPlaneV_medium) {
1729 backPlaneV->
SetMedium(backPlaneV_medium);
1731 Fatal(
"Main",
"Invalid medium for backPlaneV!");
1740 backPlane_transf[0]->
SetDx(0.0);
1741 backPlane_transf[0]->
SetDy(+(16.75 + backPlane_YSize * 0.5));
1742 backPlane_transf[0]->
SetDz(+0.695
1743 - (1.35 + faceShild_ZSize + plankShild_ZSize
1744 + holdBackRail_ZSize + backPlane_ZSize * 0.5)
1748 backPlane_transf[1]->
SetDx(0.0);
1749 backPlane_transf[1]->
SetDy(-(16.75 + backPlane_YSize * 0.5));
1750 backPlane_transf[1]->
SetDz(+0.695
1751 + (1.35 + faceShild_ZSize + plankShild_ZSize
1752 + holdBackRail_ZSize + backPlane_ZSize * 0.5));
1754 frames->
AddNode(backPlaneV, 0, backPlane_transf[0]);
1755 frames->
AddNode(backPlaneV, 1, backPlane_transf[1]);
1759 Double_t frontPlane_XSize = (NModules / 2.0) * 6.3 - (NModules / 2.0) * 0.3 + 1.8 * 2 ;
1764 new TGeoBBox(
"frontPlaneS", frontPlane_XSize * 0.5, frontPlane_YSize * 0.5, frontPlane_ZSize * 0.5);
1770 if (frontPlaneV_medium) {
1771 frontPlaneV->
SetMedium(frontPlaneV_medium);
1773 Fatal(
"Main",
"Invalid medium for frontPlaneV!");
1782 frontPlane_transf[0]->
SetDx(0.0);
1783 frontPlane_transf[0]->
SetDy(+(19.7 + frontPlane_YSize * 0.5));
1784 frontPlane_transf[0]->
SetDz(
1786 + (1.35 + faceShild_ZSize + plankShild_ZSize + frontPlane_ZSize * 0.5)
1790 frontPlane_transf[1]->
SetDx(0.0);
1791 frontPlane_transf[1]->
SetDy(-(19.7 + frontPlane_YSize * 0.5));
1792 frontPlane_transf[1]->
SetDz(
1794 - (1.35 + faceShild_ZSize + plankShild_ZSize + frontPlane_ZSize * 0.5));
1796 frames->
AddNode(frontPlaneV, 0, frontPlane_transf[0]);
1797 frames->
AddNode(frontPlaneV, 1, frontPlane_transf[1]);
1801 Double_t frontPlaneWithWindow_XSize = (NModules / 2.0) * 6.3 - (NModules / 2.0) * 0.3 + 4.0 * 2 ;
1802 Double_t frontPlaneWithWindow_YSize = 18.3;
1803 Double_t frontPlaneWithWindow_ZSize = 0.3;
1805 Double_t frontPlaneWindow_XSize = frontPlaneWithWindow_XSize - 3.0 * 2 ;
1806 Double_t frontPlaneWindow_YSize = 8.6;
1809 TString(
"frontPlaneWithWindowBlankS") +=
TString(
"_") + frames->
GetName(), frontPlaneWithWindow_XSize * 0.5,
1810 frontPlaneWithWindow_YSize * 0.5, frontPlaneWithWindow_ZSize * 0.5);
1813 frontPlaneWindow_YSize * 0.5, (frontPlaneWithWindow_ZSize + 0.001) * 0.5);
1817 frontPlaneWindow_pos->
SetDx(0.0);
1818 frontPlaneWindow_pos->
SetDy(-2.85 );
1819 frontPlaneWindow_pos->
SetDz(0.0);
1825 TString expression =
"frontPlaneWithWindowBlankS";
1827 expression +=
"-frontPlaneWindowS";
1829 expression +=
":frontPlaneWindow_pos";
1831 frontPlaneWithWindowS->
MakeNode(expression);
1840 if (frontPlaneWithWindowV_medium) {
1841 frontPlaneWithWindowV->
SetMedium(frontPlaneWithWindowV_medium);
1843 Fatal(
"Main",
"Invalid medium for frontPlaneWithWindowV!");
1852 frontPlaneWithWindow_transf[0]->
SetDx(0.0);
1853 frontPlaneWithWindow_transf[0]->
SetDy(+(19.5 + frontPlaneWithWindow_YSize * 0.5));
1854 frontPlaneWithWindow_transf[0]->
SetDz(
1856 + (1.35 + faceShild_ZSize + frontPlaneWithWindow_ZSize * 0.5)
1860 frontPlaneWithWindow_transf[1]->
RotateX(180.0);
1861 frontPlaneWithWindow_transf[1]->
SetDx(0.0);
1862 frontPlaneWithWindow_transf[1]->
SetDy(-(19.5 + frontPlaneWithWindow_YSize * 0.5));
1863 frontPlaneWithWindow_transf[1]->
SetDz(
1865 - (1.35 + faceShild_ZSize + frontPlaneWithWindow_ZSize * 0.5));
1867 frames->
AddNode(frontPlaneWithWindowV, 0, frontPlaneWithWindow_transf[0]);
1868 frames->
AddNode(frontPlaneWithWindowV, 1, frontPlaneWithWindow_transf[1]);
1872 Double_t pcb_XSize = (NModules / 2.0) * 6.3 - (NModules / 2.0) * 0.3 + 4.865 ;
1876 TGeoShape* pcbS =
new TGeoBBox(
"pcbS", frontPlane_XSize * 0.5, frontPlane_YSize * 0.5, frontPlane_ZSize * 0.5);
1885 Fatal(
"Main",
"Invalid medium for pcbV!");
1894 pcb_transf[0]->
SetDx(0.0);
1895 pcb_transf[0]->
SetDy(+(26.5 + pcb_YSize * 0.5));
1896 pcb_transf[0]->
SetDz(+0.695 + 4.31 );
1899 pcb_transf[1]->
SetDx(0.0);
1900 pcb_transf[1]->
SetDy(-(26.5 + pcb_YSize * 0.5));
1901 pcb_transf[1]->
SetDz(+0.695 );
1903 frames->
AddNode(pcbV, 0, pcb_transf[0]);
1904 frames->
AddNode(pcbV, 1, pcb_transf[1]);
1908 Double_t upperSideShield_XSize = 4.4;
1909 Double_t upperSideShield_YSize = 12.3;
1910 Double_t upperSideShield_ZSize = 0.8;
1912 Double_t upperSideShieldCut_XSize = 0.9;
1913 Double_t upperSideShieldCut_YSize = 2.4;
1915 Double_t upperSideShieldWindow_XSize = 3.0;
1916 Double_t upperSideShieldWindow_YSize = 7.0;
1922 +upperSideShield_XSize * 0.5 ,
1923 +upperSideShield_XSize * 0.5 ,
1924 -upperSideShield_XSize * 0.5 ,
1925 -upperSideShield_XSize * 0.5 ,
1926 -upperSideShield_XSize * 0.5 + upperSideShieldCut_XSize ,
1927 -upperSideShield_XSize * 0.5 + upperSideShieldCut_XSize
1931 -upperSideShield_YSize * 0.5 ,
1932 +upperSideShield_YSize * 0.5 ,
1933 +upperSideShield_YSize * 0.5 ,
1934 -upperSideShield_YSize * 0.5 + upperSideShieldCut_YSize ,
1935 -upperSideShield_YSize * 0.5 + upperSideShieldCut_YSize ,
1936 -upperSideShield_YSize * 0.5
1939 ((
TGeoXtru*)upperSideShieldBlankS)->DefinePolygon(6, x_pos, y_pos);
1940 ((
TGeoXtru*)upperSideShieldBlankS)->DefineSection(0, -upperSideShield_ZSize * 0.5);
1941 ((
TGeoXtru*)upperSideShieldBlankS)->DefineSection(1, +upperSideShield_ZSize * 0.5);
1945 TString(
"upperSideShieldWindowS") +=
TString(
"_") + frames->
GetName(), upperSideShieldWindow_XSize * 0.5,
1946 upperSideShieldWindow_YSize * 0.5, (upperSideShield_ZSize + 0.001) * 0.5);
1950 upperSideShieldWindow_pos->
SetDx(0.0);
1951 upperSideShieldWindow_pos->
SetDy(+1.65 );
1952 upperSideShieldWindow_pos->
SetDz(0.0);
1958 TString expression =
"upperSideShieldBlankS";
1960 expression +=
"-upperSideShieldWindowS";
1962 expression +=
":upperSideShieldWindow_pos";
1964 upperSideShieldWithWindowS->
MakeNode(expression);
1973 if (upperSideShieldV_medium) {
1974 upperSideShieldV->
SetMedium(upperSideShieldV_medium);
1976 Fatal(
"Main",
"Invalid medium for upperSideShieldV!");
1985 upperSideShield_transf[0]->
RotateY(90.0);
1986 upperSideShield_transf[0]->
SetDx(+(frontPlaneWithWindow_XSize * 0.5 - upperSideShield_ZSize * 0.5));
1987 upperSideShield_transf[0]->
SetDy(+(17.6 + upperSideShield_YSize * 0.5));
1988 upperSideShield_transf[0]->
SetDz(+0.695 - 0.65 + 4.31 );
1991 upperSideShield_transf[1]->
RotateY(90.0);
1992 upperSideShield_transf[1]->
SetDx(-(frontPlaneWithWindow_XSize * 0.5 - upperSideShield_ZSize * 0.5));
1993 upperSideShield_transf[1]->
SetDy(+(17.6 + upperSideShield_YSize * 0.5));
1994 upperSideShield_transf[1]->
SetDz(+0.695 - 0.65 + 4.31 );
1997 upperSideShield_transf[2]->
RotateY(-90.0);
1998 upperSideShield_transf[2]->
ReflectY(
true);
1999 upperSideShield_transf[2]->
SetDx(+(frontPlaneWithWindow_XSize * 0.5 - upperSideShield_ZSize * 0.5));
2000 upperSideShield_transf[2]->
SetDy(-(17.6 + upperSideShield_YSize * 0.5));
2001 upperSideShield_transf[2]->
SetDz(+0.695 + 0.65 );
2004 upperSideShield_transf[3]->
RotateY(-90.0);
2005 upperSideShield_transf[3]->
ReflectY(
true);
2006 upperSideShield_transf[3]->
SetDx(-(frontPlaneWithWindow_XSize * 0.5 - upperSideShield_ZSize * 0.5));
2007 upperSideShield_transf[3]->
SetDy(-(17.6 + upperSideShield_YSize * 0.5));
2008 upperSideShield_transf[3]->
SetDz(+0.695 + 0.65 );
2010 frames->
AddNode(upperSideShieldV, 0, upperSideShield_transf[0]);
2011 frames->
AddNode(upperSideShieldV, 1, upperSideShield_transf[1]);
2012 frames->
AddNode(upperSideShieldV, 2, upperSideShield_transf[2]);
2013 frames->
AddNode(upperSideShieldV, 3, upperSideShield_transf[3]);
2017 Double_t upperSideShieldCover_XSize = 4.4;
2018 Double_t upperSideShieldCover_YSize = 8.5;
2019 Double_t upperSideShieldCover_ZSize = 0.15;
2021 TGeoShape* upperSideShieldCoverS =
new TGeoBBox(
"upperSideShieldCoverS", upperSideShieldCover_XSize * 0.5,
2022 upperSideShieldCover_YSize * 0.5, upperSideShieldCover_ZSize * 0.5);
2029 if (upperSideShieldCoverV_medium) {
2030 upperSideShieldCoverV->
SetMedium(upperSideShieldCoverV_medium);
2032 Fatal(
"Main",
"Invalid medium for upperSideShieldCoverV!");
2041 upperSideShieldCover_transf[0]->
RotateY(90.0);
2042 upperSideShieldCover_transf[0]->
SetDx(+(frontPlaneWithWindow_XSize * 0.5 + upperSideShieldCover_ZSize * 0.5));
2043 upperSideShieldCover_transf[0]->
SetDy(+(20.7 + upperSideShieldCover_YSize * 0.5));
2044 upperSideShieldCover_transf[0]->
SetDz(+0.695 - 0.65 + 4.31 );
2047 upperSideShieldCover_transf[1]->
RotateY(90.0);
2048 upperSideShieldCover_transf[1]->
SetDx(-(frontPlaneWithWindow_XSize * 0.5 + upperSideShieldCover_ZSize * 0.5));
2049 upperSideShieldCover_transf[1]->
SetDy(+(20.7 + upperSideShieldCover_YSize * 0.5));
2050 upperSideShieldCover_transf[1]->
SetDz(+0.695 - 0.65 + 4.31 );
2053 upperSideShieldCover_transf[2]->
RotateY(90.0);
2054 upperSideShieldCover_transf[2]->
SetDx(+(frontPlaneWithWindow_XSize * 0.5 + upperSideShieldCover_ZSize * 0.5));
2055 upperSideShieldCover_transf[2]->
SetDy(-(20.7 + upperSideShieldCover_YSize * 0.5));
2056 upperSideShieldCover_transf[2]->
SetDz(+0.695 + 0.65 );
2059 upperSideShieldCover_transf[3]->
RotateY(90.0);
2060 upperSideShieldCover_transf[3]->
SetDx(-(frontPlaneWithWindow_XSize * 0.5 + upperSideShieldCover_ZSize * 0.5));
2061 upperSideShieldCover_transf[3]->
SetDy(-(20.7 + upperSideShieldCover_YSize * 0.5));
2062 upperSideShieldCover_transf[3]->
SetDz(+0.695 + 0.65 );
2064 frames->
AddNode(upperSideShieldCoverV, 0, upperSideShieldCover_transf[0]);
2065 frames->
AddNode(upperSideShieldCoverV, 1, upperSideShieldCover_transf[1]);
2066 frames->
AddNode(upperSideShieldCoverV, 2, upperSideShieldCover_transf[2]);
2067 frames->
AddNode(upperSideShieldCoverV, 3, upperSideShieldCover_transf[3]);
2085 Double_t faceShild_XSize = (NModules / 2.0) * 6.3 - (NModules / 2.0) * 0.3 + 8.6;
2086 Double_t faceShild_YSize = 14.74 + 6.0;
2090 faceShildS->
SetName(
"faceShildS");
2092 Double_t x_pos[8] = {faceShild_XSize * 0.5,
2093 faceShild_XSize * 0.5,
2094 -faceShild_XSize * 0.5,
2095 -faceShild_XSize * 0.5,
2100 Double_t y_pos[8] = {-faceShild_YSize * 0.5,
2101 faceShild_YSize * 0.5,
2102 faceShild_YSize * 0.5,
2103 -faceShild_YSize * 0.5,
2104 -faceShild_YSize * 0.5,
2107 -faceShild_YSize * 0.5};
2108 ((
TGeoXtru*)faceShildS)->DefinePolygon(8, x_pos, y_pos);
2109 ((
TGeoXtru*)faceShildS)->DefineSection(0, -faceShild_ZSize * 0.5);
2110 ((
TGeoXtru*)faceShildS)->DefineSection(1, +faceShild_ZSize * 0.5);
2117 if (faceShildV_medium) {
2118 faceShildV->
SetMedium(faceShildV_medium);
2120 Fatal(
"Main",
"Invalid medium for faceShildV!");
2129 faceShild_transf[0]->
SetDy(+faceShild_YSize * 0.5 - 0.95);
2130 faceShild_transf[0]->
SetDz(+0.695 - 1.35
2131 - faceShild_ZSize * 0.5 + 4.31 );
2134 faceShild_transf[1]->
SetDy(+faceShild_YSize * 0.5 - 0.95);
2135 faceShild_transf[1]->
SetDz(+0.695 + 1.35
2136 + faceShild_ZSize * 0.5 + 4.31 );
2139 faceShild_transf[2]->
RotateX(180.0);
2140 faceShild_transf[2]->
SetDy(-faceShild_YSize * 0.5 + 0.95);
2141 faceShild_transf[2]->
SetDz(+0.695 - 1.35
2142 - faceShild_ZSize * 0.5 );
2145 faceShild_transf[3]->
RotateX(180.0);
2146 faceShild_transf[3]->
SetDy(-faceShild_YSize * 0.5 + 0.95);
2147 faceShild_transf[3]->
SetDz(+0.695 + 1.35
2148 + faceShild_ZSize * 0.5 );
2150 frames->
AddNode(faceShildV, 0, faceShild_transf[0]);
2151 frames->
AddNode(faceShildV, 1, faceShild_transf[1]);
2152 frames->
AddNode(faceShildV, 2, faceShild_transf[2]);
2153 frames->
AddNode(faceShildV, 3, faceShild_transf[3]);
2158 Double_t sideShild_YSize = 15.2 + 6.0;
2162 new TGeoBBox(
"sideShieldS", sideShild_XSize * 0.5, sideShild_YSize * 0.5, sideShild_ZSize * 0.5);
2168 if (sideShieldV_medium) {
2169 sideShieldV->
SetMedium(sideShieldV_medium);
2171 Fatal(
"Main",
"Invalid medium for sideShieldV!");
2180 sideShild_transf[0]->
SetDx(+(faceShild_XSize * 0.5 - sideShild_XSize * 0.5));
2181 sideShild_transf[0]->
SetDy(+faceShild_YSize * 0.5 - 0.95 + (sideShild_YSize - faceShild_YSize) * 0.5);
2182 sideShild_transf[0]->
SetDz(+0.695 + 4.31 );
2185 sideShild_transf[1]->
SetDx(-(faceShild_XSize * 0.5 - sideShild_XSize * 0.5));
2186 sideShild_transf[1]->
SetDy(+faceShild_YSize * 0.5 - 0.95 + (sideShild_YSize - faceShild_YSize) * 0.5);
2187 sideShild_transf[1]->
SetDz(+0.695 + 4.31 );
2190 sideShild_transf[2]->
SetDx(+(faceShild_XSize * 0.5 - sideShild_XSize * 0.5));
2191 sideShild_transf[2]->
SetDy(-faceShild_YSize * 0.5 + 0.95 - (sideShild_YSize - faceShild_YSize) * 0.5);
2192 sideShild_transf[2]->
SetDz(+0.695 );
2195 sideShild_transf[3]->
SetDx(-(faceShild_XSize * 0.5 - sideShild_XSize * 0.5));
2196 sideShild_transf[3]->
SetDy(-faceShild_YSize * 0.5 + 0.95 - (sideShild_YSize - faceShild_YSize) * 0.5);
2197 sideShild_transf[3]->
SetDz(+0.695 );
2199 frames->
AddNode(sideShieldV, 0, sideShild_transf[0]);
2200 frames->
AddNode(sideShieldV, 1, sideShild_transf[1]);
2201 frames->
AddNode(sideShieldV, 2, sideShild_transf[2]);
2202 frames->
AddNode(sideShieldV, 3, sideShild_transf[3]);
2206 Double_t horizShild_XSize = faceShild_XSize * 0.5 - sideShild_XSize - 2.75 ;
2211 new TGeoBBox(
"horizShieldS", horizShild_XSize * 0.5, horizShild_YSize * 0.5, horizShild_ZSize * 0.5);
2218 if (horizShieldV_medium) {
2219 horizShieldV->
SetMedium(horizShieldV_medium);
2221 Fatal(
"Main",
"Invalid medium for horizShieldV!");
2230 horizShild_transf[0]->
SetDx(+(faceShild_XSize * 0.5 - horizShild_XSize * 0.5 - sideShild_XSize));
2231 horizShild_transf[0]->
SetDy(+(-0.95 + horizShild_YSize * 0.5));
2232 horizShild_transf[0]->
SetDz(+0.695 + 4.31 );
2235 horizShild_transf[1]->
SetDx(-(faceShild_XSize * 0.5 - horizShild_XSize * 0.5 - sideShild_XSize));
2236 horizShild_transf[1]->
SetDy(+(-0.95 + horizShild_YSize * 0.5));
2237 horizShild_transf[1]->
SetDz(+0.695 + 4.31 );
2240 horizShild_transf[2]->
SetDx(+(faceShild_XSize * 0.5 - horizShild_XSize * 0.5 - sideShild_XSize));
2241 horizShild_transf[2]->
SetDy(-(-0.95 + horizShild_YSize * 0.5));
2242 horizShild_transf[2]->
SetDz(+0.695 );
2245 horizShild_transf[3]->
SetDx(-(faceShild_XSize * 0.5 - horizShild_XSize * 0.5 - sideShild_XSize));
2246 horizShild_transf[3]->
SetDy(-(-0.95 + horizShild_YSize * 0.5));
2247 horizShild_transf[3]->
SetDz(+0.695 );
2249 frames->
AddNode(horizShieldV, 0, horizShild_transf[0]);
2250 frames->
AddNode(horizShieldV, 1, horizShild_transf[1]);
2251 frames->
AddNode(horizShieldV, 2, horizShild_transf[2]);
2252 frames->
AddNode(horizShieldV, 3, horizShild_transf[3]);
2256 Double_t plankShild_XSize = faceShild_XSize;
2261 new TGeoBBox(
"plankShieldS", plankShild_XSize * 0.5, plankShild_YSize * 0.5, plankShild_ZSize * 0.5);
2268 if (plankShieldV_medium) {
2269 plankShieldV->
SetMedium(plankShieldV_medium);
2271 Fatal(
"Main",
"Invalid medium for plankShieldV!");
2280 plankShild_transf[0]->
SetDx(0.0);
2281 plankShild_transf[0]->
SetDy(+(-0.95 + faceShild_YSize) - 0.05);
2282 plankShild_transf[0]->
SetDz(
2283 +0.695 - (1.35 + faceShild_ZSize + plankShild_ZSize * 0.5)
2287 plankShild_transf[1]->
SetDx(0.0);
2288 plankShild_transf[1]->
SetDy(+(-0.95 + faceShild_YSize) - 0.05);
2289 plankShild_transf[1]->
SetDz(
2290 +0.695 + (1.35 + faceShild_ZSize + plankShild_ZSize * 0.5)
2294 plankShild_transf[2]->
SetDx(0.0);
2295 plankShild_transf[2]->
SetDy(-(-0.95 + faceShild_YSize) + 0.05);
2296 plankShild_transf[2]->
SetDz(+0.695
2297 - (1.35 + faceShild_ZSize + plankShild_ZSize * 0.5));
2300 plankShild_transf[3]->
SetDx(0.0);
2301 plankShild_transf[3]->
SetDy(-(-0.95 + faceShild_YSize) + 0.05);
2302 plankShild_transf[3]->
SetDz(+0.695
2303 + (1.35 + faceShild_ZSize + plankShild_ZSize * 0.5));
2305 frames->
AddNode(plankShieldV, 0, plankShild_transf[0]);
2306 frames->
AddNode(plankShieldV, 1, plankShild_transf[1]);
2307 frames->
AddNode(plankShieldV, 2, plankShild_transf[2]);
2308 frames->
AddNode(plankShieldV, 3, plankShild_transf[3]);
2312 Double_t baseRailMainPart_XSize = faceShild_XSize + 3.4 * 2 ;
2313 Double_t baseRailMainPart_YSize = 5.0;
2314 Double_t baseRailMainPart_ZSize = 0.7;
2316 cout <<
"baseRailMainPart_XSize = " << baseRailMainPart_XSize <<
"\n";
2318 Double_t baseRailUpperPart_XSize = baseRailMainPart_XSize;
2319 Double_t baseRailUpperPart_YSize = 1.0;
2320 Double_t baseRailUpperPart_ZSize = 0.3;
2322 Double_t baseRailLowerPart_XSize = baseRailMainPart_XSize - 8.8 ;
2323 Double_t baseRailLowerPart_YSize = 0.7;
2324 Double_t baseRailLowerPart_ZSize = 0.3;
2328 baseRailMainPart_YSize * 0.5, baseRailMainPart_ZSize * 0.5);
2331 baseRailUpperPart_YSize * 0.5, baseRailUpperPart_ZSize * 0.5);
2334 baseRailLowerPart_YSize * 0.5, baseRailLowerPart_ZSize * 0.5);
2338 baseRailUpperPart_pos->
SetDx(0.0);
2339 baseRailUpperPart_pos->
SetDy(+(baseRailMainPart_YSize * 0.5 + baseRailUpperPart_YSize * 0.5));
2340 baseRailUpperPart_pos->
SetDz(baseRailMainPart_ZSize * 0.5 - baseRailUpperPart_ZSize * 0.5);
2345 baseRailLowerPart_pos->
SetDx(0.0);
2346 baseRailLowerPart_pos->
SetDy(-(baseRailMainPart_YSize * 0.5 + baseRailLowerPart_YSize * 0.5));
2347 baseRailLowerPart_pos->
SetDz(baseRailMainPart_ZSize * 0.5 - baseRailLowerPart_ZSize * 0.5);
2353 TString expression =
"baseRailMainPartS";
2355 expression +=
"+baseRailUpperPartS";
2357 expression +=
":baseRailUpperPart_pos";
2359 expression +=
"+baseRailLowerPartS";
2361 expression +=
":baseRailLowerPart_pos";
2371 if (baseRailV_medium) {
2374 Fatal(
"Main",
"Invalid medium for baseRailV!");
2383 baseRail_transf[0]->
RotateY(180.0);
2384 baseRail_transf[0]->
SetDx(0.1);
2385 baseRail_transf[0]->
SetDy(+(14.5 + baseRailMainPart_YSize * 0.5 + 6.0));
2386 baseRail_transf[0]->
SetDz(
2388 + (1.35 + faceShild_ZSize + baseRailMainPart_ZSize * 0.5 - baseRailLowerPart_ZSize)
2392 baseRail_transf[1]->
ReflectY(
true);
2393 baseRail_transf[1]->
SetDx(0.0);
2394 baseRail_transf[1]->
SetDy(-(14.5 + baseRailMainPart_YSize * 0.5 + 6.0));
2395 baseRail_transf[1]->
SetDz(+0.695
2396 - (1.35 + faceShild_ZSize + baseRailMainPart_ZSize * 0.5
2397 - baseRailLowerPart_ZSize));
2399 frames->
AddNode(baseRailV, 0, baseRail_transf[0]);
2400 frames->
AddNode(baseRailV, 1, baseRail_transf[1]);
2404 Double_t backRailMainPart_XSize = faceShild_XSize + -0.3 * 2 ;
2405 Double_t backRailMainPart_YSize = 3.0;
2406 Double_t backRailMainPart_ZSize = 0.9;
2408 Double_t backRailLowerPart_XSize = backRailMainPart_XSize - 1.4;
2409 Double_t backRailLowerPart_YSize = 0.7;
2410 Double_t backRailLowerPart_ZSize = 0.6;
2412 Double_t backRailSidePart_XSize = 1.2;
2413 Double_t backRailSidePart_YSize = 3.0;
2414 Double_t backRailSidePart_ZSize = 1.62;
2418 backRailMainPart_YSize * 0.5, backRailMainPart_ZSize * 0.5);
2421 backRailLowerPart_YSize * 0.5, backRailLowerPart_ZSize * 0.5);
2424 backRailSidePart_YSize * 0.5, backRailSidePart_ZSize * 0.5);
2428 backRailLowerPart_pos->
SetDx(0.0);
2429 backRailLowerPart_pos->
SetDy(-(backRailMainPart_YSize * 0.5 + backRailLowerPart_YSize * 0.5));
2430 backRailLowerPart_pos->
SetDz(backRailMainPart_ZSize * 0.5 - backRailLowerPart_ZSize * 0.5);
2435 backRailSidePart1_pos->
SetDx(+(backRailMainPart_XSize * 0.5 - backRailSidePart_XSize * 0.5));
2436 backRailSidePart1_pos->
SetDy(0.0);
2437 backRailSidePart1_pos->
SetDz(backRailMainPart_ZSize * 0.5 + backRailSidePart_ZSize * 0.5);
2442 backRailSidePart2_pos->
SetDx(-(backRailMainPart_XSize * 0.5 - backRailSidePart_XSize * 0.5));
2443 backRailSidePart2_pos->
SetDy(0.0);
2444 backRailSidePart2_pos->
SetDz(backRailMainPart_ZSize * 0.5 + backRailSidePart_ZSize * 0.5);
2450 TString expression =
"backRailMainPartS";
2452 expression +=
"+backRailLowerPartS";
2454 expression +=
":backRailLowerPart_pos";
2456 expression +=
"+backRailSidePartS";
2458 expression +=
":backRailSidePart1_pos";
2460 expression +=
"+backRailSidePartS";
2462 expression +=
":backRailSidePart2_pos";
2472 if (backRailV_medium) {
2475 Fatal(
"Main",
"Invalid medium for backRailV!");
2484 backRail_transf[0]->
SetDx(0.0);
2485 backRail_transf[0]->
SetDy(+(14.5 + backRailMainPart_YSize * 0.5 + 6.0));
2486 backRail_transf[0]->
SetDz(+0.695
2487 - (1.35 + faceShild_ZSize
2488 + (backRailMainPart_ZSize * 0.5 - backRailLowerPart_ZSize))
2492 backRail_transf[1]->
RotateX(180.0);
2493 backRail_transf[1]->
SetDx(0.0);
2494 backRail_transf[1]->
SetDy(-(14.5 + backRailMainPart_YSize * 0.5 + 6.0));
2495 backRail_transf[1]->
SetDz(+0.695
2496 + (1.35 + faceShild_ZSize
2497 + (backRailMainPart_ZSize * 0.5 - backRailLowerPart_ZSize)));
2499 frames->
AddNode(backRailV, 0, backRail_transf[0]);
2500 frames->
AddNode(backRailV, 1, backRail_transf[1]);
2504 Double_t holdBackRail_XSize = backRailMainPart_XSize;
2509 holdBackRailS->
SetName(
"holdBackRailS");
2512 +0.0 , +0.1 , +holdBackRail_ZSize , +holdBackRail_ZSize , +0.0
2515 -holdBackRail_YSize ,
2516 -holdBackRail_YSize ,
2517 -holdBackRail_YSize * 0.5 ,
2521 ((
TGeoXtru*)holdBackRailS)->DefinePolygon(5, x_pos, y_pos);
2522 ((
TGeoXtru*)holdBackRailS)->DefineSection(0, -holdBackRail_XSize * 0.5);
2523 ((
TGeoXtru*)holdBackRailS)->DefineSection(1, +holdBackRail_XSize * 0.5);
2531 if (holdBackRailV_medium) {
2532 holdBackRailV->
SetMedium(holdBackRailV_medium);
2534 Fatal(
"Main",
"Invalid medium for holdBackRailV!");
2543 holdBackRail_transf[0]->
RotateY(90.0);
2544 holdBackRail_transf[0]->
SetDx(0.0);
2545 holdBackRail_transf[0]->
SetDy(+(14.5 + backRailMainPart_YSize + 6.0));
2546 holdBackRail_transf[0]->
SetDz(
2547 +0.695 - (1.35 + faceShild_ZSize + plankShild_ZSize)
2551 holdBackRail_transf[1]->
RotateY(90.0);
2552 holdBackRail_transf[1]->
RotateX(180.0);
2553 holdBackRail_transf[1]->
SetDx(0.0);
2554 holdBackRail_transf[1]->
SetDy(-(14.5 + backRailMainPart_YSize + 6.0));
2555 holdBackRail_transf[1]->
SetDz(
2556 +0.695 + (1.35 + faceShild_ZSize + plankShild_ZSize));
2558 frames->
AddNode(holdBackRailV, 0, holdBackRail_transf[0]);
2559 frames->
AddNode(holdBackRailV, 1, holdBackRail_transf[1]);
2563 Double_t backPlane_XSize = (NModules / 2.0) * 6.3 - (NModules / 2.0) * 0.3 + 3.95 * 2 ;
2568 new TGeoBBox(
"backPlaneS", backPlane_XSize * 0.5, backPlane_YSize * 0.5, backPlane_ZSize * 0.5);
2574 if (backPlaneV_medium) {
2575 backPlaneV->
SetMedium(backPlaneV_medium);
2577 Fatal(
"Main",
"Invalid medium for backPlaneV!");
2586 backPlane_transf[0]->
SetDx(0.0);
2587 backPlane_transf[0]->
SetDy(+(16.75 + backPlane_YSize * 0.5 + 6.0));
2588 backPlane_transf[0]->
SetDz(+0.695
2589 - (1.35 + faceShild_ZSize + plankShild_ZSize
2590 + holdBackRail_ZSize + backPlane_ZSize * 0.5)
2594 backPlane_transf[1]->
SetDx(0.0);
2595 backPlane_transf[1]->
SetDy(-(16.75 + backPlane_YSize * 0.5 + 6.0));
2596 backPlane_transf[1]->
SetDz(+0.695
2597 + (1.35 + faceShild_ZSize + plankShild_ZSize
2598 + holdBackRail_ZSize + backPlane_ZSize * 0.5));
2600 frames->
AddNode(backPlaneV, 0, backPlane_transf[0]);
2601 frames->
AddNode(backPlaneV, 1, backPlane_transf[1]);
2605 Double_t frontPlane_XSize = (NModules / 2.0) * 6.3 - (NModules / 2.0) * 0.3 + 1.8 * 2 ;
2610 new TGeoBBox(
"frontPlaneS", frontPlane_XSize * 0.5, frontPlane_YSize * 0.5, frontPlane_ZSize * 0.5);
2616 if (frontPlaneV_medium) {
2617 frontPlaneV->
SetMedium(frontPlaneV_medium);
2619 Fatal(
"Main",
"Invalid medium for frontPlaneV!");
2628 frontPlane_transf[0]->
SetDx(0.0);
2629 frontPlane_transf[0]->
SetDy(+(19.7 + frontPlane_YSize * 0.5 + 6.0));
2630 frontPlane_transf[0]->
SetDz(
2632 + (1.35 + faceShild_ZSize + plankShild_ZSize + frontPlane_ZSize * 0.5)
2636 frontPlane_transf[1]->
SetDx(0.0);
2637 frontPlane_transf[1]->
SetDy(-(19.7 + frontPlane_YSize * 0.5 + 6.0));
2638 frontPlane_transf[1]->
SetDz(
2640 - (1.35 + faceShild_ZSize + plankShild_ZSize + frontPlane_ZSize * 0.5));
2642 frames->
AddNode(frontPlaneV, 0, frontPlane_transf[0]);
2643 frames->
AddNode(frontPlaneV, 1, frontPlane_transf[1]);
2647 Double_t frontPlaneWithWindow_XSize = (NModules / 2.0) * 6.3 - (NModules / 2.0) * 0.3 + 4.0 * 2 ;
2648 Double_t frontPlaneWithWindow_YSize = 18.3;
2649 Double_t frontPlaneWithWindow_ZSize = 0.3;
2651 Double_t frontPlaneWindow_XSize = frontPlaneWithWindow_XSize - 3.0 * 2 ;
2652 Double_t frontPlaneWindow_YSize = 8.6;
2655 TString(
"frontPlaneWithWindowBlankS") +=
TString(
"_") + frames->
GetName(), frontPlaneWithWindow_XSize * 0.5,
2656 frontPlaneWithWindow_YSize * 0.5, frontPlaneWithWindow_ZSize * 0.5);
2659 frontPlaneWindow_YSize * 0.5, (frontPlaneWithWindow_ZSize + 0.001) * 0.5);
2663 frontPlaneWindow_pos->
SetDx(0.0);
2664 frontPlaneWindow_pos->
SetDy(-2.85 );
2665 frontPlaneWindow_pos->
SetDz(0.0);
2671 TString expression =
"frontPlaneWithWindowBlankS";
2673 expression +=
"-frontPlaneWindowS";
2675 expression +=
":frontPlaneWindow_pos";
2677 frontPlaneWithWindowS->
MakeNode(expression);
2686 if (frontPlaneWithWindowV_medium) {
2687 frontPlaneWithWindowV->
SetMedium(frontPlaneWithWindowV_medium);
2689 Fatal(
"Main",
"Invalid medium for frontPlaneWithWindowV!");
2698 frontPlaneWithWindow_transf[0]->
SetDx(0.0);
2699 frontPlaneWithWindow_transf[0]->
SetDy(+(19.5 + frontPlaneWithWindow_YSize * 0.5 + 6.0));
2700 frontPlaneWithWindow_transf[0]->
SetDz(
2702 + (1.35 + faceShild_ZSize + frontPlaneWithWindow_ZSize * 0.5)
2706 frontPlaneWithWindow_transf[1]->
RotateX(180.0);
2707 frontPlaneWithWindow_transf[1]->
SetDx(0.0);
2708 frontPlaneWithWindow_transf[1]->
SetDy(-(19.5 + frontPlaneWithWindow_YSize * 0.5 + 6.0));
2709 frontPlaneWithWindow_transf[1]->
SetDz(
2711 - (1.35 + faceShild_ZSize + frontPlaneWithWindow_ZSize * 0.5));
2713 frames->
AddNode(frontPlaneWithWindowV, 0, frontPlaneWithWindow_transf[0]);
2714 frames->
AddNode(frontPlaneWithWindowV, 1, frontPlaneWithWindow_transf[1]);
2718 Double_t pcb_XSize = (NModules / 2.0) * 6.3 - (NModules / 2.0) * 0.3 + 4.865 ;
2722 TGeoShape* pcbS =
new TGeoBBox(
"pcbS", frontPlane_XSize * 0.5, frontPlane_YSize * 0.5, frontPlane_ZSize * 0.5);
2731 Fatal(
"Main",
"Invalid medium for pcbV!");
2740 pcb_transf[0]->
SetDx(0.0);
2741 pcb_transf[0]->
SetDy(+(26.5 + pcb_YSize * 0.5 + 6.0));
2742 pcb_transf[0]->
SetDz(+0.695 + 4.31 );
2745 pcb_transf[1]->
SetDx(0.0);
2746 pcb_transf[1]->
SetDy(-(26.5 + pcb_YSize * 0.5 + 6.0));
2747 pcb_transf[1]->
SetDz(+0.695 );
2749 frames->
AddNode(pcbV, 0, pcb_transf[0]);
2750 frames->
AddNode(pcbV, 1, pcb_transf[1]);
2754 Double_t upperSideShield_XSize = 4.4;
2755 Double_t upperSideShield_YSize = 12.3;
2756 Double_t upperSideShield_ZSize = 0.8;
2758 Double_t upperSideShieldCut_XSize = 0.9;
2759 Double_t upperSideShieldCut_YSize = 2.4;
2761 Double_t upperSideShieldWindow_XSize = 3.0;
2762 Double_t upperSideShieldWindow_YSize = 7.0;
2768 +upperSideShield_XSize * 0.5 ,
2769 +upperSideShield_XSize * 0.5 ,
2770 -upperSideShield_XSize * 0.5 ,
2771 -upperSideShield_XSize * 0.5 ,
2772 -upperSideShield_XSize * 0.5 + upperSideShieldCut_XSize ,
2773 -upperSideShield_XSize * 0.5 + upperSideShieldCut_XSize
2777 -upperSideShield_YSize * 0.5 ,
2778 +upperSideShield_YSize * 0.5 ,
2779 +upperSideShield_YSize * 0.5 ,
2780 -upperSideShield_YSize * 0.5 + upperSideShieldCut_YSize ,
2781 -upperSideShield_YSize * 0.5 + upperSideShieldCut_YSize ,
2782 -upperSideShield_YSize * 0.5
2785 ((
TGeoXtru*)upperSideShieldBlankS)->DefinePolygon(6, x_pos, y_pos);
2786 ((
TGeoXtru*)upperSideShieldBlankS)->DefineSection(0, -upperSideShield_ZSize * 0.5);
2787 ((
TGeoXtru*)upperSideShieldBlankS)->DefineSection(1, +upperSideShield_ZSize * 0.5);
2791 TString(
"upperSideShieldWindowS") +=
TString(
"_") + frames->
GetName(), upperSideShieldWindow_XSize * 0.5,
2792 upperSideShieldWindow_YSize * 0.5, (upperSideShield_ZSize + 0.001) * 0.5);
2796 upperSideShieldWindow_pos->
SetDx(0.0);
2797 upperSideShieldWindow_pos->
SetDy(+1.65 );
2798 upperSideShieldWindow_pos->
SetDz(0.0);
2804 TString expression =
"upperSideShieldBlankS";
2806 expression +=
"-upperSideShieldWindowS";
2808 expression +=
":upperSideShieldWindow_pos";
2810 upperSideShieldWithWindowS->
MakeNode(expression);
2819 if (upperSideShieldV_medium) {
2820 upperSideShieldV->
SetMedium(upperSideShieldV_medium);
2822 Fatal(
"Main",
"Invalid medium for upperSideShieldV!");
2831 upperSideShield_transf[0]->
RotateY(90.0);
2832 upperSideShield_transf[0]->
SetDx(+(frontPlaneWithWindow_XSize * 0.5 - upperSideShield_ZSize * 0.5));
2833 upperSideShield_transf[0]->
SetDy(+(17.6 + upperSideShield_YSize * 0.5 + 6.0));
2834 upperSideShield_transf[0]->
SetDz(+0.695 - 0.65 + 4.31 );
2837 upperSideShield_transf[1]->
RotateY(90.0);
2838 upperSideShield_transf[1]->
SetDx(-(frontPlaneWithWindow_XSize * 0.5 - upperSideShield_ZSize * 0.5));
2839 upperSideShield_transf[1]->
SetDy(+(17.6 + upperSideShield_YSize * 0.5 + 6.0));
2840 upperSideShield_transf[1]->
SetDz(+0.695 - 0.65 + 4.31 );
2843 upperSideShield_transf[2]->
RotateY(-90.0);
2844 upperSideShield_transf[2]->
ReflectY(
true);
2845 upperSideShield_transf[2]->
SetDx(+(frontPlaneWithWindow_XSize * 0.5 - upperSideShield_ZSize * 0.5));
2846 upperSideShield_transf[2]->
SetDy(-(17.6 + upperSideShield_YSize * 0.5 + 6.0));
2847 upperSideShield_transf[2]->
SetDz(+0.695 + 0.65 );
2850 upperSideShield_transf[3]->
RotateY(-90.0);
2851 upperSideShield_transf[3]->
ReflectY(
true);
2852 upperSideShield_transf[3]->
SetDx(-(frontPlaneWithWindow_XSize * 0.5 - upperSideShield_ZSize * 0.5));
2853 upperSideShield_transf[3]->
SetDy(-(17.6 + upperSideShield_YSize * 0.5 + 6.0));
2854 upperSideShield_transf[3]->
SetDz(+0.695 + 0.65 );
2856 frames->
AddNode(upperSideShieldV, 0, upperSideShield_transf[0]);
2857 frames->
AddNode(upperSideShieldV, 1, upperSideShield_transf[1]);
2858 frames->
AddNode(upperSideShieldV, 2, upperSideShield_transf[2]);
2859 frames->
AddNode(upperSideShieldV, 3, upperSideShield_transf[3]);
2863 Double_t upperSideShieldCover_XSize = 4.4;
2864 Double_t upperSideShieldCover_YSize = 8.5;
2865 Double_t upperSideShieldCover_ZSize = 0.15;
2867 TGeoShape* upperSideShieldCoverS =
new TGeoBBox(
"upperSideShieldCoverS", upperSideShieldCover_XSize * 0.5,
2868 upperSideShieldCover_YSize * 0.5, upperSideShieldCover_ZSize * 0.5);
2875 if (upperSideShieldCoverV_medium) {
2876 upperSideShieldCoverV->
SetMedium(upperSideShieldCoverV_medium);
2878 Fatal(
"Main",
"Invalid medium for upperSideShieldCoverV!");
2887 upperSideShieldCover_transf[0]->
RotateY(90.0);
2888 upperSideShieldCover_transf[0]->
SetDx(+(frontPlaneWithWindow_XSize * 0.5 + upperSideShieldCover_ZSize * 0.5));
2889 upperSideShieldCover_transf[0]->
SetDy(+(20.7 + upperSideShieldCover_YSize * 0.5 + 6.0));
2890 upperSideShieldCover_transf[0]->
SetDz(+0.695 - 0.65 + 4.31 );
2893 upperSideShieldCover_transf[1]->
RotateY(90.0);
2894 upperSideShieldCover_transf[1]->
SetDx(-(frontPlaneWithWindow_XSize * 0.5 + upperSideShieldCover_ZSize * 0.5));
2895 upperSideShieldCover_transf[1]->
SetDy(+(20.7 + upperSideShieldCover_YSize * 0.5 + 6.0));
2896 upperSideShieldCover_transf[1]->
SetDz(+0.695 - 0.65 + 4.31 );
2899 upperSideShieldCover_transf[2]->
RotateY(90.0);
2900 upperSideShieldCover_transf[2]->
SetDx(+(frontPlaneWithWindow_XSize * 0.5 + upperSideShieldCover_ZSize * 0.5));
2901 upperSideShieldCover_transf[2]->
SetDy(-(20.7 + upperSideShieldCover_YSize * 0.5 + 6.0));
2902 upperSideShieldCover_transf[2]->
SetDz(+0.695 + 0.65 );
2905 upperSideShieldCover_transf[3]->
RotateY(90.0);
2906 upperSideShieldCover_transf[3]->
SetDx(-(frontPlaneWithWindow_XSize * 0.5 + upperSideShieldCover_ZSize * 0.5));
2907 upperSideShieldCover_transf[3]->
SetDy(-(20.7 + upperSideShieldCover_YSize * 0.5 + 6.0));
2908 upperSideShieldCover_transf[3]->
SetDz(+0.695 + 0.65 );
2910 frames->
AddNode(upperSideShieldCoverV, 0, upperSideShieldCover_transf[0]);
2911 frames->
AddNode(upperSideShieldCoverV, 1, upperSideShieldCover_transf[1]);
2912 frames->
AddNode(upperSideShieldCoverV, 2, upperSideShieldCover_transf[2]);
2913 frames->
AddNode(upperSideShieldCoverV, 3, upperSideShieldCover_transf[3]);