18const Double_t XSizeOfStation[
nStations] = {60, 60, 80, 130, 160, 160, 240, 240, 240, 240, 240, 240};
19const Double_t YSizeOfStation[
nStations] = {60, 60, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80};
20const Double_t ZStantionPosition[
nStations] = {30, 50, 70, 90, 110, 140, 170, 200, 240, 280, 320, 360};
56 cout <<
"Beam Pipe Angle = " << BeamPipeAngle <<
" deg" <<
"\n";
57 cout <<
"Beam Pipe Radiuses:" <<
"\n";
59 cout <<
" Station[" << iStation <<
"] = " <<
BeamPipeRadius[iStation] <<
" cm" <<
"\n";
61 cout <<
"----------------------------" <<
"\n";
64 cout <<
"Modules Size ( X : Y ):" <<
"\n";
71 cout <<
"----------------------------" <<
"\n";
80 gROOT->LoadMacro(
"$VMCWORKDIR/macro/run/bmnloadlibs.C");
84 FairGeoLoader* geoLoad =
new FairGeoLoader(
"TGeo",
"FairGeoLoader");
85 FairGeoInterface* geoFace = geoLoad->getGeoInterface();
87 TString medFile = geoPath +
"/geometry/media.geo";
88 geoFace->setMediaFile(medFile);
94 const TString geoDetectorName =
"GEMS";
95 const TString geoDetectorVersion =
"v1";
96 const TString geoFileName = geoPath +
"/geometry/" + geoDetectorName +
"_" + geoDetectorVersion +
".root";
100 FairGeoMedia* geoMedia = geoFace->getMedia();
101 FairGeoBuilder* geoBuild = geoLoad->getGeoBuilder();
103 FairGeoMedium* mAir = geoMedia->getMedium(
"air");
105 Fatal(
"Main",
"FairMedium air not found");
106 geoBuild->createMedium(mAir);
109 Fatal(
"Main",
"Medium air not found");
111 FairGeoMedium* mArCO27030 = geoMedia->getMedium(
"arco27030");
113 Fatal(
"Main",
"FairMedium arco27030 not found");
114 geoBuild->createMedium(mArCO27030);
117 Fatal(
"Main",
"Medium arco27030 not found");
123 gGeoMan->SetName(geoDetectorName +
"_geom");
136 "SensitiveVolumePosition",
148 TString SolidNameStation =
"Station";
149 SolidNameStation += iStation;
150 SolidNameStation +=
"S";
155 TString SolidNameModule =
"Module";
156 SolidNameModule += iModule;
157 SolidNameModule +=
"S";
158 ModuleS[iStation][iModule] =
162 SensitiveVolumeS[iStation] =
166 TString SolidNameHole =
"BeamPipeHole";
167 SolidNameHole += iStation;
168 SolidNameHole +=
"S";
174 BooleanExpression +=
"-";
175 BooleanExpression += BeamPipeHoleS[iStation]->
GetName();
177 StationS[iStation] = StationWithHoleS;
185 TString VolumeName =
"Station";
186 VolumeName += iStation;
188 StationV[iStation] =
new TGeoVolume(VolumeName, StationS[iStation]);
196 VolumeName += iModule;
198 ModuleV[iStation][iModule] =
new TGeoVolume(VolumeName, ModuleS[iStation][iModule]);
199 ModuleV[iStation][iModule]->
SetMedium(pMedAir);
205 SensitiveVolumeV[iStation] =
new TGeoVolume(
"SensitiveVolume_SensorV", SensitiveVolumeS[iStation]);
206 SensitiveVolumeV[iStation]->
SetMedium(pMedArCO27030);
270 StationV[iStation]->
AddNode(ModuleV[iStation][iModule], iModule, ModulePosition);
271 ModuleV[iStation][iModule]->
AddNode(SensitiveVolumeV[iStation], iModule, ActiveVolumePosition);
289 TFile* geoFile =
new TFile(geoFileName,
"RECREATE");
void Fatal(const char *location, const char *msgfmt,...)
R__EXTERN TGeoManager * gGeoManager
R__EXTERN TSystem * gSystem
void Close(Option_t *option="") override
const char * GetName() const override
void SetTranslation(const TGeoMatrix &other)
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)
const Double_t dXOuterFrame
void CalculateParameters()
const Double_t dZSensitiveVolume
Double_t BeamPipeRadius[nStations]
=======================================================================
const Double_t BeamPipeMaxRadius
const Double_t BeamPipeMinRadius
const Double_t XSizeOfStation[nStations]
void create_rootgeom_GEMS()
const Double_t YSizeOfStation[nStations]
const Double_t dXInnerFrame
const Double_t ZStantionPosition[nStations]
const Bool_t StationCenterPosition
const Double_t dYOuterFrame
const Double_t dYInnerFrame
const Int_t nModulesInStation
const Double_t ZDisplacementOfDetector