8 #ifndef LAR_TWO_D_SLIDING_FIT_SPLITTING_AND_SWITCHING_ALGORITHM_H 
    9 #define LAR_TWO_D_SLIDING_FIT_SPLITTING_AND_SWITCHING_ALGORITHM_H 1 
   11 #include "Pandora/Algorithm.h" 
   30     virtual pandora::StatusCode 
Run();
 
   31     virtual pandora::StatusCode 
ReadSettings(
const pandora::TiXmlHandle xmlHandle);
 
   55         pandora::CartesianVector &splitPosition, pandora::CartesianVector &direction1, pandora::CartesianVector &direction2) 
const = 0;
 
   83     void SplitCluster(
const pandora::Cluster *
const pCluster, 
const pandora::CartesianVector &splitPosition,
 
   84         const pandora::CartesianVector &splitDirection, pandora::CaloHitList &firstCaloHitList, pandora::CaloHitList &secondCaloHitList) 
const;
 
   95     pandora::StatusCode 
ReplaceClusters(
const pandora::Cluster *
const pCluster1, 
const pandora::Cluster *
const pCluster2,
 
   96         const pandora::CartesianVector &splitPosition, 
const pandora::CartesianVector &firstDirection,
 
   97         const pandora::CartesianVector &secondDirection) 
const;
 
  105 #endif // #ifndef LAR_TWO_D_SLIDING_FIT_SPLITTING_AND_SWITCHING_ALGORITHM_H 
unsigned int m_halfWindowLayers
half window layers for sliding linear fot 
virtual pandora::StatusCode ReadSettings(const pandora::TiXmlHandle xmlHandle)
virtual pandora::StatusCode FindBestSplitPosition(const TwoDSlidingFitResult &slidingFit1, const TwoDSlidingFitResult &slidingFit2, pandora::CartesianVector &splitPosition, pandora::CartesianVector &direction1, pandora::CartesianVector &direction2) const =0
Find the best split position and direction for a pair of clusters. 
float m_minClusterLength
minimum length of clusters 
virtual pandora::StatusCode TidyUpStep()
Tidy up any information cached in e.g. the preparation step. 
pandora::StatusCode ReplaceClusters(const pandora::Cluster *const pCluster1, const pandora::Cluster *const pCluster2, const pandora::CartesianVector &splitPosition, const pandora::CartesianVector &firstDirection, const pandora::CartesianVector &secondDirection) const 
Replace crossed clusters with un-crossed clusters. 
Header file for the lar two dimensional sliding fit result class. 
void SplitCluster(const pandora::Cluster *const pCluster, const pandora::CartesianVector &splitPosition, const pandora::CartesianVector &splitDirection, pandora::CaloHitList &firstCaloHitList, pandora::CaloHitList &secondCaloHitList) const 
Split cluster at a given position and direction. 
TwoDSlidingFitSplittingAndSwitchingAlgorithm()
Default constructor. 
std::unordered_map< const pandora::Cluster *, TwoDSlidingFitResult > TwoDSlidingFitResultMap
void GetListOfCleanClusters(const pandora::ClusterList *const pClusterList, pandora::ClusterVector &clusterVector) const 
Populate cluster vector with subset of cluster list, containing clusters judged to be clean...
std::vector< art::Ptr< recob::Cluster > > ClusterVector
virtual pandora::StatusCode Run()
TwoDSlidingFitSplittingAndSwitchingAlgorithm class. 
virtual pandora::StatusCode PreparationStep(const pandora::ClusterVector &clusterVector)
Perform any preparatory actions, such as caching information for subsequent expensive calculations...
void BuildSlidingFitResultMap(const pandora::ClusterVector &clusterVector, TwoDSlidingFitResultMap &slidingFitResultMap) const 
Build the map of sliding fit results. 
TwoDSlidingFitResult class.