5#ifndef PIXELGEOMODEL_GEOPIXELDETAILEDSTAVESUPPORT_H
6#define PIXELGEOMODEL_GEOPIXELDETAILEDSTAVESUPPORT_H
10#include "GeoModelKernel/GeoDefinitions.h"
11#include "GeoModelKernel/GeoPhysVol.h"
20 GeoModelIO::ReadGeoModel* sqliteReader,
21 std::shared_ptr<std::map<std::string, GeoFullPhysVol*>> mapFPV,
22 std::shared_ptr<std::map<std::string, GeoAlignableTransform*>> mapAX);
23 virtual GeoVPhysVol*
Build()
override;
35 double moduleThickN3D,
double moduleThickP3D,
double moduleWidth3D)
override;
65 std::vector<int> iExcept = std::vector<int>());
66 void AddSurroundingXYMargin(
double vMarginX,
double vMarginY, std::vector<double> &xPoint, std::vector<double>&yPoint);
82 GeoTrf::Vector3D
IntersectionPoint(
double Ax,
double Ay,
double Bx,
double By,
double Cx,
double Cy,
double Dx,
double Dy);
84 GeoTrf::Vector3D
NeighbourPoint_Rad(GeoTrf::Vector3D p, GeoTrf::Vector3D v,
double delta);
85 GeoTrf::Vector3D
NeighbourPoint_Perp(GeoTrf::Vector3D p, GeoTrf::Vector3D v,
double delta,
int iDir);
86 double ComputeAngle(
double ux,
double uy,
double vx,
double vy);
GeoIntrusivePtr< T > GeoNodePtr
GeoPixelDetailedStaveSupport(InDetDD::PixelDetectorManager *ddmgr, PixelGeometryManager *mgr, GeoModelIO::ReadGeoModel *sqliteReader, std::shared_ptr< std::map< std::string, GeoFullPhysVol * > > mapFPV, std::shared_ptr< std::map< std::string, GeoAlignableTransform * > > mapAX)
virtual GeoVPhysVol * Build() override
GeoTrf::Vector3D NormalizeDir(GeoTrf::Vector3D v)
virtual int PixelN3DModule() const override
virtual double getEndblockZpos() const override
virtual const GeoTrf::Transform3D & transform() const override
double m_OmegaMidStaveThick
double m_MidStaveSidePointY
GeoNodePtr< GeoTransform > m_serviceCoolPipeTrfC
void GetSurroundingConvexShape(std::vector< double > &xPoint, std::vector< double > &yPoint, std::vector< int > iExcept=std::vector< int >())
GeoPhysVol * m_endblockCPhysVol
GeoNodePtr< GeoTransform > m_endblockFlexTrf
GeoNodePtr< GeoSimplePolygonBrep > m_basicStaveEnvelopShape
double m_endblockSrvLength
virtual double thicknessP() const override
virtual double getServiceZpos() const override
double ComputeDistance(GeoTrf::Vector3D p, GeoTrf::Vector3D q)
double m_OmegaEndStavePointX
virtual void computeStaveEnvelopTransformAndSize(double moduleThickN, double moduleThickP, double moduleWidth, double moduleThickN3D, double moduleThickP3D, double moduleWidth3D) override
GeoPhysVol * m_endblockFlexPhysVol
void ComputeStaveExternalShape()
static constexpr double m_oneDegree
virtual GeoTransform * getEndblockEnvelopShapeTrf(int) override
GeoNodePtr< GeoTransform > m_serviceCoolPipeTrfA
GeoTrf::Vector3D IntersectionPoint(double Ax, double Ay, double Bx, double By, double Cx, double Cy, double Dx, double Dy)
double ComputeAngle(double ux, double uy, double vx, double vy)
void RemoveCoincidentAndColinearPointsFromShape(std::vector< double > &xPoint, std::vector< double > &yPoint)
double m_OmegaEndStaveThick
virtual GeoPhysVol * getEndblockEnvelopShape(int) override
virtual int PixelNModule() const override
virtual GeoSimplePolygonBrep * computeStaveEnvelopShape(double safetyMargin) override
GeoNodePtr< GeoSimplePolygonBrep > m_staveEnvelopShape
GeoTrf::Vector3D NeighbourPoint_Rad(GeoTrf::Vector3D p, GeoTrf::Vector3D v, double delta)
virtual double getEndblockLength() const override
GeoTrf::Transform3D m_transform
double m_OmegaEndStavePointY
GeoTrf::Vector3D NeighbourPoint_Perp(GeoTrf::Vector3D p, GeoTrf::Vector3D v, double delta, int iDir)
void AddSurroundingXYMargin(double vMarginX, double vMarginY, std::vector< double > &xPoint, std::vector< double > &yPoint)
GeoNodePtr< GeoVPhysVol > m_physVol
virtual double thicknessN() const override
virtual int PixelNPlanarModule() const override
GeoPhysVol * m_serviceCoolPipePhysVol
double m_MidStaveSidePointX
GeoPhysVol * m_endblockAPhysVol
virtual GeoVPhysVol * getPhysVol() override
Dedicated detector manager extending the functionality of the SiDetectorManager with dedicated pixel ...