LArSoft  v09_90_00
Liquid Argon Software toolkit - https://larsoft.org/
PmaSegment3D.h
Go to the documentation of this file.
1 
11 #ifndef PmaSegment3D_h
12 #define PmaSegment3D_h
13 
17 
18 class TVector2;
19 #include "TVector3.h"
21 
22 namespace pma {
23  class Segment3D;
24  class Track3D; // only declare here to keep "parent" of Segment3D
25 }
26 
28 public:
29  Segment3D(void) : fParent(0) {}
31 
32  Vector3D Start(void) const
33  {
34  auto const& p = static_cast<Node3D*>(Prev())->Point3D();
35  return Vector3D(p.X(), p.Y(), p.Z());
36  }
37  Vector3D End(void) const
38  {
39  auto const& p = static_cast<Node3D*>(Next())->Point3D();
40  return Vector3D(p.X(), p.Y(), p.Z());
41  }
42 
44  double GetDistance2To(const TVector3& p3d) const override;
45 
47  double GetDistance2To(const TVector2& p2d, unsigned int view) const override;
48 
50  pma::Vector3D GetDirection3D(void) const override;
51 
53  TVector3 GetProjection(const TVector2& p, unsigned int view) const;
54 
57  TVector3 GetUnconstrainedProj3D(const TVector2& p2d, unsigned int view) const override;
58 
60  void SetProjection(pma::Hit3D& h) const override;
61 
64  double Length2(void) const override;
65 
66  pma::Track3D* Parent(void) const { return fParent; }
67 
68 private:
69  Segment3D(const pma::Segment3D& src);
70 
71  double SumDist2Hits(void) const override;
72 
74 
75  static double GetDist2(const TVector3& psrc, const TVector3& p0, const TVector3& p1);
76  static double GetDist2(const TVector2& psrc, const TVector2& p0, const TVector2& p1);
77 };
78 
79 #endif
::fhicl::TupleAs< Point(::geo::Length_t,::geo::Length_t,::geo::Length_t)> Point3D
Atom object for reading a 3D point or vector (centimeters).
Implementation of the Projection Matching Algorithm.
virtual pma::SortedObjectBase * Next(unsigned int=0) const
Definition: SortedObjects.h:43
double Length2(void) const override
recob::tracking::Vector_t Vector3D
Definition: Utilities.h:34
Vector3D Start(void) const
Definition: PmaSegment3D.h:32
pma::Track3D * fParent
Definition: PmaSegment3D.h:73
Implementation of the Projection Matching Algorithm.
TVector3 GetProjection(const TVector2 &p, unsigned int view) const
Get 3D projection of a 2D point from the view.
Implementation of the Projection Matching Algorithm.
pma::Vector3D GetDirection3D(void) const override
Get 3D direction cosines of this segment.
double GetDistance2To(const TVector3 &p3d) const override
Distance [cm] from the 3D segment to the point 3D.
TVector3 GetUnconstrainedProj3D(const TVector2 &p2d, unsigned int view) const override
virtual pma::SortedObjectBase * Prev(void) const
Definition: SortedObjects.h:42
double SumDist2Hits(void) const override
pma::Track3D * Parent(void) const
Definition: PmaSegment3D.h:66
void SetProjection(pma::Hit3D &h) const override
Set hit 3D position and its 2D projection to the vertex.
Implementation of the Projection Matching Algorithm.
static double GetDist2(const TVector3 &psrc, const TVector3 &p0, const TVector3 &p1)
Vector3D End(void) const
Definition: PmaSegment3D.h:37