163 {2.68835e-01, 2.39831e-01, 2.52506e-01, 2.05206e-01, 2.11052e-01, 0.20737190},
164 {3.15120e-01, 2.74671e-01, 2.55372e-01, 2.83446e-01, 2.79317e-01, 3.48623e-01, 3.18654e-01, 3.00181e-01,
165 3.16157e-01, 3.80363e-01},
166 {1.65037e-01, 2.71806e-01, 2.66914e-01, 2.40166e-01, 2.59614e-01, 2.66288e-01, 2.83516e-01, 2.88311e-01,
167 2.61280e-01, 3.02609e-01, 2.96469e-01, 2.98769e-01, 2.66650e-01, 3.72627e-01},
168 {3.01013e-01, 3.62381e-01, 3.03249e-01, 3.06502e-01, 2.75747e-01, 2.95530e-01, 3.05152e-01, 3.42706e-01,
169 3.09787e-01, 2.24795e-01, 2.31845e-01, 2.59297e-01, 2.17342e-01, 2.20424e-01, 2.06861e-01, 2.49563e-01,
170 2.64846e-01, 2.02358e-01}};
173 {-0.272688, -0.300649, -0.343639, -0.313878, -0.331129, -0.299529},
174 {-0.342847, -0.343267, -0.328436, -0.354188, -0.332445, -0.349645, -0.332025, -0.294098, -0.249696, -0.217585},
175 {-0.398784, -0.342968, -0.325462, -0.325316, -0.338778, -0.338966, -0.324549, -0.339105, -0.314266, -0.301756,
176 -0.288295, -0.272864, -0.272913, -0.21294},
177 {-0.269827, -0.227419, -0.295412, -0.274608, -0.322856, -0.33417, -0.361013, -0.397192, -0.368905, -0.217688,
178 -0.240085, -0.266281, -0.285738, -0.269306, -0.292405, -0.297714, -0.323987, -0.379705}};
181 {-0.4, -0.3, -0.23, -0.27, -0.3, -0.23},
182 {-0.5, -0.4, -0.4, -0.28, -0.25, -0.45, -0.45, -0.3, -0.23, -0.2},
183 {-0.3, -0.5, -0.45, -0.4, -0.3, -0.2, -0.2, -0.25, -0.2, -0.3, -0.3, -0.4, -0.5, -0.27},
184 {-0.5, -0.6, -0.4, -0.5, -0.3, -0.35, -0.2, -0.1, -0.4, -0.6, -0.6, -0.6, -0.5, -0.35, -0.2, -0.1, 0.1, 0.}};
633 const TString geoDetectorName =
"Silicon";
634 const TString geoDetectorVersion =
"Run8_aligned";
635 const TString geoFileName = gPath +
"/geometry/" + geoDetectorName +
"_" + geoDetectorVersion +
".root";
638 FairGeoLoader* geoLoad =
new FairGeoLoader(
"TGeo",
"FairGeoLoader");
639 FairGeoInterface* geoFace = geoLoad->getGeoInterface();
642 TString medFile = gPath +
"/geometry/media.geo";
643 geoFace->setMediaFile(medFile);
644 geoFace->readMedia();
645 FairGeoMedia* geoMedia = geoFace->getMedia();
646 FairGeoBuilder* geoBuild = geoLoad->getGeoBuilder();
657 gGeoMan->SetName(geoDetectorName +
"_geom");
685 for (
Int_t imodule = 0; imodule < NModules; ++imodule) {
698 modTransforms[imodule]->
RotateY(180.0);
707 modTransforms[imodule]->
RotateX(180.0);
735 modTransforms[imodule]->
SetDx(modTransforms[imodule]->GetTranslation()[0] -
x_shift_hp[istation]);
736 modTransforms[imodule]->
SetDy(modTransforms[imodule]->GetTranslation()[1] -
y_shift_hp[istation]);
737 modTransforms[imodule]->
SetDz(modTransforms[imodule]->GetTranslation()[2] -
z_shift_hp[istation]);
741 modTransforms[imodule]->
SetDx(modTransforms[imodule]->GetTranslation()[0] +
x_shift_hp[istation]);
742 modTransforms[imodule]->
SetDy(modTransforms[imodule]->GetTranslation()[1] +
y_shift_hp[istation]);
743 modTransforms[imodule]->
SetDz(modTransforms[imodule]->GetTranslation()[2] +
z_shift_hp[istation]);
749 cout <<
"station = " << istation <<
"\n";
750 cout <<
"module = " << imodule <<
"\n";
751 cout <<
" modTransforms[imodule]->GetTranslation()[2] = " << modTransforms[imodule]->
GetTranslation()[2]
753 cout <<
" ZStationPositions[istation] = " <<
ZStationPositions[istation] <<
"\n";
754 station->
AddNode(modules[imodule], 0, modTransforms[imodule]);
761 SILICON->AddNode(station, 0, station_transform);
769 gGeoMan->CheckOverlaps(0.0001);
773 TFile* geoFile =
new TFile(geoFileName,
"RECREATE");
796 switch (module_type) {
816 ((
TGeoXtru*)moduleS)->DefinePolygon(5, x_pos, y_pos);
830 ((
TGeoXtru*)moduleS)->DefinePolygon(5, x_pos, y_pos);
836 Error(
"CreateModule()",
"Incorrect module type selected!!!");
840 TGeoShape* sensor_zone_upper_part_rectS =
846 sensor_zone_upper_part_bevelS->
SetName(
"sensor_zone_upper_part_bevelS");
860 Double_t x_delta_bottom_BP = (y_delta_bottom_BP - (
YBevelSize[module_size] + y_delta))
867 +
XModuleSize[module_size] * 0.5 - x_delta_bottom_BP,
869 Double_t y_pos_sensor_zone_bevel[5] = {
876 ((
TGeoXtru*)sensor_zone_upper_part_bevelS)->DefinePolygon(5, x_pos_sensor_zone_bevel, y_pos_sensor_zone_bevel);
877 ((
TGeoXtru*)sensor_zone_upper_part_bevelS)->DefineSection(0, -
ZModuleSize[module_size] * 0.5);
878 ((
TGeoXtru*)sensor_zone_upper_part_bevelS)->DefineSection(1, +
ZModuleSize[module_size] * 0.5);
882 TGeoShape* sensor_zone_lower_part_rectS =
888 sensor_zone_lower_part_bevelS->
SetName(
"sensor_zone_lower_part_bevelS");
902 Double_t x_delta_bottom_BP = (y_delta_bottom_BP - (
YBevelSize[module_size] + y_delta))
909 +
XModuleSize[module_size] * 0.5 - x_delta_bottom_BP,
911 Double_t y_pos_sensor_zone_bevel[5] = {
918 ((
TGeoXtru*)sensor_zone_lower_part_bevelS)->DefinePolygon(5, x_pos_sensor_zone_bevel, y_pos_sensor_zone_bevel);
919 ((
TGeoXtru*)sensor_zone_lower_part_bevelS)->DefineSection(0, -
ZModuleSize[module_size] * 0.5);
920 ((
TGeoXtru*)sensor_zone_lower_part_bevelS)->DefineSection(1, +
ZModuleSize[module_size] * 0.5);
933 new TGeoVolume(
"Sensor_zone_upper_part_rectV", sensor_zone_upper_part_rectS);
937 new TGeoVolume(
"Sensor_zone_upper_part_bevelV", sensor_zone_upper_part_bevelS);
941 new TGeoVolume(
"Sensor_zone_lower_part_rectV", sensor_zone_lower_part_rectS);
945 new TGeoVolume(
"Sensor_zone_lower_part_bevelV", sensor_zone_lower_part_bevelS);
949 if (silicon_medium) {
951 sensor_zone_upper_part_rectV->
SetMedium(silicon_medium);
952 sensor_zone_upper_part_bevelV->
SetMedium(silicon_medium);
953 sensor_zone_lower_part_rectV->
SetMedium(silicon_medium);
954 sensor_zone_lower_part_bevelV->
SetMedium(silicon_medium);
956 Fatal(
"Main",
"Invalid medium for modules and sensor zones!");
966 switch (module_type) {
974 sensor_zone_upper_part_pos->
SetDy(
977 sensor_zone_upper_part_pos->
SetDz(0.0);
983 sensor_zone_lower_part_pos->
SetDy(
986 sensor_zone_lower_part_pos->
SetDz(0.0);
988 moduleV->
AddNode(sensor_zone_upper_part_rectV, 0, sensor_zone_upper_part_pos);
989 moduleV->
AddNode(sensor_zone_lower_part_rectV, 0, sensor_zone_lower_part_pos);
1000 sensor_zone_upper_part_pos->
SetDz(0.0);
1002 moduleV->
AddNode(sensor_zone_upper_part_rectV, 0, sensor_zone_upper_part_pos);
1012 sensor_zone_upper_part_pos->
SetDy(
1015 sensor_zone_upper_part_pos->
SetDz(0.0);
1019 sensor_zone_lower_part_bevel_pos->
SetDx(0.0);
1023 sensor_zone_lower_part_bevel_pos->
SetDz(0.0);
1025 moduleV->
AddNode(sensor_zone_upper_part_rectV, 0, sensor_zone_upper_part_pos);
1026 moduleV->
AddNode(sensor_zone_lower_part_bevelV, 0, sensor_zone_lower_part_bevel_pos);
1034 sensor_zone_upper_part_pos->
SetDx(0);
1035 sensor_zone_upper_part_pos->
SetDy(0);
1036 sensor_zone_upper_part_pos->
SetDz(0.0);
1038 moduleV->
AddNode(sensor_zone_upper_part_bevelV, 0, sensor_zone_upper_part_pos);
1043 Error(
"CreateModule()",
"Incorrect module type selected!!!");