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};
87 gROOT->LoadMacro(
"$VMCWORKDIR/macro/run/bmnloadlibs.C");
91 FairGeoLoader* geoLoad =
new FairGeoLoader(
"TGeo",
"FairGeoLoader");
92 FairGeoInterface* geoFace = geoLoad->getGeoInterface();
94 TString medFile = geoPath +
"/geometry/media.geo";
95 geoFace->setMediaFile(medFile);
101 const TString geoDetectorName =
"GEMS";
102 const TString geoDetectorVersion =
"v1_AZ";
103 const TString geoFileName = geoPath +
"/geometry/" + geoDetectorName +
"_" + geoDetectorVersion +
".root";
107 FairGeoMedia* geoMedia = geoFace->getMedia();
108 FairGeoBuilder* geoBuild = geoLoad->getGeoBuilder();
110 FairGeoMedium* mAir = geoMedia->getMedium(
"air");
112 Fatal(
"Main",
"FairMedium air not found");
113 geoBuild->createMedium(mAir);
116 Fatal(
"Main",
"Medium air not found");
119 FairGeoMedium* mArCO27030 = geoMedia->getMedium(
"titanium");
121 Fatal(
"Main",
"FairMedium arco27030 not found");
122 geoBuild->createMedium(mArCO27030);
126 Fatal(
"Main",
"Medium arco27030 not found");
132 gGeoMan->SetName(geoDetectorName +
"_geom");
145 "SensitiveVolumePosition",
158 TString SolidNameStation =
"Station";
159 SolidNameStation += iStation;
160 SolidNameStation +=
"S";
165 TString SolidNameModule =
"Module";
166 SolidNameModule += iModule;
167 SolidNameModule +=
"S";
168 ModuleS[iStation][iModule] =
170 TString SolidNameSensor =
"SensitiveVolume";
171 SolidNameSensor += iStation;
172 SolidNameSensor += iModule;
173 SolidNameSensor +=
"S";
174 SensitiveVolumeS[iStation][iModule] =
185 TString SolidNameHole =
"BeamPipeHole";
186 SolidNameHole += iStation;
187 SolidNameHole +=
"S";
193 BooleanExpression +=
"-";
194 BooleanExpression += BeamPipeHoleS[iStation]->
GetName();
196 StationS[iStation] = StationWithHoleS;
204 dy = SensitiveVolumeS[iStation][iModule]->
GetDY();
206 transName += iStation;
207 transName += iModule;
211 else if (iModule == 2)
213 else if (iModule == 3)
215 shortPos[iStation][iModule] =
new TGeoTranslation(transName, ddx, ddy, 0.0);
216 gGeoMan->AddTransformation(shortPos[iStation][iModule]);
218 TString solidNameSensor = SensitiveVolumeS[iStation][iModule]->
GetName();
219 TString booleanExpression = solidNameSensor;
220 booleanExpression +=
"-(";
221 booleanExpression += SensitiveVolume1S[iStation]->
GetName();
222 booleanExpression +=
":";
223 booleanExpression += shortPos[iStation][iModule]->
GetName();
224 booleanExpression +=
")";
226 SensitiveVolumeS[iStation][iModule] = sensorCut;
236 TString VolumeName =
"Station";
237 VolumeName += iStation;
239 StationV[iStation] =
new TGeoVolume(VolumeName, StationS[iStation]);
247 VolumeName += iModule;
249 ModuleV[iStation][iModule] =
new TGeoVolume(VolumeName, ModuleS[iStation][iModule]);
250 ModuleV[iStation][iModule]->
SetMedium(pMedAir);
255 VolumeName =
"SensitiveVolume_Sensor";
256 VolumeName += iModule;
258 SensitiveVolumeV[iStation][iModule] =
new TGeoVolume(VolumeName, SensitiveVolumeS[iStation][iModule]);
259 SensitiveVolumeV[iStation][iModule]->
SetMedium(pMedArCO27030);
268 SensitiveVolume1V[iStation] =
new TGeoVolume(
"SensitiveVolume_SensorSV", SensitiveVolume1S[iStation]);
270 SensitiveVolume1V[iStation]->
SetMedium(pMedArCO27030);
285 transName += iStation;
286 transName += iModule;
289 shortStripPosition->
SetName(
"aaa");
353 StationV[iStation]->
AddNode(ModuleV[iStation][iModule], iModule, ModulePosition);
354 shortStripPosition->
Add(ActiveVolumePosition);
355 ModuleV[iStation][iModule]->
AddNode(SensitiveVolume1V[iStation], 1, shortStripPosition);
358 ModuleV[iStation][iModule]->
AddNode(SensitiveVolumeV[iStation][iModule], 2, ActiveVolumePosition);
376 TFile* geoFile =
new TFile(geoFileName,
"RECREATE");