25#include "GeoModelRead/ReadGeoModel.h"
26#include "GeoModelKernel/GeoBox.h"
27#include "GeoModelKernel/GeoLogVol.h"
28#include "GeoModelKernel/GeoPhysVol.h"
29#include "GeoModelKernel/GeoFullPhysVol.h"
30#include "GeoModelKernel/GeoNameTag.h"
31#include "GeoModelKernel/GeoIdentifierTag.h"
32#include "GeoModelKernel/GeoTransform.h"
33#include "GeoModelKernel/GeoShape.h"
34#include "GeoModelKernel/GeoShapeUnion.h"
35#include "GeoModelKernel/GeoShapeShift.h"
36#include "GeoModelKernel/GeoDefinitions.h"
37#include "GaudiKernel/SystemOfUnits.h"
46 GeoModelIO::ReadGeoModel* sqliteReader,
47 std::shared_ptr<std::map<std::string, GeoFullPhysVol*>> mapFPV,
48 std::shared_ptr<std::map<std::string, GeoAlignableTransform*>> mapAX)
86 const double t_hybrid =
m_hybrid->thickness();
87 const double w_hybrid =
m_hybrid->width();
88 const double l_hybrid =
m_hybrid->length();
90 const double t_sensor =
m_sensor->thickness();
91 const double w_sensor =
m_sensor->width();
92 const double l_sensor =
m_sensor->length();
97 const double sensorPosX = 0.0;
98 const double sensorPosY = 0.0;
99 const double sensorPosZ = 0.0;
102 const double hybridPosY = 0.0;
109 const double w_ise1 = w_sensor +
m_safety;
110 const double t_ise1 = t_sensor +
m_safety;
111 const double l_ise1 = l_sensor +
m_safety;
113 const double t_ise2 = t_hybrid +
m_safety;
114 const double w_ise2 = w_hybrid +
m_safety;
115 const double l_ise2 = l_hybrid +
m_safety;
117 const double ise2PosX = hybridPosX;
118 const double ise2PosY = hybridPosY;
119 const double ise2PosZ = hybridPosZ;
124 m_hybridPos =
new GeoTransform(GeoTrf::Translate3D(hybridPosX, hybridPosY, hybridPosZ));
138 m_sensorPos =
new GeoTransform(GeoTrf::Translate3D(sensorPosX, sensorPosY, sensorPosZ));
143 const GeoBox * ise1Shape =
new GeoBox(0.5 * t_ise1,
146 const GeoBox * ise2Shape =
new GeoBox(0.5 * t_ise2,
150 const GeoShape & InnerSideEnvelopeShape = (*ise1Shape).
151 add(*ise2Shape << GeoTrf::Translate3D(ise2PosX, ise2PosY, ise2PosZ));
153 const GeoLogVol * InnerSideEnvelopeLog =
new GeoLogVol(
"InnerSideEnvelope",
154 &InnerSideEnvelopeShape,
156 m_thickness = 0.5*t_ise1 + hybridPosX + 0.5*t_ise2;
160 return InnerSideEnvelopeLog;
174 GeoFullPhysVol * innerSide =
new GeoFullPhysVol(
m_logVolume);
180 innerSide->add(
new GeoIdentifierTag(1000));
182 innerSide->add(
m_sensor->build(
id));
186 innerSide->add(
m_hybrid->getVolume());
Dedicated detector manager extending the functionality of the SiDetectorManager with dedicated SCT in...
InDetDD::SCT_DetectorManager * m_detectorManager
SCT_GeometryManager * m_geometryManager
SCT_MaterialManager * m_materials
SCT_InnerSide(const std::string &name, InDetDD::SCT_DetectorManager *detectorManager, SCT_GeometryManager *geometryManager, SCT_MaterialManager *materials, GeoModelIO::ReadGeoModel *sqliteReader, std::shared_ptr< std::map< std::string, GeoFullPhysVol * > > mapFPV, std::shared_ptr< std::map< std::string, GeoAlignableTransform * > > mapAX)
GeoIntrusivePtr< GeoTransform > m_sensorPos
std::unique_ptr< SCT_Sensor > m_sensor
GeoIntrusivePtr< GeoTransform > m_hybridPos
std::unique_ptr< GeoTrf::Vector3D > m_env1RefPointVector
virtual const GeoLogVol * preBuild()
std::unique_ptr< SCT_Hybrid > m_hybrid
virtual GeoVPhysVol * build(SCT_Identifier id)
std::unique_ptr< GeoTrf::Vector3D > m_env2RefPointVector
SCT_UniqueComponentFactory(const std::string &name, InDetDD::SCT_DetectorManager *detectorManager, SCT_GeometryManager *geometryManager, SCT_MaterialManager *materials=nullptr, GeoModelIO::ReadGeoModel *sqliteReader=nullptr, std::shared_ptr< std::map< std::string, GeoFullPhysVol * > > mapFPV=nullptr, std::shared_ptr< std::map< std::string, GeoAlignableTransform * > > mapAX=nullptr)
std::shared_ptr< std::map< std::string, GeoFullPhysVol * > > m_mapFPV
const GeoLogVol * m_logVolume
std::shared_ptr< std::map< std::string, GeoAlignableTransform * > > m_mapAX
GeoModelIO::ReadGeoModel * m_sqliteReader
bool add(const std::string &hname, TKey *tobj)