586 const TString geoDetectorName =
"Silicon";
587 const TString geoDetectorVersion =
"Run9";
588 const TString geoFileName = gPath +
"/geometry/" + geoDetectorName +
"_" + geoDetectorVersion +
".root";
591 FairGeoLoader* geoLoad =
new FairGeoLoader(
"TGeo",
"FairGeoLoader");
592 FairGeoInterface* geoFace = geoLoad->getGeoInterface();
595 TString medFile = gPath +
"/geometry/media.geo";
596 geoFace->setMediaFile(medFile);
597 geoFace->readMedia();
598 FairGeoMedia* geoMedia = geoFace->getMedia();
599 FairGeoBuilder* geoBuild = geoLoad->getGeoBuilder();
610 gGeoMan->SetName(geoDetectorName +
"_geom");
638 for (
Int_t imodule = 0; imodule < NModules; ++imodule) {
646 modTransforms[imodule]->
RotateY(180.0);
655 modTransforms[imodule]->
RotateX(180.0);
683 modTransforms[imodule]->
SetDx(modTransforms[imodule]->GetTranslation()[0] -
x_shift_hp[istation]);
684 modTransforms[imodule]->
SetDy(modTransforms[imodule]->GetTranslation()[1] -
y_shift_hp[istation]);
685 modTransforms[imodule]->
SetDz(modTransforms[imodule]->GetTranslation()[2] -
z_shift_hp[istation]);
689 modTransforms[imodule]->
SetDx(modTransforms[imodule]->GetTranslation()[0] +
x_shift_hp[istation]);
690 modTransforms[imodule]->
SetDy(modTransforms[imodule]->GetTranslation()[1] +
y_shift_hp[istation]);
691 modTransforms[imodule]->
SetDz(modTransforms[imodule]->GetTranslation()[2] +
z_shift_hp[istation]);
697 station->
AddNode(modules[imodule], 0, modTransforms[imodule]);
704 SILICON->AddNode(station, 0, station_transform);
712 gGeoMan->CheckOverlaps(0.0001);
716 TFile* geoFile =
new TFile(geoFileName,
"RECREATE");
739 switch (module_type) {
759 ((
TGeoXtru*)moduleS)->DefinePolygon(5, x_pos, y_pos);
773 ((
TGeoXtru*)moduleS)->DefinePolygon(5, x_pos, y_pos);
779 Error(
"CreateModule()",
"Incorrect module type selected!!!");
789 sensor_zone_upper_part_bevelS->
SetName(
TString(
"sensor_zone_upper_part_bevelS") +
TString(
"_") + module_name);
803 Double_t x_delta_bottom_BP = (y_delta_bottom_BP - (
YBevelSize[module_size] + y_delta))
810 +
XModuleSize[module_size] * 0.5 - x_delta_bottom_BP,
812 Double_t y_pos_sensor_zone_bevel[5] = {
819 ((
TGeoXtru*)sensor_zone_upper_part_bevelS)->DefinePolygon(5, x_pos_sensor_zone_bevel, y_pos_sensor_zone_bevel);
820 ((
TGeoXtru*)sensor_zone_upper_part_bevelS)->DefineSection(0, -
ZModuleSize[module_size] * 0.5);
821 ((
TGeoXtru*)sensor_zone_upper_part_bevelS)->DefineSection(1, +
ZModuleSize[module_size] * 0.5);
831 sensor_zone_lower_part_bevelS->
SetName(
TString(
"sensor_zone_lower_part_bevelS") +
TString(
"_") + module_name);
845 Double_t x_delta_bottom_BP = (y_delta_bottom_BP - (
YBevelSize[module_size] + y_delta))
852 +
XModuleSize[module_size] * 0.5 - x_delta_bottom_BP,
854 Double_t y_pos_sensor_zone_bevel[5] = {
861 ((
TGeoXtru*)sensor_zone_lower_part_bevelS)->DefinePolygon(5, x_pos_sensor_zone_bevel, y_pos_sensor_zone_bevel);
862 ((
TGeoXtru*)sensor_zone_lower_part_bevelS)->DefineSection(0, -
ZModuleSize[module_size] * 0.5);
863 ((
TGeoXtru*)sensor_zone_lower_part_bevelS)->DefineSection(1, +
ZModuleSize[module_size] * 0.5);
874 TString(
"Sensor_zone_upper_part_rectV") +
TString(
"_") + module_name, sensor_zone_upper_part_rectS);
878 TString(
"Sensor_zone_upper_part_bevelV") +
TString(
"_") + module_name, sensor_zone_upper_part_bevelS);
882 TString(
"Sensor_zone_lower_part_rectV") +
TString(
"_") + module_name, sensor_zone_lower_part_rectS);
886 TString(
"Sensor_zone_lower_part_bevelV") +
TString(
"_") + module_name, sensor_zone_lower_part_bevelS);
890 if (silicon_medium) {
892 sensor_zone_upper_part_rectV->
SetMedium(silicon_medium);
893 sensor_zone_upper_part_bevelV->
SetMedium(silicon_medium);
894 sensor_zone_lower_part_rectV->
SetMedium(silicon_medium);
895 sensor_zone_lower_part_bevelV->
SetMedium(silicon_medium);
897 Fatal(
"Main",
"Invalid medium for modules and sensor zones!");
907 switch (module_type) {
915 sensor_zone_upper_part_pos->
SetDy(
918 sensor_zone_upper_part_pos->
SetDz(0.0);
924 sensor_zone_lower_part_pos->
SetDy(
927 sensor_zone_lower_part_pos->
SetDz(0.0);
929 moduleV->
AddNode(sensor_zone_upper_part_rectV, 0, sensor_zone_upper_part_pos);
930 moduleV->
AddNode(sensor_zone_lower_part_rectV, 0, sensor_zone_lower_part_pos);
941 sensor_zone_upper_part_pos->
SetDz(0.0);
943 moduleV->
AddNode(sensor_zone_upper_part_rectV, 0, sensor_zone_upper_part_pos);
953 sensor_zone_upper_part_pos->
SetDy(
956 sensor_zone_upper_part_pos->
SetDz(0.0);
960 sensor_zone_lower_part_bevel_pos->
SetDx(0.0);
964 sensor_zone_lower_part_bevel_pos->
SetDz(0.0);
966 moduleV->
AddNode(sensor_zone_upper_part_rectV, 0, sensor_zone_upper_part_pos);
967 moduleV->
AddNode(sensor_zone_lower_part_bevelV, 0, sensor_zone_lower_part_bevel_pos);
975 sensor_zone_upper_part_pos->
SetDx(0);
976 sensor_zone_upper_part_pos->
SetDy(0);
977 sensor_zone_upper_part_pos->
SetDz(0.0);
979 moduleV->
AddNode(sensor_zone_upper_part_bevelV, 0, sensor_zone_upper_part_pos);
984 Error(
"CreateModule()",
"Incorrect module type selected!!!");