48 float aCer[2] = {26.981538, 15.9994};
49 float zCer[2] = {13., 8.};
50 float wCer[2] = {0.5294, 0.4706};
54 float aAir[4] = {12.0107, 14.0067, 15.9994, 39.948};
55 float zAir[4] = {6., 7., 8., 18.};
56 float wAir[4] = {0.000124, 0.755267, 0.231781, 0.012827};
57 float dAir = 1.20479E-3;
58 float dAir1 = 1.20479E-11;
61 float aWater[2] = {1.00794, 15.9994};
62 float zWater[2] = {1., 8.};
63 float wWater[2] = {0.111894, 0.888106};
67 float aSiO2[2] = {28.0855, 15.9990};
68 float zSiO2[2] = {14., 8.};
69 float wSiO2[2] = {0.467, 0.533};
73 float aPolyethylene[2] = {12.01, 1.};
74 float zPolyethylene[2] = {6., 1.};
75 float wPolyethylene[2] = {.33, .67};
78 int nPolyurethane = 4;
79 float aPolyurethane[4] = {1.00794, 14.010, 12.0107, 15.9994};
80 float zPolyurethane[4] = {1.0, 7.0, 6.0, 8.0};
81 float wPolyurethane[4] = {0.017077588, 0.237314387, 0.203327619, 0.542280405};
82 float dPolyurethane = 1.25;
87 float aAl5083[9] = {54.938, 55.845, 63.546, 24.305, 28.086, 65.38, 51.996, 47.867, 26.982};
88 float zAl5083[9] = {25., 26., 29., 12., 14., 30., 24., 22., 13.};
90 float wAl5083[9] = {0.007, 0.004, 0.001, 0.0445, 0.004, 0.0025, 0.0015, 0.0015, 0.934};
91 float dAl5083 = 2.650;
95 float aAlBeMet[2] = {26.982, 9.012};
96 float zAlBeMet[2] = {13., 4.};
97 float wAlBeMet[2] = {0.38, 0.62};
98 float dAlBeMet = 2.071;
100 matmgr.Mixture(
"ALICE3_TRKSERVICES", 66,
"CERAMIC", aCer, zCer, dCer, 2, wCer);
101 matmgr.Mixture(
"ALICE3_TRKSERVICES", 68,
"AIR", aAir, zAir, dAir, 4, wAir);
102 matmgr.Mixture(
"ALICE3_TRKSERVICES", 69,
"POLYETHYLENE", aPolyethylene, zPolyethylene, .95, 2, wPolyethylene);
103 matmgr.Mixture(
"ALICE3_TRKSERVICES", 70,
"POLYURETHANE", aPolyurethane, zPolyurethane, dPolyurethane, nPolyurethane, wPolyurethane);
104 matmgr.Mixture(
"ALICE3_TRKSERVICES", 71,
"SILICONDIOXIDE", aSiO2, zSiO2, dSiO2, 2, wSiO2);
105 matmgr.Mixture(
"ALICE3_TRKSERVICES", 72,
"WATER", aWater, zWater, dWater, 2, wWater);
106 matmgr.Material(
"ALICE3_TRKSERVICES", 67,
"COPPER", 63.546, 29, 8.96, 1.43, 15.1);
107 matmgr.Material(
"ALICE3_TRKSERVICES", 73,
"BERYLLIUM", 9.01, 4., 1.848, 35.3, 36.7);
108 matmgr.Mixture(
"ALICE3_TRKSERVICES", 74,
"ALUMINIUM5083", aAl5083, zAl5083, dAl5083, 9, wAl5083);
109 matmgr.Mixture(
"ALICE3_TRKSERVICES", 75,
"ALUMINIUMBERYLLIUMMETAL", aAlBeMet, zAlBeMet, dAlBeMet, 2, wAlBeMet);
110 matmgr.Material(
"ALICE3_TRKSERVICES", 76,
"CARBONFIBERM55J6K", 12.0107, 6, 1.92, 22.4, 45.4);
111 matmgr.Mixture(
"ALICE3_PIPE", 77,
"VACUUM", aAir, zAir, dAir1, 4, wAir);
113 matmgr.Medium(
"ALICE3_TRKSERVICES", 1,
"CERAMIC", 66, 0, ifield, fieldm, tmaxfd, stemax, deemax, epsil, stmin);
114 matmgr.Medium(
"ALICE3_TRKSERVICES", 2,
"COPPER", 67, 0, ifield, fieldm, tmaxfd, stemax, deemax, epsil, stmin);
115 matmgr.Medium(
"ALICE3_TRKSERVICES", 3,
"AIR", 68, 0, ifield, fieldm, tmaxfd, stemax, deemax, epsil, stmin);
116 matmgr.Medium(
"ALICE3_TRKSERVICES", 4,
"POLYETHYLENE", 69, 0, ifield, fieldm, tmaxfd, stemax, deemax, epsil, stmin);
117 matmgr.Medium(
"ALICE3_TRKSERVICES", 5,
"POLYURETHANE", 70, 0, ifield, fieldm, tmaxfd, stemax, deemax, epsil, stmin);
118 matmgr.Medium(
"ALICE3_TRKSERVICES", 6,
"SILICONDIOXIDE", 71, 0, ifield, fieldm, tmaxfd, stemax, deemax, epsil, stmin);
119 matmgr.Medium(
"ALICE3_TRKSERVICES", 7,
"WATER", 72, 0, ifield, fieldm, tmaxfd, stemax, deemax, epsil, stmin);
120 matmgr.Medium(
"ALICE3_TRKSERVICES", 8,
"BERYLLIUM", 73, 0, ifield, fieldm, tmaxfd, stemax, deemax, epsil, stmin);
121 matmgr.Medium(
"ALICE3_TRKSERVICES", 9,
"ALUMINIUM5083", 74, 0, ifield, fieldm, tmaxfd, stemax, deemax, epsil, stmin);
122 matmgr.Medium(
"ALICE3_TRKSERVICES", 10,
"ALUMINIUMBERYLLIUMMETAL", 75, 0, ifield, fieldm, tmaxfd, stemax, deemax, epsil, stmin);
123 matmgr.Medium(
"ALICE3_TRKSERVICES", 11,
"CARBONFIBERM55J6K", 76, 0, ifield, fieldm, tmaxfd, stemax, deemax, epsil, stmin);
124 matmgr.Medium(
"ALICE3_PIPE", 12,
"VACUUM", 77, 0, ifield, fieldm, tmaxfd, stemax, deemax, epsil, stmin);
203 TGeoMedium* medSiO2 = matmgr.getTGeoMedium(
"ALICE3_TRKSERVICES_SILICONDIOXIDE");
204 TGeoMedium* medPE = matmgr.getTGeoMedium(
"ALICE3_TRKSERVICES_POLYETHYLENE");
205 TGeoMedium* medCu = matmgr.getTGeoMedium(
"ALICE3_TRKSERVICES_COPPER");
206 TGeoMedium* medPU = matmgr.getTGeoMedium(
"ALICE3_TRKSERVICES_POLYURETHANE");
207 TGeoMedium* medH2O = matmgr.getTGeoMedium(
"ALICE3_TRKSERVICES_WATER");
209 for (
auto& orientation : {Orientation::kASide, Orientation::kCSide}) {
211 float siO2FiberThick = 0.5 * 0.212;
212 float peFiberThick = 0.5 * 0.212;
214 float rMinInnerServices = 68.5f;
215 float zLengthInnerServices = 201.f;
216 float translation = (
int)orientation * (149.f + zLengthInnerServices / 2);
218 TGeoTube* outerDisksFiberSIO2 =
new TGeoTube(
"TRK_OUTERDISKS_FIBER_SIO2sh", rMinInnerServices, rMinInnerServices + siO2FiberThick, zLengthInnerServices / 2);
219 TGeoTube* outerDisksFiberPE =
new TGeoTube(
"TRK_OUTERDISKS_FIBER_PEsh", rMinInnerServices + siO2FiberThick, rMinInnerServices + siO2FiberThick + peFiberThick, zLengthInnerServices / 2);
220 rMinInnerServices += siO2FiberThick + peFiberThick;
221 TGeoVolume* outerDisksFiberSIO2Volume =
new TGeoVolume(
"TRK_OUTERDISKS_FIBER_SIO2", outerDisksFiberSIO2, medSiO2);
222 TGeoVolume* outerDisksFiberPEVolume =
new TGeoVolume(
"TRK_OUTERDISKS_FIBER_PE", outerDisksFiberPE, medPE);
223 outerDisksFiberSIO2Volume->SetLineColor(kGray);
224 outerDisksFiberPEVolume->SetLineColor(kGray);
225 auto* combiTrans =
new TGeoCombiTrans(0, 0, translation,
nullptr);
226 motherVolume->AddNode(outerDisksFiberSIO2Volume, 1, combiTrans);
227 motherVolume->AddNode(outerDisksFiberPEVolume, 1, combiTrans);
230 float cuPowerThick = 0.09 * 1.186;
231 float pePowerThick = 0.91 * 1.186;
233 TGeoTube* outerDisksPowerCu =
new TGeoTube(
"TRK_OUTERDISKS_POWER_CUsh", rMinInnerServices, rMinInnerServices + cuPowerThick, zLengthInnerServices / 2);
234 TGeoTube* outerDisksPowerPE =
new TGeoTube(
"TRK_OUTERDISKS_POWER_PEsh", rMinInnerServices + cuPowerThick, rMinInnerServices + cuPowerThick + pePowerThick, zLengthInnerServices / 2);
235 rMinInnerServices += cuPowerThick + pePowerThick;
236 TGeoVolume* outerDisksPowerCuVolume =
new TGeoVolume(
"TRK_OUTERDISKS_POWER_CU", outerDisksPowerCu, medCu);
237 TGeoVolume* outerDisksPowerPEVolume =
new TGeoVolume(
"TRK_OUTERDISKS_POWER_PE", outerDisksPowerPE, medPE);
238 outerDisksPowerCuVolume->SetLineColor(kGray);
239 outerDisksPowerPEVolume->SetLineColor(kGray);
240 motherVolume->AddNode(outerDisksPowerCuVolume, 1, combiTrans);
241 motherVolume->AddNode(outerDisksPowerPEVolume, 1, combiTrans);
244 float puCoolingThick = 0.56 * 0.647;
245 float h2oCoolingThick = 0.44 * 0.647;
247 TGeoTube* outerDisksCoolingPU =
new TGeoTube(
"TRK_OUTERDISKS_COOLING_PUsh", rMinInnerServices, rMinInnerServices + puCoolingThick, zLengthInnerServices / 2);
248 TGeoTube* outerDisksCoolingH2O =
new TGeoTube(
"TRK_OUTERDISKS_COOLING_H2Osh", rMinInnerServices + puCoolingThick, rMinInnerServices + puCoolingThick + h2oCoolingThick, zLengthInnerServices / 2);
250 TGeoVolume* outerDisksCoolingPUVolume =
new TGeoVolume(
"TRK_OUTERDISKS_COOLING_PU", outerDisksCoolingPU, medPU);
251 TGeoVolume* outerDisksCoolingH2OVolume =
new TGeoVolume(
"TRK_OUTERDISKS_COOLING_H2O", outerDisksCoolingH2O, medH2O);
252 outerDisksCoolingPUVolume->SetLineColor(kGray);
253 outerDisksCoolingH2OVolume->SetLineColor(kGray);
254 motherVolume->AddNode(outerDisksCoolingPUVolume, 1, combiTrans);
255 motherVolume->AddNode(outerDisksCoolingH2OVolume, 1, combiTrans);
264 TGeoMedium* medSiO2 = matmgr.getTGeoMedium(
"ALICE3_TRKSERVICES_SILICONDIOXIDE");
265 TGeoMedium* medPE = matmgr.getTGeoMedium(
"ALICE3_TRKSERVICES_POLYETHYLENE");
266 TGeoMedium* medCu = matmgr.getTGeoMedium(
"ALICE3_TRKSERVICES_COPPER");
267 TGeoMedium* medPU = matmgr.getTGeoMedium(
"ALICE3_TRKSERVICES_POLYURETHANE");
268 TGeoMedium* medH2O = matmgr.getTGeoMedium(
"ALICE3_TRKSERVICES_WATER");
269 TGeoMedium* medCFiber = matmgr.getTGeoMedium(
"ALICE3_TRKSERVICES_CARBONFIBERM55J6K");
272 float siO2FiberThick = 0.5 * 0.307;
273 float peFiberThick = 0.5 * 0.307;
274 float puCoolingThick = 0.56 * 0.474;
275 float h2oCoolingThick = 0.44 * 0.474;
276 float cuPowerThick = 0.09 * 1.09;
277 float pePowerThick = 0.91 * 1.09;
278 const float totalThickness = siO2FiberThick + peFiberThick + cuPowerThick + pePowerThick + puCoolingThick + h2oCoolingThick;
281 float rMinMiddleCarbonSupport = 34.8f;
282 float rMaxMiddleCarbonSupport = 35.f;
283 const float zLengthMiddleCarbon = 129.f;
284 TGeoTube* middleBarrelCarbonSupport =
new TGeoTube(
"TRK_MID_CARBONSUPPORTsh", rMinMiddleCarbonSupport, rMaxMiddleCarbonSupport, zLengthMiddleCarbon / 2.);
285 TGeoVolume* middleBarrelCarbonSupportVolume =
new TGeoVolume(
"TRK_MID_CARBONSUPPORT", middleBarrelCarbonSupport, medCFiber);
286 middleBarrelCarbonSupportVolume->SetLineColor(kGray);
287 LOGP(info,
"Creating carbon fiber support for Middle Tracker");
288 motherVolume->AddNode(middleBarrelCarbonSupportVolume, 1,
nullptr);
291 float rMinMiddleServices = 35.f;
292 float rMinMiddleBarrel = rMinMiddleServices;
293 const float zLengthCylinderMiddleServices = 40.5f;
294 const float zLengthMiddleServices = 143.f;
295 for (
auto& orientation : {Orientation::kASide, Orientation::kCSide}) {
296 rMinMiddleServices = 35.f;
297 LOGP(info,
"Building services for Middle Tracker rminMiddleServices");
298 TGeoTube* middleBarrelFiberSIO2 =
new TGeoTube(Form(
"TRK_MID_FIBER_SIO2sh_%s", orientation == Orientation::kASide ?
"bwd" :
"fwd"), rMinMiddleServices, rMinMiddleServices + siO2FiberThick, zLengthCylinderMiddleServices );
299 rMinMiddleServices += siO2FiberThick;
300 TGeoTube* middleBarrelFiberPE =
new TGeoTube(Form(
"TRK_MID_FIBER_PEsh_%s", orientation == Orientation::kASide ?
"bwd" :
"fwd"), rMinMiddleServices, rMinMiddleServices + peFiberThick, zLengthCylinderMiddleServices );
301 rMinMiddleServices += peFiberThick;
302 TGeoVolume* middleBarrelFiberSIO2Volume =
new TGeoVolume(Form(
"TRK_MID_FIBER_SIO2_%s", orientation == Orientation::kASide ?
"bwd" :
"fwd"), middleBarrelFiberSIO2, medSiO2);
303 TGeoVolume* middleBarrelFiberPEVolume =
new TGeoVolume(Form(
"TRK_MID_FIBER_PE_%s", orientation == Orientation::kASide ?
"bwd" :
"fwd"), middleBarrelFiberPE, medPE);
304 middleBarrelFiberSIO2Volume->SetLineColor(kGray);
305 middleBarrelFiberPEVolume->SetLineColor(kGray);
306 auto* combiTrans =
new TGeoCombiTrans(0, 0, (
int)orientation * (zLengthMiddleServices - zLengthCylinderMiddleServices),
nullptr);
307 motherVolume->AddNode(middleBarrelFiberSIO2Volume, 1, combiTrans);
308 motherVolume->AddNode(middleBarrelFiberPEVolume, 1, combiTrans);
311 TGeoTube* middleBarrelPowerCu =
new TGeoTube(Form(
"TRK_MID_POWER_CUsh_%s", orientation == Orientation::kASide ?
"bwd" :
"fwd"), rMinMiddleServices, rMinMiddleServices + cuPowerThick, zLengthCylinderMiddleServices );
312 rMinMiddleServices += cuPowerThick;
313 TGeoTube* middleBarrelPowerPE =
new TGeoTube(Form(
"TRK_MID_POWER_PEsh_%s", orientation == Orientation::kASide ?
"bwd" :
"fwd"), rMinMiddleServices, rMinMiddleServices + pePowerThick, zLengthCylinderMiddleServices );
314 rMinMiddleServices += pePowerThick;
315 TGeoVolume* middleBarrelPowerCuVolume =
new TGeoVolume(Form(
"TRK_MID_POWER_CU_%s", orientation == Orientation::kASide ?
"bwd" :
"fwd"), middleBarrelPowerCu, medCu);
316 TGeoVolume* middleBarrelPowerPEVolume =
new TGeoVolume(Form(
"TRK_MID_POWER_PE_%s", orientation == Orientation::kASide ?
"bwd" :
"fwd"), middleBarrelPowerPE, medPE);
317 middleBarrelPowerCuVolume->SetLineColor(kGray);
318 middleBarrelPowerPEVolume->SetLineColor(kGray);
319 motherVolume->AddNode(middleBarrelPowerCuVolume, 1, combiTrans);
320 motherVolume->AddNode(middleBarrelPowerPEVolume, 1, combiTrans);
323 TGeoTube* middleBarrelCoolingPU =
new TGeoTube(Form(
"TRK_MID_COOLING_PUsh_%s", orientation == Orientation::kASide ?
"bwd" :
"fwd"), rMinMiddleServices, rMinMiddleServices + puCoolingThick, zLengthCylinderMiddleServices );
324 rMinMiddleServices += puCoolingThick;
325 TGeoTube* middleBarrelCoolingH2O =
new TGeoTube(Form(
"TRK_MID_COOLING_H2Osh_%s", orientation == Orientation::kASide ?
"bwd" :
"fwd"), rMinMiddleServices, rMinMiddleServices + h2oCoolingThick, zLengthCylinderMiddleServices );
326 rMinMiddleServices = rMinMiddleServices += h2oCoolingThick;
327 TGeoVolume* middleBarrelCoolingPUVolume =
new TGeoVolume(Form(
"TRK_MID_COOLING_PU_%s", orientation == Orientation::kASide ?
"bwd" :
"fwd"), middleBarrelCoolingPU, medPU);
328 TGeoVolume* middleBarrelCoolingH2OVolume =
new TGeoVolume(Form(
"TRK_MID_COOLING_H2O_%s", orientation == Orientation::kASide ?
"bwd" :
"fwd"), middleBarrelCoolingH2O, medH2O);
329 middleBarrelCoolingPUVolume->SetLineColor(kGray);
330 middleBarrelCoolingH2OVolume->SetLineColor(kGray);
331 motherVolume->AddNode(middleBarrelCoolingPUVolume, 1, combiTrans);
332 motherVolume->AddNode(middleBarrelCoolingH2OVolume, 1, combiTrans);
335 const float rMinMiddleBarrelDisk = 5.68f;
336 const float rMaxMiddleBarrelDisk = 35.f;
337 const float zLengthMiddleBarrel = 64.5f;
338 for (
auto& orientation : {Orientation::kASide, Orientation::kCSide}) {
339 TGeoTube* middleBarrelConnDiskSIO2 =
new TGeoTube(Form(
"TRK_MIDBARCONN_DISK_FIBER_SIO2sh_%s", orientation == Orientation::kASide ?
"bwd" :
"fwd"), rMinMiddleBarrelDisk, rMaxMiddleBarrelDisk, siO2FiberThick / 2.);
340 TGeoTube* middleBarrelConnDiskPE =
new TGeoTube(Form(
"TRK_MIDBARCONN_DISK_FIBER_PEsh_%s", orientation == Orientation::kASide ?
"bwd" :
"fwd"), rMinMiddleBarrelDisk, rMaxMiddleBarrelDisk, peFiberThick / 2.);
341 TGeoVolume* middleBarrelConnDiskSIO2Volume =
new TGeoVolume(Form(
"TRK_MIDBARCONN_DISK_FIBER_SIO2_%s", orientation == Orientation::kASide ?
"bwd" :
"fwd"), middleBarrelConnDiskSIO2, medSiO2);
342 TGeoVolume* middleBarrelConnDiskPEVolume =
new TGeoVolume(Form(
"TRK_MIDBARCONN_DISK_FIBER_PE_%s", orientation == Orientation::kASide ?
"bwd" :
"fwd"), middleBarrelConnDiskPE, medPE);
343 middleBarrelConnDiskSIO2Volume->SetLineColor(kGray);
344 middleBarrelConnDiskPEVolume->SetLineColor(kGray);
345 auto* rot =
new TGeoRotation(
"", 0, 0, 180);
346 auto* combiTransSIO2 =
new TGeoCombiTrans(0, 0, (
int)orientation * (siO2FiberThick / 2. + zLengthMiddleBarrel), rot);
347 auto* combiTransPE =
new TGeoCombiTrans(0, 0, (
int)orientation * (siO2FiberThick + peFiberThick / 2. + zLengthMiddleBarrel), rot);
348 motherVolume->AddNode(middleBarrelConnDiskSIO2Volume, 1, combiTransSIO2);
349 motherVolume->AddNode(middleBarrelConnDiskPEVolume, 1, combiTransPE);
351 TGeoTube* middleBarrelConnDiskCu =
new TGeoTube(Form(
"TRK_MIDBARCONN_DISK_POWER_CUsh_%s", orientation == Orientation::kASide ?
"bwd" :
"fwd"), rMinMiddleBarrelDisk, rMaxMiddleBarrelDisk, cuPowerThick / 2.);
352 TGeoTube* middleBarrelConnDiskPEPower =
new TGeoTube(Form(
"TRK_MIDBARCONN_DISK_POWER_PEsh_%s", orientation == Orientation::kASide ?
"bwd" :
"fwd"), rMinMiddleBarrelDisk, rMaxMiddleBarrelDisk, pePowerThick / 2.);
353 TGeoVolume* middleBarrelConnDiskCuVolume =
new TGeoVolume(Form(
"TRK_MIDBARCONN_DISK_POWER_CU_%s", orientation == Orientation::kASide ?
"bwd" :
"fwd"), middleBarrelConnDiskCu, medCu);
354 TGeoVolume* middleBarrelConnDiskPEPowerVolume =
new TGeoVolume(Form(
"TRK_MIDBARCONN_DISK_POWER_PE_%s", orientation == Orientation::kASide ?
"bwd" :
"fwd"), middleBarrelConnDiskPEPower, medPE);
355 middleBarrelConnDiskCuVolume->SetLineColor(kGray);
356 middleBarrelConnDiskPEPowerVolume->SetLineColor(kGray);
357 auto* combiTransCu =
new TGeoCombiTrans(0, 0, (
int)orientation * (siO2FiberThick + peFiberThick + cuPowerThick / 2. + zLengthMiddleBarrel), rot);
358 auto* combiTransPEPower =
new TGeoCombiTrans(0, 0, (
int)orientation * (siO2FiberThick + peFiberThick + cuPowerThick + pePowerThick / 2. + zLengthMiddleBarrel), rot);
359 motherVolume->AddNode(middleBarrelConnDiskCuVolume, 1, combiTransCu);
360 motherVolume->AddNode(middleBarrelConnDiskPEPowerVolume, 1, combiTransPEPower);
362 TGeoTube* middleBarrelConnDiskPU =
new TGeoTube(Form(
"TRK_MIDBARCONN_DISK_PUsh_%s", orientation == Orientation::kASide ?
"bwd" :
"fwd"), rMinMiddleBarrelDisk, rMaxMiddleBarrelDisk, puCoolingThick / 2.);
363 TGeoTube* middleBarrelConnDiskH2O =
new TGeoTube(Form(
"TRK_MIDBARCONN_DISK_H2Osh_%s", orientation == Orientation::kASide ?
"bwd" :
"fwd"), rMinMiddleBarrelDisk, rMaxMiddleBarrelDisk, h2oCoolingThick / 2.);
364 TGeoVolume* middleBarrelConnDiskPUVolume =
new TGeoVolume(Form(
"TRK_MIDBARCONN_DISK_PU_%s", orientation == Orientation::kASide ?
"bwd" :
"fwd"), middleBarrelConnDiskPU, medPU);
365 TGeoVolume* middleBarrelConnDiskH2OVolume =
new TGeoVolume(Form(
"TRK_MIDBARCONN_DISK_H2O_%s", orientation == Orientation::kASide ?
"bwd" :
"fwd"), middleBarrelConnDiskH2O, medH2O);
366 middleBarrelConnDiskPUVolume->SetLineColor(kGray);
367 middleBarrelConnDiskH2OVolume->SetLineColor(kGray);
368 auto* combiTransPU =
new TGeoCombiTrans(0, 0, (
int)orientation * (siO2FiberThick + peFiberThick + cuPowerThick + pePowerThick + puCoolingThick / 2. + zLengthMiddleBarrel), rot);
369 auto* combiTransH2O =
new TGeoCombiTrans(0, 0, (
int)orientation * (siO2FiberThick + peFiberThick + cuPowerThick + pePowerThick + puCoolingThick + h2oCoolingThick / 2. + zLengthMiddleBarrel), rot);
370 motherVolume->AddNode(middleBarrelConnDiskPUVolume, 1, combiTransPU);
371 motherVolume->AddNode(middleBarrelConnDiskH2OVolume, 1, combiTransH2O);
375 float rMaxMiddleServicesBarFwd = 74.5f + siO2FiberThick + peFiberThick + cuPowerThick + pePowerThick + puCoolingThick + h2oCoolingThick;
376 for (
auto& orientation : {Orientation::kASide, Orientation::kCSide}) {
378 TGeoTube* middleBarFwdFiberSIO2 =
new TGeoTube(
"TRK_MIDBARFWD_FIBER_SIO2sh", rMinMiddleBarrel, rMaxMiddleServicesBarFwd, siO2FiberThick / 2.);
379 TGeoTube* middleBarFwdFiberPE =
new TGeoTube(
"TRK_MIDBARFWD_FIBER_PEsh", rMinMiddleBarrel, rMaxMiddleServicesBarFwd, peFiberThick / 2.);
380 TGeoVolume* middleBarFwdFiberSIO2Volume =
new TGeoVolume(
"TRK_MIDBARFWD_FIBER_SIO2", middleBarFwdFiberSIO2, medSiO2);
381 TGeoVolume* middleBarFwdFiberPEVolume =
new TGeoVolume(
"TRK_MIDBARFWD_FIBER_PE", middleBarFwdFiberPE, medPE);
382 middleBarFwdFiberSIO2Volume->SetLineColor(kGray);
383 middleBarFwdFiberPEVolume->SetLineColor(kGray);
384 auto* rot =
new TGeoRotation(
"", 0, 0, 180);
385 auto* combiTransSIO2 =
new TGeoCombiTrans(0, 0, (
int)orientation * (siO2FiberThick / 2. + zLengthMiddleServices), rot);
386 auto* combiTransPE =
new TGeoCombiTrans(0, 0, (
int)orientation * (siO2FiberThick + peFiberThick / 2. + zLengthMiddleServices), rot);
387 motherVolume->AddNode(middleBarFwdFiberSIO2Volume, 1, combiTransSIO2);
388 motherVolume->AddNode(middleBarFwdFiberPEVolume, 1, combiTransPE);
391 TGeoTube* middleBarFwdPowerCu =
new TGeoTube(
"TRK_MIDBARFWD_POWER_CUsh", rMinMiddleBarrel, rMaxMiddleServicesBarFwd, cuPowerThick / 2.);
392 TGeoTube* middleBarFwdPowerPE =
new TGeoTube(
"TRK_MIDBARFWD_POWER_PEsh", rMinMiddleBarrel, rMaxMiddleServicesBarFwd, pePowerThick / 2.);
393 TGeoVolume* middleBarFwdPowerCuVolume =
new TGeoVolume(
"TRK_MIDBARFWD_POWER_CU", middleBarFwdPowerCu, medCu);
394 TGeoVolume* middleBarFwdPowerPEVolume =
new TGeoVolume(
"TRK_MIDBARFWD_POWER_PE", middleBarFwdPowerPE, medPE);
395 middleBarFwdPowerCuVolume->SetLineColor(kGray);
396 middleBarFwdPowerPEVolume->SetLineColor(kGray);
397 auto* combiTransCu =
new TGeoCombiTrans(0, 0, (
int)orientation * (siO2FiberThick + peFiberThick + cuPowerThick / 2. + zLengthMiddleServices), rot);
398 auto* combiTransPEPower =
new TGeoCombiTrans(0, 0, (
int)orientation * (siO2FiberThick + peFiberThick + cuPowerThick + pePowerThick / 2. + zLengthMiddleServices), rot);
399 motherVolume->AddNode(middleBarFwdPowerCuVolume, 1, combiTransCu);
400 motherVolume->AddNode(middleBarFwdPowerPEVolume, 1, combiTransPEPower);
403 TGeoTube* middleBarFwdCoolingPU =
new TGeoTube(
"TRK_MIDBARFWD_COOLING_PUsh", rMinMiddleBarrel, rMaxMiddleServicesBarFwd, puCoolingThick / 2.);
404 TGeoTube* middleBarFwdCoolingH2O =
new TGeoTube(
"TRK_MIDBARFWD_COOLING_H2Osh", rMinMiddleBarrel, rMaxMiddleServicesBarFwd, h2oCoolingThick / 2.);
405 TGeoVolume* middleBarFwdCoolingPUVolume =
new TGeoVolume(
"TRK_MIDBARFWD_COOLING_PU", middleBarFwdCoolingPU, medPU);
406 TGeoVolume* middleBarFwdCoolingH2OVolume =
new TGeoVolume(
"TRK_MIDBARFWD_COOLING_H2O", middleBarFwdCoolingH2O, medH2O);
407 middleBarFwdCoolingPUVolume->SetLineColor(kGray);
408 middleBarFwdCoolingH2OVolume->SetLineColor(kGray);
409 auto* combiTransCoolingPU =
new TGeoCombiTrans(0, 0, (
int)orientation * (siO2FiberThick + peFiberThick + cuPowerThick + pePowerThick + puCoolingThick / 2. + zLengthMiddleServices), rot);
410 auto* combiTransCoolingH2O =
new TGeoCombiTrans(0, 0, (
int)orientation * (siO2FiberThick + peFiberThick + cuPowerThick + pePowerThick + puCoolingThick + h2oCoolingThick / 2. + zLengthMiddleServices), rot);
411 motherVolume->AddNode(middleBarFwdCoolingPUVolume, 1, combiTransCoolingPU);
412 motherVolume->AddNode(middleBarFwdCoolingH2OVolume, 1, combiTransCoolingH2O);
416 const float zLengthMiddleServicesFwd = 350.f - (143.f + totalThickness);
418 for (
auto& orientation : {Orientation::kASide, Orientation::kCSide}) {
420 float siO2FiberThick = 0.5 * 0.307;
421 float peFiberThick = 0.5 * 0.307;
422 float rMinMiddleServicesFwd = 74.5f;
424 float translation = (
int)orientation * (143.f + totalThickness + zLengthMiddleServicesFwd / 2);
426 TGeoTube* middleFwdFiberSIO2 =
new TGeoTube(
"TRK_MIDFWD_FIBER_SIO2sh", rMinMiddleServicesFwd, rMinMiddleServicesFwd + siO2FiberThick, zLengthMiddleServicesFwd / 2);
427 TGeoTube* middleFwdFiberPE =
new TGeoTube(
"TRK_MIDFWD_FIBER_PEsh", rMinMiddleServicesFwd + siO2FiberThick, rMinMiddleServicesFwd + siO2FiberThick + peFiberThick, zLengthMiddleServicesFwd / 2);
428 rMinMiddleServicesFwd += siO2FiberThick + peFiberThick;
429 TGeoVolume* middleFwdFiberSIO2Volume =
new TGeoVolume(
"TRK_MIDFWD_FIBER_SIO2", middleFwdFiberSIO2, medSiO2);
430 TGeoVolume* middleFwdFiberPEVolume =
new TGeoVolume(
"TRK_MIDFWD_FIBER_PE", middleFwdFiberPE, medPE);
431 middleFwdFiberSIO2Volume->SetLineColor(kGray);
432 middleFwdFiberPEVolume->SetLineColor(kGray);
433 auto* combiTrans =
new TGeoCombiTrans(0, 0, translation,
nullptr);
434 motherVolume->AddNode(middleFwdFiberSIO2Volume, 1, combiTrans);
435 motherVolume->AddNode(middleFwdFiberPEVolume, 1, combiTrans);
438 float cuPowerThick = 0.09 * 1.09;
439 float pePowerThick = 0.91 * 1.09;
441 TGeoTube* middleFwdPowerCu =
new TGeoTube(
"TRK_MIDFWD_POWER_CUsh", rMinMiddleServicesFwd, rMinMiddleServicesFwd + cuPowerThick, zLengthMiddleServicesFwd / 2);
442 TGeoTube* middleFwdPowerPE =
new TGeoTube(
"TRK_MIDFWD_POWER_PEsh", rMinMiddleServicesFwd + cuPowerThick, rMinMiddleServicesFwd + cuPowerThick + pePowerThick, zLengthMiddleServicesFwd / 2);
443 rMinMiddleServicesFwd += cuPowerThick + pePowerThick;
444 TGeoVolume* middleFwdPowerCuVolume =
new TGeoVolume(
"TRK_MIDFWD_POWER_CU", middleFwdPowerCu, medCu);
445 TGeoVolume* middleFwdPowerPEVolume =
new TGeoVolume(
"TRK_MIDFWD_POWER_PE", middleFwdPowerPE, medPE);
446 middleFwdPowerCuVolume->SetLineColor(kGray);
447 middleFwdPowerPEVolume->SetLineColor(kGray);
448 motherVolume->AddNode(middleFwdPowerCuVolume, 1, combiTrans);
449 motherVolume->AddNode(middleFwdPowerPEVolume, 1, combiTrans);
452 float puCoolingThick = 0.56 * 0.474;
453 float h2oCoolingThick = 0.44 * 0.474;
455 TGeoTube* middleFwdCoolingPU =
new TGeoTube(
"TRK_MIDFWD_COOLING_PUsh", rMinMiddleServicesFwd, rMinMiddleServicesFwd + puCoolingThick, zLengthMiddleServicesFwd / 2);
456 TGeoTube* middleFwdCoolingH2O =
new TGeoTube(
"TRK_MIDFWD_COOLING_H2Osh", rMinMiddleServicesFwd + puCoolingThick, rMinMiddleServicesFwd + puCoolingThick + h2oCoolingThick, zLengthMiddleServicesFwd / 2);
458 TGeoVolume* middleFwdCoolingPUVolume =
new TGeoVolume(
"TRK_MIDFWD_COOLING_PU", middleFwdCoolingPU, medPU);
459 TGeoVolume* middleFwdCoolingH2OVolume =
new TGeoVolume(
"TRK_MIDFWD_COOLING_H2O", middleFwdCoolingH2O, medH2O);
460 middleFwdCoolingPUVolume->SetLineColor(kGray);
461 middleFwdCoolingH2OVolume->SetLineColor(kGray);
462 motherVolume->AddNode(middleFwdCoolingPUVolume, 1, combiTrans);
463 motherVolume->AddNode(middleFwdCoolingH2OVolume, 1, combiTrans);
475 TGeoMedium* medSiO2 = matmgr.getTGeoMedium(
"ALICE3_TRKSERVICES_SILICONDIOXIDE");
476 TGeoMedium* medPE = matmgr.getTGeoMedium(
"ALICE3_TRKSERVICES_POLYETHYLENE");
477 TGeoMedium* medCu = matmgr.getTGeoMedium(
"ALICE3_TRKSERVICES_COPPER");
478 TGeoMedium* medPU = matmgr.getTGeoMedium(
"ALICE3_TRKSERVICES_POLYURETHANE");
479 TGeoMedium* medH2O = matmgr.getTGeoMedium(
"ALICE3_TRKSERVICES_WATER");
482 const float siO2FiberThick = 0.5 * 0.269;
483 const float peFiberThick = 0.5 * 0.269;
485 const float zLengthOuterBarrelServices = 350.f;
487 TGeoTube* outerBarrelFiberSIO2 =
new TGeoTube(
"TRK_OUTERBARREL_FIBER_SIO2sh", rMinOuterBarrelServices, rMinOuterBarrelServices + siO2FiberThick, zLengthOuterBarrelServices);
488 TGeoTube* outerBarrelFiberPE =
new TGeoTube(
"TRK_OUTERBARREL_FIBER_PEsh", rMinOuterBarrelServices + siO2FiberThick, rMinOuterBarrelServices + siO2FiberThick + peFiberThick, zLengthOuterBarrelServices);
489 rMinOuterBarrelServices += siO2FiberThick + peFiberThick;
490 TGeoVolume* outerBarrelFiberSIO2Volume =
new TGeoVolume(
"TRK_OUTERBARREL_FIBER_SIO2", outerBarrelFiberSIO2, medSiO2);
491 TGeoVolume* outerBarrelFiberPEVolume =
new TGeoVolume(
"TRK_OUTERBARREL_FIBER_PE", outerBarrelFiberPE, medPE);
492 outerBarrelFiberSIO2Volume->SetLineColor(kGray);
493 outerBarrelFiberPEVolume->SetLineColor(kGray);
494 motherVolume->AddNode(outerBarrelFiberSIO2Volume, 1,
nullptr);
495 motherVolume->AddNode(outerBarrelFiberPEVolume, 1,
nullptr);
498 const float cuPowerThick = 0.09 * 0.430;
499 const float pePowerThick = 0.91 * 0.430;
501 TGeoTube* outerBarrelPowerCu =
new TGeoTube(
"TRK_OUTERBARREL_POWER_CUsh", rMinOuterBarrelServices, rMinOuterBarrelServices + cuPowerThick, zLengthOuterBarrelServices);
502 TGeoTube* outerBarrelPowerPE =
new TGeoTube(
"TRK_OUTERBARREL_POWER_PEsh", rMinOuterBarrelServices + cuPowerThick, rMinOuterBarrelServices + cuPowerThick + pePowerThick, zLengthOuterBarrelServices);
503 rMinOuterBarrelServices += cuPowerThick + pePowerThick;
504 TGeoVolume* outerBarrelPowerCuVolume =
new TGeoVolume(
"TRK_OUTERBARREL_POWER_CU", outerBarrelPowerCu, medCu);
505 TGeoVolume* outerBarrelPowerPEVolume =
new TGeoVolume(
"TRK_OUTERBARREL_POWER_PE", outerBarrelPowerPE, medPE);
506 outerBarrelPowerCuVolume->SetLineColor(kGray);
507 outerBarrelPowerPEVolume->SetLineColor(kGray);
508 motherVolume->AddNode(outerBarrelPowerCuVolume, 1,
nullptr);
509 motherVolume->AddNode(outerBarrelPowerPEVolume, 1,
nullptr);
512 const float puCoolingThick = 0.56 * 1.432;
513 const float h2oCoolingThick = 0.44 * 1.432;
515 TGeoTube* outerBarrelCoolingPU =
new TGeoTube(
"TRK_OUTERBARREL_COOLING_PUsh", rMinOuterBarrelServices, rMinOuterBarrelServices + puCoolingThick, zLengthOuterBarrelServices);
516 TGeoTube* outerBarrelCoolingH2O =
new TGeoTube(
"TRK_OUTERBARREL_COOLING_H2Osh", rMinOuterBarrelServices + puCoolingThick, rMinOuterBarrelServices + puCoolingThick + h2oCoolingThick, zLengthOuterBarrelServices);
518 TGeoVolume* outerBarrelCoolingPUVolume =
new TGeoVolume(
"TRK_OUTERBARREL_COOLING_PU", outerBarrelCoolingPU, medPU);
519 TGeoVolume* outerBarrelCoolingH2OVolume =
new TGeoVolume(
"TRK_OUTERBARREL_COOLING_H2O", outerBarrelCoolingH2O, medH2O);
520 outerBarrelCoolingPUVolume->SetLineColor(kGray);
521 outerBarrelCoolingH2OVolume->SetLineColor(kGray);
522 motherVolume->AddNode(outerBarrelCoolingPUVolume, 1,
nullptr);
523 motherVolume->AddNode(outerBarrelCoolingH2OVolume, 1,
nullptr);
585 TGeoMedium* medSiO2 = matmgr.getTGeoMedium(
"ALICE3_TRKSERVICES_SILICONDIOXIDE");
586 TGeoMedium* medPE = matmgr.getTGeoMedium(
"ALICE3_TRKSERVICES_POLYETHYLENE");
587 TGeoMedium* medCu = matmgr.getTGeoMedium(
"ALICE3_TRKSERVICES_COPPER");
588 TGeoMedium* medPU = matmgr.getTGeoMedium(
"ALICE3_TRKSERVICES_POLYURETHANE");
589 TGeoMedium* medH2O = matmgr.getTGeoMedium(
"ALICE3_TRKSERVICES_WATER");
590 TGeoMedium* medCFiber = matmgr.getTGeoMedium(
"ALICE3_TRKSERVICES_CARBONFIBERM55J6K");
593 const int ITBarrelnFiber = 70;
594 const int ITBarrelnPower = 70;
598 float puCoolingAreaB = 0;
599 float h2oCoolingAreaB = 0;
604 const int ITDisknFiber = 3 * 24;
605 const int ITDisknPower = 3 * 16;
609 float puCoolingAreaD = 0;
610 float h2oCoolingAreaD = 0;
616 float rMinMiddleCarbonSupport = 39.3f;
617 float rMaxMiddleCarbonSupport = 39.5f;
618 const float zLengthMiddleCarbon = 282.f;
619 TGeoTube* middleBarrelCarbonSupport =
new TGeoTube(
"TRK_MID_CARBONSUPPORTsh", rMinMiddleCarbonSupport, rMaxMiddleCarbonSupport, zLengthMiddleCarbon / 2.);
620 TGeoVolume* middleBarrelCarbonSupportVolume =
new TGeoVolume(
"TRK_MID_CARBONSUPPORT", middleBarrelCarbonSupport, medCFiber);
621 middleBarrelCarbonSupportVolume->SetLineColor(kGray);
622 LOGP(info,
"Creating carbon fiber support for Middle Tracker");
623 motherVolume->AddNode(middleBarrelCarbonSupportVolume, 1,
nullptr);
626 float rMinMiddleServices = 38.5f;
627 const float zMiddleServicesBarrel = 64.5f;
628 const float zMiddleServicesBarrelFwdConnection = 143.f;
629 const float zLengthCylinderMiddleServicesBarrel = zMiddleServicesBarrelFwdConnection - zMiddleServicesBarrel;
631 const float zStartServicesForMiddleDisks = 77.0f;
632 const float zLengthCylinderMiddleServicesDisk = zMiddleServicesBarrelFwdConnection - zStartServicesForMiddleDisks;
635 LOGP(info,
"Building services for barrel Middle Layers");
638 const float rMinMiddleBarrelDisk = 5.68f;
639 const float rMaxMiddleBarrelDisk = rMinMiddleServices;
640 auto orientation = Orientation::kASide;
641 float diskCircumference = rMaxMiddleBarrelDisk * 3.14;
643 double zCur = zMiddleServicesBarrel;
644 double dZ = siO2FiberAreaB / diskCircumference / 2.;
645 TGeoTube* middleBarrelConnDiskSIO2 =
new TGeoTube(
"TRK_MIDBARCONN_DISK_FIBER_SIO2sh", rMinMiddleBarrelDisk, rMaxMiddleBarrelDisk, dZ);
646 TGeoVolume* middleBarrelConnDiskSIO2Volume =
new TGeoVolume(
"TRK_MIDBARCONN_DISK_FIBER_SIO2", middleBarrelConnDiskSIO2, medSiO2);
647 middleBarrelConnDiskSIO2Volume->SetLineColor(kOrange - 9);
648 auto* rot =
new TGeoRotation(
"", 0, 0, 180);
649 auto* combiTransSIO2 =
new TGeoCombiTrans(0, 0, (
int)orientation * (zCur + dZ), rot);
652 dZ = peFiberAreaB / diskCircumference / 2.;
653 TGeoTube* middleBarrelConnDiskPE =
new TGeoTube(
"TRK_MIDBARCONN_DISK_FIBER_PEsh", rMinMiddleBarrelDisk, rMaxMiddleBarrelDisk, dZ);
654 TGeoVolume* middleBarrelConnDiskPEVolume =
new TGeoVolume(
"TRK_MIDBARCONN_DISK_FIBER_PE", middleBarrelConnDiskPE, medPE);
655 middleBarrelConnDiskPEVolume->SetLineColor(kOrange - 9);
656 auto* combiTransPE =
new TGeoCombiTrans(0, 0, (
int)orientation * (zCur + dZ), rot);
658 motherVolume->AddNode(middleBarrelConnDiskSIO2Volume, 1, combiTransSIO2);
659 motherVolume->AddNode(middleBarrelConnDiskPEVolume, 1, combiTransPE);
662 dZ = cuPowerAreaB / diskCircumference / 2.;
663 TGeoTube* middleBarrelConnDiskCu =
new TGeoTube(
"TRK_MIDBARCONN_DISK_POWER_CUsh", rMinMiddleBarrelDisk, rMaxMiddleBarrelDisk, dZ);
664 TGeoVolume* middleBarrelConnDiskCuVolume =
new TGeoVolume(
"TRK_MIDBARCONN_DISK_POWER_CU", middleBarrelConnDiskCu, medCu);
665 middleBarrelConnDiskCuVolume->SetLineColor(kOrange - 9);
666 auto* combiTransCu =
new TGeoCombiTrans(0, 0, (
int)orientation * (zCur + dZ), rot);
669 dZ = pePowerAreaB / diskCircumference / 2.;
670 TGeoTube* middleBarrelConnDiskPEPower =
new TGeoTube(
"TRK_MIDBARCONN_DISK_POWER_PEsh", rMinMiddleBarrelDisk, rMaxMiddleBarrelDisk, dZ);
671 TGeoVolume* middleBarrelConnDiskPEPowerVolume =
new TGeoVolume(
"TRK_MIDBARCONN_DISK_POWER_PE", middleBarrelConnDiskPEPower, medPE);
672 middleBarrelConnDiskPEPowerVolume->SetLineColor(kOrange - 9);
673 auto* combiTransPEPower =
new TGeoCombiTrans(0, 0, (
int)orientation * (zCur + dZ), rot);
674 motherVolume->AddNode(middleBarrelConnDiskCuVolume, 1, combiTransCu);
675 motherVolume->AddNode(middleBarrelConnDiskPEPowerVolume, 1, combiTransPEPower);
677 for (
auto& orientation : {Orientation::kASide, Orientation::kCSide}) {
678 for (
int iSide = 0; iSide < 2; iSide++) {
680 std::string orLabel(
"A");
681 if (orientation == Orientation::kCSide) {
687 double rCur = rMinMiddleServices;
688 double dR = siO2FiberAreaD / (3.14 * rCur);
689 TGeoTubeSeg* middleDiskFiberSIO2 =
new TGeoTubeSeg(Form(
"TRK_MLD_FIBER_SIO2sh_%s%d", orLabel.c_str(), iSide), rCur, rCur + dR, zLengthCylinderMiddleServicesDisk / 2, -45, 45);
690 TGeoVolume* middleDiskFiberSIO2Volume =
new TGeoVolume(Form(
"TRK_MLD_FIBER_SIO2_%s%d", orLabel.c_str(), iSide), middleDiskFiberSIO2, medSiO2);
691 middleDiskFiberSIO2Volume->SetLineColor(kOrange + 1);
694 dR = peFiberAreaD / (3.14 * rCur);
695 TGeoTubeSeg* middleDiskFiberPE =
new TGeoTubeSeg(Form(
"TRK_MLD_FIBER_PEsh_%s%d", orLabel.c_str(), iSide), rCur, rCur + dR, zLengthCylinderMiddleServicesDisk / 2, -45, 45);
696 TGeoVolume* middleDiskFiberPEVolume =
new TGeoVolume(Form(
"TRK_MLD_FIBER_PE_%s%d", orLabel.c_str(), iSide), middleDiskFiberPE, medPE);
697 middleDiskFiberPEVolume->SetLineColor(kOrange + 1);
698 auto* combiTrans =
new TGeoCombiTrans(0, 0, (
int)orientation * (zMiddleServicesBarrelFwdConnection - zLengthCylinderMiddleServicesDisk / 2),
new TGeoRotation(
"", refAngle + iSide * 180., 0, 0));
699 motherVolume->AddNode(middleDiskFiberSIO2Volume, 1, combiTrans);
700 motherVolume->AddNode(middleDiskFiberPEVolume, 1, combiTrans);
704 dR = cuPowerAreaD / (3.14 * rCur);
705 TGeoTubeSeg* middleDiskPowerCu =
new TGeoTubeSeg(Form(
"TRK_MLD_POWER_CUsh_%s%d", orLabel.c_str(), iSide), rCur, rCur + dR, zLengthCylinderMiddleServicesDisk / 2, -45, 45);
706 TGeoVolume* middleDiskPowerCuVolume =
new TGeoVolume(Form(
"TRK_MLD_POWER_CU_%s%d", orLabel.c_str(), iSide), middleDiskPowerCu, medCu);
707 middleDiskPowerCuVolume->SetLineColor(kOrange + 1);
710 dR = pePowerAreaD / (3.14 * rCur);
711 TGeoTubeSeg* middleDiskPowerPE =
new TGeoTubeSeg(Form(
"TRK_MLD_POWER_PEsh_%s%d", orLabel.c_str(), iSide), rCur, rCur + dR, zLengthCylinderMiddleServicesDisk / 2, -45, 45);
712 TGeoVolume* middleDiskPowerPEVolume =
new TGeoVolume(Form(
"TRK_MLD_POWER_PE_%s%d", orLabel.c_str(), iSide), middleDiskPowerPE, medPE);
713 middleDiskPowerPEVolume->SetLineColor(kOrange + 1);
715 motherVolume->AddNode(middleDiskPowerCuVolume, 1, combiTrans);
716 motherVolume->AddNode(middleDiskPowerPEVolume, 1, combiTrans);
718 if (orientation == Orientation::kASide) {
722 dR = siO2FiberAreaB / (3.14 * rCur);
723 TGeoTubeSeg* middleBarrelFiberSIO2 =
new TGeoTubeSeg(Form(
"TRK_MLB_FIBER_SIO2sh_A%d", iSide), rCur, rCur + dR, zLengthCylinderMiddleServicesBarrel / 2, -45, 45);
724 TGeoVolume* middleBarrelFiberSIO2Volume =
new TGeoVolume(Form(
"TRK_MLB_FIBER_SIO2_A%d", iSide), middleBarrelFiberSIO2, medSiO2);
725 middleBarrelFiberSIO2Volume->SetLineColor(kOrange - 9);
728 dR = peFiberAreaB / (3.14 * rCur);
729 TGeoTubeSeg* middleBarrelFiberPE =
new TGeoTubeSeg(Form(
"TRK_MLB_FIBER_PEsh_A%d", iSide), rCur, rCur + dR, zLengthCylinderMiddleServicesBarrel / 2, -45, 45);
730 TGeoVolume* middleBarrelFiberPEVolume =
new TGeoVolume(Form(
"TRK_MLB_FIBER_PE_A%d", iSide), middleBarrelFiberPE, medPE);
731 middleBarrelFiberPEVolume->SetLineColor(kOrange - 9);
732 auto* combiTrans =
new TGeoCombiTrans(0, 0, (
int)orientation * (zMiddleServicesBarrelFwdConnection - zLengthCylinderMiddleServicesBarrel / 2),
new TGeoRotation(
nullptr, refAngle + iSide * 180., 0, 0));
733 motherVolume->AddNode(middleBarrelFiberSIO2Volume, 1, combiTrans);
734 motherVolume->AddNode(middleBarrelFiberPEVolume, 1, combiTrans);
738 dR = cuPowerAreaB / (3.14 * rCur);
739 TGeoTubeSeg* middleBarrelPowerCu =
new TGeoTubeSeg(Form(
"TRK_MLB_POWER_CUsh_A%d", iSide), rCur, rCur + dR, zLengthCylinderMiddleServicesBarrel / 2, -45, 45);
740 TGeoVolume* middleBarrelPowerCuVolume =
new TGeoVolume(Form(
"TRK_MLB_POWER_CU_A%d", iSide), middleBarrelPowerCu, medCu);
741 middleBarrelPowerCuVolume->SetLineColor(kOrange - 9);
744 dR = pePowerAreaB / (3.14 * rCur);
745 TGeoTubeSeg* middleBarrelPowerPE =
new TGeoTubeSeg(Form(
"TRK_MLB_POWER_PEsh_A%d", iSide), rCur, rCur + dR, zLengthCylinderMiddleServicesBarrel / 2, -45, 45);
746 TGeoVolume* middleBarrelPowerPEVolume =
new TGeoVolume(Form(
"TRK_MLB_POWER_PE_A%d", iSide), middleBarrelPowerPE, medPE);
747 middleBarrelPowerPEVolume->SetLineColor(kOrange - 9);
749 motherVolume->AddNode(middleBarrelPowerCuVolume, 1, combiTrans);
750 motherVolume->AddNode(middleBarrelPowerPEVolume, 1, combiTrans);
760 float rMaxMiddleServicesBarFwd = 74.5f;
761 float rMinMiddleBarrel = rMinMiddleServices;
762 diskCircumference = rMaxMiddleServicesBarFwd * 3.14;
763 for (
auto& orientation : {Orientation::kASide, Orientation::kCSide}) {
765 std::string orLabel(
"A");
766 if (orientation == Orientation::kCSide) {
770 double totalThickness = 0;
771 for (
int iSide = 0; iSide < 2; iSide++) {
773 double zCur = zMiddleServicesBarrelFwdConnection;
774 double dZ = siO2FiberAreaD / diskCircumference / 2.;
775 totalThickness += 2 * dZ;
776 if (orientation == Orientation::kASide) {
777 dZ += siO2FiberAreaB / diskCircumference / 2.;
779 TGeoTubeSeg* middleBarFwdFiberSIO2 =
new TGeoTubeSeg(Form(
"TRK_MIDBARFWD_FIBER_SIO2sh_%s%d", orLabel.c_str(), iSide), rMinMiddleBarrel, rMaxMiddleServicesBarFwd, dZ, -45, 45);
780 TGeoVolume* middleBarFwdFiberSIO2Volume =
new TGeoVolume(Form(
"TRK_MIDBARFWD_FIBER_SIO2_%s%d", orLabel.c_str(), iSide), middleBarFwdFiberSIO2, medSiO2);
781 auto* rot =
new TGeoRotation(
"", refAngle + iSide * 180., 0, 180.);
782 auto* combiTransSIO2 =
new TGeoCombiTrans(0, 0, (
int)orientation * (zCur + dZ), rot);
785 dZ = peFiberAreaD / diskCircumference / 2.;
786 totalThickness += 2 * dZ;
787 if (orientation == Orientation::kASide) {
788 dZ += peFiberAreaB / diskCircumference / 2.;
790 TGeoTubeSeg* middleBarFwdFiberPE =
new TGeoTubeSeg(Form(
"TRK_MIDBARFWD_FIBER_PEsh_%s%d", orLabel.c_str(), iSide), rMinMiddleBarrel, rMaxMiddleServicesBarFwd, dZ, -45, 45);
791 TGeoVolume* middleBarFwdFiberPEVolume =
new TGeoVolume(Form(
"TRK_MIDBARFWD_FIBER_PE_%s%d", orLabel.c_str(), iSide), middleBarFwdFiberPE, medPE);
792 middleBarFwdFiberSIO2Volume->SetLineColor(kOrange + 1);
793 middleBarFwdFiberPEVolume->SetLineColor(kOrange + 1);
794 auto* combiTransPE =
new TGeoCombiTrans(0, 0, (
int)orientation * (zCur + dZ), rot);
795 motherVolume->AddNode(middleBarFwdFiberSIO2Volume, 1, combiTransSIO2);
796 motherVolume->AddNode(middleBarFwdFiberPEVolume, 1, combiTransPE);
800 dZ = cuPowerAreaD / diskCircumference / 2.;
801 totalThickness += 2 * dZ;
802 if (orientation == Orientation::kASide) {
803 dZ += cuPowerAreaB / diskCircumference / 2.;
805 TGeoTubeSeg* middleBarFwdPowerCu =
new TGeoTubeSeg(Form(
"TRK_MIDBARFWD_POWER_CUsh_%s%d", orLabel.c_str(), iSide), rMinMiddleBarrel, rMaxMiddleServicesBarFwd, dZ, -45, 45);
806 TGeoVolume* middleBarFwdPowerCuVolume =
new TGeoVolume(Form(
"TRK_MIDBARFWD_POWER_CU_%s%d", orLabel.c_str(), iSide), middleBarFwdPowerCu, medCu);
807 auto* combiTransCu =
new TGeoCombiTrans(0, 0, (
int)orientation * (zCur + dZ), rot);
810 dZ = pePowerAreaD / diskCircumference / 2.;
811 totalThickness += 2 * dZ;
812 if (orientation == Orientation::kASide) {
813 dZ += pePowerAreaB / diskCircumference / 2.;
815 TGeoTubeSeg* middleBarFwdPowerPE =
new TGeoTubeSeg(Form(
"TRK_MIDBARFWD_POWER_PEsh_%s%d", orLabel.c_str(), iSide), rMinMiddleBarrel, rMaxMiddleServicesBarFwd, dZ, -45, 45);
816 TGeoVolume* middleBarFwdPowerPEVolume =
new TGeoVolume(Form(
"TRK_MIDBARFWD_POWER_PE_%s%d", orLabel.c_str(), iSide), middleBarFwdPowerPE, medPE);
817 middleBarFwdPowerCuVolume->SetLineColor(kOrange + 1);
818 middleBarFwdPowerPEVolume->SetLineColor(kOrange + 1);
819 auto* combiTransPEPower =
new TGeoCombiTrans(0, 0, (
int)orientation * (zCur + dZ), rot);
820 motherVolume->AddNode(middleBarFwdPowerCuVolume, 1, combiTransCu);
821 motherVolume->AddNode(middleBarFwdPowerPEVolume, 1, combiTransPEPower);
827 float zLengthMiddleServicesFwd = 350.f - (zMiddleServicesBarrelFwdConnection + totalThickness);
828 float rMinMiddleServicesFwd = 74.5f;
830 for (
int iSide = 0; iSide < 2; iSide++) {
833 float translation = (
int)orientation * (zMiddleServicesBarrelFwdConnection + totalThickness + zLengthMiddleServicesFwd / 2);
835 double rCur = rMinMiddleServicesFwd;
836 double dR = siO2FiberAreaD / (3.14 * rCur);
837 if (orientation == Orientation::kASide) {
838 dR += siO2FiberAreaB / (3.14 * rCur);
840 TGeoTubeSeg* middleFwdFiberSIO2 =
new TGeoTubeSeg(Form(
"TRK_MIDFWD_FIBER_SIO2sh_%s%d", orLabel.c_str(), iSide), rCur, rCur + dR, zLengthMiddleServicesFwd / 2, -45, 45);
841 TGeoVolume* middleFwdFiberSIO2Volume =
new TGeoVolume(Form(
"TRK_MIDFWD_FIBER_SIO2_%s%d", orLabel.c_str(), iSide), middleFwdFiberSIO2, medSiO2);
842 middleFwdFiberSIO2Volume->SetLineColor(kOrange + 1);
845 dR = peFiberAreaD / (3.14 * rCur);
846 if (orientation == Orientation::kASide) {
847 dR += peFiberAreaB / (3.14 * rCur);
849 TGeoTubeSeg* middleFwdFiberPE =
new TGeoTubeSeg(Form(
"TRK_MIDFWD_FIBER_PEsh_%s%d", orLabel.c_str(), iSide), rCur, rCur + dR, zLengthMiddleServicesFwd / 2, -45, 45);
850 TGeoVolume* middleFwdFiberPEVolume =
new TGeoVolume(Form(
"TRK_MIDFWD_FIBER_PE_%s%d", orLabel.c_str(), iSide), middleFwdFiberPE, medPE);
851 middleFwdFiberPEVolume->SetLineColor(kOrange + 1);
853 auto* rot =
new TGeoRotation(
"", refAngle + iSide * 180., 0, 0.);
854 auto* combiTrans =
new TGeoCombiTrans(0, 0, translation, rot);
855 motherVolume->AddNode(middleFwdFiberSIO2Volume, 1, combiTrans);
856 motherVolume->AddNode(middleFwdFiberPEVolume, 1, combiTrans);
860 dR = cuPowerAreaD / (3.14 * rCur);
861 if (orientation == Orientation::kASide) {
862 dR += cuPowerAreaB / (3.14 * rCur);
864 TGeoTubeSeg* middleFwdPowerCu =
new TGeoTubeSeg(Form(
"TRK_MIDFWD_POWER_CUsh_%s%d", orLabel.c_str(), iSide), rCur, rCur + dR, zLengthMiddleServicesFwd / 2, -45, 45);
865 TGeoVolume* middleFwdPowerCuVolume =
new TGeoVolume(Form(
"TRK_MIDFWD_POWER_CU_%s%d", orLabel.c_str(), iSide), middleFwdPowerCu, medCu);
866 middleFwdPowerCuVolume->SetLineColor(kOrange + 1);
869 dR = pePowerAreaD / (3.14 * rCur);
870 if (orientation == Orientation::kASide) {
871 dR += pePowerAreaB / (3.14 * rCur);
873 TGeoTubeSeg* middleFwdPowerPE =
new TGeoTubeSeg(Form(
"TRK_MIDFWD_POWER_PEsh_%s%d", orLabel.c_str(), iSide), rCur, rCur + dR, zLengthMiddleServicesFwd / 2, -45, 45);
874 TGeoVolume* middleFwdPowerPEVolume =
new TGeoVolume(Form(
"TRK_MIDFWD_POWER_PE_%s%d", orLabel.c_str(), iSide), middleFwdPowerPE, medPE);
875 middleFwdPowerPEVolume->SetLineColor(kOrange + 1);
876 motherVolume->AddNode(middleFwdPowerCuVolume, 1, combiTrans);
877 motherVolume->AddNode(middleFwdPowerPEVolume, 1, combiTrans);
891 TGeoMedium* medSiO2 = matmgr.getTGeoMedium(
"ALICE3_TRKSERVICES_SILICONDIOXIDE");
892 TGeoMedium* medPE = matmgr.getTGeoMedium(
"ALICE3_TRKSERVICES_POLYETHYLENE");
893 TGeoMedium* medCu = matmgr.getTGeoMedium(
"ALICE3_TRKSERVICES_COPPER");
894 TGeoMedium* medPU = matmgr.getTGeoMedium(
"ALICE3_TRKSERVICES_POLYURETHANE");
895 TGeoMedium* medH2O = matmgr.getTGeoMedium(
"ALICE3_TRKSERVICES_WATER");
896 TGeoMedium* medCFiber = matmgr.getTGeoMedium(
"ALICE3_TRKSERVICES_CARBONFIBERM55J6K");
899 const int OTDisknFiber = 3 * 51;
900 const int OTDisknPower = 3 * 34;
904 float puCoolingAreaD = 0;
905 float h2oCoolingAreaD = 0;
910 const int OTBarrelnFiber = 460;
911 const int OTBarrelnPower = 306;
915 float puCoolingAreaB = 0;
916 float h2oCoolingAreaB = 0;
921 double rMinOTbarrelServices = 45.0;
922 double rMaxOTbarrelServices = 78.0;
923 double zOTbarrelServices = 142.0;
926 float rMinOuterBarrelTubeServices = rMaxOTbarrelServices;
927 float zStartOuterBarrelTubeServices = zOTbarrelServices + 0.8f;
928 float zLengthOuterBarrelTubeServices = 215.f;
931 float rMinOuterDiskServices = 70.5f;
932 float zStartOuterDiskServices = 149.f;
933 float zLengthOuterDiskServices = 201.f;
936 float rMinOuterCarbonSupport = 82.0f;
937 float rMaxOuterCarbonSupport = 82.4f;
938 const float zLengthOuterCarbon = 280.0f;
939 TGeoTube* outerBarrelCarbonSupport =
new TGeoTube(
"TRK_OT_CARBONSUPPORTsh", rMinOuterCarbonSupport, rMaxOuterCarbonSupport, zLengthOuterCarbon / 2.);
940 TGeoVolume* outerBarrelCarbonSupportVolume =
new TGeoVolume(
"TRK_OT_CARBONSUPPORT", outerBarrelCarbonSupport, medCFiber);
941 outerBarrelCarbonSupportVolume->SetLineColor(kGray);
942 LOGP(info,
"Creating carbon fiber support for Outer Tracker");
943 motherVolume->AddNode(outerBarrelCarbonSupportVolume, 1,
nullptr);
945 for (
auto& orientation : {Orientation::kASide, Orientation::kCSide}) {
946 std::string orLabel =
"A";
948 if (orientation == Orientation::kCSide) {
953 double zCur = zOTbarrelServices;
955 double dZ = siO2FiberAreaB / (4 * 3.14 * rMaxOTbarrelServices);
956 TGeoTube* outerBarrelFiberSIO2 =
new TGeoTube(Form(
"TRK_OUTERBARREL_FIBER_SIO2sh_%s", orLabel.c_str()), rMinOTbarrelServices, rMaxOTbarrelServices, dZ);
957 TGeoVolume* outerBarrelFiberSIO2Volume =
new TGeoVolume(Form(
"TRK_OUTERBARREL_FIBER_SIO2_%s", orLabel.c_str()), outerBarrelFiberSIO2, medSiO2);
958 outerBarrelFiberSIO2Volume->SetLineColor(kAzure + 6);
959 auto* combiTrans =
new TGeoCombiTrans(0, 0, (
int)orientation * (zCur + dZ),
nullptr);
960 motherVolume->AddNode(outerBarrelFiberSIO2Volume, 1, combiTrans);
963 dZ = peFiberAreaB / (4 * 3.14 * rMaxOTbarrelServices);
964 TGeoTube* outerBarrelFiberPE =
new TGeoTube(Form(
"TRK_OUTERBARREL_FIBER_PEsh_%s", orLabel.c_str()), rMinOTbarrelServices, rMaxOTbarrelServices, dZ);
965 TGeoVolume* outerBarrelFiberPEVolume =
new TGeoVolume(Form(
"TRK_OUTERBARREL_FIBER_PE_%s", orLabel.c_str()), outerBarrelFiberPE, medPE);
966 outerBarrelFiberPEVolume->SetLineColor(kAzure + 6);
967 combiTrans =
new TGeoCombiTrans(0, 0, (
int)orientation * (zCur + dZ),
nullptr);
968 motherVolume->AddNode(outerBarrelFiberPEVolume, 1, combiTrans);
971 dZ = cuPowerAreaB / (4 * 3.14 * rMaxOTbarrelServices);
972 TGeoTube* outerBarrelPowerCu =
new TGeoTube(Form(
"TRK_OUTERBARREL_POWER_CUsh_%s", orLabel.c_str()), rMinOTbarrelServices, rMaxOTbarrelServices, dZ);
973 TGeoVolume* outerBarrelPowerCuVolume =
new TGeoVolume(Form(
"TRK_OUTERBARREL_POWER_CU_%s", orLabel.c_str()), outerBarrelPowerCu, medCu);
974 outerBarrelPowerCuVolume->SetLineColor(kAzure + 6);
975 combiTrans =
new TGeoCombiTrans(0, 0, (
int)orientation * (zCur + dZ),
nullptr);
976 motherVolume->AddNode(outerBarrelPowerCuVolume, 1, combiTrans);
979 dZ = pePowerAreaB / (4 * 3.14 * rMaxOTbarrelServices);
980 TGeoTube* outerBarrelPowerPE =
new TGeoTube(Form(
"TRK_OUTERBARREL_POWER_PEsh_%s", orLabel.c_str()), rMinOTbarrelServices, rMaxOTbarrelServices, dZ);
981 TGeoVolume* outerBarrelPowerPEVolume =
new TGeoVolume(Form(
"TRK_OUTERBARREL_POWER_PE_%s", orLabel.c_str()), outerBarrelPowerPE, medPE);
982 outerBarrelPowerPEVolume->SetLineColor(kAzure + 6);
983 combiTrans =
new TGeoCombiTrans(0, 0, (
int)orientation * (zCur + dZ),
nullptr);
984 motherVolume->AddNode(outerBarrelPowerPEVolume, 1, combiTrans);
986 for (
int iSide = 0; iSide < 2; iSide++) {
989 double rCur = rMinOuterBarrelTubeServices;
990 double dR = siO2FiberAreaB / (3.14 * rCur);
991 TGeoTubeSeg* outerBarrelTubeFiberSIO2 =
new TGeoTubeSeg(Form(
"TRK_OUTERBARREL_TUBE_FIBER_SIO2sh_%s%d", orLabel.c_str(), iSide), rCur, rCur + dR, zLengthOuterBarrelTubeServices / 2, -45, 45);
992 TGeoVolume* outerBarrelTubeFiberSIO2Volume =
new TGeoVolume(Form(
"TRK_OUTERBARREL_TUBE_FIBER_SIO2_%s%d", orLabel.c_str(), iSide), outerBarrelTubeFiberSIO2, medSiO2);
993 outerBarrelTubeFiberSIO2Volume->SetLineColor(kAzure + 6);
996 dR = peFiberAreaB / (3.14 * rCur);
997 TGeoTubeSeg* outerBarrelTubeFiberPE =
new TGeoTubeSeg(Form(
"TRK_OUTERBARREL_TUBE_FIBER_PEsh_%s%d", orLabel.c_str(), iSide), rCur, rCur + dR, zLengthOuterBarrelTubeServices / 2, -45, 45);
998 TGeoVolume* outerBarrelTubeFiberPEVolume =
new TGeoVolume(Form(
"TRK_OUTERBARREL_TUBE_FIBER_PE_%s%d", orLabel.c_str(), iSide), outerBarrelTubeFiberPE, medPE);
999 outerBarrelTubeFiberPEVolume->SetLineColor(kAzure + 6);
1001 float translation = (
int)orientation * (zStartOuterBarrelTubeServices + zLengthOuterBarrelTubeServices / 2);
1002 auto* combiTrans =
new TGeoCombiTrans(0, 0, translation,
new TGeoRotation(
"", refAngle + iSide * 180., 0, 0));
1003 motherVolume->AddNode(outerBarrelTubeFiberSIO2Volume, 1, combiTrans);
1004 motherVolume->AddNode(outerBarrelTubeFiberPEVolume, 1, combiTrans);
1008 dR = cuPowerAreaB / (3.14 * rCur);
1009 TGeoTubeSeg* outerBarrelTubePowerCu =
new TGeoTubeSeg(Form(
"TRK_OUTERBARREL_TUBE_POWER_CUsh_%s%d", orLabel.c_str(), iSide), rCur, rCur + dR, zLengthOuterBarrelTubeServices / 2, -45, 45);
1010 TGeoVolume* outerBarrelTubePowerCuVolume =
new TGeoVolume(Form(
"TRK_OUTERBARREL_TUBE_POWER_CU_%s%d", orLabel.c_str(), iSide), outerBarrelTubePowerCu, medCu);
1011 outerBarrelTubePowerCuVolume->SetLineColor(kAzure + 6);
1014 dR = pePowerAreaB / (3.14 * rCur);
1015 TGeoTubeSeg* outerBarrelTubePowerPE =
new TGeoTubeSeg(Form(
"TRK_OUTERBARREL_TUBE_POWER_PEsh_%s%d", orLabel.c_str(), iSide), rCur, rCur + dR, zLengthOuterBarrelTubeServices / 2, -45, 45);
1016 TGeoVolume* outerBarrelTubePowerPEVolume =
new TGeoVolume(Form(
"TRK_OUTERBARREL_TUBE_POWER_PE_%s%d", orLabel.c_str(), iSide), outerBarrelTubePowerPE, medPE);
1017 outerBarrelTubePowerPEVolume->SetLineColor(kAzure + 6);
1018 motherVolume->AddNode(outerBarrelTubePowerCuVolume, 1, combiTrans);
1019 motherVolume->AddNode(outerBarrelTubePowerPEVolume, 1, combiTrans);
1023 rCur = rMinOuterDiskServices;
1024 dR = siO2FiberAreaD / (3.14 * rCur);
1025 TGeoTubeSeg* outerDisksFiberSIO2 =
new TGeoTubeSeg(Form(
"TRK_OUTERDISKS_FIBER_SIO2sh_%s%d", orLabel.c_str(), iSide), rCur, rCur + dR, zLengthOuterDiskServices / 2, -45, 45);
1026 TGeoVolume* outerDisksFiberSIO2Volume =
new TGeoVolume(Form(
"TRK_OUTERDISKS_FIBER_SIO2_%s%d", orLabel.c_str(), iSide), outerDisksFiberSIO2, medSiO2);
1027 outerDisksFiberSIO2Volume->SetLineColor(kMagenta);
1030 dR = peFiberAreaD / (3.14 * rCur);
1031 TGeoTubeSeg* outerDisksFiberPE =
new TGeoTubeSeg(Form(
"TRK_OUTERDISKS_FIBER_PEsh_%s%d", orLabel.c_str(), iSide), rCur, rCur + dR, zLengthOuterDiskServices / 2, -45, 45);
1032 TGeoVolume* outerDisksFiberPEVolume =
new TGeoVolume(Form(
"TRK_OUTERDISKS_FIBER_PE_%s%d", orLabel.c_str(), iSide), outerDisksFiberPE, medPE);
1033 outerDisksFiberPEVolume->SetLineColor(kMagenta);
1035 translation = (
int)orientation * (zStartOuterDiskServices + zLengthOuterDiskServices / 2);
1036 combiTrans =
new TGeoCombiTrans(0, 0, translation,
new TGeoRotation(
"", refAngle + iSide * 180., 0, 0));
1037 motherVolume->AddNode(outerDisksFiberSIO2Volume, 1, combiTrans);
1038 motherVolume->AddNode(outerDisksFiberPEVolume, 1, combiTrans);
1042 dR = cuPowerAreaD / (3.14 * rCur);
1043 TGeoTubeSeg* outerDisksPowerCu =
new TGeoTubeSeg(Form(
"TRK_OUTERDISKS_POWER_CUsh_%s%d", orLabel.c_str(), iSide), rCur, rCur + dR, zLengthOuterDiskServices / 2, -45, 45);
1044 TGeoVolume* outerDisksPowerCuVolume =
new TGeoVolume(Form(
"TRK_OUTERDISKS_POWER_CU_%s%d", orLabel.c_str(), iSide), outerDisksPowerCu, medCu);
1045 outerDisksPowerCuVolume->SetLineColor(kMagenta + 1);
1048 dR = pePowerAreaD / (3.14 * rCur);
1049 TGeoTubeSeg* outerDisksPowerPE =
new TGeoTubeSeg(Form(
"TRK_OUTERDISKS_POWER_PEsh_%s%d", orLabel.c_str(), iSide), rCur, rCur + dR, zLengthOuterDiskServices / 2, -45, 45);
1050 TGeoVolume* outerDisksPowerPEVolume =
new TGeoVolume(Form(
"TRK_OUTERDISKS_POWER_PE_%s%d", orLabel.c_str(), iSide), outerDisksPowerPE, medPE);
1051 outerDisksPowerPEVolume->SetLineColor(kMagenta + 1);
1052 motherVolume->AddNode(outerDisksPowerCuVolume, 1, combiTrans);
1053 motherVolume->AddNode(outerDisksPowerPEVolume, 1, combiTrans);