|
ATLAS Offline Software
|
Go to the documentation of this file.
9 #ifndef TRKVOLUMES_SIMPLEPOLYGONBREPVOLUMEBOUNDS_H
10 #define TRKVOLUMES_SIMPLEPOLYGONBREPVOLUMEBOUNDS_H
23 class RectangleBounds;
81 bool forceInside = false)
const override final;
94 MsgStream&
dump(MsgStream& sl)
const override;
97 std::ostream&
dump(std::ostream& sl)
const override;
103 static
bool Xor(
bool x,
bool y) ;
105 bool Left(std::pair<
double,
double>
a, std::pair<
double,
double>
b,
106 std::pair<
double,
double>
c)
const;
108 bool Intersect(std::pair<
double,
double>
a, std::pair<
double,
double>
b,
109 std::pair<
double,
double>
c,
110 std::pair<
double,
double>
d)
const;
146 inline std::vector<std::pair<double, double> >
171 #endif // TRKVOLUMES_SIMPLEPOLYGONBREPVOLUMEBOUNDS_H
double halflengthZ() const
This method returns the halflength in local z.
SimplePolygonBrepVolumeBounds & operator=(const SimplePolygonBrepVolumeBounds &bobo)
Assignment operator.
SimplePolygonBrepVolumeBounds(std::vector< std::pair< double, double > > xyvtx, double hlengthz)
Constructor - generic case (from double)
std::array< ObjectAccessor::value_type, 8 > EightObjectsAccessor
int m_ordering
-1 not set/ 1 anticlockwise / 0 clockwise
bool Intersect(std::pair< double, double > a, std::pair< double, double > b, std::pair< double, double > c, std::pair< double, double > d) const
bool InCone(int i, int j, const std::vector< std::pair< double, double > > &inputVertices) const
bool Diagonal(int i, int j, const std::vector< std::pair< double, double > > &inputVertices) const
double m_halfX
halflength in x - to define enclosing rectangle
SimplePolygonBrepVolumeBounds(std::vector< std::pair< float, float > > xyvtx, float hlengthz)
Constructor - generic case (from float)
static bool Xor(bool x, bool y)
bool const RAWDATA *ch2 const
Trk::EightObjectsAccessor m_objectAccessor
There's only one single object Acessor for the moment has to be implemented if Cuboids are used more ...
std::vector< std::pair< double, double > > xyVertices() const
This method returns the set of xy generating vertices.
std::vector< std::pair< double, double > > TriangulatePolygon(const std::vector< std::pair< double, double > > &Vertices) const
Trk::PlaneSurface * sideSurf(const Amg::Transform3D &, unsigned int, unsigned int) const
SimplePolygonBrepVolumeBounds * clone() const override final
Virtual constructor.
bool inside(const Amg::Vector3D &, double tol=0.) const override final
This method checks if position in the 3D volume frame is inside the volume.
ObjectAccessor boundarySurfaceAccessor(const Amg::Vector3D &gp, const Amg::Vector3D &dir, bool forceInside=false) const override final
Provide accessor for BoundarySurfaces.
bool Diagonalie(int i, int j, const std::vector< std::pair< double, double > > &inputVertices) const
Eigen::Affine3d Transform3D
Amg::Vector3D transform(Amg::Vector3D &v, Amg::Transform3D &tr)
Transform a point from a Trasformation3D.
MsgStream & dump(MsgStream &sl) const override
Output Method for MsgStream.
const std::vector< const Trk::Surface * > * decomposeToSurfaces(const Amg::Transform3D &transform) override final
Method to decompose the Bounds into Surfaces.
const Trk::Volume * m_combinedVolume
triangulated polygon
std::vector< std::pair< double, double > > m_xyVtx
generating xy vertices
Ensure that the ATLAS eigen extensions are properly loaded.
Definition of ATLAS Math & Geometry primitives (Amg)
double m_halfZ
halflength in z
virtual ~SimplePolygonBrepVolumeBounds()
Destructor.
SimplePolygonBrepVolumeBounds()
Default Constructor.
Eigen::Matrix< double, 3, 1 > Vector3D
double m_halfY
halflength in y - to define enclosing rectangle
std::vector< std::pair< double, double > > TriangulatePolygonCheck(const std::vector< std::pair< double, double > > &Vertices)
const Trk::Volume * envelope() const
This method returns the volume envelope.
const Trk::Volume * combinedVolume() const
This method returns the transcript into combined volume.
bool Left(std::pair< double, double > a, std::pair< double, double > b, std::pair< double, double > c) const
std::vector< Vertex > Vertices
const Trk::Volume * m_envelope
simplified envelope