LArSoft
v09_90_00
Liquid Argon Software toolkit - https://larsoft.org/
|
Public Member Functions | |
MSTPathFinder (const fhicl::ParameterSet &) | |
Constructor. More... | |
~MSTPathFinder () | |
Destructor. More... | |
void | configure (fhicl::ParameterSet const &pset) override |
void | initializeHistograms (art::TFileDirectory &) override |
Interface for initializing histograms if they are desired Note that the idea is to put hisgtograms in a subfolder. More... | |
void | ModifyClusters (reco::ClusterParametersList &) const override |
Scan an input collection of clusters and modify those according to the specific implementing algorithm. More... | |
float | getTimeToExecute () const override |
If monitoring, recover the time to execute a particular function. More... | |
virtual void | configure (const fhicl::ParameterSet &)=0 |
Interface for configuring the particular algorithm tool. More... | |
Private Types | |
enum | TimeValues { BUILDTHREEDHITS = 0, BUILDHITTOHITMAP = 1, RUNDBSCAN = 2, BUILDCLUSTERINFO = 3, PATHFINDING = 4, NUMTIMEVALUES } |
enumerate the possible values for time checking if monitoring timing More... | |
using | BestNodeTuple = std::tuple< const reco::ClusterHit3D *, float, float > |
using | BestNodeMap = std::unordered_map< const reco::ClusterHit3D *, BestNodeTuple > |
using | MinMaxPoints = std::pair< reco::ProjectedPoint, reco::ProjectedPoint > |
Add ability to build the convex hull (these needs to be split out! ) More... | |
using | MinMaxPointPair = std::pair< MinMaxPoints, MinMaxPoints > |
Private Attributes | |
bool | fEnableMonitoring |
Data members to follow. More... | |
size_t | fMinTinyClusterSize |
Minimum size for a "tiny" cluster. More... | |
float | fConvexHullKinkAngle |
Angle to declare a kink in convex hull calc. More... | |
float | fConvexHullMinSep |
Min hit separation to conisder in convex hull. More... | |
std::vector< float > | fTimeVector |
geo::Geometry const * | fGeometry |
PrincipalComponentsAlg | fPCAAlg |
kdTree | fkdTree |
std::unique_ptr< lar_cluster3d::IClusterParametersBuilder > | fClusterBuilder |
Common cluster builder tool. More... | |
Definition at line 50 of file MSTPathFinder_tool.cc.
|
private |
Definition at line 140 of file MSTPathFinder_tool.cc.
|
private |
Definition at line 139 of file MSTPathFinder_tool.cc.
|
private |
Definition at line 161 of file MSTPathFinder_tool.cc.
|
private |
Add ability to build the convex hull (these needs to be split out! )
Definition at line 160 of file MSTPathFinder_tool.cc.
|
private |
enumerate the possible values for time checking if monitoring timing
Enumerator | |
---|---|
BUILDTHREEDHITS | |
BUILDHITTOHITMAP | |
RUNDBSCAN | |
BUILDCLUSTERINFO | |
PATHFINDING | |
NUMTIMEVALUES |
Definition at line 94 of file MSTPathFinder_tool.cc.
|
explicit |
Constructor.
pset |
Definition at line 184 of file MSTPathFinder_tool.cc.
References configure().
lar_cluster3d::MSTPathFinder::~MSTPathFinder | ( | ) |
|
private |
Algorithm to find shortest path between two 3D hits.
Definition at line 602 of file MSTPathFinder_tool.cc.
References DistanceBetweenNodes(), reco::ClusterParameters::getBestEdgeList(), reco::ClusterParameters::getBestHitPairListPtr(), reco::ClusterParameters::getHit3DToEdgeMap(), reco::ClusterHit3D::getStatusBits(), reco::ClusterHit3D::PATHCHECKED, ReconstructBestPath(), and reco::ClusterHit3D::setStatusBit().
|
private |
Definition at line 907 of file MSTPathFinder_tool.cc.
References util::abs(), DEFINE_ART_CLASS_TOOL, fConvexHullKinkAngle, fConvexHullMinSep, reco::PrincipalComponents::getAvePosition(), lar_cluster3d::ConvexHull::getConvexHull(), reco::ClusterParameters::getConvexHull(), lar_cluster3d::ConvexHull::getConvexHullArea(), reco::ConvexHull::getConvexHullEdgeList(), reco::ConvexHull::getConvexHullEdgeMap(), reco::ConvexHull::getConvexHullExtremePoints(), reco::ConvexHull::getConvexHullKinkPoints(), reco::ConvexHull::getConvexHullPointList(), reco::PrincipalComponents::getEigenVectors(), reco::ClusterParameters::getFullPCA(), reco::ClusterHit3D::getPosition(), reco::ConvexHull::getProjectedPointList(), art::detail::indent(), art::left(), and art::right().
Referenced by FindBestPathInCluster(), and ModifyClusters().
|
pure virtualinherited |
Interface for configuring the particular algorithm tool.
ParameterSet | The input set of parameters for configuration |
|
override |
Definition at line 197 of file MSTPathFinder_tool.cc.
References fClusterBuilder, fConvexHullKinkAngle, fConvexHullMinSep, fEnableMonitoring, fGeometry, fMinTinyClusterSize, fTimeVector, fhicl::ParameterSet::get(), and NUMTIMEVALUES.
Referenced by MSTPathFinder().
|
private |
a depth first search to find longest branches
Definition at line 784 of file MSTPathFinder_tool.cc.
Referenced by FindBestPathInCluster().
|
private |
Definition at line 753 of file MSTPathFinder_tool.cc.
References reco::ClusterHit3D::getPosition().
Referenced by AStar(), FindBestPathInCluster(), and ReconstructBestPath().
|
private |
Algorithm to find the best path through the given cluster.
Definition at line 433 of file MSTPathFinder_tool.cc.
References DepthFirstSearch(), util::empty(), fEnableMonitoring, fTimeVector, reco::ClusterParameters::getBestEdgeList(), reco::ClusterParameters::getHit3DToEdgeMap(), reco::ClusterParameters::getHitPairListPtr(), PATHFINDING, and util::size().
Referenced by ModifyClusters().
|
private |
Alternative version of FindBestPathInCluster utilizing an A* algorithm.
Definition at line 498 of file MSTPathFinder_tool.cc.
References util::abs(), buildConvexHull(), DistanceBetweenNodes(), util::empty(), fEnableMonitoring, fPCAAlg, fTimeVector, reco::PrincipalComponents::getAvePosition(), reco::ClusterParameters::getBestEdgeList(), reco::ClusterParameters::getBestHitPairListPtr(), reco::PrincipalComponents::getEigenValues(), reco::PrincipalComponents::getEigenVectors(), reco::ClusterParameters::getFullPCA(), reco::ClusterParameters::getHit3DToEdgeMap(), reco::ClusterParameters::getHitPairListPtr(), reco::PrincipalComponents::getSvdOK(), LeastCostPath(), art::left(), PATHFINDING, lar_cluster3d::PrincipalComponentsAlg::PCAAnalysis_3D(), art::right(), and util::size().
|
inlineoverridevirtual |
If monitoring, recover the time to execute a particular function.
Implements lar_cluster3d::IClusterModAlg.
Definition at line 85 of file MSTPathFinder_tool.cc.
References fTimeVector.
|
overridevirtual |
Interface for initializing histograms if they are desired Note that the idea is to put hisgtograms in a subfolder.
TFileDirectory | - the folder to store the hists in |
Implements lar_cluster3d::IClusterModAlg.
Definition at line 216 of file MSTPathFinder_tool.cc.
|
private |
Find the lowest cost path between two nodes using MST edges.
Definition at line 705 of file MSTPathFinder_tool.cc.
References reco::ClusterParameters::getBestEdgeList(), reco::ClusterParameters::getBestHitPairListPtr(), and reco::ClusterParameters::getHit3DToEdgeMap().
Referenced by FindBestPathInCluster().
|
overridevirtual |
Scan an input collection of clusters and modify those according to the specific implementing algorithm.
clusterParametersList | A list of cluster objects (parameters from associated hits) |
Top level interface tool for performing deghosting and primary path finding using a minimum spanning tree approach. This is a shell tool, it actually uses the Minimum Spanning Tree clusering tool...
Implements lar_cluster3d::IClusterModAlg.
Definition at line 234 of file MSTPathFinder_tool.cc.
References BUILDCLUSTERINFO, buildConvexHull(), BUILDHITTOHITMAP, lar_cluster3d::kdTree::BuildKdTree(), fClusterBuilder, fEnableMonitoring, FindBestPathInCluster(), fkdTree, fMinTinyClusterSize, fTimeVector, lar_cluster3d::kdTree::getTimeToExecute(), and RunPrimsAlgorithm().
|
private |
Prune the obvious ambiguous hits.
Definition at line 830 of file MSTPathFinder_tool.cc.
References reco::ClusterParameters::getHitPairListPtr(), and util::size().
|
private |
Definition at line 684 of file MSTPathFinder_tool.cc.
References DistanceBetweenNodes().
Referenced by AStar().
|
private |
Driver for Prim's algorithm.
Definition at line 305 of file MSTPathFinder_tool.cc.
References reco::ClusterHit3D::CLUSTERATTACHED, fEnableMonitoring, lar_cluster3d::kdTree::FindNearestNeighbors(), fkdTree, fTimeVector, reco::ClusterParameters::getHit3DToEdgeMap(), reco::ClusterHit3D::getHitChiSquare(), reco::ClusterParameters::getHitPairListPtr(), art::left(), art::right(), RUNDBSCAN, and reco::ClusterHit3D::setStatusBit().
Referenced by ModifyClusters().
|
private |
Common cluster builder tool.
Definition at line 181 of file MSTPathFinder_tool.cc.
Referenced by configure(), and ModifyClusters().
|
private |
Angle to declare a kink in convex hull calc.
Definition at line 170 of file MSTPathFinder_tool.cc.
Referenced by buildConvexHull(), and configure().
|
private |
Min hit separation to conisder in convex hull.
Definition at line 171 of file MSTPathFinder_tool.cc.
Referenced by buildConvexHull(), and configure().
|
private |
Data members to follow.
Definition at line 168 of file MSTPathFinder_tool.cc.
Referenced by configure(), FindBestPathInCluster(), ModifyClusters(), and RunPrimsAlgorithm().
|
private |
Definition at line 175 of file MSTPathFinder_tool.cc.
Referenced by configure().
|
private |
Definition at line 178 of file MSTPathFinder_tool.cc.
Referenced by ModifyClusters(), and RunPrimsAlgorithm().
|
private |
Minimum size for a "tiny" cluster.
Definition at line 169 of file MSTPathFinder_tool.cc.
Referenced by configure(), and ModifyClusters().
|
private |
Definition at line 177 of file MSTPathFinder_tool.cc.
Referenced by FindBestPathInCluster().
|
mutableprivate |
Definition at line 173 of file MSTPathFinder_tool.cc.
Referenced by configure(), FindBestPathInCluster(), getTimeToExecute(), ModifyClusters(), and RunPrimsAlgorithm().