31 if ((end2D - vtx2D).GetMagnitudeSquared() < std::numeric_limits<float>::epsilon())
34 const float frac((end2D - vtx2D).GetDotProduct(pCaloHit2D->
GetPositionVector() - vtx2D) / (end2D - vtx2D).GetMagnitudeSquared());
39 MatchedSlidingFitMap::const_iterator fIter1 = matchedSlidingFitMap.find(hitType1);
40 if (matchedSlidingFitMap.end() != fIter1)
45 float rL1(0.f), rT1(0.f);
50 if ((STATUS_CODE_SUCCESS != statusCode) && (STATUS_CODE_NOT_FOUND != statusCode))
53 if (STATUS_CODE_SUCCESS == statusCode)
54 fitPositionList1.push_back(position1);
57 MatchedSlidingFitMap::const_iterator fIter2 = matchedSlidingFitMap.find(hitType2);
58 if (matchedSlidingFitMap.end() != fIter2)
63 float rL2(0.f), rT2(0.f);
68 if ((STATUS_CODE_SUCCESS != statusCode) && (STATUS_CODE_NOT_FOUND != statusCode))
71 if (STATUS_CODE_SUCCESS == statusCode)
72 fitPositionList2.push_back(position2);
75 unsigned int nViews(1);
76 if (fitPositionList1.size() > 0)
78 if (fitPositionList2.size() > 0)
84 this->
GetBestPosition3D(hitType1, hitType2, fitPositionList1, fitPositionList2, protoHit);
Header file for the geometry helper class.
void GetLongitudinalTrackHit3D(const MatchedSlidingFitMap &matchedSlidingFitMap, const pandora::CartesianVector &vtx3D, const pandora::CartesianVector &end3D, ProtoHit &protoHit) const
Get the three dimensional position using a provided two dimensional calo hit and sliding linear fits ...
virtual void GetBestPosition3D(const pandora::HitType hitType1, const pandora::HitType hitType2, const pandora::CartesianPointVector &fitPositionList1, const pandora::CartesianPointVector &fitPositionList2, ProtoHit &protoHit) const
Get the three dimensional position using a provided two dimensional calo hit and candidate fit positi...
static pandora::CartesianVector ProjectPosition(const pandora::Pandora &pandora, const pandora::CartesianVector &position3D, const pandora::HitType view)
Project 3D position into a given 2D view.
Proto hits are temporary constructs to be used during iterative 3D hit procedure.
const pandora::CaloHit * GetParentCaloHit2D() const
Get the address of the parent 2D calo hit.
unsigned int m_minViews
The minimum number of views required for building hits.
std::map< pandora::HitType, TwoDSlidingFitResult > MatchedSlidingFitMap
TwoDSlidingFitResult class.
void GetLocalPosition(const pandora::CartesianVector &position, float &rL, float &rT) const
Get local sliding fit coordinates for a given global position.
pandora::StatusCode GetTransverseProjection(const float x, const FitSegment &fitSegment, pandora::CartesianVector &position) const
Get projected position for a given input x coordinate and fit segment.
const FitSegment & GetFitSegment(const float rL) const
Get fit segment for a given longitudinal coordinate.
HitType GetHitType() const
Get the calorimeter hit type.
const CartesianVector & GetPositionVector() const
Get the position vector of center of calorimeter cell, units mm.
float GetX() const
Get the cartesian x coordinate.
const Pandora & GetPandora() const
Get the associated pandora instance.
StatusCodeException class.
HitType
Calorimeter hit type enum.
std::vector< CartesianVector > CartesianPointVector
StatusCode
The StatusCode enum.