207 FairGeoMedium* mAir = geoMedia->getMedium(
"air");
209 Fatal(
"Main",
"FairMedium air not found");
210 geoBuild->createMedium(mAir);
213 Fatal(
"Main",
"Medium air not found");
216 FairGeoMedium* mCarbon = geoMedia->getMedium(
"carbon");
218 Fatal(
"Main",
"FairMedium carbon not found");
219 geoBuild->createMedium(mCarbon);
222 Fatal(
"Main",
"Medium carbon not found");
225 FairGeoMedium* mFiberGlass = geoMedia->getMedium(
"fiberglass");
227 Fatal(
"Main",
"FairMedium fiberglass not found");
228 geoBuild->createMedium(mFiberGlass);
231 Fatal(
"Main",
"Medium fiberglass not found");
234 FairGeoMedium* mCopper = geoMedia->getMedium(
"copper");
236 Fatal(
"Main",
"FairMedium copper not found");
237 geoBuild->createMedium(mCopper);
240 Fatal(
"Main",
"Medium copper not found");
243 FairGeoMedium* mSilicon = geoMedia->getMedium(
"silicon");
245 Fatal(
"Main",
"FairMedium silicon not found");
246 geoBuild->createMedium(mSilicon);
249 Fatal(
"Main",
"Medium silicon not found");
381 switch (module_type) {
393 ((
TGeoXtru*)moduleS)->DefinePolygon(5, x_pos, y_pos);
399 Error(
"CreateSiliconModule",
"Incorrect module type selected!!!");
412 sensor_zone_lower_part_bevelS->
SetName(
"sensor_zone_lower_part_bevelS");
432 Double_t y_pos_sensor_zone_bevel[5] = {
437 ((
TGeoXtru*)sensor_zone_lower_part_bevelS)->DefinePolygon(5, x_pos_sensor_zone_bevel, y_pos_sensor_zone_bevel);
443 switch (module_type) {
456 ((
TGeoXtru*)frameS)->DefinePolygon(5, x_pos, y_pos);
462 Error(
"CreateSiliconModule",
"Incorrect module type selected!!!");
476 lower_window_bevel_frameS->
SetName(
TString(
"lower_window_bevel_frameS") += module_num);
477 ((
TGeoXtru*)lower_window_bevel_frameS)->DefinePolygon(5, x_pos_sensor_zone_bevel, y_pos_sensor_zone_bevel);
482 upper_window_frame_pos->
SetName(
TString(
"upper_window_frame_pos") += module_num);
486 upper_window_frame_pos->
SetDz(0.0);
490 lower_window_rect_frame_pos->
SetName(
TString(
"lower_window_rect_frame_pos") += module_num);
494 lower_window_rect_frame_pos->
SetDz(0.0);
498 lower_window_bevel_frame_pos->
SetName(
TString(
"lower_window_bevel_frame_pos") += module_num);
499 lower_window_bevel_frame_pos->
SetDx(0.0);
502 lower_window_bevel_frame_pos->
SetDz(0.0);
506 frame_with_windowsS->
SetName(
"frame_with_windowsS");
508 switch (module_type) {
510 TString expression =
"(frameS";
511 expression += module_num;
512 expression +=
"-upper_window_frameS";
513 expression += module_num;
514 expression +=
":upper_window_frame_pos";
515 expression += module_num;
516 expression +=
")-lower_window_rect_frameS";
517 expression += module_num;
518 expression +=
":lower_window_rect_frame_pos";
519 expression += module_num;
520 frame_with_windowsS->
MakeNode(expression);
524 TString expression =
"(frameS";
525 expression += module_num;
526 expression +=
"-upper_window_frameS";
527 expression += module_num;
528 expression +=
":upper_window_frame_pos";
529 expression += module_num;
530 expression +=
")-lower_window_bevel_frameS";
531 expression += module_num;
532 expression +=
":lower_window_bevel_frame_pos";
533 expression += module_num;
534 frame_with_windowsS->
MakeNode(expression);
538 Error(
"CreateSiliconModule",
"Incorrect module type selected!!!");
545 TString module_name =
"moduleV_";
546 module_name += module_num;
552 TGeoVolume* sensor_zone_upper_partV =
new TGeoVolume(
"Sensor_zone_upper_partV", sensor_zone_upper_partS);
556 new TGeoVolume(
"Sensor_zone_lower_part_rectV", sensor_zone_lower_part_rectS);
560 new TGeoVolume(
"Sensor_zone_lower_part_bevelV", sensor_zone_lower_part_bevelS);
574 if (silicon_medium) {
576 sensor_zone_upper_partV->
SetMedium(silicon_medium);
577 sensor_zone_lower_part_rectV->
SetMedium(silicon_medium);
578 sensor_zone_lower_part_bevelV->
SetMedium(silicon_medium);
580 Fatal(
"Main",
"Invalid medium for modules and sensor zones!");
586 Fatal(
"Main",
"Invalid medium for module frame!");
594 sensor_zone_upper_part_pos->
SetDz(0.0);
601 sensor_zone_lower_part_rect_pos->
SetDz(0.0);
605 sensor_zone_lower_part_bevel_pos->
SetDx(0.0);
608 sensor_zone_lower_part_bevel_pos->
SetDz(0.0);
611 moduleV->
AddNode(sensor_zone_upper_partV, 0, sensor_zone_upper_part_pos);
613 switch (module_type) {
615 moduleV->
AddNode(sensor_zone_lower_part_rectV, 0, sensor_zone_lower_part_rect_pos);
619 moduleV->
AddNode(sensor_zone_lower_part_bevelV, 0, sensor_zone_lower_part_bevel_pos);
623 Error(
"CreateSiliconModule",
"Incorrect module type selected!!!");
635 if (y_module_rotated)
636 module_orientation->
RotateY(180.0);
637 if (x_module_rotated)
638 module_orientation->
RotateX(180.0);
640 if (y_module_rotated) {
646 if (x_module_rotated) {
652 module_orientation->
SetDz(z_module_pos + z_module_shift);
658 if (y_module_rotated)
659 frame_orientation->
RotateY(180.0);
660 if (x_module_rotated)
661 frame_orientation->
RotateX(180.0);
663 if (y_module_rotated) {
669 if (x_module_rotated) {
675 if (y_module_rotated != x_module_rotated) {
682 mother_volume->
AddNode(moduleV, module_num, module_orientation);
683 mother_volume->
AddNode(frameV, module_num, frame_orientation);