8 #ifndef THREE_D_KINK_BASE_TOOL_H
9 #define THREE_D_KINK_BASE_TOOL_H 1
92 pandora::StatusCode
ReadSettings(
const pandora::TiXmlHandle xmlHandle);
121 const pandora::ClusterSet &usedClusters,
IteratorList &iteratorList)
const;
136 #endif // #ifndef THREE_D_KINK_BASE_TOOL_H
pandora::ClusterList m_affectedClusters
The list of affected clusters.
std::vector< Modification > ModificationList
bool ApplyChanges(ThreeViewTransverseTracksAlgorithm *const pAlgorithm, const ModificationList &modificationList) const
Apply the changes cached in a modification list and update the tensor accordingly.
float GetXSamplingPoint(const pandora::CartesianVector &splitPosition1, const bool isForwardInX, const TwoDSlidingFitResult &fitResult1, const TwoDSlidingFitResult &fitResult2, const TwoDSlidingFitResult &fitResult3) const
Get a sampling point in x that is common to sliding linear fit objects in three views.
Header file for the lar pointing cluster class.
std::vector< TensorType::ElementList::const_iterator > IteratorList
unsigned int m_nCommonClusters
The number of common clusters.
LArPointingCluster class.
ClusterMergeMap m_clusterMergeMap
The cluster merge map.
virtual ~ThreeDKinkBaseTool()
Destructor.
std::vector< Element > ElementList
int m_nLayersForKinkSearch
The number of sliding fit layers to step in the kink search.
std::unordered_map< const pandora::Cluster *, pandora::CartesianPointVector > SplitPositionMap
Header file for the three view transverse tracks algorithm class.
pandora::StatusCode ReadSettings(const pandora::TiXmlHandle xmlHandle)
void GetModifications(ThreeViewTransverseTracksAlgorithm *const pAlgorithm, const TensorType &overlapTensor, ModificationList &modificationList) const
Get modification objects, identifying required splits and merges for clusters.
void SelectTensorElements(TensorType::ElementList::const_iterator eIter, const TensorType::ElementList &elementList, const pandora::ClusterSet &usedClusters, IteratorList &iteratorList) const
Select elements representing possible components of interest due to overshoots or undershoots in clus...
virtual bool PassesElementCuts(TensorType::ElementList::const_iterator eIter, const pandora::ClusterSet &usedClusters) const
Whether a provided (iterator to a) tensor element passes the selection cuts for overshoot identificat...
bool Run(ThreeViewTransverseTracksAlgorithm *const pAlgorithm, TensorType &overlapTensor)
Run the algorithm tool.
static bool IsALowestInX(const LArPointingCluster &pointingClusterA, const LArPointingCluster &pointingClusterB)
Whether pointing cluster labelled A extends to lowest x positions (as opposed to that labelled B) ...
float m_additionalXStepForKinkSearch
An additional (safety) step to tack-on when choosing x sampling points.
virtual void GetIteratorListModifications(ThreeViewTransverseTracksAlgorithm *const pAlgorithm, const IteratorList &iteratorList, ModificationList &modificationList) const =0
Get modification objects for a specific elements of the tensor, identifying required splits and merge...
TransverseTensorTool class.
ThreeDKinkBaseTool(const unsigned int nCommonClusters)
Constructor.
ThreeDKinkBaseTool class.
unsigned int m_minMatchedSamplingPoints
The min number of matched sampling points for use as a key tensor element.
std::unordered_map< const pandora::Cluster *, pandora::ClusterList > ClusterMergeMap
bool m_majorityRulesMode
Whether to run in majority rules mode (always split overshoots, always merge undershoots) ...
float m_minLongitudinalImpactParameter
The min longitudinal impact parameter for connecting accompanying clusters.
ThreeViewTransverseTracksAlgorithm class.
float m_minMatchedFraction
The min matched sampling point fraction for use as a key tensor element.
TwoDSlidingFitResult class.
TheTensor::const_iterator const_iterator
SplitPositionMap m_splitPositionMap
The split position map.