550 const TString geoDetectorName =
"Silicon";
551 const TString geoDetectorVersion =
"Run8";
552 const TString geoFileName = gPath +
"/geometry/" + geoDetectorName +
"_" + geoDetectorVersion +
".root";
555 FairGeoLoader* geoLoad =
new FairGeoLoader(
"TGeo",
"FairGeoLoader");
556 FairGeoInterface* geoFace = geoLoad->getGeoInterface();
559 TString medFile = gPath +
"/geometry/media.geo";
560 geoFace->setMediaFile(medFile);
561 geoFace->readMedia();
562 FairGeoMedia* geoMedia = geoFace->getMedia();
563 FairGeoBuilder* geoBuild = geoLoad->getGeoBuilder();
574 gGeoMan->SetName(geoDetectorName +
"_geom");
602 for (
Int_t imodule = 0; imodule < NModules; ++imodule) {
610 modTransforms[imodule]->
RotateY(180.0);
619 modTransforms[imodule]->
RotateX(180.0);
647 modTransforms[imodule]->
SetDx(modTransforms[imodule]->GetTranslation()[0] -
x_shift_hp[istation]);
648 modTransforms[imodule]->
SetDy(modTransforms[imodule]->GetTranslation()[1] -
y_shift_hp[istation]);
649 modTransforms[imodule]->
SetDz(modTransforms[imodule]->GetTranslation()[2] -
z_shift_hp[istation]);
653 modTransforms[imodule]->
SetDx(modTransforms[imodule]->GetTranslation()[0] +
x_shift_hp[istation]);
654 modTransforms[imodule]->
SetDy(modTransforms[imodule]->GetTranslation()[1] +
y_shift_hp[istation]);
655 modTransforms[imodule]->
SetDz(modTransforms[imodule]->GetTranslation()[2] +
z_shift_hp[istation]);
661 station->
AddNode(modules[imodule], 0, modTransforms[imodule]);
668 SILICON->AddNode(station, 0, station_transform);
676 gGeoMan->CheckOverlaps(0.0001);
680 TFile* geoFile =
new TFile(geoFileName,
"RECREATE");
703 switch (module_type) {
723 ((
TGeoXtru*)moduleS)->DefinePolygon(5, x_pos, y_pos);
737 ((
TGeoXtru*)moduleS)->DefinePolygon(5, x_pos, y_pos);
743 Error(
"CreateModule()",
"Incorrect module type selected!!!");
753 sensor_zone_upper_part_bevelS->
SetName(
TString(
"sensor_zone_upper_part_bevelS") +
TString(
"_") + module_name);
767 Double_t x_delta_bottom_BP = (y_delta_bottom_BP - (
YBevelSize[module_size] + y_delta))
774 +
XModuleSize[module_size] * 0.5 - x_delta_bottom_BP,
776 Double_t y_pos_sensor_zone_bevel[5] = {
783 ((
TGeoXtru*)sensor_zone_upper_part_bevelS)->DefinePolygon(5, x_pos_sensor_zone_bevel, y_pos_sensor_zone_bevel);
784 ((
TGeoXtru*)sensor_zone_upper_part_bevelS)->DefineSection(0, -
ZModuleSize[module_size] * 0.5);
785 ((
TGeoXtru*)sensor_zone_upper_part_bevelS)->DefineSection(1, +
ZModuleSize[module_size] * 0.5);
795 sensor_zone_lower_part_bevelS->
SetName(
TString(
"sensor_zone_lower_part_bevelS") +
TString(
"_") + module_name);
809 Double_t x_delta_bottom_BP = (y_delta_bottom_BP - (
YBevelSize[module_size] + y_delta))
816 +
XModuleSize[module_size] * 0.5 - x_delta_bottom_BP,
818 Double_t y_pos_sensor_zone_bevel[5] = {
825 ((
TGeoXtru*)sensor_zone_lower_part_bevelS)->DefinePolygon(5, x_pos_sensor_zone_bevel, y_pos_sensor_zone_bevel);
826 ((
TGeoXtru*)sensor_zone_lower_part_bevelS)->DefineSection(0, -
ZModuleSize[module_size] * 0.5);
827 ((
TGeoXtru*)sensor_zone_lower_part_bevelS)->DefineSection(1, +
ZModuleSize[module_size] * 0.5);
838 TString(
"Sensor_zone_upper_part_rectV") +
TString(
"_") + module_name, sensor_zone_upper_part_rectS);
842 TString(
"Sensor_zone_upper_part_bevelV") +
TString(
"_") + module_name, sensor_zone_upper_part_bevelS);
846 TString(
"Sensor_zone_lower_part_rectV") +
TString(
"_") + module_name, sensor_zone_lower_part_rectS);
850 TString(
"Sensor_zone_lower_part_bevelV") +
TString(
"_") + module_name, sensor_zone_lower_part_bevelS);
854 if (silicon_medium) {
856 sensor_zone_upper_part_rectV->
SetMedium(silicon_medium);
857 sensor_zone_upper_part_bevelV->
SetMedium(silicon_medium);
858 sensor_zone_lower_part_rectV->
SetMedium(silicon_medium);
859 sensor_zone_lower_part_bevelV->
SetMedium(silicon_medium);
861 Fatal(
"Main",
"Invalid medium for modules and sensor zones!");
871 switch (module_type) {
879 sensor_zone_upper_part_pos->
SetDy(
882 sensor_zone_upper_part_pos->
SetDz(0.0);
888 sensor_zone_lower_part_pos->
SetDy(
891 sensor_zone_lower_part_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_rectV, 0, sensor_zone_lower_part_pos);
905 sensor_zone_upper_part_pos->
SetDz(0.0);
907 moduleV->
AddNode(sensor_zone_upper_part_rectV, 0, sensor_zone_upper_part_pos);
917 sensor_zone_upper_part_pos->
SetDy(
920 sensor_zone_upper_part_pos->
SetDz(0.0);
924 sensor_zone_lower_part_bevel_pos->
SetDx(0.0);
928 sensor_zone_lower_part_bevel_pos->
SetDz(0.0);
930 moduleV->
AddNode(sensor_zone_upper_part_rectV, 0, sensor_zone_upper_part_pos);
931 moduleV->
AddNode(sensor_zone_lower_part_bevelV, 0, sensor_zone_lower_part_bevel_pos);
939 sensor_zone_upper_part_pos->
SetDx(0);
940 sensor_zone_upper_part_pos->
SetDy(0);
941 sensor_zone_upper_part_pos->
SetDz(0.0);
943 moduleV->
AddNode(sensor_zone_upper_part_bevelV, 0, sensor_zone_upper_part_pos);
948 Error(
"CreateModule()",
"Incorrect module type selected!!!");