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},
57 {2.28613e-01, 2.34606e-01, 3.70449e-01, 4.39267e-01, 2.67664e-01, 2.84859e-01, 3.41005e-01, 4.16753e-01},
58 {3.17030e-01, 2.45618e-01, 4.29878e-01, 4.29169e-01, 2.60443e-01, 1.79925e-01, 3.76252e-01, 3.71674e-01},
59 {1.25543e-01, 1.37935e-01, 2.77096e-01, 3.51704e-01, 2.16012e-01, 2.12139e-01, 2.88912e-01, 3.57699e-01},
60 {3.17647e-01, 2.36295e-01, 3.75431e-01, 3.80575e-01, 1.68884e-01, 8.80524e-02, 2.51805e-01, 2.56513e-01},
61 {-3.01883e-02, -2.87880e-02, 1.09744e-01, 1.90429e-01, 1.78162e-02, 1.32671e-02, 9.23760e-02, 1.67779e-01},
62 {1.43966e-01, 5.53303e-02, 2.48555e-01, 2.49193e-01, 3.88544e-02, -3.31393e-02, 7.96085e-02, 7.41273e-02},
63 {0., -5.63645e-04, 0.05, 8.74027e-04, 0., 3.60763e-03, 0.074, 1.49797e-01}};
65 {-2.40830e-01, -2.27117e-01, -4.41393e-01, -2.98662e-01, -1.47376e-01, -5.64919e-01, 3.60250e-02, -2.15290e-01},
66 {-4.83443e-01, -3.63780e-01, -3.52015e-01, -3.36903e-01, -1.14008e-01, -3.49136e-01, -2.14579e-01, -6.23524e-01},
67 {-1.91062e-01, -2.04515e-01, -3.79972e-01, -2.57092e-01, -1.01400e-01, -5.18137e-01, 5.39497e-02, -1.85679e-01},
68 {-4.55871e-01, -3.48696e-01, -2.33191e-01, -2.40044e-01, -5.37329e-02, -3.00596e-01, -1.98740e-01, -6.04983e-01},
69 {-2.31062e-01, -2.58276e-01, -4.03759e-01, -2.70196e-01, -8.53213e-02, -5.14891e-01, 3.15495e-02, -2.08464e-01},
70 {-2.58821e-01, -1.58621e-01, -9.84743e-02, -1.05756e-01, 1.54258e-01, -1.04935e-01, 1.83280e-02, -3.86622e-01},
71 {0., -5.86937e-03, -0.23, -1.45342e-01, 0., -3.98117e-01, 0.15, -1.04839e-01}};
96 {0.243654, 0.250775, 0.173749, 0.161366},
97 {-0.143876, -0.150758, 0.109959, 0.156433},
98 {-0.110145, -0.165981, -0.213889, -0.229543},
99 {0.103517, 0.036342, 0.086135, 0.0941369},
100 {-0.037648, -0.0941807, -0.180758, -0.176327},
101 {-0.0674491, -0.0367844, -0.0972473, -0.0584354},
196 FairGeoMedium* mAir = geoMedia->getMedium(
"air");
198 Fatal(
"Main",
"FairMedium air not found");
199 geoBuild->createMedium(mAir);
202 Fatal(
"Main",
"Medium air not found");
205 FairGeoMedium* mCarbon = geoMedia->getMedium(
"carbon");
207 Fatal(
"Main",
"FairMedium carbon not found");
208 geoBuild->createMedium(mCarbon);
211 Fatal(
"Main",
"Medium carbon not found");
214 FairGeoMedium* mFiberGlass = geoMedia->getMedium(
"fiberglass");
216 Fatal(
"Main",
"FairMedium fiberglass not found");
217 geoBuild->createMedium(mFiberGlass);
220 Fatal(
"Main",
"Medium fiberglass not found");
223 FairGeoMedium* mArCO27030 = geoMedia->getMedium(
"arco27030");
225 Fatal(
"Main",
"FairMedium arco27030 not found");
226 geoBuild->createMedium(mArCO27030);
229 Fatal(
"Main",
"Medium arco27030 not found");
232 FairGeoMedium* mArC4H10_80_20 = geoMedia->getMedium(
"ArC4H10_80_20");
234 Fatal(
"Main",
"FairMedium ArC4H10_80_20 not found");
235 geoBuild->createMedium(mArC4H10_80_20);
238 Fatal(
"Main",
"Medium ArC4H10_80_20 not found");
248 const TString geoDetectorName =
"GEMS";
249 const TString geoDetectorVersion =
"Run8_aligned";
250 const TString geoFileName = gPath +
"/geometry/" + geoDetectorName +
"_" + geoDetectorVersion +
".root";
253 FairGeoLoader* geoLoad =
new FairGeoLoader(
"TGeo",
"FairGeoLoader");
254 FairGeoInterface* geoFace = geoLoad->getGeoInterface();
257 TString medFile = gPath +
"/geometry/media.geo";
258 geoFace->setMediaFile(medFile);
259 geoFace->readMedia();
260 FairGeoMedia* geoMedia = geoFace->getMedia();
261 FairGeoBuilder* geoBuild = geoLoad->getGeoBuilder();
268 gGeoMan->SetName(geoDetectorName +
"_geom");
281 Int_t stationNum = istation;
372 GEMS->AddNode(station, 0, station_transform);
380 gGeoMan->CheckOverlaps(0.0001);
385 TFile* geoFile =
new TFile(geoFileName,
"RECREATE");
406 TGeoShape* moduleS =
new TGeoBBox(
"moduleS", xsize * 0.5, ysize * 0.5, zsize * 0.5);
415 Fatal(
"Main",
"Invalid medium for sensitive modules!");
436 TGeoVolume* horizontal_frameV =
new TGeoVolume(frame_name +
"_horizontal_frameV", horizontal_frameS);
441 vertical_frameV->
SetMedium(frame_medium);
442 horizontal_frameV->
SetMedium(frame_medium);
444 Fatal(
"Main",
"Invalid medium for frames!");
448 Fatal(
"Main",
"Invalid medium for frames!");
470 composite_frameV->
AddNode(vertical_frameV, 0, left_vertical_frame_position);
471 composite_frameV->
AddNode(vertical_frameV, 1, right_vertical_frame_position);
472 composite_frameV->
AddNode(horizontal_frameV, 0, bottom_horizontal_frame_position);
473 composite_frameV->
AddNode(horizontal_frameV, 1, lower_horizontal_frame_position);
475 return composite_frameV;
510 Fatal(
"Main",
"Invalid medium for sensitive modules!");
539 new TGeoVolume(frame_name +
"_horizontal_upper_frameV", horizontal_upper_frameS);
541 new TGeoVolume(frame_name +
"_horizontal_bottom_frameV", horizontal_bottom_frameS);
546 vertical_frameV->
SetMedium(frame_medium);
547 horizontal_upper_frameV->
SetMedium(frame_medium);
548 horizontal_bottom_frameV->
SetMedium(frame_medium);
550 Fatal(
"Main",
"Invalid medium for frames!");
554 Fatal(
"Main",
"Invalid medium for frames!");
574 composite_frameV->
AddNode(vertical_frameV, 0, left_vertical_frame_position);
575 composite_frameV->
AddNode(horizontal_upper_frameV, 0, upper_horizontal_frame_position);
576 composite_frameV->
AddNode(horizontal_bottom_frameV, 0, bottom_horizontal_frame_position);
578 return composite_frameV;
613 new TGeoVolume(frame_name +
"_horizontal_upper_frameV", horizontal_upper_frameS);
615 new TGeoVolume(frame_name +
"_horizontal_bottom_frameV", horizontal_bottom_frameS);
620 vertical_frameV->
SetMedium(frame_medium);
621 horizontal_upper_frameV->
SetMedium(frame_medium);
622 horizontal_bottom_frameV->
SetMedium(frame_medium);
624 Fatal(
"Main",
"Invalid medium for frames!");
628 Fatal(
"Main",
"Invalid medium for frames!");
648 composite_frameV->
AddNode(vertical_frameV, 0, left_vertical_frame_position);
649 composite_frameV->
AddNode(horizontal_upper_frameV, 0, upper_horizontal_frame_position);
650 composite_frameV->
AddNode(horizontal_bottom_frameV, 0, bottom_horizontal_frame_position);
652 return composite_frameV;
660 TGeoShape* moduleS =
new TGeoBBox(
"moduleS", xsize * 0.5, ysize * 0.5, zsize * 0.5);
669 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
Double_t XModuleShifts[NStations][NMaxModules]
const Double_t dZFrame_Station163x45
const Double_t ZStationPositions[NStations]
Double_t ZModuleShifts[NStations][NMaxModules]
TGeoMedium * pMedArCO27030
const Double_t YModuleSize_Station66x41
const Double_t XModuleSize_Station163x45
const Double_t XModuleSize_Station66x41
TGeoMedium * pMedFiberGlass
const Double_t XStationPositions[NStations]
Double_t YModuleShifts[NStations][NMaxModules]
const Double_t StsDY[NStations][8]
const Double_t XAlignmentCorrections[NStations][NMaxModules]
const Double_t YAlignmentCorrections[NStations][NMaxModules]
const Double_t ZAlignmentCorrections[NStations][NMaxModules]
const Double_t StsDX[NStations][8]
const Double_t ZModuleSize_Station10x10
const Double_t dYFrame_Station10x10
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
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
const Double_t dZFrame_Station163x39
const Double_t dZFrame_Station10x10
void create_rootgeom_GEMS_Run8_aligned()
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)
TGeoVolume * CreateStation(TString station_name)
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)
TGeoVolume * CreateFrameForModule_Station66x41(TString frame_name, Double_t dx, Double_t dy, Double_t dz)
TGeoVolume * CreateModule_Station163x39(TString module_name, Double_t xsize, Double_t ysize, Double_t zsize, Double_t hole_radius)
TGeoMedium * pMedArC4H10_80_20