31 Node3D(
const TVector3& p3d,
unsigned int tpc,
unsigned int cryo,
bool vtx =
false,
double xshift = 0);
44 bool SameTPC(
const TVector3& p3d,
float margin = 0.0F)
const;
61 std::vector< pma::Track3D* >
GetBranches(
void)
const;
67 double GetDistance2To(
const TVector2& p2d,
unsigned int view)
const override;
80 double Length2(
void)
const override;
92 double GetObjFunction(
float penaltyValue,
float endSegWeight)
const;
97 void Optimize(
float penaltyValue,
float endSegWeight);
116 double Pi(
float endSegWeight,
bool doAsymm)
const;
117 double Penalty(
float endSegWeight)
const;
118 double Mse(
void)
const;
120 double MakeGradient(
float penaltyValue,
float endSegWeight);
void ApplyDriftShift(double dx)
void SetVertexToBranching(bool setAllNodes)
TVector2 const & Projection2D(unsigned int view) const
bool IsVertex(void) const
Check fIsVertex flag.
double Penalty(float endSegWeight) const
TVector3 const & Point3D(void) const
void ClearAssigned(pma::Track3D *trk=0) override
Geometry information for a single TPC.
double GetDistance2To(const TVector3 &p3d) const override
Distance [cm] from the 3D point to the point 3D.
void Optimize(float penaltyValue, float endSegWeight)
double SegmentCosWirePlane(void) const
void SetVertex(bool state)
bool LimitPoint3D(void)
Returns true if node position was trimmed to its TPC volume + fMargin.
double GetDistToWall(void) const
static void SetMargin(double m)
Set allowed node position margin around TPC.
double PiInWirePlane(void) const
pma::Vector3D GetDirection3D(void) const override
Get 3D direction cosines of the next segment, or pevious segment if this is the last node...
recob::tracking::Vector_t Vector3D
static bool fGradFixed[3]
double PenaltyInWirePlane(void) const
Implementation of the Projection Matching Algorithm.
double EndPtCos2Transverse(void) const
bool SetPoint3D(const TVector3 &p3d)
double StepWithGradient(float alfa, float tol, float penalty, float weight)
bool SameTPC(const TVector3 &p3d, float margin=0.0F) const
Check if p3d is in the same TPC as the node.
double GetDriftShift(void) const
bool IsBranching(void) const
Belongs to more than one track?
std::vector< pma::Track3D * > GetBranches(void) const
double MakeGradient(float penaltyValue, float endSegWeight)
double SumDist2Hits(void) const override
double SegmentCos(void) const
Cosine of 3D angle between connected segments.
double GetObjFunction(float penaltyValue, float endSegWeight) const
Objective function minimized during oprimization.
TVector3 GetUnconstrainedProj3D(const TVector2 &p2d, unsigned int view) const override
In case of a node it is simply 3D position of the node.
geo::TPCGeo const & fTpcGeo
double Length2(void) const override
bool IsTPCEdge(void) const
Is the first/last in this TPC?
void SetProjection(pma::Hit3D &h) const override
Set hit 3D position and its 2D projection to the vertex.
double Pi(float endSegWeight, bool doAsymm) const
art framework interface to geometry description
Implementation of the Projection Matching Algorithm.
double SegmentCosTransverse(void) const