BmnRoot 26.10.0-18-g4e3414f9
Software framework of the BM@N experiment
Loading...
Searching...
No Matches
create_rootgeom_TOF400_RUN8.C
Go to the documentation of this file.
1/*
2 * To change this license header, choose License Headers in Project Properties.
3 * To change this template file, choose Tools | Templates
4 * and open the template in the editor.
5 */
6
7/*
8 * File: create_rootgeom_TOF400_RUN8.C
9 * Author: mikhailr
10 *
11 * Created on January 10, 2023, 11:06 AM
12 */
13
14R__ADD_INCLUDE_PATH($VMCWORKDIR)
15// #include "macro/run/bmnloadlibs.C"
16
17using namespace std;
18
20{
21 // Load the necessary FairRoot libraries
22 // gROOT->LoadMacro("$VMCWORKDIR/macro/run/bmnloadlibs.C");
23 // bmnloadlibs(); // load libraries
24
25 // ------- Load media from media file --------------------------------
26 TGeoManager* gGeoMan;
27 cout << "!!!!!!!!!!!!!!!!!!!!!!!!!!!" << endl;
28 FairGeoLoader* geoLoad = new FairGeoLoader("TGeo", "FairGeoLoader");
29 FairGeoInterface* geoFace = geoLoad->getGeoInterface();
30 TString geoPath = gSystem->Getenv("VMCWORKDIR");
31 TString medFile = geoPath + "/geometry/media.geo";
32 geoFace->setMediaFile(medFile);
33 geoFace->readMedia();
34 gGeoMan = gGeoManager;
35
36 // ------- Geometry file name (output) -------------------------------
37 const TString geoDetectorName = "TOF400";
38 const TString geoDetectorVersion = "RUN8_v3";
39 // const TString geoFileName = geoPath + "/geometry/" + geoDetectorName + "_" + geoDetectorVersion + ".root";
40 const TString geoFileName = geoDetectorName + "_" + geoDetectorVersion + ".root";
41
42 // ----------------- Get and create the required media --------------
43 FairGeoMedia* geoMedia = geoFace->getMedia();
44 FairGeoBuilder* geoBuild = geoLoad->getGeoBuilder();
45
46 // Air
47 FairGeoMedium* matAir = geoMedia->getMedium("air");
48 if (!matAir)
49 Fatal("Main", "FairMedium air not found");
50 geoBuild->createMedium(matAir);
51 TGeoMedium* medAir = gGeoMan->GetMedium("air");
52 if (!medAir)
53 Fatal("Main", "Medium air not found");
54
55 // Polypropylene
56 FairGeoMedium* matPprop = geoMedia->getMedium("polypropylene");
57 if (!matPprop)
58 Fatal("Main", "FairMedium polypropylene not found");
59 geoBuild->createMedium(matPprop);
60 TGeoMedium* medPprop = gGeoMan->GetMedium("polypropylene");
61 if (!medPprop)
62 Fatal("Main", "Medium polypropylene not found");
63
64 // lead
65 FairGeoMedium* matPb = geoMedia->getMedium("lead");
66 if (!matPb)
67 Fatal("Main", "FairMedium lead not found");
68 geoBuild->createMedium(matPb);
69 TGeoMedium* medPb = gGeoMan->GetMedium("lead");
70 if (!medPb)
71 Fatal("Main", "Medium lead not found");
72
73 // aluminium
74 FairGeoMedium* matAl = geoMedia->getMedium("aluminium");
75 if (!matAl)
76 Fatal("Main", "FairMedium aluminium not found");
77 geoBuild->createMedium(matAl);
78 TGeoMedium* medAl = gGeoMan->GetMedium("aluminium");
79 if (!medAl)
80 Fatal("Main", "Medium aluminium not found");
81
82 // RPCglass
83 FairGeoMedium* matGlass = geoMedia->getMedium("RPCglass");
84 if (!matGlass)
85 Fatal("Main", "FairMedium RPCglass not found");
86 geoBuild->createMedium(matGlass);
87 TGeoMedium* medGlass = gGeoMan->GetMedium("RPCglass");
88 if (!medGlass)
89 Fatal("Main", "Medium RPCglass not found");
90
91 // RPCgas
92 FairGeoMedium* matGas = geoMedia->getMedium("RPCgas");
93 if (!matGas)
94 Fatal("Main", "FairMedium RPCgas not found");
95 geoBuild->createMedium(matGas);
96 TGeoMedium* medGas = gGeoMan->GetMedium("RPCgas");
97 if (!medGas)
98 Fatal("Main", "Medium RPCgas not found");
99
100 // G10
101 FairGeoMedium* matG10 = geoMedia->getMedium("G10");
102 if (!matG10)
103 Fatal("Main", "FairMedium G10 not found");
104 geoBuild->createMedium(matG10);
105 TGeoMedium* medG10 = gGeoMan->GetMedium("G10");
106 if (!medG10)
107 Fatal("Main", "Medium G10 not found");
108
109 // ----------------------------------------- Create geometry and top volume
110 // -----------------------------------------------
111 gGeoMan = (TGeoManager*)gROOT->FindObject("FAIRGeom");
112 gGeoMan->SetName(geoDetectorName + "_geom");
113 TGeoVolume* top = new TGeoVolumeAssembly("TOP"); // TOP VOLUME
114 top->SetMedium(medAir);
115 gGeoMan->SetTopVolume(top);
116 gGeoMan->SetTopVisible(1);
117 gGeoMan->SetVisLevel(7);
118
119 // --------------------------------------- Define TOP Geometry ------------------------------------
120 TGeoVolume* topTof = new TGeoVolumeAssembly(geoDetectorName);
121 topTof->SetMedium(medAir);
122
123 TGeoVolume* vDetector = new TGeoVolumeAssembly("tof1Detector");
124 vDetector->SetMedium(medAir);
125
126 const double DetXsize = 60.; // [cm]
127 const double DetYsize = 30.; // [cm]
128 const double DetZsize = 3.0; // [cm]
129
130 TGeoVolume* vBox = new TGeoVolumeAssembly("tof1Box");
131 vDetector->SetMedium(medAir);
132
133 // --------------------- Create Box Frame --------------
134 TGeoVolumeAssembly* vChannel_lr = new TGeoVolumeAssembly("tof1ChannelV_lr");
135
136 TGeoBBox* sPartСhannel1 = new TGeoBBox(4. / 2., 160 / 2., 0.4 / 2.);
137 TGeoVolume* vPartСhannel1 = new TGeoVolume("vPartСhannel1", sPartСhannel1, medAl);
138 vPartСhannel1->SetLineColor(kRed);
139
140 TGeoBBox* sPartСhannel2 = new TGeoBBox(0.4 / 2., 160 / 2., 8.4 / 2.);
141 TGeoVolume* vPartСhannel2 = new TGeoVolume("vPartСhannel2", sPartСhannel2, medAl);
142 vPartСhannel2->SetLineColor(kGray);
143
144 vChannel_lr->AddNode(vPartСhannel2, 1, new TGeoTranslation("", 1.8, 0., 0.));
145 vChannel_lr->AddNode(vPartСhannel2, 2, new TGeoTranslation("", -1.8, 0., 0.));
146 vChannel_lr->AddNode(vPartСhannel1, 1, new TGeoTranslation("", 0, 0., -5.));
147 vChannel_lr->AddNode(vPartСhannel1, 2, new TGeoTranslation("", 0, 0., 5.));
148
149 vBox->AddNode(vChannel_lr, 1, new TGeoTranslation("", 33.5, 0., 0));
150 vBox->AddNode(vChannel_lr, 2, new TGeoTranslation("", -33.5, 0., 0));
151
152 //***
153
154 TGeoVolumeAssembly* vChannel_ud = new TGeoVolumeAssembly("tof1ChannelV_ud");
155
156 TGeoBBox* sPartСhannel3 = new TGeoBBox(71 / 2., 0.4 / 2., 10. / 2.);
157 TGeoVolume* vPartСhannel3 = new TGeoVolume("vPartСhannel3", sPartСhannel3, medAl);
158 vPartСhannel3->SetLineColor(kGreen);
159
160 TGeoBBox* sPartСhannel4 = new TGeoBBox(71 / 2., 3.6 / 2., 0.4 / 2.);
161 TGeoVolume* vPartСhannel4 = new TGeoVolume("vPartСhannel4", sPartСhannel4, medAl);
162 vPartСhannel4->SetLineColor(kGreen);
163
164 vChannel_ud->AddNode(vPartСhannel3, 1, new TGeoTranslation("", 0, -1.8, 0.));
165 vChannel_ud->AddNode(vPartСhannel4, 1, new TGeoTranslation("", 0., 0.2, 5.));
166 vChannel_ud->AddNode(vPartСhannel4, 2, new TGeoTranslation("", 0., 0.2, -5.));
167
168 vBox->AddNode(vChannel_ud, 1, new TGeoTranslation("", 0, 160. / 2 + 2., 0));
169
170 vBox->AddNode(vChannel_ud, 2, new TGeoCombiTrans("", 0, -160. / 2 - 2., 0, new TGeoRotation("", 180, 0, 0)));
171
172 //*** covers
173
174 TGeoBBox* sCover = new TGeoBBox(71 / 2., 160 / 2., 0.1 / 2.);
175 TGeoVolume* vCover = new TGeoVolume("vCover", sCover, medAl);
176 vCover->SetLineColor(kGray);
177
178 vBox->AddNode(vCover, 1, new TGeoTranslation("", 0, 0, 5.1));
179 vBox->AddNode(vCover, 2, new TGeoTranslation("", 0, 0, -5.1));
180
181 // --------------------- Create strip ------------------
182 const float stripGasX = 1., stripGasY = DetYsize, stripGasZ = 0.3; // [cm]
183 TGeoBBox* sStripGas = new TGeoBBox(stripGasX / 2., stripGasY / 2., stripGasZ / 2.);
184 sStripGas->SetName("StripGas");
185 TGeoVolume* vStripGas = new TGeoVolume("tof1StripActiveGasV", sStripGas, medGas);
186 vStripGas->SetLineColor(kRed);
187
188 // --------------------- Create Glass plates ------------------
189 const float detGlassX = DetXsize, detGlassY = DetYsize, detGlassZ = 0.618 / 2.; // [cm] 6.18 mm / 2 plate
190 TGeoBBox* sDetGlass = new TGeoBBox(detGlassX / 2., detGlassY / 2., detGlassZ / 2.);
191 sDetGlass->SetName("DetectorGlass");
192 TGeoVolume* vDetGlass = new TGeoVolume("tof1DetGlassV", sDetGlass, medGlass);
193 vDetGlass->SetLineColor(kYellow);
194
195 // --------------------- Create G10 plates ------------------
196 const float detPlateX = DetXsize, detPlateY = DetYsize, detPlateZ = 0.64 / 2.; // [cm] 6.4 mm / 2 plate
197 TGeoBBox* sDetPlate = new TGeoBBox(detPlateX / 2., detPlateY / 2., detPlateZ / 2.);
198 sDetPlate->SetName("DetectorPlate");
199 TGeoVolume* vDetPlate = new TGeoVolume("tof1DetPlateV", sDetPlate, medG10);
200 vDetPlate->SetLineColor(kBlue);
201
202 // --------------------------------------- Assemble detector
203
204 // Add strips
205 const int NStrips = 48; // 24 strips group
206 const double StripStep = 1.25; // [cm]
207 for (int i = 0; i < NStrips; i++) {
208 vDetector->AddNode(vStripGas, i + 1,
209 new TGeoTranslation("", -DetXsize / 2. + StripStep / 2. + i * StripStep, 0., 0.));
210 }
211
212 // Add Glass plates
213 vDetector->AddNode(vDetGlass, 1, new TGeoTranslation("", 0., 0., -stripGasZ / 2. - detGlassZ / 2.));
214 vDetector->AddNode(vDetGlass, 2, new TGeoTranslation("", 0., 0., +stripGasZ / 2. + detGlassZ / 2.));
215
216 // Add G10 plates
217 vDetector->AddNode(vDetPlate, 1, new TGeoTranslation("", 0., 0., -DetZsize / 2. + detPlateZ / 2.));
218 vDetector->AddNode(vDetPlate, 2, new TGeoTranslation("", 0., 0., +DetZsize / 2. - detPlateZ / 2.));
219
220 // -------------------------------------- Install Detectors
221 const double tofZgap = 0.86; // 8.6 mm between detectors
222 const double tofYoverlap = 3.0; // 30 mm detectors overlap at Y direction
223
224 const double tofXgap = 0.; // [cm] RUN5, part1
225 // const double tofXgap = 2. * 24.4; // [cm] RUN5, part2
226
227 double tofX = tofXgap / 2. + DetXsize / 2.;
228 double tofZshift = tofZgap + DetZsize;
229
230 // 1 box left side, 0 < X
231 // const double box1_x = 0; // [cm]
232 // const double box1_y = 0; // [cm]
233 // const double box1_z = 0; // [cm] :
234
235 const double box1_x = 207.405; // [cm]
236 const double box1_y = 2.478 - 3.; // [cm]
237 const double box1_z = 434.286 - 2.5 + 6.5; // [cm] :
238 TGeoRotation* geoRot1 = new TGeoRotation();
239 geoRot1->RotateX(0); // 0.005 Deg
240 geoRot1->RotateY(0); //-0.055 Deg
241 geoRot1->RotateZ(0.); // 0.09 Deg
242 const Double_t corr_X_box1[5] = {-0.43, -0.115, -0.267, -0.323, -1.427};
243 const Double_t corr_Y_box1[5] = {0.123, 0.269, 0.26, 0.521, 1.107};
244 const Double_t corr_Z_box1[5] = {-1.203, 0.057, 0.447, 0.58, -0.788};
245
246 TGeoCombiTrans* cR1 =
247 new TGeoCombiTrans("", box1_x + corr_X_box1[0], 2. * DetYsize - 2 * tofYoverlap + box1_y + corr_Y_box1[0],
248 box1_z + corr_Z_box1[0], geoRot1);
249 topTof->AddNode(vDetector, 1, cR1);
250
251 TGeoCombiTrans* cR2 =
252 new TGeoCombiTrans("", box1_x + corr_X_box1[1], 1. * DetYsize - tofYoverlap + box1_y + corr_Y_box1[1],
253 box1_z + tofZshift + corr_Z_box1[1], geoRot1);
254 topTof->AddNode(vDetector, 2, cR2);
255
256 TGeoCombiTrans* cR3 =
257 new TGeoCombiTrans("", box1_x + corr_X_box1[2], 0 + box1_y + corr_Y_box1[2], box1_z + corr_Z_box1[2], geoRot1);
258 topTof->AddNode(vDetector, 3, cR3);
259
260 TGeoCombiTrans* cR4 =
261 new TGeoCombiTrans("", box1_x + corr_X_box1[3], -1. * DetYsize + tofYoverlap + box1_y + corr_Y_box1[3],
262 box1_z + tofZshift + corr_Z_box1[3], geoRot1);
263 topTof->AddNode(vDetector, 4, cR4);
264
265 TGeoCombiTrans* cR5 =
266 new TGeoCombiTrans("", box1_x + corr_X_box1[4], -2. * DetYsize + 2 * tofYoverlap + box1_y + corr_Y_box1[4],
267 box1_z + corr_Z_box1[4], geoRot1);
268 topTof->AddNode(vDetector, 5, cR5);
269
270 TGeoCombiTrans* cBox1 = new TGeoCombiTrans("", box1_x, box1_y + 3., box1_z + 2.9 - 1.3, geoRot1);
271 topTof->AddNode(vBox, 1, cBox1);
272
273 // 2 box left side, 0 < x < box1_x
274 const double box2_x = 150.04; // [cm]
275 const double box2_y = 3.163 - 3.; // [cm]
276 const double box2_z = 421.161 - 2.5 + 6.5; // [cm] :
277 TGeoRotation* geoRot2 = new TGeoRotation;
278 geoRot2->RotateX(0);
279 geoRot2->RotateY(0);
280 geoRot2->RotateZ(0);
281 const Double_t corr_X_box2[5] = {0.926, 0.717, 0.067, -0.579, -0.178};
282 const Double_t corr_Y_box2[5] = {-0.293, -0.299, -0.204, -0.143, 0.948};
283 const Double_t corr_Z_box2[5] = {1.61, 1.22, 0.57, -0.083, 0.922};
284
285 TGeoCombiTrans* cR6 =
286 new TGeoCombiTrans("", box2_x + corr_X_box2[0], 2. * DetYsize - 2 * tofYoverlap + box2_y + corr_Y_box2[0],
287 box2_z + corr_Z_box2[0], geoRot2);
288 topTof->AddNode(vDetector, 6, cR6);
289
290 TGeoCombiTrans* cR7 =
291 new TGeoCombiTrans("", box2_x + corr_X_box2[1], 1. * DetYsize - tofYoverlap + box2_y + corr_Y_box2[1],
292 box2_z + tofZshift + corr_Z_box2[1], geoRot2);
293 topTof->AddNode(vDetector, 7, cR7);
294
295 TGeoCombiTrans* cR8 =
296 new TGeoCombiTrans("", box2_x + corr_X_box2[2], 0 + box2_y + corr_Y_box2[2], box2_z + corr_Z_box2[2], geoRot2);
297 topTof->AddNode(vDetector, 8, cR8);
298
299 TGeoCombiTrans* cR9 =
300 new TGeoCombiTrans("", box2_x + corr_X_box2[3], -1. * DetYsize + tofYoverlap + box2_y + corr_Y_box2[3],
301 box2_z + tofZshift + corr_Z_box2[3], geoRot2);
302 topTof->AddNode(vDetector, 9, cR9);
303
304 TGeoCombiTrans* cR10 =
305 new TGeoCombiTrans("", box2_x + corr_X_box2[4], -2. * DetYsize + 2 * tofYoverlap + box2_y + corr_Y_box2[4],
306 box2_z + corr_Z_box2[4], geoRot2);
307 topTof->AddNode(vDetector, 10, cR10);
308
309 TGeoCombiTrans* cBox2 = new TGeoCombiTrans("", box2_x, box2_y + 3., box2_z + 2.9 - 1.3 + 0.2, geoRot2);
310 topTof->AddNode(vBox, 2, cBox2);
311
312 // 3 box left side, x < 0
313 const double box3_x = -94.244; // [cm]
314 const double box3_y = 3.583 - 3.; // [cm]
315 const double box3_z = 421.065 - 2.5 + 6.5; // [cm] :
316 TGeoRotation* geoRot3 = new TGeoRotation;
317 geoRot3->RotateX(0);
318 geoRot3->RotateY(0);
319 geoRot3->RotateZ(0.); // 0.07 deg
320 const Double_t corr_X_box3[5] = {-0.078, 0.016, -0.043, 0.124, -0.211};
321 const Double_t corr_Y_box3[5] = {1.673, 1.11, 1.815, 1.481, 2.184};
322 const Double_t corr_Z_box3[5] = {1.04, 0.967, 1.427, 0.34, 0.748};
323
324 TGeoCombiTrans* cR11 =
325 new TGeoCombiTrans("", box3_x + corr_X_box3[0], 2. * DetYsize - 2 * tofYoverlap + box3_y + corr_Y_box3[0],
326 box3_z + corr_Z_box3[0], geoRot3);
327 topTof->AddNode(vDetector, 11, cR11);
328
329 TGeoCombiTrans* cR12 =
330 new TGeoCombiTrans("", box3_x + corr_X_box3[1], 1. * DetYsize - tofYoverlap + box3_y + corr_Y_box3[1],
331 box3_z + tofZshift + corr_Z_box3[1], geoRot3);
332 topTof->AddNode(vDetector, 12, cR12);
333
334 TGeoCombiTrans* cR13 =
335 new TGeoCombiTrans("", box3_x + corr_X_box3[2], 0 + box3_y + corr_Y_box3[2], box3_z + corr_Z_box3[2], geoRot3);
336 topTof->AddNode(vDetector, 13, cR13);
337
338 TGeoCombiTrans* cR14 =
339 new TGeoCombiTrans("", box3_x + corr_X_box3[3], -1. * DetYsize + tofYoverlap + box3_y + corr_Y_box3[3],
340 box3_z + tofZshift + corr_Z_box3[3], geoRot3);
341 topTof->AddNode(vDetector, 14, cR14);
342
343 TGeoCombiTrans* cR15 =
344 new TGeoCombiTrans("", box3_x + corr_X_box3[4], -2. * DetYsize + 2 * tofYoverlap + box3_y + corr_Y_box3[4],
345 box3_z + corr_Z_box3[4], geoRot3);
346 topTof->AddNode(vDetector, 15, cR15);
347
348 TGeoCombiTrans* cBox3 = new TGeoCombiTrans("", box3_x, box3_y + 3., box3_z + 2.9 - 1.3 + 0.2, geoRot3);
349 topTof->AddNode(vBox, 3, cBox3);
350
351 // 4 box left side, box3 < x < 0
352 const double box4_x = -150.210; // [cm]
353 const double box4_y = 2.588 - 3. + 1.24; // [cm]
354 const double box4_z = 434.650 - 2.5 + 6.5; // [cm] :
355 TGeoRotation* geoRot4 = new TGeoRotation;
356 geoRot4->RotateX(0);
357 geoRot4->RotateY(0); // 0.016
358 geoRot4->RotateZ(0.); // 0.0755
359 const Double_t corr_X_box4[5] = {0.025, 0.189, 0.222, 0.200, 0.123};
360 const Double_t corr_Y_box4[5] = {1.167 + 1.35 - 1.24, 1.262 + 1.27 - 1.24, 1.258 + 1.1 - 1.24, 1.793 + 1.17 - 1.24,
361 1.376 + 1.32 - 1.24};
362 const Double_t corr_Z_box4[5] = {-0.916, -1.048, -1.096, -1.096, -1.657};
363
364 TGeoCombiTrans* cR16 =
365 new TGeoCombiTrans("", box4_x + corr_X_box4[0], 2. * DetYsize - 2 * tofYoverlap + box4_y + corr_Y_box4[0],
366 box4_z + corr_Z_box4[0], geoRot4);
367 topTof->AddNode(vDetector, 16, cR16);
368
369 TGeoCombiTrans* cR17 =
370 new TGeoCombiTrans("", box4_x + corr_X_box4[1], 1. * DetYsize - tofYoverlap + box4_y + corr_Y_box4[1],
371 box4_z + tofZshift + corr_Z_box4[1], geoRot4);
372 topTof->AddNode(vDetector, 17, cR17);
373
374 TGeoCombiTrans* cR18 =
375 new TGeoCombiTrans("", box4_x + corr_X_box4[2], 0 + box4_y + corr_Y_box4[2], box4_z + corr_Z_box4[2], geoRot4);
376 topTof->AddNode(vDetector, 18, cR18);
377
378 TGeoCombiTrans* cR19 =
379 new TGeoCombiTrans("", box4_x + corr_X_box4[3], -1. * DetYsize + tofYoverlap + box4_y + corr_Y_box4[3],
380 box4_z + tofZshift + corr_Z_box4[3], geoRot4);
381 topTof->AddNode(vDetector, 19, cR19);
382
383 TGeoCombiTrans* cR20 =
384 new TGeoCombiTrans("", box4_x + corr_X_box4[4], -2. * DetYsize + 2 * tofYoverlap + box4_y + corr_Y_box4[4],
385 box4_z + corr_Z_box4[4], geoRot4);
386 topTof->AddNode(vDetector, 20, cR20);
387
388 TGeoCombiTrans* cBox4 = new TGeoCombiTrans("", box4_x, box4_y + 3., box4_z + 2.9 - 1.3, geoRot4);
389 topTof->AddNode(vBox, 4, cBox4);
390
391 //*/
392 // ------------------ Adding the TOP Volume --------------------------
393 top->AddNode(topTof, 1, new TGeoTranslation("tw", 0., 0., 0.));
394
395 // --------------- Finish --------------------------------------------
397
398 gGeoMan->CloseGeometry();
399 gGeoMan->CheckOverlaps(0.001);
400 gGeoMan->PrintOverlaps();
401 gGeoMan->Test();
402
403 TFile* geoFile = new TFile(geoFileName, "RECREATE");
404 top->Write();
405 geoFile->Close();
406
407 top->Draw("ogl");
408 gGeoMan->Browse(new TBrowser);
409}
int i
Definition P4_F32vec4.h:22
double Double_t
constexpr Bool_t kTRUE
#define R__ADD_INCLUDE_PATH(PATH)
kGray
kRed
kGreen
kBlue
kYellow
void Fatal(const char *location, const char *msgfmt,...)
R__EXTERN TGeoManager * gGeoManager
#define gROOT
R__EXTERN TSystem * gSystem
void Close(Option_t *option="") override
void RotateX(Double_t angle) override
void RotateY(Double_t angle) override
void RotateZ(Double_t angle) override
TGeoNode * AddNode(TGeoVolume *vol, Int_t copy_no, TGeoMatrix *mat=nullptr, Option_t *option="") 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
virtual void SetMedium(TGeoMedium *medium)
void SetLineColor(Color_t lcolor) override
virtual void SetName(const char *name)
virtual Int_t Write(const char *name=nullptr, Int_t option=0, Int_t bufsize=0)
void create_rootgeom_TOF400_RUN8()
Definition json.hpp:4446