26 #include <boost/algorithm/string.hpp>
30 #include "TGeoBoolNode.h"
31 #include "TGeoCompositeShape.h"
35 using Line2D = Eigen::Hyperplane<double, 2>;
38 const Identifier& identifier,
const TGeoNode& tGeoNode,
39 const TGeoMatrix& tGeoMatrix,
const std::string& axes,
double scalor,
40 std::shared_ptr<const Acts::ISurfaceMaterial>
material)
42 m_detElement(&tGeoNode),
43 m_identifier(identifier) {
46 const Double_t* translation = tGeoMatrix.GetTranslation();
47 const Double_t* rotation = tGeoMatrix.GetRotationMatrix();
50 auto tgShape = sensor->GetShape();
53 *tgShape, rotation, translation, axes, scalor);
54 auto cylinderBounds = std::get<0>(cylinderComps);
55 if (cylinderBounds !=
nullptr) {
59 m_surface = Surface::makeShared<CylinderSurface>(cylinderBounds, *
this);
65 *tgShape, rotation, translation, axes, scalor);
66 auto discBounds = std::get<0>(discComps);
67 if (discBounds !=
nullptr) {
71 m_surface = Surface::makeShared<DiscSurface>(discBounds, *
this);
78 *tgShape, rotation, translation, axes, scalor);
79 auto planeBounds = std::get<0>(planeComps);
80 if (planeBounds !=
nullptr) {
84 m_surface = Surface::makeShared<PlaneSurface>(planeBounds, *
this);
90 m_surface->assignSurfaceMaterial(std::move(material));