7 #include "GaudiKernel/IService.h"
8 #include "GaudiKernel/ISvcLocator.h"
9 #include "GaudiKernel/MsgStream.h"
12 #include "GeoModelKernel/GeoMaterial.h"
13 #include "GeoModelKernel/GeoBox.h"
14 #include "GeoModelKernel/GeoTube.h"
15 #include "GeoModelKernel/GeoTubs.h"
16 #include "GeoModelKernel/GeoShapeSubtraction.h"
17 #include "GeoModelKernel/GeoShapeIntersection.h"
18 #include "GeoModelKernel/GeoShapeUnion.h"
19 #include "GeoModelKernel/GeoShapeShift.h"
20 #include "GeoModelKernel/GeoLogVol.h"
21 #include "GeoModelKernel/GeoNameTag.h"
22 #include "GeoModelKernel/GeoPhysVol.h"
23 #include "GeoModelKernel/GeoFullPhysVol.h"
24 #include "GeoModelKernel/GeoTransform.h"
25 #include "GeoModelKernel/GeoAlignableTransform.h"
26 #include "GeoModelKernel/GeoDefinitions.h"
27 #include "CLHEP/GenericFunctions/AbsFunction.hh"
28 #include "CLHEP/GenericFunctions/Variable.hh"
29 #include "CLHEP/GenericFunctions/Sin.hh"
30 #include "CLHEP/GenericFunctions/Cos.hh"
44 GeoLogVol* pLogElement=
nullptr;
45 GeoFullPhysVol* pPhysElement;
56 szLabel =
std::format(
"{}_LogSIDVacuumSensor[{}]",pszStationName,nSpecVacSensorID);
57 GeoLogVol* pLogSIDVacuumSensor=
new GeoLogVol(szLabel,pSolidSIDVacuumSensor,
m_MapMaterials[std::string(
"std::Vacuum")]);
58 GeoFullPhysVol* pPhysSIDVacuumSensor=
new GeoFullPhysVol(pLogSIDVacuumSensor);
59 szLabel =
std::format(
"{}_SIDVacuumSensor[{}]",pszStationName,nSpecVacSensorID);
60 pPhysMotherVol->add(
new GeoNameTag(szLabel));
62 pPhysMotherVol->add(pPhysSIDVacuumSensor);
68 szLabel =
std::format(
"{}_LogSIDPlate[{}]",pszStationName,
i);
69 pLogElement=
new GeoLogVol(szLabel,pSolidSIDPlate,
m_MapMaterials[std::string(
"CE7")]);
70 pPhysElement=
new GeoFullPhysVol(pLogElement);
71 szLabel =
std::format(
"{}_SIDPlate[{}]",pszStationName,
i);
72 pPhysMotherVol->add(
new GeoNameTag(szLabel));
74 pPhysMotherVol->add(pPhysElement);
78 szLabel =
std::format(
"{}_LogSIDChip[{}]",pszStationName,
i);
79 pLogElement=
new GeoLogVol(szLabel,pSolidFEI4Chip,
m_MapMaterials[std::string(
"CE7")]);
80 pPhysElement=
new GeoFullPhysVol(pLogElement);
81 szLabel =
std::format(
"{}_SIDChip[{}]",pszStationName,
i);
82 pPhysMotherVol->add(
new GeoNameTag(szLabel));
84 pPhysMotherVol->add(pPhysElement);
87 szLabel =
std::format(
"{}_LogSIDSensor[{}]",pszStationName,
i);
88 pLogElement=
new GeoLogVol(szLabel,pSolidSIDSensor,
m_MapMaterials[std::string(
"Silicon")]);
89 pPhysElement=
new GeoFullPhysVol(pLogElement);
90 szLabel =
std::format(
"{}_SIDSensor[{}]",pszStationName,
i);
91 pPhysMotherVol->add(
new GeoNameTag(szLabel));
93 pPhysMotherVol->add(pPhysElement);
98 szLabel =
std::format(
"{}_LogSIDVacuumSensor[{}]",pszStationName,
i);
99 GeoLogVol* pLogSIDVacuumSensor=
new GeoLogVol(szLabel,pSolidSIDVacuumSensor,
m_MapMaterials[std::string(
"std::Vacuum")]);
100 GeoFullPhysVol* pPhysSIDVacuumSensor=
new GeoFullPhysVol(pLogSIDVacuumSensor);
102 szLabel =
std::format(
"{}_SIDVacuumSensor[{}]",pszStationName,
i);
103 pPhysMotherVol->add(
new GeoNameTag(szLabel));
105 pPhysMotherVol->add(pPhysSIDVacuumSensor);
125 HepGeom::Vector3D<double> vecL=(
fd/std::sqrt(2.0))*(HepGeom::RotateZ3D(-fgamma)*HepGeom::Vector3D<double>(1.0,0.0,0.0));
127 HepGeom::Vector3D<double> vecX=vecL-vecB;
131 GeoShapeSubtraction* pShape1=
new GeoShapeSubtraction(pMainPlate, pShiftCut);
134 vecL=(
fd/std::sqrt(2.0))*(HepGeom::RotateZ3D(+fgamma)*HepGeom::Vector3D<double>(1.0,0.0,0.0));
139 GeoShapeSubtraction* pShape2=
new GeoShapeSubtraction(pShape1, pShiftCut);
145 GeoShapeSubtraction* pShape3=
new GeoShapeSubtraction(pShape2, pShiftCut);