17 +6.337 , +8.189 , +9.893 , +50.494 };
19 -0.003 , +0.0245 , +0.022 , -0.186 };
21 +185.989 , +217.287 , +248.401 , +792.532 };
25 {163.2 * 0.25, -163.2 * 0.25, 163.2 * 0.25, -163.2 * 0.25},
26 {163.2 * 0.25, -163.2 * 0.25, 163.2 * 0.25, -163.2 * 0.25},
27 {163.2 * 0.25, -163.2 * 0.25, 163.2 * 0.25, -163.2 * 0.25},
28 {163.2 * 0.25, -163.2 * 0.25, 163.2 * 0.25, -163.2 * 0.25},
29 {163.2 * 0.25, -163.2 * 0.25, 163.2 * 0.25, -163.2 * 0.25},
30 {163.2 * 0.25, -163.2 * 0.25, 163.2 * 0.25, -163.2 * 0.25},
31 {163.2 * 0.25, -163.2 * 0.25, 163.2 * 0.25, -163.2 * 0.25},
35 {+22.5, +22.5, -19.5, -19.5},
36 {+22.5, +22.5, -19.5, -19.5},
37 {+22.5, +22.5, -19.5, -19.5},
38 {+22.5, +22.5, -19.5, -19.5},
39 {+22.5, +22.5, -19.5, -19.5},
40 {+22.5, +22.5, -19.5, -19.5},
41 {+22.5, +22.5, -19.5, -19.5},
45 {+4.1, +4.1, 0.0, 0.0},
46 {0.0, 0.0, +4.1, +4.1},
47 {+4.1, +4.1, 0.0, 0.0},
48 {0.0, 0.0, +4.1, +4.1},
49 {+4.1, +4.1, 0.0, 0.0},
50 {0.0, 0.0, +4.1, +4.1},
51 {+4.1, +4.1, 0.0, 0.0},
144 FairGeoMedium* mAir = geoMedia->getMedium(
"air");
146 Fatal(
"Main",
"FairMedium air not found");
147 geoBuild->createMedium(mAir);
150 Fatal(
"Main",
"Medium air not found");
153 FairGeoMedium* mCarbon = geoMedia->getMedium(
"carbon");
155 Fatal(
"Main",
"FairMedium carbon not found");
156 geoBuild->createMedium(mCarbon);
159 Fatal(
"Main",
"Medium carbon not found");
162 FairGeoMedium* mFiberGlass = geoMedia->getMedium(
"fiberglass");
164 Fatal(
"Main",
"FairMedium fiberglass not found");
165 geoBuild->createMedium(mFiberGlass);
168 Fatal(
"Main",
"Medium fiberglass not found");
171 FairGeoMedium* mArCO27030 = geoMedia->getMedium(
"arco27030");
173 Fatal(
"Main",
"FairMedium arco27030 not found");
174 geoBuild->createMedium(mArCO27030);
177 Fatal(
"Main",
"Medium arco27030 not found");
180 FairGeoMedium* mArC4H10_80_20 = geoMedia->getMedium(
"ArC4H10_80_20");
182 Fatal(
"Main",
"FairMedium ArC4H10_80_20 not found");
183 geoBuild->createMedium(mArC4H10_80_20);
186 Fatal(
"Main",
"Medium ArC4H10_80_20 not found");
196 const TString geoDetectorName =
"GEMS";
197 const TString geoDetectorVersion =
"Run8";
198 const TString geoFileName = gPath +
"/geometry/" + geoDetectorName +
"_" + geoDetectorVersion +
".root";
201 FairGeoLoader* geoLoad =
new FairGeoLoader(
"TGeo",
"FairGeoLoader");
202 FairGeoInterface* geoFace = geoLoad->getGeoInterface();
205 TString medFile = gPath +
"/geometry/media.geo";
206 geoFace->setMediaFile(medFile);
207 geoFace->readMedia();
208 FairGeoMedia* geoMedia = geoFace->getMedia();
209 FairGeoBuilder* geoBuild = geoLoad->getGeoBuilder();
216 gGeoMan->SetName(geoDetectorName +
"_geom");
229 Int_t stationNum = istation;
313 GEMS->AddNode(station, 0, station_transform);
321 gGeoMan->CheckOverlaps(0.0001);
326 TFile* geoFile =
new TFile(geoFileName,
"RECREATE");
347 TGeoShape* moduleS =
new TGeoBBox(
"moduleS", xsize * 0.5, ysize * 0.5, zsize * 0.5);
356 Fatal(
"Main",
"Invalid medium for sensitive modules!");
377 TGeoVolume* horizontal_frameV =
new TGeoVolume(frame_name +
"_horizontal_frameV", horizontal_frameS);
382 vertical_frameV->
SetMedium(frame_medium);
383 horizontal_frameV->
SetMedium(frame_medium);
385 Fatal(
"Main",
"Invalid medium for frames!");
389 Fatal(
"Main",
"Invalid medium for frames!");
411 composite_frameV->
AddNode(vertical_frameV, 0, left_vertical_frame_position);
412 composite_frameV->
AddNode(vertical_frameV, 1, right_vertical_frame_position);
413 composite_frameV->
AddNode(horizontal_frameV, 0, bottom_horizontal_frame_position);
414 composite_frameV->
AddNode(horizontal_frameV, 1, lower_horizontal_frame_position);
416 return composite_frameV;
451 Fatal(
"Main",
"Invalid medium for sensitive modules!");
480 new TGeoVolume(frame_name +
"_horizontal_upper_frameV", horizontal_upper_frameS);
482 new TGeoVolume(frame_name +
"_horizontal_bottom_frameV", horizontal_bottom_frameS);
487 vertical_frameV->
SetMedium(frame_medium);
488 horizontal_upper_frameV->
SetMedium(frame_medium);
489 horizontal_bottom_frameV->
SetMedium(frame_medium);
491 Fatal(
"Main",
"Invalid medium for frames!");
495 Fatal(
"Main",
"Invalid medium for frames!");
515 composite_frameV->
AddNode(vertical_frameV, 0, left_vertical_frame_position);
516 composite_frameV->
AddNode(horizontal_upper_frameV, 0, upper_horizontal_frame_position);
517 composite_frameV->
AddNode(horizontal_bottom_frameV, 0, bottom_horizontal_frame_position);
519 return composite_frameV;
554 new TGeoVolume(frame_name +
"_horizontal_upper_frameV", horizontal_upper_frameS);
556 new TGeoVolume(frame_name +
"_horizontal_bottom_frameV", horizontal_bottom_frameS);
561 vertical_frameV->
SetMedium(frame_medium);
562 horizontal_upper_frameV->
SetMedium(frame_medium);
563 horizontal_bottom_frameV->
SetMedium(frame_medium);
565 Fatal(
"Main",
"Invalid medium for frames!");
569 Fatal(
"Main",
"Invalid medium for frames!");
589 composite_frameV->
AddNode(vertical_frameV, 0, left_vertical_frame_position);
590 composite_frameV->
AddNode(horizontal_upper_frameV, 0, upper_horizontal_frame_position);
591 composite_frameV->
AddNode(horizontal_bottom_frameV, 0, bottom_horizontal_frame_position);
593 return composite_frameV;
601 TGeoShape* moduleS =
new TGeoBBox(
"moduleS", xsize * 0.5, ysize * 0.5, zsize * 0.5);
610 Fatal(
"Main",
"Invalid medium for sensitive modules!");
void Fatal(const char *location, const char *msgfmt,...)
R__EXTERN TGeoManager * gGeoManager
R__EXTERN TRandom * gRandom
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
virtual void RegisterYourself()
const char * GetName() const 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
const char * GetName() const override
virtual Int_t Write(const char *name=nullptr, Int_t option=0, Int_t bufsize=0)
static TString Itoa(Int_t value, Int_t base)
const Double_t dYFrame_Station163x45
const Double_t dXFrame_Station66x41
const Double_t dZFrame_Station66x41
const Double_t ZModuleSize_Station66x41
const Double_t YStationPositions[NStations]
const Double_t dYFrame_Station66x41
const Double_t ZModuleSize_Station163x45
const Double_t dXFrame_Station163x45
const Double_t YModuleSize_Station163x45
const Double_t dZFrame_Station163x45
const Double_t ZStationPositions[NStations]
TGeoMedium * pMedArCO27030
const Double_t YModuleSize_Station66x41
const Double_t XModuleSize_Station163x45
const Double_t XModuleSize_Station66x41
TGeoMedium * pMedFiberGlass
const Double_t XStationPositions[NStations]
const Double_t ZModuleSize_Station10x10
const Double_t dYFrame_Station10x10
TGeoVolume * CreateModule_Station10x10(TString module_name, Double_t xsize, Double_t ysize, Double_t zsize)
TGeoVolume * CreateModule_Station66x41(TString module_name, Double_t xsize, Double_t ysize, Double_t zsize)
TGeoVolume * CreateFrameForModule_Station163x45(TString frame_name, Double_t dx, Double_t dy, Double_t dz, Double_t hole_radius)
const Double_t XModuleSize_Station10x10
const Double_t YModuleSize_Station10x10
const Double_t dYFrame_Station163x39
const Double_t ZGEMSize_Station10x10
const Double_t dXFrame_Station10x10
TGeoVolume * CreateStation(TString station_name)
void create_rootgeom_GEMS_Run8()
const Double_t dXFrame_Station163x39
const Double_t XModuleSize_Station163x39
const Double_t YModuleSize_Station163x39
const Double_t ZGEMSize_Station163x39
const Double_t ZModuleSize_Station163x39
TGeoVolume * CreateModule_Station163x45(TString module_name, Double_t xsize, Double_t ysize, Double_t zsize, Double_t hole_radius)
TGeoVolume * CreateFrameForModule_Station163x39(TString frame_name, Double_t dx, Double_t dy, Double_t dz, Double_t hole_radius)
void DefineRequiredMedia(FairGeoMedia *geoMedia, FairGeoBuilder *geoBuild)
const Double_t dZFrame_Station163x39
TGeoVolume * CreateFrameForModule_Station66x41(TString frame_name, Double_t dx, Double_t dy, Double_t dz)
const Double_t dZFrame_Station10x10
TGeoVolume * CreateModule_Station163x39(TString module_name, Double_t xsize, Double_t ysize, Double_t zsize, Double_t hole_radius)
TGeoMedium * pMedArC4H10_80_20