6 #include "GaudiKernel/IService.h"
7 #include "GaudiKernel/ISvcLocator.h"
8 #include "GaudiKernel/MsgStream.h"
11 #include "GeoModelKernel/GeoMaterial.h"
12 #include "GeoModelKernel/GeoBox.h"
13 #include "GeoModelKernel/GeoTube.h"
14 #include "GeoModelKernel/GeoTubs.h"
15 #include "GeoModelKernel/GeoShapeSubtraction.h"
16 #include "GeoModelKernel/GeoShapeIntersection.h"
17 #include "GeoModelKernel/GeoShapeUnion.h"
18 #include "GeoModelKernel/GeoShapeShift.h"
19 #include "GeoModelKernel/GeoLogVol.h"
20 #include "GeoModelKernel/GeoNameTag.h"
21 #include "GeoModelKernel/GeoPhysVol.h"
22 #include "GeoModelKernel/GeoFullPhysVol.h"
23 #include "GeoModelKernel/GeoTransform.h"
24 #include "GeoModelKernel/GeoAlignableTransform.h"
25 #include "GeoModelKernel/GeoDefinitions.h"
26 #include "CLHEP/GenericFunctions/AbsFunction.hh"
27 #include "CLHEP/GenericFunctions/Variable.hh"
28 #include "CLHEP/GenericFunctions/Sin.hh"
29 #include "CLHEP/GenericFunctions/Cos.hh"
45 GeoLogVol* pLogElement=
nullptr;
46 GeoFullPhysVol* pPhysElement;
57 sprintf(szLabel,
"%s_LogSIDVacuumSensor[%i]",pszStationName,nSpecVacSensorID);
58 GeoLogVol* pLogSIDVacuumSensor=
new GeoLogVol(szLabel,pSolidSIDVacuumSensor,
m_MapMaterials[std::string(
"std::Vacuum")]);
59 GeoFullPhysVol* pPhysSIDVacuumSensor=
new GeoFullPhysVol(pLogSIDVacuumSensor);
60 sprintf(szLabel,
"%s_SIDVacuumSensor[%i]",pszStationName,nSpecVacSensorID);
61 pPhysMotherVol->add(
new GeoNameTag(szLabel));
63 pPhysMotherVol->add(pPhysSIDVacuumSensor);
69 sprintf(szLabel,
"%s_LogSIDPlate[%i]",pszStationName,
i);
70 pLogElement=
new GeoLogVol(szLabel,pSolidSIDPlate,
m_MapMaterials[std::string(
"CE7")]);
71 pPhysElement=
new GeoFullPhysVol(pLogElement);
72 sprintf(szLabel,
"%s_SIDPlate[%i]",pszStationName,
i);
73 pPhysMotherVol->add(
new GeoNameTag(szLabel));
75 pPhysMotherVol->add(pPhysElement);
79 sprintf(szLabel,
"%s_LogSIDChip[%i]",pszStationName,
i);
80 pLogElement=
new GeoLogVol(szLabel,pSolidFEI4Chip,
m_MapMaterials[std::string(
"CE7")]);
81 pPhysElement=
new GeoFullPhysVol(pLogElement);
82 sprintf(szLabel,
"%s_SIDChip[%i]",pszStationName,
i);
83 pPhysMotherVol->add(
new GeoNameTag(szLabel));
85 pPhysMotherVol->add(pPhysElement);
88 sprintf(szLabel,
"%s_LogSIDSensor[%i]",pszStationName,
i);
89 pLogElement=
new GeoLogVol(szLabel,pSolidSIDSensor,
m_MapMaterials[std::string(
"Silicon")]);
90 pPhysElement=
new GeoFullPhysVol(pLogElement);
91 sprintf(szLabel,
"%s_SIDSensor[%i]",pszStationName,
i);
92 pPhysMotherVol->add(
new GeoNameTag(szLabel));
94 pPhysMotherVol->add(pPhysElement);
99 sprintf(szLabel,
"%s_LogSIDVacuumSensor[%i]",pszStationName,
i);
100 GeoLogVol* pLogSIDVacuumSensor=
new GeoLogVol(szLabel,pSolidSIDVacuumSensor,
m_MapMaterials[std::string(
"std::Vacuum")]);
101 GeoFullPhysVol* pPhysSIDVacuumSensor=
new GeoFullPhysVol(pLogSIDVacuumSensor);
103 sprintf(szLabel,
"%s_SIDVacuumSensor[%i]",pszStationName,
i);
104 pPhysMotherVol->add(
new GeoNameTag(szLabel));
106 pPhysMotherVol->add(pPhysSIDVacuumSensor);
126 HepGeom::Vector3D<double> vecL=(
fd/std::sqrt(2.0))*(HepGeom::RotateZ3D(-fgamma)*HepGeom::Vector3D<double>(1.0,0.0,0.0));
128 HepGeom::Vector3D<double> vecX=vecL-vecB;
132 GeoShapeSubtraction* pShape1=
new GeoShapeSubtraction(pMainPlate, pShiftCut);
135 vecL=(
fd/std::sqrt(2.0))*(HepGeom::RotateZ3D(+fgamma)*HepGeom::Vector3D<double>(1.0,0.0,0.0));
140 GeoShapeSubtraction* pShape2=
new GeoShapeSubtraction(pShape1, pShiftCut);
146 GeoShapeSubtraction* pShape3=
new GeoShapeSubtraction(pShape2, pShiftCut);