6 gROOT->LoadMacro(
"$VMCWORKDIR/macro/run/bmnloadlibs.C");
10 FairGeoLoader* geoLoad =
new FairGeoLoader(
"TGeo",
"FairGeoLoader");
11 FairGeoInterface* geoFace = geoLoad->getGeoInterface();
13 TString medFile = geoPath +
"/geometry/media.geo";
14 geoFace->setMediaFile(medFile);
19 const TString geoDetectorName =
"TOF400";
20 const TString geoDetectorVersion =
"RUN6";
21 const TString geoFileName = geoPath +
"/geometry/" + geoDetectorName +
"_" + geoDetectorVersion +
".root";
24 FairGeoMedia* geoMedia = geoFace->getMedia();
25 FairGeoBuilder* geoBuild = geoLoad->getGeoBuilder();
28 FairGeoMedium* matAir = geoMedia->getMedium(
"air");
30 Fatal(
"Main",
"FairMedium air not found");
31 geoBuild->createMedium(matAir);
32 TGeoMedium* medAir = gGeoMan->GetMedium(
"air");
34 Fatal(
"Main",
"Medium air not found");
37 FairGeoMedium* matPprop = geoMedia->getMedium(
"polypropylene");
39 Fatal(
"Main",
"FairMedium polypropylene not found");
40 geoBuild->createMedium(matPprop);
41 TGeoMedium* medPprop = gGeoMan->GetMedium(
"polypropylene");
43 Fatal(
"Main",
"Medium polypropylene not found");
46 FairGeoMedium* matPb = geoMedia->getMedium(
"lead");
48 Fatal(
"Main",
"FairMedium lead not found");
49 geoBuild->createMedium(matPb);
50 TGeoMedium* medPb = gGeoMan->GetMedium(
"lead");
52 Fatal(
"Main",
"Medium lead not found");
55 FairGeoMedium* matAl = geoMedia->getMedium(
"aluminium");
57 Fatal(
"Main",
"FairMedium aluminium not found");
58 geoBuild->createMedium(matAl);
59 TGeoMedium* medAl = gGeoMan->GetMedium(
"aluminium");
61 Fatal(
"Main",
"Medium aluminium not found");
64 FairGeoMedium* matGlass = geoMedia->getMedium(
"RPCglass");
66 Fatal(
"Main",
"FairMedium RPCglass not found");
67 geoBuild->createMedium(matGlass);
68 TGeoMedium* medGlass = gGeoMan->GetMedium(
"RPCglass");
70 Fatal(
"Main",
"Medium RPCglass not found");
73 FairGeoMedium* matGas = geoMedia->getMedium(
"RPCgas");
75 Fatal(
"Main",
"FairMedium RPCgas not found");
76 geoBuild->createMedium(matGas);
77 TGeoMedium* medGas = gGeoMan->GetMedium(
"RPCgas");
79 Fatal(
"Main",
"Medium RPCgas not found");
82 FairGeoMedium* matG10 = geoMedia->getMedium(
"G10");
84 Fatal(
"Main",
"FairMedium G10 not found");
85 geoBuild->createMedium(matG10);
86 TGeoMedium* medG10 = gGeoMan->GetMedium(
"G10");
88 Fatal(
"Main",
"Medium G10 not found");
93 gGeoMan->SetName(geoDetectorName +
"_geom");
96 gGeoMan->SetTopVolume(top);
97 gGeoMan->SetTopVisible(1);
98 gGeoMan->SetVisLevel(7);
107 const double DetXsize = 60.;
108 const double DetYsize = 30.;
109 const double DetZsize = 3.0;
111 const float stripGasX = 1., stripGasY = DetYsize, stripGasZ = 0.3;
112 TGeoBBox* sStripGas =
new TGeoBBox(stripGasX / 2., stripGasY / 2., stripGasZ / 2.);
113 sStripGas->
SetName(
"StripGas");
118 const float detGlassX = DetXsize, detGlassY = DetYsize, detGlassZ = 0.618 / 2.;
119 TGeoBBox* sDetGlass =
new TGeoBBox(detGlassX / 2., detGlassY / 2., detGlassZ / 2.);
120 sDetGlass->
SetName(
"DetectorGlass");
125 const float detPlateX = DetXsize, detPlateY = DetYsize, detPlateZ = 0.64 / 2.;
126 TGeoBBox* sDetPlate =
new TGeoBBox(detPlateX / 2., detPlateY / 2., detPlateZ / 2.);
127 sDetPlate->
SetName(
"DetectorPlate");
134 const int NStrips = 48;
135 const double StripStep = 1.25;
136 for (
int i = 0;
i < NStrips;
i++) {
137 vDetector->
AddNode(vStripGas,
i + 1,
138 new TGeoTranslation(
"", -DetXsize / 2. + StripStep / 2. +
i * StripStep, 0., 0.));
150 const double tofZgap = 0.86;
151 const double tofYoverlap = 3.0;
153 const double tofXgap = 0.;
155 const double tofZ_1box = 454.8.;
156 const double tofZ_2box = 442.6.;
158 double tofX = tofXgap / 2. + DetXsize / 2.;
159 double tofZshift = tofZgap + DetZsize;
164 tofZ_1box + tofZshift));
169 new TGeoTranslation(
"t1", +tofX, 0 - 2 * DetYsize + 2 * tofYoverlap, tofZ_1box + tofZshift));
174 tofZ_2box + tofZshift));
179 new TGeoTranslation(
"t1", +tofX, 0 - 2 * DetYsize + 2 * tofYoverlap, tofZ_2box + tofZshift));
191 gGeoMan->CloseGeometry();
192 gGeoMan->CheckOverlaps(0.001);
193 gGeoMan->PrintOverlaps();
196 TFile* geoFile =
new TFile(geoFileName,
"RECREATE");