1 #include "DD4hep/DetFactoryHelper.h"
14 vector<string> sectorNumber =
args.vecStr(
"SectorNumber");
15 double sectorRin =
args.dble(
"SectorRin");
16 double sectorRout =
args.dble(
"SectorRout");
17 double sectorDz =
args.dble(
"SectorDz");
18 double sectorDeltaPhi_B =
args.dble(
"SectorDeltaPhi_B");
19 vector<double> sectorStartPhi =
args.vecDble(
"SectorStartPhi");
20 vector<string> sectorMaterial_A =
args.vecStr(
"SectorMaterial_A");
21 vector<string> sectorMaterial_B =
args.vecStr(
"SectorMaterial_B");
22 vector<string> sectorMaterial_C =
args.vecStr(
"SectorMaterial_C");
24 for (
int i = 0;
i < (
int)(sectorNumber.size());
i++)
25 LogDebug(
"TOBGeom") <<
"DDTOBAxCableAlgo debug: sectorNumber[" <<
i <<
"] = " << sectorNumber[
i];
27 LogDebug(
"TOBGeom") <<
"DDTOBAxCableAlgo debug: Axial Service Sectors half-length " << sectorDz <<
"\tRin "
28 << sectorRin <<
"\tRout = " << sectorRout <<
"\tPhi of sectors position:";
29 for (
int i = 0;
i < (
int)(sectorNumber.size());
i++)
30 LogDebug(
"TOBGeom") <<
"\t[" <<
i <<
"]\tPhi = " << sectorStartPhi[
i];
31 LogDebug(
"TOBGeom") <<
"DDTOBAxCableAlgo debug: List of materials for the sectors/3 parts";
33 LogDebug(
"TOBGeom") <<
"DDTOBAxCableAlgo debug: Sector/3 A";
34 for (
int i = 0;
i < (
int)(sectorNumber.size());
i++)
35 LogDebug(
"TOBGeom") <<
"\t[" <<
i <<
"]\tsectorMaterial_A = " << sectorMaterial_A[
i];
37 LogDebug(
"TOBGeom") <<
"DDTOBAxCableAlgo debug: Sector/3 B";
38 for (
int i = 0;
i < (
int)(sectorNumber.size());
i++)
39 LogDebug(
"TOBGeom") <<
"\t[" <<
i <<
"]\tsectorMaterial_B = " << sectorMaterial_B[
i];
41 LogDebug(
"TOBGeom") <<
"DDTOBAxCableAlgo debug: Sector/3 C";
42 for (
int i = 0;
i < (
int)(sectorNumber.size());
i++)
43 LogDebug(
"TOBGeom") <<
"\t[" <<
i <<
"]\tsectorMaterial_C = " << sectorMaterial_C[
i];
45 string tubsName =
args.parentName();
48 for (
int i = 0;
i < (
int)(sectorNumber.size());
i++) {
51 double dz, rin, rout, startphi, widthphi, deltaphi;
56 widthphi = ((
i + 1 == (
int)(sectorStartPhi.size())) ? (sectorStartPhi[0] + 2_pi) - sectorStartPhi[
i]
57 : (sectorStartPhi[
i + 1] - sectorStartPhi[
i]));
59 name =
"TOBAxService_" + sectorNumber[
i] +
"A";
63 startphi = sectorStartPhi[
i];
64 deltaphi = 0.5 * (widthphi - sectorDeltaPhi_B);
65 solid = ns.
addSolid(
name, Tube(rin, rout,
dz, startphi, startphi + deltaphi));
66 LogDebug(
"TOBGeom") << solid.name() <<
" Tubs made of " << sectorMaterial_A[
i] <<
" from "
68 << rin <<
" Rout " << rout <<
" ZHalf " <<
dz;
70 tubsVol.placeVolume(sectorLogic,
i + 1);
71 LogDebug(
"TOBGeom") << sectorLogic.name() <<
" number " <<
i + 1 <<
" positioned in " << tubsName
72 <<
" with no translation and no rotation";
75 name =
"TOBAxService_" + sectorNumber[
i] +
"B";
77 deltaphi = sectorDeltaPhi_B;
78 solid = ns.
addSolid(
name, Tube(rin, rout,
dz, startphi, startphi + deltaphi));
79 LogDebug(
"TOBGeom") << solid.name() <<
" Tubs made of " << sectorMaterial_B[
i] <<
" from "
81 << rin <<
" Rout " << rout <<
" ZHalf " <<
dz;
84 tubsVol.placeVolume(sectorLogic,
i + 1);
85 LogDebug(
"TOBGeom") << sectorLogic.name() <<
" number " <<
i + 1 <<
" positioned in " << tubsName
86 <<
" with no translation and no rotation";
89 name =
"TOBAxService_" + sectorNumber[
i] +
"C";
91 deltaphi = 0.5 * (widthphi - sectorDeltaPhi_B);
92 solid = ns.
addSolid(
name, Tube(rin, rout,
dz, startphi, startphi + deltaphi));
93 LogDebug(
"TOBGeom") << solid.name() <<
" Tubs made of " << sectorMaterial_C[
i] <<
" from "
95 << rin <<
" Rout " << rout <<
" ZHalf " <<
dz;
97 tubsVol.placeVolume(sectorLogic,
i + 1);
98 LogDebug(
"TOBGeom") << sectorLogic.name() <<
" number " <<
i + 1 <<
" positioned in " << tubsName
99 <<
" with no translation and no rotation";
101 LogDebug(
"TOBGeom") <<
"<<== End of DDTOBAxCableAlgo construction ...";