49 gROOT->LoadMacro(
"$VMCWORKDIR/macro/run/bmnloadlibs.C");
53 FairGeoLoader* geoLoad =
new FairGeoLoader(
"TGeo",
"FairGeoLoader");
54 FairGeoInterface* geoFace = geoLoad->getGeoInterface();
56 TString medFile = geoPath +
"/geometry/media.geo";
57 geoFace->setMediaFile(medFile);
63 TString geoDetectorName =
"tof700";
64 TString geoDetectorVersion =
"run6_with_support";
65 geoFileName = geoPath +
"/geometry/" + geoDetectorName +
"_" + geoDetectorVersion +
".root";
81 Double_t xmin = 10000., ymin = 10000., zmin = 10000.;
82 Double_t xmax = -10000., ymax = -10000., zmax = -10000.;
111 Double_t TOF2_X = (TOF2_X_max + TOF2_X_min) / 2.;
112 Double_t TOF2_Y = (TOF2_Y_max + TOF2_Y_min) / 2.;
113 Double_t TOF2_Z = (TOF2_Z_max + TOF2_Z_min) / 2.;
116 FairGeoMedia* geoMedia = geoFace->getMedia();
117 FairGeoBuilder* geoBuild = geoLoad->getGeoBuilder();
119 FairGeoMedium* mAir = geoMedia->getMedium(
"air");
121 Fatal(
"Main",
"FairMedium air not found");
122 geoBuild->createMedium(mAir);
125 Fatal(
"Main",
"Medium air not found");
127 FairGeoMedium* mRPCglass = geoMedia->getMedium(
"RPCglass");
129 Fatal(
"Main",
"FairMedium RPCglass not found");
130 geoBuild->createMedium(mRPCglass);
133 Fatal(
"Main",
"Medium RPCglass not found");
135 FairGeoMedium* mRPCgas = geoMedia->getMedium(
"RPCgas");
137 Fatal(
"Main",
"FairMedium RPCgas not found");
138 geoBuild->createMedium(mRPCgas);
141 Fatal(
"Main",
"Medium RPCgas not found");
144 FairGeoMedium* matAl = geoMedia->getMedium(
"aluminium");
146 Fatal(
"Main",
"FairMedium aluminium not found");
147 geoBuild->createMedium(matAl);
150 Fatal(
"Main",
"Medium aluminium not found");
153 FairGeoMedium* matG10 = geoMedia->getMedium(
"G10");
155 Fatal(
"Main",
"FairMedium G10 not found");
156 geoBuild->createMedium(matG10);
159 Fatal(
"Main",
"Medium G10 not found");
165 gGeoMan->SetName(geoDetectorName +
"_geom");
183 sprintf(name,
"Module_%d_PosTOF2_trans",
i + 1);
188 sprintf(name,
"GlassLayer1PosTOF2_trans");
189 GlassLayer1PosTOF2_trans =
new TGeoTranslation(name, 0., 0., GlassLayer1Pos);
192 sprintf(name,
"GasLayerPosTOF2_trans");
193 GasLayerPosTOF2_trans =
new TGeoTranslation(name, 0., 0., GasLayerPos);
196 sprintf(name,
"GlassLayer2PosTOF2_trans");
197 GlassLayer2PosTOF2_trans =
new TGeoTranslation(name, 0., 0., GlassLayer2Pos);
200 sprintf(name,
"G10LayerPosTOF2_trans");
201 G10LayerPosTOF2_trans =
new TGeoTranslation(name, 0., 0., G10LayerPos);
212 char nTOF2ModuleS[2][32] = {
"TOF2ChamberS0",
"TOF2ChamberS1"};
213 char nTOF2GlassVolumeS[2][32] = {
"TOF2GlassVolumeS0",
"TOF2GlassVolumeS1"};
214 char nTOF2G10VolumeS[2][32] = {
"TOF2G10VolumeS0",
"TOF2G10VolumeS1"};
215 char nTOF2ActiveGasVolumeS[2][32] = {
"TOF2ActiveGasVolumeS0",
"TOF2ActiveGasVolumeS1"};
216 char nTOF2ModuleV[2][32] = {
"TOF2ChamberV0",
"TOF2ChamberV1"};
217 char nTOF2GlassVolumeV[2][32] = {
"TOF2GlassVolumeV0",
"TOF2GlassVolumeV1"};
218 char nTOF2G10VolumeV[2][32] = {
"TOF2G10VolumeV0",
"TOF2G10VolumeV1"};
219 char nTOF2ActiveGasVolumeV[2][32] = {
"TOF2ActiveGasVolumeV0",
"TOF2ActiveGasVolumeV1"};
229 int nstr[2] = {32, 16};
230 for (
int i = 0;
i < 2;
i++) {
244 TOF2ModuleV[
i] =
new TGeoVolume(nTOF2ModuleV[
i], TOF2ModuleS[
i]);
250 TOF2GlassVolumeV[
i] =
new TGeoVolume(nTOF2GlassVolumeV[
i], TOF2GlassVolumeS[
i]);
254 TOF2ActiveGasVolumeV[
i] =
new TGeoVolume(nTOF2ActiveGasVolumeV[
i], TOF2ActiveGasVolumeS[
i]);
255 TOF2ActiveGasVolumeV[
i]->
SetMedium(pMedRPCgas);
257 TOF2ActiveGasVolumeV[
i]->
Divide(
"ActiveGasStrip", 2, nstr[
i], 0, -1);
259 TOF2G10VolumeV[
i] =
new TGeoVolume(nTOF2G10VolumeV[
i], TOF2G10VolumeS[
i]);
263 TOF2ModuleV[
i]->
AddNode(TOF2GlassVolumeV[
i], 1, GlassLayer1PosTOF2_trans);
264 TOF2ModuleV[
i]->
AddNode(TOF2ActiveGasVolumeV[
i], 1, GasLayerPosTOF2_trans);
265 TOF2ModuleV[
i]->
AddNode(TOF2GlassVolumeV[
i], 2, GlassLayer2PosTOF2_trans);
266 TOF2ModuleV[
i]->
AddNode(TOF2G10VolumeV[
i], 1, G10LayerPosTOF2_trans);
274 TOF2Top->AddNode(TOF2ModuleV[
chtype[
i]], nm[0] + 1, ModulePosTOF2_trans[
i]);
278 create_rootgeom_TOF700_support();
289 TFile* geoFile =
new TFile(geoFileName,
"RECREATE");
301 if (strlen(geomfile) == 0) {
302 printf(
"TOF700 geometry file name not defined!\n");
305 TString dir = getenv(
"VMCWORKDIR");
306 sprintf(fname,
"%s/geometry/%s", dir.
Data(), geomfile);
307 fg = fopen(fname,
"r");
309 printf(
"TOF700 geometry file %s open error!\n", fname);
313 printf(
"Wrong first line in TOF700 geometry file %s\n", fname);
316 printf(
"Zoffs = %f\n",
zoffs);
320 while (fscanf(fg,
"%s %d %lf %lf %lf %lf %lf %lf\n", &ic[0], &
n, &step, &sy, &sx, &x, &y, &z) == 8) {
330 for (
int ns =
n - 1; ns >= 0; ns--) {
332 ycens[c][ns] = y / 10. +
yoffs - (
n - ns - 1) * step / 10.;
340 printf(
"%s ns=%d step=%f sx=%f sy=%f x=%f y=%f z=%f\n", ic,
n, step, sx, sy, x, y, z);
virtual TGeoVolume * Divide(const char *divname, Int_t iaxis, Int_t ndiv, Double_t start, Double_t step, Int_t numed=0, Option_t *option="")