13 #include "GeoModelKernel/GeoCons.h"
14 #include "GeoModelKernel/GeoTube.h"
15 #include "GeoModelKernel/GeoTubs.h"
16 #include "GeoModelKernel/GeoLogVol.h"
17 #include "GeoModelKernel/GeoPhysVol.h"
18 #include "GeoModelKernel/GeoTransform.h"
19 #include "GeoModelKernel/GeoMaterial.h"
20 #include "GeoModelKernel/GeoDefinitions.h"
21 #include "GaudiKernel/SystemOfUnits.h"
34 m_innerRadius(rmin), m_outerRadius(rmax), m_length(
length)
51 for (
int iType = 0; iType <
parameters->fwdNumCylinderServiceTypes(); iType++) {
52 if (
parameters->fwdCylinderServiceName(iType) ==
"CoolingPipe") {
57 if (
parameters->fwdCylinderServiceName(iType) ==
"LMT") {
62 if (
parameters->fwdCylinderServiceName(iType) ==
"LMTCooling") {
67 if (
parameters->fwdCylinderServiceName(iType) ==
"Fibres") {
72 if (
parameters->fwdCylinderServiceName(iType) ==
"NPipe") {
77 if (
parameters->fwdCylinderServiceName(iType) ==
"Rail") {
85 for (
int iLoc = 0; iLoc <
parameters->fwdNumCylinderServiceLocs(); iLoc++) {
86 if (
parameters->fwdCylinderServiceLocName(iLoc) ==
"CoolingPipe") {
89 if (
parameters->fwdCylinderServiceLocName(iLoc) ==
"LMT") {
92 if (
parameters->fwdCylinderServiceLocName(iLoc) ==
"LMTCooling") {
95 if (
parameters->fwdCylinderServiceLocName(iLoc) ==
"Fibres") {
98 if (
parameters->fwdCylinderServiceLocName(iLoc) ==
"NPipe") {
101 if (
parameters->fwdCylinderServiceLocName(iLoc) ==
"Rail") {
107 double lmtCoolingZStart = 0.5 * (
parameters->fwdWheelZPosition(1) +
parameters->fwdWheelZPosition(2));
119 GeoPhysVol * cylinder =
new GeoPhysVol(cylinderLog);
135 const GeoCons* coolingShape =
new GeoCons(coolingRmin, coolingRmin, coolingRmax1, coolingRmax2,
139 GeoPhysVol * coolingPipe =
new GeoPhysVol(coolingLog);
146 const GeoCons* lmtShape =
new GeoCons(lmtRmin, lmtRmin, lmtRmax1, lmtRmax2, 0.5 *
m_length,
149 GeoPhysVol * lmt =
new GeoPhysVol(lmtLog);
152 double lmtCoolingRmin = lmtRmax2;
156 const GeoTubs* lmtCoolingShape =
new GeoTubs(lmtCoolingRmin, lmtCoolingRmax, 0.5 * lmtLength,
159 GeoPhysVol * lmtCooling =
new GeoPhysVol(lmtCoolingLog);
166 const GeoCons* fibreShape =
new GeoCons(fibreRmin, fibreRmin, fibreRmax1, fibreRmax2, 0.5 *
m_length,
169 GeoPhysVol * fibres =
new GeoPhysVol(fibreLog);
175 const GeoTubs* nPipeShape =
new GeoTubs(nPipeRmin, nPipeRmax, 0.5 *
m_length,
178 GeoPhysVol * nPipe =
new GeoPhysVol(nPipeLog);
181 double railRmin =
std::max(coolingRmax2, nPipeRmax);
184 const GeoTubs* railShape =
new GeoTubs(railRmin, railRmax,
187 GeoPhysVol * rail =
new GeoPhysVol(railLog);
190 for (
int iquad = 0; iquad < 4; iquad++) {
195 cylinder->add(
new GeoTransform(GeoTrf::RotateZ3D(coolingAngle)));
196 cylinder->add(coolingPipe);
200 for (
unsigned int iLoc = 0; iLoc <
m_lmtLocAngle.size(); iLoc++) {
202 cylinder->add(
new GeoTransform(GeoTrf::RotateZ3D(lmtAngle)));
204 cylinder->add(
new GeoTransform(GeoTrf::RotateZ3D(lmtAngle)*GeoTrf::TranslateZ3D(
m_lmtCoolingZOffset)));
205 cylinder->add(lmtCooling);
211 cylinder->add(
new GeoTransform(GeoTrf::RotateZ3D(fibreAngle)));
212 cylinder->add(fibres);
218 cylinder->add(
new GeoTransform(GeoTrf::RotateZ3D(nPipeAngle)));
219 cylinder->add(nPipe);
223 for (
unsigned int iLoc = 0; iLoc <
m_railLocAngle.size(); iLoc++) {
225 cylinder->add(
new GeoTransform(GeoTrf::RotateZ3D(railAngle)));