46 float aCer[2] = {26.981538, 15.9994};
47 float zCer[2] = {13., 8.};
48 float wCer[2] = {0.5294, 0.4706};
52 float aAir[4] = {12.0107, 14.0067, 15.9994, 39.948};
53 float zAir[4] = {6., 7., 8., 18.};
54 float wAir[4] = {0.000124, 0.755267, 0.231781, 0.012827};
55 float dAir = 1.20479E-3;
56 float dAir1 = 1.20479E-11;
59 float aWater[2] = {1.00794, 15.9994};
60 float zWater[2] = {1., 8.};
61 float wWater[2] = {0.111894, 0.888106};
65 float aSiO2[2] = {28.0855, 15.9990};
66 float zSiO2[2] = {14., 8.};
67 float wSiO2[2] = {0.467, 0.533};
71 float aPolyethylene[2] = {12.01, 1.};
72 float zPolyethylene[2] = {6., 1.};
73 float wPolyethylene[2] = {.33, .67};
76 int nPolyurethane = 4;
77 float aPolyurethane[4] = {1.00794, 14.010, 12.0107, 15.9994};
78 float zPolyurethane[4] = {1.0, 7.0, 6.0, 8.0};
79 float wPolyurethane[4] = {0.017077588, 0.237314387, 0.203327619, 0.542280405};
80 float dPolyurethane = 1.25;
85 float aAl5083[9] = {54.938, 55.845, 63.546, 24.305, 28.086, 65.38, 51.996, 47.867, 26.982};
86 float zAl5083[9] = {25., 26., 29., 12., 14., 30., 24., 22., 13.};
88 float wAl5083[9] = {0.007, 0.004, 0.001, 0.0445, 0.004, 0.0025, 0.0015, 0.0015, 0.934};
89 float dAl5083 = 2.650;
93 float aAlBeMet[2] = {26.982, 9.012};
94 float zAlBeMet[2] = {13., 4.};
95 float wAlBeMet[2] = {0.38, 0.62};
96 float dAlBeMet = 2.071;
98 matmgr.Mixture(
"ALICE3_TRKSERVICES", 66,
"CERAMIC", aCer, zCer, dCer, 2, wCer);
99 matmgr.Mixture(
"ALICE3_TRKSERVICES", 68,
"AIR", aAir, zAir, dAir, 4, wAir);
100 matmgr.Mixture(
"ALICE3_TRKSERVICES", 69,
"POLYETHYLENE", aPolyethylene, zPolyethylene, .95, 2, wPolyethylene);
101 matmgr.Mixture(
"ALICE3_TRKSERVICES", 70,
"POLYURETHANE", aPolyurethane, zPolyurethane, dPolyurethane, nPolyurethane, wPolyurethane);
102 matmgr.Mixture(
"ALICE3_TRKSERVICES", 71,
"SILICONDIOXIDE", aSiO2, zSiO2, dSiO2, 2, wSiO2);
103 matmgr.Mixture(
"ALICE3_TRKSERVICES", 72,
"WATER", aWater, zWater, dWater, 2, wWater);
104 matmgr.Material(
"ALICE3_TRKSERVICES", 67,
"COPPER", 63.546, 29, 8.96, 1.43, 15.1);
105 matmgr.Material(
"ALICE3_TRKSERVICES", 73,
"BERYLLIUM", 9.01, 4., 1.848, 35.3, 36.7);
106 matmgr.Mixture(
"ALICE3_TRKSERVICES", 74,
"ALUMINIUM5083", aAl5083, zAl5083, dAl5083, 9, wAl5083);
107 matmgr.Mixture(
"ALICE3_TRKSERVICES", 75,
"ALUMINIUMBERYLLIUMMETAL", aAlBeMet, zAlBeMet, dAlBeMet, 2, wAlBeMet);
108 matmgr.Material(
"ALICE3_TRKSERVICES", 76,
"CARBONFIBERM55J6K", 12.0107, 6, 1.92, 999, 999);
109 matmgr.Mixture(
"ALICE3_PIPE", 77,
"VACUUM", aAir, zAir, dAir1, 4, wAir);
111 matmgr.Medium(
"ALICE3_TRKSERVICES", 1,
"CERAMIC", 66, 0, ifield, fieldm, tmaxfd, stemax, deemax, epsil, stmin);
112 matmgr.Medium(
"ALICE3_TRKSERVICES", 2,
"COPPER", 67, 0, ifield, fieldm, tmaxfd, stemax, deemax, epsil, stmin);
113 matmgr.Medium(
"ALICE3_TRKSERVICES", 3,
"AIR", 68, 0, ifield, fieldm, tmaxfd, stemax, deemax, epsil, stmin);
114 matmgr.Medium(
"ALICE3_TRKSERVICES", 4,
"POLYETHYLENE", 69, 0, ifield, fieldm, tmaxfd, stemax, deemax, epsil, stmin);
115 matmgr.Medium(
"ALICE3_TRKSERVICES", 5,
"POLYURETHANE", 70, 0, ifield, fieldm, tmaxfd, stemax, deemax, epsil, stmin);
116 matmgr.Medium(
"ALICE3_TRKSERVICES", 6,
"SILICONDIOXIDE", 71, 0, ifield, fieldm, tmaxfd, stemax, deemax, epsil, stmin);
117 matmgr.Medium(
"ALICE3_TRKSERVICES", 7,
"WATER", 72, 0, ifield, fieldm, tmaxfd, stemax, deemax, epsil, stmin);
118 matmgr.Medium(
"ALICE3_TRKSERVICES", 8,
"BERYLLIUM", 73, 0, ifield, fieldm, tmaxfd, stemax, deemax, epsil, stmin);
119 matmgr.Medium(
"ALICE3_TRKSERVICES", 9,
"ALUMINIUM5083", 74, 0, ifield, fieldm, tmaxfd, stemax, deemax, epsil, stmin);
120 matmgr.Medium(
"ALICE3_TRKSERVICES", 10,
"ALUMINIUMBERYLLIUMMETAL", 75, 0, ifield, fieldm, tmaxfd, stemax, deemax, epsil, stmin);
121 matmgr.Medium(
"ALICE3_TRKSERVICES", 11,
"CARBONFIBERM55J6K", 76, 0, ifield, fieldm, tmaxfd, stemax, deemax, epsil, stmin);
122 matmgr.Medium(
"ALICE3_PIPE", 12,
"VACUUM", 77, 0, ifield, fieldm, tmaxfd, stemax, deemax, epsil, stmin);
185 TGeoMedium* medSiO2 = matmgr.getTGeoMedium(
"ALICE3_TRKSERVICES_SILICONDIOXIDE");
186 TGeoMedium* medPE = matmgr.getTGeoMedium(
"ALICE3_TRKSERVICES_POLYETHYLENE");
187 TGeoMedium* medCu = matmgr.getTGeoMedium(
"ALICE3_TRKSERVICES_COPPER");
188 TGeoMedium* medPU = matmgr.getTGeoMedium(
"ALICE3_TRKSERVICES_POLYURETHANE");
189 TGeoMedium* medH2O = matmgr.getTGeoMedium(
"ALICE3_TRKSERVICES_WATER");
191 for (
auto& orientation : {Orientation::kASide, Orientation::kCSide}) {
193 float siO2FiberThick = 0.5 * 0.212;
194 float peFiberThick = 0.5 * 0.212;
196 float rMinInnerServices = 68.5f;
197 float zLengthInnerServices = 201.f;
198 float translation = (
int)orientation * (149.f + zLengthInnerServices / 2);
200 TGeoTube* outerDisksFiberSIO2 =
new TGeoTube(
"TRK_OUTERDISKS_FIBER_SIO2sh", rMinInnerServices, rMinInnerServices + siO2FiberThick, zLengthInnerServices / 2);
201 TGeoTube* outerDisksFiberPE =
new TGeoTube(
"TRK_OUTERDISKS_FIBER_PEsh", rMinInnerServices + siO2FiberThick, rMinInnerServices + siO2FiberThick + peFiberThick, zLengthInnerServices / 2);
202 rMinInnerServices += siO2FiberThick + peFiberThick;
203 TGeoVolume* outerDisksFiberSIO2Volume =
new TGeoVolume(
"TRK_OUTERDISKS_FIBER_SIO2", outerDisksFiberSIO2, medSiO2);
204 TGeoVolume* outerDisksFiberPEVolume =
new TGeoVolume(
"TRK_OUTERDISKS_FIBER_PE", outerDisksFiberPE, medPE);
205 outerDisksFiberSIO2Volume->SetLineColor(kGray);
206 outerDisksFiberPEVolume->SetLineColor(kGray);
207 auto* combiTrans =
new TGeoCombiTrans(0, 0, translation,
nullptr);
208 motherVolume->AddNode(outerDisksFiberSIO2Volume, 1, combiTrans);
209 motherVolume->AddNode(outerDisksFiberPEVolume, 1, combiTrans);
212 float cuPowerThick = 0.09 * 1.186;
213 float pePowerThick = 0.91 * 1.186;
215 TGeoTube* outerDisksPowerCu =
new TGeoTube(
"TRK_OUTERDISKS_POWER_CUsh", rMinInnerServices, rMinInnerServices + cuPowerThick, zLengthInnerServices / 2);
216 TGeoTube* outerDisksPowerPE =
new TGeoTube(
"TRK_OUTERDISKS_POWER_PEsh", rMinInnerServices + cuPowerThick, rMinInnerServices + cuPowerThick + pePowerThick, zLengthInnerServices / 2);
217 rMinInnerServices += cuPowerThick + pePowerThick;
218 TGeoVolume* outerDisksPowerCuVolume =
new TGeoVolume(
"TRK_OUTERDISKS_POWER_CU", outerDisksPowerCu, medCu);
219 TGeoVolume* outerDisksPowerPEVolume =
new TGeoVolume(
"TRK_OUTERDISKS_POWER_PE", outerDisksPowerPE, medPE);
220 outerDisksPowerCuVolume->SetLineColor(kGray);
221 outerDisksPowerPEVolume->SetLineColor(kGray);
222 motherVolume->AddNode(outerDisksPowerCuVolume, 1, combiTrans);
223 motherVolume->AddNode(outerDisksPowerPEVolume, 1, combiTrans);
226 float puCoolingThick = 0.56 * 0.647;
227 float h2oCoolingThick = 0.44 * 0.647;
229 TGeoTube* outerDisksCoolingPU =
new TGeoTube(
"TRK_OUTERDISKS_COOLING_PUsh", rMinInnerServices, rMinInnerServices + puCoolingThick, zLengthInnerServices / 2);
230 TGeoTube* outerDisksCoolingH2O =
new TGeoTube(
"TRK_OUTERDISKS_COOLING_H2Osh", rMinInnerServices + puCoolingThick, rMinInnerServices + puCoolingThick + h2oCoolingThick, zLengthInnerServices / 2);
232 TGeoVolume* outerDisksCoolingPUVolume =
new TGeoVolume(
"TRK_OUTERDISKS_COOLING_PU", outerDisksCoolingPU, medPU);
233 TGeoVolume* outerDisksCoolingH2OVolume =
new TGeoVolume(
"TRK_OUTERDISKS_COOLING_H2O", outerDisksCoolingH2O, medH2O);
234 outerDisksCoolingPUVolume->SetLineColor(kGray);
235 outerDisksCoolingH2OVolume->SetLineColor(kGray);
236 motherVolume->AddNode(outerDisksCoolingPUVolume, 1, combiTrans);
237 motherVolume->AddNode(outerDisksCoolingH2OVolume, 1, combiTrans);
246 TGeoMedium* medSiO2 = matmgr.getTGeoMedium(
"ALICE3_TRKSERVICES_SILICONDIOXIDE");
247 TGeoMedium* medPE = matmgr.getTGeoMedium(
"ALICE3_TRKSERVICES_POLYETHYLENE");
248 TGeoMedium* medCu = matmgr.getTGeoMedium(
"ALICE3_TRKSERVICES_COPPER");
249 TGeoMedium* medPU = matmgr.getTGeoMedium(
"ALICE3_TRKSERVICES_POLYURETHANE");
250 TGeoMedium* medH2O = matmgr.getTGeoMedium(
"ALICE3_TRKSERVICES_WATER");
251 TGeoMedium* medCFiber = matmgr.getTGeoMedium(
"ALICE3_TRKSERVICES_CARBONFIBERM55J6K");
254 float siO2FiberThick = 0.5 * 0.307;
255 float peFiberThick = 0.5 * 0.307;
256 float puCoolingThick = 0.56 * 0.474;
257 float h2oCoolingThick = 0.44 * 0.474;
258 float cuPowerThick = 0.09 * 1.09;
259 float pePowerThick = 0.91 * 1.09;
260 const float totalThickness = siO2FiberThick + peFiberThick + cuPowerThick + pePowerThick + puCoolingThick + h2oCoolingThick;
263 float rMinMiddleCarbonSupport = 34.8f;
264 float rMaxMiddleCarbonSupport = 35.f;
265 const float zLengthMiddleCarbon = 62.f;
266 TGeoTube* middleBarrelCarbonSupport =
new TGeoTube(
"TRK_MID_CARBONSUPPORTsh", rMinMiddleCarbonSupport, rMaxMiddleCarbonSupport, zLengthMiddleCarbon);
267 TGeoVolume* middleBarrelCarbonSupportVolume =
new TGeoVolume(
"TRK_MID_CARBONSUPPORT", middleBarrelCarbonSupport, medCFiber);
268 middleBarrelCarbonSupportVolume->SetLineColor(kGray);
269 LOGP(info,
"Creating carbon fiber support for Middle Tracker");
270 motherVolume->AddNode(middleBarrelCarbonSupportVolume, 1,
nullptr);
273 float rMinMiddleServices = 35.f;
274 float rMinMiddleBarrel = rMinMiddleServices;
275 const float zLengthCylinderMiddleServices = 40.5f;
276 const float zLengthMiddleServices = 143.f;
277 for (
auto& orientation : {Orientation::kASide, Orientation::kCSide}) {
278 rMinMiddleServices = 35.f;
279 LOGP(info,
"Building services for Middle Tracker rminMiddleServices");
280 TGeoTube* middleBarrelFiberSIO2 =
new TGeoTube(Form(
"TRK_MID_FIBER_SIO2sh_%s", orientation == Orientation::kASide ?
"bwd" :
"fwd"), rMinMiddleServices, rMinMiddleServices + siO2FiberThick, zLengthCylinderMiddleServices );
281 rMinMiddleServices += siO2FiberThick;
282 TGeoTube* middleBarrelFiberPE =
new TGeoTube(Form(
"TRK_MID_FIBER_PEsh_%s", orientation == Orientation::kASide ?
"bwd" :
"fwd"), rMinMiddleServices, rMinMiddleServices + peFiberThick, zLengthCylinderMiddleServices );
283 rMinMiddleServices += peFiberThick;
284 TGeoVolume* middleBarrelFiberSIO2Volume =
new TGeoVolume(Form(
"TRK_MID_FIBER_SIO2_%s", orientation == Orientation::kASide ?
"bwd" :
"fwd"), middleBarrelFiberSIO2, medSiO2);
285 TGeoVolume* middleBarrelFiberPEVolume =
new TGeoVolume(Form(
"TRK_MID_FIBER_PE_%s", orientation == Orientation::kASide ?
"bwd" :
"fwd"), middleBarrelFiberPE, medPE);
286 middleBarrelFiberSIO2Volume->SetLineColor(kGray);
287 middleBarrelFiberPEVolume->SetLineColor(kGray);
288 auto* combiTrans =
new TGeoCombiTrans(0, 0, (
int)orientation * (zLengthMiddleServices - zLengthCylinderMiddleServices),
nullptr);
289 motherVolume->AddNode(middleBarrelFiberSIO2Volume, 1, combiTrans);
290 motherVolume->AddNode(middleBarrelFiberPEVolume, 1, combiTrans);
293 TGeoTube* middleBarrelPowerCu =
new TGeoTube(Form(
"TRK_MID_POWER_CUsh_%s", orientation == Orientation::kASide ?
"bwd" :
"fwd"), rMinMiddleServices, rMinMiddleServices + cuPowerThick, zLengthCylinderMiddleServices );
294 rMinMiddleServices += cuPowerThick;
295 TGeoTube* middleBarrelPowerPE =
new TGeoTube(Form(
"TRK_MID_POWER_PEsh_%s", orientation == Orientation::kASide ?
"bwd" :
"fwd"), rMinMiddleServices, rMinMiddleServices + pePowerThick, zLengthCylinderMiddleServices );
296 rMinMiddleServices += pePowerThick;
297 TGeoVolume* middleBarrelPowerCuVolume =
new TGeoVolume(Form(
"TRK_MID_POWER_CU_%s", orientation == Orientation::kASide ?
"bwd" :
"fwd"), middleBarrelPowerCu, medCu);
298 TGeoVolume* middleBarrelPowerPEVolume =
new TGeoVolume(Form(
"TRK_MID_POWER_PE_%s", orientation == Orientation::kASide ?
"bwd" :
"fwd"), middleBarrelPowerPE, medPE);
299 middleBarrelPowerCuVolume->SetLineColor(kGray);
300 middleBarrelPowerPEVolume->SetLineColor(kGray);
301 motherVolume->AddNode(middleBarrelPowerCuVolume, 1, combiTrans);
302 motherVolume->AddNode(middleBarrelPowerPEVolume, 1, combiTrans);
305 TGeoTube* middleBarrelCoolingPU =
new TGeoTube(Form(
"TRK_MID_COOLING_PUsh_%s", orientation == Orientation::kASide ?
"bwd" :
"fwd"), rMinMiddleServices, rMinMiddleServices + puCoolingThick, zLengthCylinderMiddleServices );
306 rMinMiddleServices += puCoolingThick;
307 TGeoTube* middleBarrelCoolingH2O =
new TGeoTube(Form(
"TRK_MID_COOLING_H2Osh_%s", orientation == Orientation::kASide ?
"bwd" :
"fwd"), rMinMiddleServices, rMinMiddleServices + h2oCoolingThick, zLengthCylinderMiddleServices );
308 rMinMiddleServices = rMinMiddleServices += h2oCoolingThick;
309 TGeoVolume* middleBarrelCoolingPUVolume =
new TGeoVolume(Form(
"TRK_MID_COOLING_PU_%s", orientation == Orientation::kASide ?
"bwd" :
"fwd"), middleBarrelCoolingPU, medPU);
310 TGeoVolume* middleBarrelCoolingH2OVolume =
new TGeoVolume(Form(
"TRK_MID_COOLING_H2O_%s", orientation == Orientation::kASide ?
"bwd" :
"fwd"), middleBarrelCoolingH2O, medH2O);
311 middleBarrelCoolingPUVolume->SetLineColor(kGray);
312 middleBarrelCoolingH2OVolume->SetLineColor(kGray);
313 motherVolume->AddNode(middleBarrelCoolingPUVolume, 1, combiTrans);
314 motherVolume->AddNode(middleBarrelCoolingH2OVolume, 1, combiTrans);
317 const float rMinMiddleBarrelDisk = 5.68f;
318 const float rMaxMiddleBarrelDisk = 35.f;
319 const float zLengthMiddleBarrel = 62.f;
320 for (
auto& orientation : {Orientation::kASide, Orientation::kCSide}) {
321 TGeoTube* middleBarrelConnDiskSIO2 =
new TGeoTube(Form(
"TRK_MIDBARCONN_DISK_SIO2sh_%s", orientation == Orientation::kASide ?
"bwd" :
"fwd"), rMinMiddleBarrelDisk, rMaxMiddleBarrelDisk, siO2FiberThick);
322 TGeoTube* middleBarrelConnDiskPE =
new TGeoTube(Form(
"TRK_MIDBARCONN_DISK_PEsh_%s", orientation == Orientation::kASide ?
"bwd" :
"fwd"), rMinMiddleBarrelDisk, rMaxMiddleBarrelDisk, peFiberThick);
323 TGeoVolume* middleBarrelConnDiskSIO2Volume =
new TGeoVolume(Form(
"TRK_MIDBARCONN_DISK_SIO2_%s", orientation == Orientation::kASide ?
"bwd" :
"fwd"), middleBarrelConnDiskSIO2, medSiO2);
324 TGeoVolume* middleBarrelConnDiskPEVolume =
new TGeoVolume(Form(
"TRK_MIDBARCONN_DISK_PE_%s", orientation == Orientation::kASide ?
"bwd" :
"fwd"), middleBarrelConnDiskPE, medPE);
325 middleBarrelConnDiskSIO2Volume->SetLineColor(kGray);
326 middleBarrelConnDiskPEVolume->SetLineColor(kGray);
327 auto* rot =
new TGeoRotation(
"", 0, 0, 180);
328 auto* combiTransSIO2 =
new TGeoCombiTrans(0, 0, (
int)orientation * (siO2FiberThick / 2 + zLengthMiddleBarrel), rot);
329 auto* combiTransPE =
new TGeoCombiTrans(0, 0, (
int)orientation * (siO2FiberThick + peFiberThick / 2 + zLengthMiddleBarrel), rot);
330 motherVolume->AddNode(middleBarrelConnDiskSIO2Volume, 1, combiTransSIO2);
331 motherVolume->AddNode(middleBarrelConnDiskPEVolume, 1, combiTransPE);
333 TGeoTube* middleBarrelConnDiskCu =
new TGeoTube(Form(
"TRK_MIDBARCONN_DISK_CUsh_%s", orientation == Orientation::kASide ?
"bwd" :
"fwd"), rMinMiddleBarrelDisk, rMaxMiddleBarrelDisk, cuPowerThick);
334 TGeoTube* middleBarrelConnDiskPEPower =
new TGeoTube(Form(
"TRK_MIDBARCONN_DISK_PEsh_%s", orientation == Orientation::kASide ?
"bwd" :
"fwd"), rMinMiddleBarrelDisk, rMaxMiddleBarrelDisk, pePowerThick);
335 TGeoVolume* middleBarrelConnDiskCuVolume =
new TGeoVolume(Form(
"TRK_MIDBARCONN_DISK_CU_%s", orientation == Orientation::kASide ?
"bwd" :
"fwd"), middleBarrelConnDiskCu, medCu);
336 TGeoVolume* middleBarrelConnDiskPEPowerVolume =
new TGeoVolume(Form(
"TRK_MIDBARCONN_DISK_PE_%s", orientation == Orientation::kASide ?
"bwd" :
"fwd"), middleBarrelConnDiskPEPower, medPE);
337 middleBarrelConnDiskCuVolume->SetLineColor(kGray);
338 middleBarrelConnDiskPEPowerVolume->SetLineColor(kGray);
339 auto* combiTransCu =
new TGeoCombiTrans(0, 0, (
int)orientation * (siO2FiberThick + peFiberThick + cuPowerThick / 2 + zLengthMiddleBarrel), rot);
340 auto* combiTransPEPower =
new TGeoCombiTrans(0, 0, (
int)orientation * (siO2FiberThick + peFiberThick + cuPowerThick + pePowerThick / 2 + zLengthMiddleBarrel), rot);
341 motherVolume->AddNode(middleBarrelConnDiskCuVolume, 1, combiTransCu);
342 motherVolume->AddNode(middleBarrelConnDiskPEPowerVolume, 1, combiTransPEPower);
344 TGeoTube* middleBarrelConnDiskPU =
new TGeoTube(Form(
"TRK_MIDBARCONN_DISK_PUsh_%s", orientation == Orientation::kASide ?
"bwd" :
"fwd"), rMinMiddleBarrelDisk, rMaxMiddleBarrelDisk, puCoolingThick);
345 TGeoTube* middleBarrelConnDiskH2O =
new TGeoTube(Form(
"TRK_MIDBARCONN_DISK_H2Osh_%s", orientation == Orientation::kASide ?
"bwd" :
"fwd"), rMinMiddleBarrelDisk, rMaxMiddleBarrelDisk, h2oCoolingThick);
346 TGeoVolume* middleBarrelConnDiskPUVolume =
new TGeoVolume(Form(
"TRK_MIDBARCONN_DISK_PU_%s", orientation == Orientation::kASide ?
"bwd" :
"fwd"), middleBarrelConnDiskPU, medPU);
347 TGeoVolume* middleBarrelConnDiskH2OVolume =
new TGeoVolume(Form(
"TRK_MIDBARCONN_DISK_H2O_%s", orientation == Orientation::kASide ?
"bwd" :
"fwd"), middleBarrelConnDiskH2O, medH2O);
348 middleBarrelConnDiskPUVolume->SetLineColor(kGray);
349 middleBarrelConnDiskH2OVolume->SetLineColor(kGray);
350 motherVolume->AddNode(middleBarrelConnDiskPUVolume, 1, combiTransCu);
351 motherVolume->AddNode(middleBarrelConnDiskH2OVolume, 1, combiTransPEPower);
355 float rMaxMiddleServicesBarFwd = 74.5f + siO2FiberThick + peFiberThick + cuPowerThick + pePowerThick + puCoolingThick + h2oCoolingThick;
356 for (
auto& orientation : {Orientation::kASide, Orientation::kCSide}) {
358 TGeoTube* middleBarFwdFiberSIO2 =
new TGeoTube(
"TRK_MIDBARFWD_FIBER_SIO2sh", rMinMiddleBarrel, rMaxMiddleServicesBarFwd, siO2FiberThick);
359 TGeoTube* middleBarFwdFiberPE =
new TGeoTube(
"TRK_MIDBARFWD_FIBER_PEsh", rMinMiddleBarrel, rMaxMiddleServicesBarFwd, peFiberThick);
360 TGeoVolume* middleBarFwdFiberSIO2Volume =
new TGeoVolume(
"TRK_MIDBARFWD_FIBER_SIO2", middleBarFwdFiberSIO2, medSiO2);
361 TGeoVolume* middleBarFwdFiberPEVolume =
new TGeoVolume(
"TRK_MIDBARFWD_FIBER_PE", middleBarFwdFiberPE, medPE);
362 middleBarFwdFiberSIO2Volume->SetLineColor(kGray);
363 middleBarFwdFiberPEVolume->SetLineColor(kGray);
364 auto* rot =
new TGeoRotation(
"", 0, 0, 180);
365 auto* combiTransSIO2 =
new TGeoCombiTrans(0, 0, (
int)orientation * (siO2FiberThick / 2 + zLengthMiddleServices), rot);
366 auto* combiTransPE =
new TGeoCombiTrans(0, 0, (
int)orientation * (siO2FiberThick + peFiberThick / 2 + zLengthMiddleServices), rot);
367 motherVolume->AddNode(middleBarFwdFiberSIO2Volume, 1, combiTransSIO2);
368 motherVolume->AddNode(middleBarFwdFiberPEVolume, 1, combiTransPE);
371 TGeoTube* middleBarFwdPowerCu =
new TGeoTube(
"TRK_MIDBARFWD_POWER_CUsh", rMinMiddleBarrel, rMaxMiddleServicesBarFwd, cuPowerThick);
372 TGeoTube* middleBarFwdPowerPE =
new TGeoTube(
"TRK_MIDBARFWD_POWER_PEsh", rMinMiddleBarrel, rMaxMiddleServicesBarFwd, pePowerThick);
373 TGeoVolume* middleBarFwdPowerCuVolume =
new TGeoVolume(
"TRK_MIDBARFWD_POWER_CU", middleBarFwdPowerCu, medCu);
374 TGeoVolume* middleBarFwdPowerPEVolume =
new TGeoVolume(
"TRK_MIDBARFWD_POWER_PE", middleBarFwdPowerPE, medPE);
375 middleBarFwdPowerCuVolume->SetLineColor(kGray);
376 middleBarFwdPowerPEVolume->SetLineColor(kGray);
377 auto* combiTransCu =
new TGeoCombiTrans(0, 0, (
int)orientation * (siO2FiberThick + peFiberThick + cuPowerThick / 2 + zLengthMiddleServices), rot);
378 auto* combiTransPEPower =
new TGeoCombiTrans(0, 0, (
int)orientation * (siO2FiberThick + peFiberThick + cuPowerThick + pePowerThick / 2 + zLengthMiddleServices), rot);
379 motherVolume->AddNode(middleBarFwdPowerCuVolume, 1, combiTransCu);
380 motherVolume->AddNode(middleBarFwdPowerPEVolume, 1, combiTransPEPower);
383 TGeoTube* middleBarFwdCoolingPU =
new TGeoTube(
"TRK_MIDBARFWD_COOLING_PUsh", rMinMiddleBarrel, rMaxMiddleServicesBarFwd, puCoolingThick);
384 TGeoTube* middleBarFwdCoolingH2O =
new TGeoTube(
"TRK_MIDBARFWD_COOLING_H2Osh", rMinMiddleBarrel, rMaxMiddleServicesBarFwd, h2oCoolingThick);
385 TGeoVolume* middleBarFwdCoolingPUVolume =
new TGeoVolume(
"TRK_MIDBARFWD_COOLING_PU", middleBarFwdCoolingPU, medPU);
386 TGeoVolume* middleBarFwdCoolingH2OVolume =
new TGeoVolume(
"TRK_MIDBARFWD_COOLING_H2O", middleBarFwdCoolingH2O, medH2O);
387 middleBarFwdCoolingPUVolume->SetLineColor(kGray);
388 middleBarFwdCoolingH2OVolume->SetLineColor(kGray);
389 auto* combiTransCoolingPU =
new TGeoCombiTrans(0, 0, (
int)orientation * (siO2FiberThick + peFiberThick + cuPowerThick + pePowerThick + puCoolingThick / 2 + zLengthMiddleServices), rot);
390 auto* combiTransCoolingH2O =
new TGeoCombiTrans(0, 0, (
int)orientation * (siO2FiberThick + peFiberThick + cuPowerThick + pePowerThick + puCoolingThick + h2oCoolingThick / 2 + zLengthMiddleServices), rot);
391 motherVolume->AddNode(middleBarFwdCoolingPUVolume, 1, combiTransCoolingPU);
392 motherVolume->AddNode(middleBarFwdCoolingH2OVolume, 1, combiTransCoolingH2O);
396 const float zLengthMiddleServicesFwd = 350.f - (143.f + totalThickness);
398 for (
auto& orientation : {Orientation::kASide, Orientation::kCSide}) {
400 float siO2FiberThick = 0.5 * 0.307;
401 float peFiberThick = 0.5 * 0.307;
402 float rMinMiddleServicesFwd = 74.5f;
404 float translation = (
int)orientation * (143.f + totalThickness + zLengthMiddleServicesFwd / 2);
406 TGeoTube* middleFwdFiberSIO2 =
new TGeoTube(
"TRK_MIDFWD_FIBER_SIO2sh", rMinMiddleServicesFwd, rMinMiddleServicesFwd + siO2FiberThick, zLengthMiddleServicesFwd / 2);
407 TGeoTube* middleFwdFiberPE =
new TGeoTube(
"TRK_MIDFWD_FIBER_PEsh", rMinMiddleServicesFwd + siO2FiberThick, rMinMiddleServicesFwd + siO2FiberThick + peFiberThick, zLengthMiddleServicesFwd / 2);
408 rMinMiddleServicesFwd += siO2FiberThick + peFiberThick;
409 TGeoVolume* middleFwdFiberSIO2Volume =
new TGeoVolume(
"TRK_MIDFWD_FIBER_SIO2", middleFwdFiberSIO2, medSiO2);
410 TGeoVolume* middleFwdFiberPEVolume =
new TGeoVolume(
"TRK_MIDFWD_FIBER_PE", middleFwdFiberPE, medPE);
411 middleFwdFiberSIO2Volume->SetLineColor(kGray);
412 middleFwdFiberPEVolume->SetLineColor(kGray);
413 auto* combiTrans =
new TGeoCombiTrans(0, 0, translation,
nullptr);
414 motherVolume->AddNode(middleFwdFiberSIO2Volume, 1, combiTrans);
415 motherVolume->AddNode(middleFwdFiberPEVolume, 1, combiTrans);
418 float cuPowerThick = 0.09 * 1.09;
419 float pePowerThick = 0.91 * 1.09;
421 TGeoTube* middleFwdPowerCu =
new TGeoTube(
"TRK_MIDFWD_POWER_CUsh", rMinMiddleServicesFwd, rMinMiddleServicesFwd + cuPowerThick, zLengthMiddleServicesFwd / 2);
422 TGeoTube* middleFwdPowerPE =
new TGeoTube(
"TRK_MIDFWD_POWER_PEsh", rMinMiddleServicesFwd + cuPowerThick, rMinMiddleServicesFwd + cuPowerThick + pePowerThick, zLengthMiddleServicesFwd / 2);
423 rMinMiddleServicesFwd += cuPowerThick + pePowerThick;
424 TGeoVolume* middleFwdPowerCuVolume =
new TGeoVolume(
"TRK_MIDFWD_POWER_CU", middleFwdPowerCu, medCu);
425 TGeoVolume* middleFwdPowerPEVolume =
new TGeoVolume(
"TRK_MIDFWD_POWER_PE", middleFwdPowerPE, medPE);
426 middleFwdPowerCuVolume->SetLineColor(kGray);
427 middleFwdPowerPEVolume->SetLineColor(kGray);
428 motherVolume->AddNode(middleFwdPowerCuVolume, 1, combiTrans);
429 motherVolume->AddNode(middleFwdPowerPEVolume, 1, combiTrans);
432 float puCoolingThick = 0.56 * 0.474;
433 float h2oCoolingThick = 0.44 * 0.474;
435 TGeoTube* middleFwdCoolingPU =
new TGeoTube(
"TRK_MIDFWD_COOLING_PUsh", rMinMiddleServicesFwd, rMinMiddleServicesFwd + puCoolingThick, zLengthMiddleServicesFwd / 2);
436 TGeoTube* middleFwdCoolingH2O =
new TGeoTube(
"TRK_MIDFWD_COOLING_H2Osh", rMinMiddleServicesFwd + puCoolingThick, rMinMiddleServicesFwd + puCoolingThick + h2oCoolingThick, zLengthMiddleServicesFwd / 2);
438 TGeoVolume* middleFwdCoolingPUVolume =
new TGeoVolume(
"TRK_MIDFWD_COOLING_PU", middleFwdCoolingPU, medPU);
439 TGeoVolume* middleFwdCoolingH2OVolume =
new TGeoVolume(
"TRK_MIDFWD_COOLING_H2O", middleFwdCoolingH2O, medH2O);
440 middleFwdCoolingPUVolume->SetLineColor(kGray);
441 middleFwdCoolingH2OVolume->SetLineColor(kGray);
442 motherVolume->AddNode(middleFwdCoolingPUVolume, 1, combiTrans);
443 motherVolume->AddNode(middleFwdCoolingH2OVolume, 1, combiTrans);
451 TGeoMedium* medSiO2 = matmgr.getTGeoMedium(
"ALICE3_TRKSERVICES_SILICONDIOXIDE");
452 TGeoMedium* medPE = matmgr.getTGeoMedium(
"ALICE3_TRKSERVICES_POLYETHYLENE");
453 TGeoMedium* medCu = matmgr.getTGeoMedium(
"ALICE3_TRKSERVICES_COPPER");
454 TGeoMedium* medPU = matmgr.getTGeoMedium(
"ALICE3_TRKSERVICES_POLYURETHANE");
455 TGeoMedium* medH2O = matmgr.getTGeoMedium(
"ALICE3_TRKSERVICES_WATER");
458 const float siO2FiberThick = 0.5 * 0.269;
459 const float peFiberThick = 0.5 * 0.269;
461 const float zLengthOuterBarrelServices = 350.f;
463 TGeoTube* outerBarrelFiberSIO2 =
new TGeoTube(
"TRK_OUTERBARREL_FIBER_SIO2sh", rMinOuterBarrelServices, rMinOuterBarrelServices + siO2FiberThick, zLengthOuterBarrelServices);
464 TGeoTube* outerBarrelFiberPE =
new TGeoTube(
"TRK_OUTERBARREL_FIBER_PEsh", rMinOuterBarrelServices + siO2FiberThick, rMinOuterBarrelServices + siO2FiberThick + peFiberThick, zLengthOuterBarrelServices);
465 rMinOuterBarrelServices += siO2FiberThick + peFiberThick;
466 TGeoVolume* outerBarrelFiberSIO2Volume =
new TGeoVolume(
"TRK_OUTERBARREL_FIBER_SIO2", outerBarrelFiberSIO2, medSiO2);
467 TGeoVolume* outerBarrelFiberPEVolume =
new TGeoVolume(
"TRK_OUTERBARREL_FIBER_PE", outerBarrelFiberPE, medPE);
468 outerBarrelFiberSIO2Volume->SetLineColor(kGray);
469 outerBarrelFiberPEVolume->SetLineColor(kGray);
470 motherVolume->AddNode(outerBarrelFiberSIO2Volume, 1,
nullptr);
471 motherVolume->AddNode(outerBarrelFiberPEVolume, 1,
nullptr);
474 const float cuPowerThick = 0.09 * 0.430;
475 const float pePowerThick = 0.91 * 0.430;
477 TGeoTube* outerBarrelPowerCu =
new TGeoTube(
"TRK_OUTERBARREL_POWER_CUsh", rMinOuterBarrelServices, rMinOuterBarrelServices + cuPowerThick, zLengthOuterBarrelServices);
478 TGeoTube* outerBarrelPowerPE =
new TGeoTube(
"TRK_OUTERBARREL_POWER_PEsh", rMinOuterBarrelServices + cuPowerThick, rMinOuterBarrelServices + cuPowerThick + pePowerThick, zLengthOuterBarrelServices);
479 rMinOuterBarrelServices += cuPowerThick + pePowerThick;
480 TGeoVolume* outerBarrelPowerCuVolume =
new TGeoVolume(
"TRK_OUTERBARREL_POWER_CU", outerBarrelPowerCu, medCu);
481 TGeoVolume* outerBarrelPowerPEVolume =
new TGeoVolume(
"TRK_OUTERBARREL_POWER_PE", outerBarrelPowerPE, medPE);
482 outerBarrelPowerCuVolume->SetLineColor(kGray);
483 outerBarrelPowerPEVolume->SetLineColor(kGray);
484 motherVolume->AddNode(outerBarrelPowerCuVolume, 1,
nullptr);
485 motherVolume->AddNode(outerBarrelPowerPEVolume, 1,
nullptr);
488 const float puCoolingThick = 0.56 * 1.432;
489 const float h2oCoolingThick = 0.44 * 1.432;
491 TGeoTube* outerBarrelCoolingPU =
new TGeoTube(
"TRK_OUTERBARREL_COOLING_PUsh", rMinOuterBarrelServices, rMinOuterBarrelServices + puCoolingThick, zLengthOuterBarrelServices);
492 TGeoTube* outerBarrelCoolingH2O =
new TGeoTube(
"TRK_OUTERBARREL_COOLING_H2Osh", rMinOuterBarrelServices + puCoolingThick, rMinOuterBarrelServices + puCoolingThick + h2oCoolingThick, zLengthOuterBarrelServices);
494 TGeoVolume* outerBarrelCoolingPUVolume =
new TGeoVolume(
"TRK_OUTERBARREL_COOLING_PU", outerBarrelCoolingPU, medPU);
495 TGeoVolume* outerBarrelCoolingH2OVolume =
new TGeoVolume(
"TRK_OUTERBARREL_COOLING_H2O", outerBarrelCoolingH2O, medH2O);
496 outerBarrelCoolingPUVolume->SetLineColor(kGray);
497 outerBarrelCoolingH2OVolume->SetLineColor(kGray);
498 motherVolume->AddNode(outerBarrelCoolingPUVolume, 1,
nullptr);
499 motherVolume->AddNode(outerBarrelCoolingH2OVolume, 1,
nullptr);