184 FairGeoMedium* mAir = geoMedia->getMedium(
"air");
186 Fatal(
"Main",
"FairMedium air not found");
187 geoBuild->createMedium(mAir);
190 Fatal(
"Main",
"Medium air not found");
193 FairGeoMedium* mCarbon = geoMedia->getMedium(
"carbon");
195 Fatal(
"Main",
"FairMedium carbon not found");
196 geoBuild->createMedium(mCarbon);
199 Fatal(
"Main",
"Medium carbon not found");
202 FairGeoMedium* mFiberGlass = geoMedia->getMedium(
"fiberglass");
204 Fatal(
"Main",
"FairMedium fiberglass not found");
205 geoBuild->createMedium(mFiberGlass);
208 Fatal(
"Main",
"Medium fiberglass not found");
211 FairGeoMedium* mCopper = geoMedia->getMedium(
"copper");
213 Fatal(
"Main",
"FairMedium copper not found");
214 geoBuild->createMedium(mCopper);
217 Fatal(
"Main",
"Medium copper not found");
220 FairGeoMedium* mSilicon = geoMedia->getMedium(
"silicon");
222 Fatal(
"Main",
"FairMedium silicon not found");
223 geoBuild->createMedium(mSilicon);
226 Fatal(
"Main",
"Medium silicon not found");
324 const TString geoDetectorName =
"Silicon";
325 const TString geoDetectorVersion =
"RunSpring2018";
326 const TString geoFileName = gPath +
"/geometry/" + geoDetectorName +
"_" + geoDetectorVersion +
".root";
329 FairGeoLoader* geoLoad =
new FairGeoLoader(
"TGeo",
"FairGeoLoader");
330 FairGeoInterface* geoFace = geoLoad->getGeoInterface();
333 TString medFile = gPath +
"/geometry/media.geo";
334 geoFace->setMediaFile(medFile);
335 geoFace->readMedia();
336 FairGeoMedia* geoMedia = geoFace->getMedia();
337 FairGeoBuilder* geoBuild = geoLoad->getGeoBuilder();
348 gGeoMan->SetName(geoDetectorName +
"_geom");
369 for (
Int_t imodule = 0; imodule < NModules; ++imodule) {
377 modTransforms[imodule]->
RotateY(180.0);
384 modTransforms[imodule]->
RotateX(180.0);
409 station->
AddNode(modules[imodule], 0, modTransforms[imodule]);
416 SILICON->AddNode(station, 0, station_transform);
424 gGeoMan->CheckOverlaps(0.0001);
428 TFile* geoFile =
new TFile(geoFileName,
"RECREATE");
451 switch (module_type) {
467 ((
TGeoXtru*)moduleS)->DefinePolygon(5, x_pos, y_pos);
479 ((
TGeoXtru*)moduleS)->DefinePolygon(5, x_pos, y_pos);
485 Error(
"CreateModule()",
"Incorrect module type selected!!!");
494 sensor_zone_upper_part_bevelS->
SetName(
"sensor_zone_upper_part_bevelS");
512 Double_t x_pos_sensor_zone_bevel[5] = {
515 Double_t y_pos_sensor_zone_bevel[5] = {
520 ((
TGeoXtru*)sensor_zone_upper_part_bevelS)->DefinePolygon(5, x_pos_sensor_zone_bevel, y_pos_sensor_zone_bevel);
531 sensor_zone_lower_part_bevelS->
SetName(
"sensor_zone_lower_part_bevelS");
549 Double_t x_pos_sensor_zone_bevel[5] = {
552 Double_t y_pos_sensor_zone_bevel[5] = {
557 ((
TGeoXtru*)sensor_zone_lower_part_bevelS)->DefinePolygon(5, x_pos_sensor_zone_bevel, y_pos_sensor_zone_bevel);
572 Form(
"Sensor_zone_upper_part_rectV_module%d_", iModule) + stationName, sensor_zone_upper_part_rectS);
576 Form(
"Sensor_zone_upper_part_rectV_module%d_", iModule) + stationName, sensor_zone_upper_part_bevelS);
580 Form(
"Sensor_zone_lower_part_rectV_module%d_", iModule) + stationName, sensor_zone_lower_part_rectS);
584 Form(
"Sensor_zone_lower_part_rectV_module%d_", iModule) + stationName, sensor_zone_lower_part_bevelS);
588 if (silicon_medium) {
590 sensor_zone_upper_part_rectV->
SetMedium(silicon_medium);
591 sensor_zone_upper_part_bevelV->
SetMedium(silicon_medium);
592 sensor_zone_lower_part_rectV->
SetMedium(silicon_medium);
593 sensor_zone_lower_part_bevelV->
SetMedium(silicon_medium);
595 Fatal(
"Main",
"Invalid medium for modules and sensor zones!");
605 switch (module_type) {
614 sensor_zone_upper_part_pos->
SetDz(0.0);
621 sensor_zone_lower_part_pos->
SetDz(0.0);
623 moduleV->
AddNode(sensor_zone_upper_part_rectV, 0, sensor_zone_upper_part_pos);
624 moduleV->
AddNode(sensor_zone_lower_part_rectV, 0, sensor_zone_lower_part_pos);
633 sensor_zone_upper_part_pos->
SetDz(0.0);
635 moduleV->
AddNode(sensor_zone_upper_part_rectV, 0, sensor_zone_upper_part_pos);
646 sensor_zone_upper_part_pos->
SetDz(0.0);
650 sensor_zone_lower_part_bevel_pos->
SetDx(0.0);
653 sensor_zone_lower_part_bevel_pos->
SetDz(0.0);
655 moduleV->
AddNode(sensor_zone_upper_part_rectV, 0, sensor_zone_upper_part_pos);
656 moduleV->
AddNode(sensor_zone_lower_part_bevelV, 0, sensor_zone_lower_part_bevel_pos);
664 sensor_zone_upper_part_pos->
SetDx(0);
665 sensor_zone_upper_part_pos->
SetDy(0);
666 sensor_zone_upper_part_pos->
SetDz(0.0);
668 moduleV->
AddNode(sensor_zone_upper_part_bevelV, 0, sensor_zone_upper_part_pos);
673 Error(
"CreateModule()",
"Incorrect module type selected!!!");