|
ATLAS Offline Software
|
Go to the documentation of this file.
5 #ifndef TRKSURFACES_ANNULUSBOUNDSPC_H
6 #define TRKSURFACES_ANNULUSBOUNDSPC_H
16 #ifdef TRKDETDESCR_USEFLOATPRECISON
33 using Transform2D = Eigen::Transform<double, 2, Eigen::Affine>;
127 double r()
const override;
153 MsgStream&
dump(MsgStream& sl)
const override;
154 std::ostream&
dump(std::ostream& sl)
const override;
167 std::array<std::pair<double, double>, 4>
corners()
const;
205 const Eigen::Matrix<double, 2, 2>&
weight) ;
AnnulusBoundsPC(const AnnulusBoundsPC &annbo)=default
Copy constructor.
Amg::Vector2D m_inLeftStripXY
Transform2D m_translation
double rMin() const
Returns inner radial bounds (module system)
MsgStream & dump(MsgStream &sl) const override
helper which dumps the configuration into a stream.
Amg::Vector2D m_outRightStripXY
Eigen::Matrix< double, 2, 1 > Vector2D
Eigen::Rotation2D< double > Rotation2D
bool operator==(const SurfaceBounds &sb) const override
Equality operator.
bool const RAWDATA *ch2 const
std::vector< TDD_real_t > m_boundValues
bool insideLoc1(const Amg::Vector2D &locpo, double tol1=0.) const override final
Check if local point is inside of r bounds.
Amg::Vector2D m_inLeftStripPC
Amg::Vector2D stripXYToModulePC(const Amg::Vector2D &vStripXY) const
Amg::Vector2D m_inRightStripXY
Amg::Vector2D m_outLeftStripXY
double rMax() const
Returns outer radial bounds (module system)
std::array< std::pair< double, double >, 4 > corners() const
Returns the four corners of the bounds.
SurfaceBounds::BoundsType type() const override
Return the bounds type - for persistency optimization.
Amg::Vector2D m_moduleOrigin
AnnulusBoundsPC & operator=(const AnnulusBoundsPC &sbo)=default
Assignment operator.
Eigen::Matrix< double, 2, 2 > Matrix2D
double phiMin() const
Returns the right angular edge of the module.
Class that implements the asymmetric shape of the ITk strip endcap modules.
Amg::Vector2D m_inLeftModulePC
Amg::Vector2D moduleOrigin() const
Returns moduleOrigin, but rotated out, so avgPhi is already considered.
Amg::Vector2D m_outLeftModulePC
AnnulusBoundsPC(AnnulusBoundsPC &&annbo)=default
Move constructor.
static double squaredNorm(const Amg::Vector2D &v, const Eigen::Matrix< double, 2, 2 > &weight)
double minDistance(const Amg::Vector2D &locpo) const override final
Return minimum distance a point is away from the bounds.
Amg::Vector2D m_inRightModulePC
Amg::Vector2D m_outLeftStripPC
static std::pair< AnnulusBoundsPC, double > fromCartesian(AnnulusBounds &annbo)
Static factory method to produce an instance of this class from the cartesian implementation.
AnnulusBoundsPC & operator=(AnnulusBoundsPC &&sbo)=default
Move assignment.
Amg::Vector2D m_outRightStripPC
Ensure that the ATLAS eigen extensions are properly loaded.
double phiMax() const
Returns the left angular edge of the module.
Definition of ATLAS Math & Geometry primitives (Amg)
static Amg::Vector2D closestOnSegment(const Amg::Vector2D &a, const Amg::Vector2D &b, const Amg::Vector2D &p, const Eigen::Matrix< double, 2, 2 > &weight)
AnnulusBoundsPC(double minR, double maxR, double phiMin, double phiMax, Amg::Vector2D moduleOrigin={0, 0}, double phiAvg=0)
Default constructor from parameters.
virtual AnnulusBoundsPC * clone() const override
clone() method to make deep copy in Surface copy constructor and for assigment operator of the Surfac...
bool insideLoc2(const Amg::Vector2D &locpo, double tol2=0.) const override final
Check if local point is inside of phi bounds.
bool inside(const Amg::Vector2D &locpo, double tol1=0., double tol2=0.) const override final
Returns if a point in local coordinates is inside the bounds.
Eigen::Transform< double, 2, Eigen::Affine > Transform2D
Transform2D m_rotationStripPC
Amg::Vector2D m_outRightModulePC
Amg::Vector2D m_inRightStripPC
double r() const override
Returns middle radius.