2#include "../../gem/BmnGemStripConfiguration.h"
27XStationPositions[0] = BmnGemStripPositions_FirstConfigShort::XStationPositions[0];
28XStationPositions[1] = BmnGemStripPositions_FirstConfigShort::XStationPositions[1];
29XStationPositions[2] = BmnGemStripPositions_FirstConfigShort::XStationPositions[2];
30XStationPositions[3] = BmnGemStripPositions_FirstConfigShort::XStationPositions[3];
31XStationPositions[4] = BmnGemStripPositions_FirstConfigShort::XStationPositions[4];
34YStationPositions[0] = BmnGemStripPositions_FirstConfigShort::YStationPositions[0];
35YStationPositions[1] = BmnGemStripPositions_FirstConfigShort::YStationPositions[1];
36YStationPositions[2] = BmnGemStripPositions_FirstConfigShort::YStationPositions[2];
37YStationPositions[3] = BmnGemStripPositions_FirstConfigShort::YStationPositions[3];
38YStationPositions[4] = BmnGemStripPositions_FirstConfigShort::YStationPositions[4];
41ZStationPositions[0] = BmnGemStripPositions_FirstConfigShort::ZStationPositions[0];
42ZStationPositions[1] = BmnGemStripPositions_FirstConfigShort::ZStationPositions[1];
43ZStationPositions[2] = BmnGemStripPositions_FirstConfigShort::ZStationPositions[2];
44ZStationPositions[3] = BmnGemStripPositions_FirstConfigShort::ZStationPositions[3];
45ZStationPositions[4] = BmnGemStripPositions_FirstConfigShort::ZStationPositions[4];
75 FairGeoMedium* mAir = geoMedia->getMedium(
"air");
77 Fatal(
"Main",
"FairMedium air not found");
78 geoBuild->createMedium(mAir);
81 Fatal(
"Main",
"Medium air not found");
84 FairGeoMedium* mCarbon = geoMedia->getMedium(
"carbon");
86 Fatal(
"Main",
"FairMedium carbon not found");
87 geoBuild->createMedium(mCarbon);
90 Fatal(
"Main",
"Medium carbon not found");
93 FairGeoMedium* mFiberGlass = geoMedia->getMedium(
"fiberglass");
95 Fatal(
"Main",
"FairMedium fiberglass not found");
96 geoBuild->createMedium(mFiberGlass);
99 Fatal(
"Main",
"Medium fiberglass not found");
102 FairGeoMedium* mArCO27030 = geoMedia->getMedium(
"arco27030");
104 Fatal(
"Main",
"FairMedium arco27030 not found");
105 geoBuild->createMedium(mArCO27030);
108 Fatal(
"Main",
"Medium arco27030 not found");
115 gROOT->LoadMacro(
"$VMCWORKDIR/macro/run/bmnloadlibs.C");
122 const TString geoDetectorName =
"GEMS";
123 const TString geoDetectorVersion =
"1stConfigShort";
124 const TString geoFileName = gPath +
"/geometry/" + geoDetectorName +
"_" + geoDetectorVersion +
".root";
127 FairGeoLoader* geoLoad =
new FairGeoLoader(
"TGeo",
"FairGeoLoader");
128 FairGeoInterface* geoFace = geoLoad->getGeoInterface();
131 TString medFile = gPath +
"/geometry/media.geo";
132 geoFace->setMediaFile(medFile);
133 geoFace->readMedia();
134 FairGeoMedia* geoMedia = geoFace->getMedia();
135 FairGeoBuilder* geoBuild = geoLoad->getGeoBuilder();
142 gGeoMan->SetName(geoDetectorName +
"_geom");
171 gGeoMan->CheckOverlaps(0.0001);
175 TFile* geoFile =
new TFile(geoFileName,
"RECREATE");
227 TGeoVolume* vertical_outer_frameV =
new TGeoVolume(
"vertical_outer_frame", vertical_outer_frameS);
228 TGeoVolume* horizontal_outer_frameV =
new TGeoVolume(
"horizontal_outer_frame", horizontal_outer_frameS);
229 TGeoVolume* vertical_inner_frameV =
new TGeoVolume(
"vertical_inner_frame", vertical_inner_frameS);
230 TGeoVolume* horizontal_inner_frameV =
new TGeoVolume(
"horizontal_inner_frame", horizontal_inner_frameS);
239 if (sensitive_medium) {
243 Fatal(
"Main",
"Invalid medium for sensitive modules!");
248 vertical_outer_frameV->
SetMedium(frame_medium);
249 horizontal_outer_frameV->
SetMedium(frame_medium);
250 vertical_inner_frameV->
SetMedium(frame_medium);
251 horizontal_inner_frameV->
SetMedium(frame_medium);
252 composite_frameV->
SetMedium(frame_medium);
254 Fatal(
"Main",
"Invalid medium for frames!");
265 module_center_position->
ReflectX(
true);
267 module_center_position->
ReflectY(
true);
292 comp_frame_center_position->
ReflectX(
true);
294 comp_frame_center_position->
ReflectY(
true);
299 moduleV->
AddNode(hot_zoneV, 0, hot_zone_trans);
301 composite_frameV->
AddNode(vertical_outer_frameV, 0, left_outer_frame_position);
302 composite_frameV->
AddNode(horizontal_outer_frameV, 0, top_outer_frame_position);
303 composite_frameV->
AddNode(vertical_inner_frameV, 0, right_inner_frame_position);
304 composite_frameV->
AddNode(horizontal_inner_frameV, 0, bottom_inner_frame_position);
306 stationA->
AddNode(moduleV, 0, module_center_position);
308 stationA->
AddNode(composite_frameV, 0, comp_frame_center_position);
314 mother_volume->
AddNode(stationA, 0, station_pos);
void Fatal(const char *location, const char *msgfmt,...)
R__EXTERN TGeoManager * gGeoManager
R__EXTERN TSystem * gSystem
static Int_t GetColor(const char *hexcolor)
void Close(Option_t *option="") override
void ReflectX(Bool_t leftside, Bool_t rotonly=kFALSE) override
void SetTranslation(const TGeoTranslation &tr)
void ReflectY(Bool_t leftside, Bool_t rotonly=kFALSE) override
void SetVisContainers(Bool_t flag=kTRUE) override
virtual TGeoNode * AddNode(TGeoVolume *vol, Int_t copy_no, TGeoMatrix *mat=nullptr, Option_t *option="")
void Draw(Option_t *option="") override
void SetTransparency(Char_t transparency=0)
virtual void SetMedium(TGeoMedium *medium)
void SetLineColor(Color_t lcolor) override
virtual Int_t Write(const char *name=nullptr, Int_t option=0, Int_t bufsize=0)
TGeoMedium * pMedArCO27030
TGeoMedium * pMedFiberGlass
const Double_t dXOuterFrame
const Double_t dZSensitiveVolume
const Double_t dXInnerFrame
const Double_t dYOuterFrame
const Double_t dYInnerFrame
void CreateStation_One66x41Plane(TGeoVolume *mother_volume, TString station_name, Double_t x_position, Double_t y_position, Double_t z_position, Bool_t IsInverted)
void create_rootgeom_GEMS_1stConfigShort()
void DefineRequiredMedia(FairGeoMedia *geoMedia, FairGeoBuilder *geoBuild)
const Double_t XModuleSize_StationPrototype
const Double_t XHotZoneSize_StationPrototype
const Double_t YHotZoneSize_StationPrototype
const Double_t YModuleSize_StationPrototype