281 TGeoVolume* vertical_outer_frameV =
new TGeoVolume(
"vertical_outer_frame", vertical_outer_frameS);
282 TGeoVolume* horizontal_outer_frameV =
new TGeoVolume(
"horizontal_outer_frame", horizontal_outer_frameS);
283 TGeoVolume* vertical_inner_frameV =
new TGeoVolume(
"vertical_inner_frame", vertical_inner_frameS);
284 TGeoVolume* horizontal_inner_frameV =
new TGeoVolume(
"horizontal_inner_frame", horizontal_inner_frameS);
293 if (sensitive_medium) {
296 Fatal(
"Main",
"Invalid medium for sensitive modules!");
301 vertical_outer_frameV->
SetMedium(frame_medium);
302 horizontal_outer_frameV->
SetMedium(frame_medium);
303 vertical_inner_frameV->
SetMedium(frame_medium);
304 horizontal_inner_frameV->
SetMedium(frame_medium);
305 composite_frameV->
SetMedium(frame_medium);
307 Fatal(
"Main",
"Invalid medium for frames!");
339 composite_frameV->
AddNode(vertical_outer_frameV, 0, left_outer_frame_position);
340 composite_frameV->
AddNode(horizontal_outer_frameV, 0, top_outer_frame_position);
341 composite_frameV->
AddNode(vertical_inner_frameV, 0, right_inner_frame_position);
342 composite_frameV->
AddNode(horizontal_inner_frameV, 0, bottom_inner_frame_position);
344 stationA->
AddNode(moduleV, 0, module_center_position);
345 stationA->
AddNode(composite_frameV, 0, comp_frame_center_position);
351 mother_volume->
AddNode(stationA, 0, station_pos);
380 new TGeoBBox(
"horizontal_inner_frameS",
391 TGeoVolume* vertical_outer_frameV =
new TGeoVolume(
"vertical_outer_frame", vertical_outer_frameS);
392 TGeoVolume* horizontal_outer_frameV =
new TGeoVolume(
"horizontal_outer_frame", horizontal_outer_frameS);
393 TGeoVolume* vertical_inner_frameV =
new TGeoVolume(
"vertical_inner_frame", vertical_inner_frameS);
394 TGeoVolume* horizontal_inner_frameV =
new TGeoVolume(
"horizontal_inner_frame", horizontal_inner_frameS);
403 if (sensitive_medium) {
407 Fatal(
"Main",
"Invalid medium for sensitive modules!");
412 vertical_outer_frameV->
SetMedium(frame_medium);
413 horizontal_outer_frameV->
SetMedium(frame_medium);
414 vertical_inner_frameV->
SetMedium(frame_medium);
415 horizontal_inner_frameV->
SetMedium(frame_medium);
416 composite_frameV->
SetMedium(frame_medium);
418 Fatal(
"Main",
"Invalid medium for frames!");
430 module_center_position->
ReflectY(
true);
454 comp_frame_center_position->
ReflectY(
true);
459 moduleV->
AddNode(hot_zoneV, 0, hot_zone_trans);
461 composite_frameV->
AddNode(vertical_outer_frameV, 0, right_outer_frame_position);
462 composite_frameV->
AddNode(horizontal_outer_frameV, 0, top_outer_frame_position);
463 composite_frameV->
AddNode(vertical_inner_frameV, 0, left_inner_frame_position);
464 composite_frameV->
AddNode(horizontal_inner_frameV, 0, bottom_inner_frame_position);
466 stationA->
AddNode(moduleV, 0, module_center_position);
468 stationA->
AddNode(composite_frameV, 0, comp_frame_center_position);
474 mother_volume->
AddNode(stationA, 0, station_pos);
499 TString part_module_name =
"part_moduleS_" + station_name;
500 TGeoShape* part_moduleS =
new TGeoBBox(part_module_name, XOuterZoneSize * 0.5, YOuterZoneSize * 0.5,
504 TString part_rectangle_inner_zone_name =
"part_rectangle_inner_zoneS_" + station_name;
506 new TGeoBBox(part_rectangle_inner_zone_name, XRectangleZoneSize * 0.5, YRectangleZoneSize * 0.5,
509 TString part_slope_inner_zone_name =
"part_slope_inner_zoneS_" + station_name;
511 part_slope_inner_zoneS->
SetName(part_slope_inner_zone_name);
512 Double_t x_pos[4] = {XMaxSlopeZoneSize * 0.5, XMaxSlopeZoneSize * 0.5 - (XMaxSlopeZoneSize - XMinSlopeZoneSize),
513 -XMaxSlopeZoneSize * 0.5, -XMaxSlopeZoneSize * 0.5};
514 Double_t y_pos[4] = {-YSlopeZoneSize * 0.5, YSlopeZoneSize * 0.5, YSlopeZoneSize * 0.5, -YSlopeZoneSize * 0.5};
520 TString hole_name =
"holeS_" + station_name;
527 TString hole_module_trans_name =
"hole_module_trans_name_" + station_name;
529 new TGeoTranslation(hole_module_trans_name, -XOuterZoneSize * 0.5, -YOuterZoneSize * 0.5, 0);
532 TString hole_rectangle_inner_zone_trans_name =
"hole_rectangle_inner_zone_trans_name_" + station_name;
534 hole_rectangle_inner_zone_trans_name, -XRectangleZoneSize * 0.5, -YRectangleZoneSize * 0.5, 0);
537 TString hole_slope_inner_zone_trans_name =
"hole_slope_inner_zone_trans_name_" + station_name;
539 new TGeoTranslation(hole_slope_inner_zone_trans_name, -XMaxSlopeZoneSize * 0.5, -YSlopeZoneSize * 0.5, 0);
543 TString bool_expression_module = part_module_name +
" - " + hole_name +
":" + hole_module_trans_name;
546 TString bool_expression_rectangle_inner_zone =
547 part_rectangle_inner_zone_name +
" - " + hole_name +
":" + hole_rectangle_inner_zone_trans_name;
550 TString bool_expression_slope_inner_zone =
551 part_slope_inner_zone_name +
" - " + hole_name +
":" + hole_slope_inner_zone_trans_name;
559 TGeoShape* horizontal_long_frameS =
new TGeoBBox(
"horizontal_long_frameS", XOuterZoneSize,
576 TGeoVolume* horizontal_long_frameV =
new TGeoVolume(
"horizontal_long_frame", horizontal_long_frameS);
577 TGeoVolume* horizontal_short_frameV =
new TGeoVolume(
"horizontal_short_frame", horizontal_short_frameS);
583 if (sensitive_medium) {
584 module_with_slope_inner_zoneV->
SetMedium(sensitive_medium);
585 module_with_rect_inner_zoneV->
SetMedium(sensitive_medium);
586 rectangle_inner_zoneV->
SetMedium(sensitive_medium);
587 slope_inner_zoneV->
SetMedium(sensitive_medium);
589 Fatal(
"Main",
"Invalid medium for sensitive modules!");
594 vertical_frameV->
SetMedium(frame_medium);
595 horizontal_long_frameV->
SetMedium(frame_medium);
596 horizontal_short_frameV->
SetMedium(frame_medium);
597 circle_inner_frameV->
SetMedium(frame_medium);
598 composite_frameV->
SetMedium(frame_medium);
600 Fatal(
"Main",
"Invalid medium for frames!");
616 -YOuterZoneSize * 0.5 + YSlopeZoneSize * 0.5, 0);
618 -XOuterZoneSize * 0.5 + XRectangleZoneSize * 0.5, -YOuterZoneSize * 0.5 + YRectangleZoneSize * 0.5, 0);
622 left_module_position->
SetTranslation(XOuterZoneSize * 0.5, 0.0, 0.0);
625 right_module_position->
RotateY(180.0);
626 right_module_position->
SetTranslation(-XOuterZoneSize * 0.5, 0.0, 0.0);
653 module_with_slope_inner_zoneV->
AddNode(slope_inner_zoneV, 0, slope_inner_zone_position);
654 module_with_rect_inner_zoneV->
AddNode(rectangle_inner_zoneV, 0, rect_inner_zone_position);
657 stationA->
AddNode(module_with_rect_inner_zoneV, 0, left_module_position);
658 stationA->
AddNode(module_with_slope_inner_zoneV, 1, right_module_position);
660 stationA->
AddNode(module_with_slope_inner_zoneV, 0, left_module_position);
661 stationA->
AddNode(module_with_rect_inner_zoneV, 1, right_module_position);
665 composite_frameV->
AddNode(vertical_frameV, 0, left_frame_position);
666 composite_frameV->
AddNode(vertical_frameV, 1, right_frame_position);
667 composite_frameV->
AddNode(horizontal_long_frameV, 0, top_long_frame_position);
668 composite_frameV->
AddNode(horizontal_short_frameV, 0, left_bottom_short_frame_position);
669 composite_frameV->
AddNode(horizontal_short_frameV, 1, right_bottom_short_frame_position);
672 stationA->
AddNode(composite_frameV, 0, upper_frame_trans);
679 mother_volume->
AddNode(stationA, 0, station_pos);