LArSoft  v10_04_05
Liquid Argon Software toolkit - https://larsoft.org/
lar_content::VertexSelectionBaseAlgorithm Class Referenceabstract

VertexSelectionBaseAlgorithm class. More...

#include "VertexSelectionBaseAlgorithm.h"

Inheritance diagram for lar_content::VertexSelectionBaseAlgorithm:
lar_content::EnergyKickVertexSelectionAlgorithm lar_content::HitAngleVertexSelectionAlgorithm lar_content::TrainedVertexSelectionAlgorithm lar_content::CheatingVertexSelectionAlgorithm lar_content::MvaVertexSelectionAlgorithm< T >

Classes

class  BeamConstants
 Beam constants class. More...
 
class  ShowerCluster
 Shower cluster class. More...
 
class  SlidingFitData
 Sliding fit data class. More...
 
class  VertexScore
 VertexScore class. More...
 

Public Types

typedef std::vector< VertexScoreVertexScoreList
 
typedef std::vector< SlidingFitDataSlidingFitDataList
 
typedef std::vector< ShowerClusterShowerClusterList
 
typedef KDTreeNodeInfoT< const pandora::CaloHit *, 2 > HitKDNode2D
 
typedef std::vector< HitKDNode2DHitKDNode2DList
 
typedef KDTreeLinkerAlgo< const pandora::CaloHit *, 2 > HitKDTree2D
 
typedef std::map< pandora::HitType, const pandora::ClusterList & > ClusterListMap
 Map array of cluster lists for passing to tools. More...
 
typedef std::map< pandora::HitType, const SlidingFitDataListSlidingFitDataListMap
 Map of sliding fit data lists for passing to tools. More...
 
typedef std::map< pandora::HitType, const ShowerClusterListShowerClusterListMap
 Map of shower cluster lists for passing to tools. More...
 
typedef std::map< pandora::HitType, const std::reference_wrapper< HitKDTree2D > > KDTreeMap
 Map array of hit kd trees for passing to tools. More...
 
typedef MvaFeatureTool< const VertexSelectionBaseAlgorithm *const, const pandora::Vertex *const, const SlidingFitDataListMap &, const ClusterListMap &, const KDTreeMap &, const ShowerClusterListMap &, const float, float & > VertexFeatureTool
 The base type for the vertex feature tools. More...
 

Public Member Functions

 VertexSelectionBaseAlgorithm ()
 Default constructor. More...
 

Protected Member Functions

virtual void FilterVertexList (const pandora::VertexList *const pInputVertexList, HitKDTree2D &kdTreeU, HitKDTree2D &kdTreeV, HitKDTree2D &kdTreeW, pandora::VertexVector &filteredVertices) const
 Filter the input list of vertices to obtain a reduced number of vertex candidates. More...
 
virtual void GetBeamConstants (const pandora::VertexVector &vertexVector, BeamConstants &beamConstants) const
 Get the beam score constants for a provided list of candidate vertices. More...
 
virtual void GetVertexScoreList (const pandora::VertexVector &vertexVector, const BeamConstants &beamConstants, HitKDTree2D &kdTreeU, HitKDTree2D &kdTreeV, HitKDTree2D &kdTreeW, VertexScoreList &vertexScoreList) const =0
 Get the vertex score list for a provided list of candidate vertices. More...
 
void GetClusterLists (const pandora::StringVector &inputClusterListNames, pandora::ClusterList &clusterListU, pandora::ClusterList &clusterListV, pandora::ClusterList &clusterListW) const
 Get the cluster lists. More...
 
void CalculateClusterSlidingFits (const pandora::ClusterList &inputClusterList, const unsigned int minClusterCaloHits, const unsigned int slidingFitWindow, SlidingFitDataList &slidingFitDataList) const
 Calculate the cluster sliding fits. More...
 
float GetBeamDeweightingScore (const BeamConstants &beamConstants, const pandora::Vertex *const pVertex) const
 Get the beam deweighting score for a vertex. More...
 
bool IsBeamModeOn () const
 Whether algorithm is running in beam mode, assuming neutrinos travel in positive z-direction. More...
 
float GetVertexEnergy (const pandora::Vertex *const pVertex, const KDTreeMap &kdTreeMap) const
 Calculate the energy of a vertex candidate by summing values from all three planes. More...
 
float VertexHitEnergy (const pandora::Vertex *const pVertex, const pandora::HitType hitType, HitKDTree2D &kdTree) const
 Finds the energy of the nearest hit to the vertex candidate in this view. More...
 
pandora::StatusCode ReadSettings (const pandora::TiXmlHandle xmlHandle)
 

Private Member Functions

pandora::StatusCode Run ()
 
void InitializeKDTrees (HitKDTree2D &kdTreeU, HitKDTree2D &kdTreeV, HitKDTree2D &kdTreeW) const
 Initialize kd trees with details of hits in algorithm-configured cluster lists. More...
 
bool IsVertexOnHit (const pandora::Vertex *const pVertex, const pandora::HitType hitType, HitKDTree2D &kdTree) const
 Whether the vertex lies on a hit in the specified view. More...
 
bool IsVertexInGap (const pandora::Vertex *const pVertex, const pandora::HitType hitType) const
 Whether the vertex lies in a registered gap. More...
 
void SelectTopScoreVertices (VertexScoreList &vertexScoreList, pandora::VertexList &selectedVertexList) const
 From the top-scoring candidate vertices, select a subset for further investigation. More...
 
bool AcceptVertexLocation (const pandora::Vertex *const pVertex, const pandora::VertexList &selectedVertexList) const
 Whether to accept a candidate vertex, based on its spatial position in relation to other selected candidates. More...
 

Static Private Member Functions

static bool SortByVertexZPosition (const pandora::Vertex *const pLhs, const pandora::Vertex *const pRhs)
 Sort vertices by increasing z position. More...
 

Private Attributes

pandora::StringVector m_inputCaloHitListNames
 The list of calo hit list names. More...
 
std::string m_inputVertexListName
 The name of an input vertex list to check. More...
 
std::string m_outputVertexListName
 The name under which to save the output vertex list. More...
 
bool m_replaceCurrentVertexList
 Whether to replace the current vertex list with the output list. More...
 
bool m_beamMode
 Whether to run in beam mode, assuming neutrinos travel in positive z-direction. More...
 
float m_nDecayLengthsInZSpan
 The number of score decay lengths to use over the course of the vertex z-span. More...
 
bool m_selectSingleVertex
 Whether to make a final decision and select just one vertex candidate. More...
 
unsigned int m_maxTopScoreSelections
 Max number of top-scoring vertex candidate to select for output. More...
 
float m_maxOnHitDisplacement
 Max hit-vertex displacement for declaring vertex to lie on a hit in each view. More...
 
float m_minCandidateDisplacement
 Ignore other top-scoring candidates located in close proximity to original. More...
 
float m_minCandidateScoreFraction
 Ignore other top-scoring candidates with score less than a fraction of original. More...
 
bool m_useDetectorGaps
 Whether to account for registered detector gaps in vertex selection. More...
 
float m_gapTolerance
 The tolerance to use when querying whether a sampling point is in a gap, units cm. More...
 
bool m_isEmptyViewAcceptable
 Whether views entirely empty of hits are classed as 'acceptable' for candidate filtration. More...
 
unsigned int m_minVertexAcceptableViews
 The minimum number of views in which a candidate must sit on/near a hit or in a gap (or view can be empty) More...
 

Detailed Description

Member Typedef Documentation

typedef std::map<pandora::HitType, const pandora::ClusterList &> lar_content::VertexSelectionBaseAlgorithm::ClusterListMap

Map array of cluster lists for passing to tools.

Definition at line 227 of file VertexSelectionBaseAlgorithm.h.

Definition at line 223 of file VertexSelectionBaseAlgorithm.h.

Definition at line 225 of file VertexSelectionBaseAlgorithm.h.

typedef std::map<pandora::HitType, const std::reference_wrapper<HitKDTree2D> > lar_content::VertexSelectionBaseAlgorithm::KDTreeMap

Map array of hit kd trees for passing to tools.

Definition at line 230 of file VertexSelectionBaseAlgorithm.h.

Map of shower cluster lists for passing to tools.

Definition at line 229 of file VertexSelectionBaseAlgorithm.h.

Map of sliding fit data lists for passing to tools.

Definition at line 228 of file VertexSelectionBaseAlgorithm.h.

typedef MvaFeatureTool<const VertexSelectionBaseAlgorithm *const, const pandora::Vertex *const, const SlidingFitDataListMap &, const ClusterListMap &, const KDTreeMap &, const ShowerClusterListMap &, const float, float &> lar_content::VertexSelectionBaseAlgorithm::VertexFeatureTool

The base type for the vertex feature tools.

Definition at line 234 of file VertexSelectionBaseAlgorithm.h.

Constructor & Destructor Documentation

lar_content::VertexSelectionBaseAlgorithm::VertexSelectionBaseAlgorithm ( )

Default constructor.

Definition at line 22 of file VertexSelectionBaseAlgorithm.cc.

22  :
25  m_beamMode(true),
32  m_useDetectorGaps(true),
33  m_gapTolerance(0.f),
36 {
37 }
float m_minCandidateScoreFraction
Ignore other top-scoring candidates with score less than a fraction of original.
TFile f
Definition: plotHisto.C:6
std::string m_inputVertexListName
The name of an input vertex list to check.
unsigned int m_maxTopScoreSelections
Max number of top-scoring vertex candidate to select for output.
bool m_useDetectorGaps
Whether to account for registered detector gaps in vertex selection.
bool m_beamMode
Whether to run in beam mode, assuming neutrinos travel in positive z-direction.
bool m_isEmptyViewAcceptable
Whether views entirely empty of hits are classed as &#39;acceptable&#39; for candidate filtration.
bool m_selectSingleVertex
Whether to make a final decision and select just one vertex candidate.
unsigned int m_minVertexAcceptableViews
The minimum number of views in which a candidate must sit on/near a hit or in a gap (or view can be e...
float m_nDecayLengthsInZSpan
The number of score decay lengths to use over the course of the vertex z-span.
float m_minCandidateDisplacement
Ignore other top-scoring candidates located in close proximity to original.
bool m_replaceCurrentVertexList
Whether to replace the current vertex list with the output list.
float m_gapTolerance
The tolerance to use when querying whether a sampling point is in a gap, units cm.
float m_maxOnHitDisplacement
Max hit-vertex displacement for declaring vertex to lie on a hit in each view.

Member Function Documentation

bool lar_content::VertexSelectionBaseAlgorithm::AcceptVertexLocation ( const pandora::Vertex *const  pVertex,
const pandora::VertexList &  selectedVertexList 
) const
private

Whether to accept a candidate vertex, based on its spatial position in relation to other selected candidates.

Parameters
pVertexthe address of the vertex
selectedVertexListthe selected vertex list
Returns
boolean

Definition at line 324 of file VertexSelectionBaseAlgorithm.cc.

References m_minCandidateDisplacement.

Referenced by SelectTopScoreVertices().

325 {
326  const CartesianVector &position(pVertex->GetPosition());
327  const float minCandidateDisplacementSquared(m_minCandidateDisplacement * m_minCandidateDisplacement);
328 
329  for (const Vertex *const pSelectedVertex : selectedVertexList)
330  {
331  if (pVertex == pSelectedVertex)
332  return false;
333 
334  if ((position - pSelectedVertex->GetPosition()).GetMagnitudeSquared() < minCandidateDisplacementSquared)
335  return false;
336  }
337 
338  return true;
339 }
boost::graph_traits< ModuleGraph >::vertex_descriptor Vertex
Definition: ModuleGraph.h:25
float m_minCandidateDisplacement
Ignore other top-scoring candidates located in close proximity to original.
void lar_content::VertexSelectionBaseAlgorithm::CalculateClusterSlidingFits ( const pandora::ClusterList &  inputClusterList,
const unsigned int  minClusterCaloHits,
const unsigned int  slidingFitWindow,
SlidingFitDataList slidingFitDataList 
) const
protected

Calculate the cluster sliding fits.

Parameters
inputClusterListthe input cluster list
minClusterCaloHitsthe minimum number of cluster calo hits
slidingFitWindowthe sliding fit window
slidingFitDataListthe list of sliding fits to fill

Definition at line 121 of file VertexSelectionBaseAlgorithm.cc.

References lar_content::LArGeometryHelper::GetWireZPitch(), and lar_content::LArClusterHelper::SortByNHits().

Referenced by lar_content::EnergyKickVertexSelectionAlgorithm::GetVertexScoreList(), and lar_content::MvaVertexSelectionAlgorithm< T >::GetVertexScoreList().

123 {
124  const float slidingFitPitch(LArGeometryHelper::GetWireZPitch(this->GetPandora()));
125 
126  ClusterVector sortedClusters(inputClusterList.begin(), inputClusterList.end());
127  std::sort(sortedClusters.begin(), sortedClusters.end(), LArClusterHelper::SortByNHits);
128 
129  for (const Cluster *const pCluster : sortedClusters)
130  {
131  if (pCluster->GetNCaloHits() < minClusterCaloHits)
132  continue;
133 
134  // Make sure the window size is such that there are not more layers than hits (following TwoDSlidingLinearFit calculation).
135  const unsigned int newSlidingFitWindow(
136  std::min(static_cast<int>(pCluster->GetNCaloHits()), static_cast<int>(slidingFitPitch * slidingFitWindow)));
137  slidingFitDataList.emplace_back(pCluster, newSlidingFitWindow, slidingFitPitch);
138  }
139 }
static bool SortByNHits(const pandora::Cluster *const pLhs, const pandora::Cluster *const pRhs)
Sort clusters by number of hits, then layer span, then inner layer, then position, then pulse-height.
static float GetWireZPitch(const pandora::Pandora &pandora, const float maxWirePitchDiscrepancy=0.01)
Return the wire pitch.
std::vector< art::Ptr< recob::Cluster > > ClusterVector
void lar_content::VertexSelectionBaseAlgorithm::FilterVertexList ( const pandora::VertexList *const  pInputVertexList,
HitKDTree2D kdTreeU,
HitKDTree2D kdTreeV,
HitKDTree2D kdTreeW,
pandora::VertexVector &  filteredVertices 
) const
protectedvirtual

Filter the input list of vertices to obtain a reduced number of vertex candidates.

Parameters
pInputVertexListthe address of the input vertex list
kdTreeUthe kd tree for u hits
kdTreeVthe kd tree for v hits
kdTreeWthe kd tree for w hits
filteredVerticesto receive the filtered vertex list

Definition at line 41 of file VertexSelectionBaseAlgorithm.cc.

References lar_content::KDTreeLinkerAlgo< DATA, DIM >::empty(), IsVertexInGap(), IsVertexOnHit(), m_isEmptyViewAcceptable, m_minVertexAcceptableViews, and SortByVertexZPosition().

Referenced by Run().

43 {
44  for (const Vertex *const pVertex : *pInputVertexList)
45  {
46  unsigned int nAcceptableViews(0);
47 
48  if ((m_isEmptyViewAcceptable && kdTreeU.empty()) || this->IsVertexOnHit(pVertex, TPC_VIEW_U, kdTreeU) || this->IsVertexInGap(pVertex, TPC_VIEW_U))
49  ++nAcceptableViews;
50 
51  if ((m_isEmptyViewAcceptable && kdTreeV.empty()) || this->IsVertexOnHit(pVertex, TPC_VIEW_V, kdTreeV) || this->IsVertexInGap(pVertex, TPC_VIEW_V))
52  ++nAcceptableViews;
53 
54  if ((m_isEmptyViewAcceptable && kdTreeW.empty()) || this->IsVertexOnHit(pVertex, TPC_VIEW_W, kdTreeW) || this->IsVertexInGap(pVertex, TPC_VIEW_W))
55  ++nAcceptableViews;
56 
57  if (nAcceptableViews >= m_minVertexAcceptableViews)
58  filteredVertices.push_back(pVertex);
59  }
60 
61  std::sort(filteredVertices.begin(), filteredVertices.end(), SortByVertexZPosition);
62 }
bool IsVertexOnHit(const pandora::Vertex *const pVertex, const pandora::HitType hitType, HitKDTree2D &kdTree) const
Whether the vertex lies on a hit in the specified view.
bool IsVertexInGap(const pandora::Vertex *const pVertex, const pandora::HitType hitType) const
Whether the vertex lies in a registered gap.
static bool SortByVertexZPosition(const pandora::Vertex *const pLhs, const pandora::Vertex *const pRhs)
Sort vertices by increasing z position.
bool m_isEmptyViewAcceptable
Whether views entirely empty of hits are classed as &#39;acceptable&#39; for candidate filtration.
unsigned int m_minVertexAcceptableViews
The minimum number of views in which a candidate must sit on/near a hit or in a gap (or view can be e...
boost::graph_traits< ModuleGraph >::vertex_descriptor Vertex
Definition: ModuleGraph.h:25
void lar_content::VertexSelectionBaseAlgorithm::GetBeamConstants ( const pandora::VertexVector &  vertexVector,
BeamConstants beamConstants 
) const
protectedvirtual

Get the beam score constants for a provided list of candidate vertices.

Parameters
vertexVectorthe vertex vector
beamConstantsto receive the beam constants

Definition at line 66 of file VertexSelectionBaseAlgorithm.cc.

References f, m_beamMode, m_nDecayLengthsInZSpan, and lar_content::VertexSelectionBaseAlgorithm::BeamConstants::SetConstants().

Referenced by Run().

67 {
68  if (!m_beamMode)
69  return;
70 
71  if (vertexVector.empty())
72  throw StatusCodeException(STATUS_CODE_NOT_INITIALIZED);
73 
74  float minZCoordinate(std::numeric_limits<float>::max()), maxZCoordinate(-std::numeric_limits<float>::max());
75 
76  for (const Vertex *const pVertex : vertexVector)
77  {
78  if (pVertex->GetPosition().GetZ() < minZCoordinate)
79  minZCoordinate = pVertex->GetPosition().GetZ();
80 
81  if (pVertex->GetPosition().GetZ() > maxZCoordinate)
82  maxZCoordinate = pVertex->GetPosition().GetZ();
83  }
84 
85  const float zSpan(maxZCoordinate - minZCoordinate);
86  const float decayConstant((zSpan < std::numeric_limits<float>::epsilon()) ? 0.f : (m_nDecayLengthsInZSpan / zSpan));
87  beamConstants.SetConstants(minZCoordinate, decayConstant);
88 }
TFile f
Definition: plotHisto.C:6
bool m_beamMode
Whether to run in beam mode, assuming neutrinos travel in positive z-direction.
boost::graph_traits< ModuleGraph >::vertex_descriptor Vertex
Definition: ModuleGraph.h:25
float m_nDecayLengthsInZSpan
The number of score decay lengths to use over the course of the vertex z-span.
float lar_content::VertexSelectionBaseAlgorithm::GetBeamDeweightingScore ( const BeamConstants beamConstants,
const pandora::Vertex *const  pVertex 
) const
inlineprotected

Get the beam deweighting score for a vertex.

Parameters
beamConstantsthe beam constants
pVertexaddress of the vertex
Returns
the score

Definition at line 420 of file VertexSelectionBaseAlgorithm.h.

References lar_content::VertexSelectionBaseAlgorithm::BeamConstants::GetDecayConstant(), and lar_content::VertexSelectionBaseAlgorithm::BeamConstants::GetMinZCoordinate().

Referenced by lar_content::EnergyKickVertexSelectionAlgorithm::GetVertexScoreList(), and lar_content::TrainedVertexSelectionAlgorithm::PopulateVertexFeatureInfoMap().

421 {
422  const float vertexMinZ(std::max(pVertex->GetPosition().GetZ(), beamConstants.GetMinZCoordinate()));
423  return (beamConstants.GetMinZCoordinate() - vertexMinZ) * beamConstants.GetDecayConstant();
424 }
void lar_content::VertexSelectionBaseAlgorithm::GetClusterLists ( const pandora::StringVector &  inputClusterListNames,
pandora::ClusterList &  clusterListU,
pandora::ClusterList &  clusterListV,
pandora::ClusterList &  clusterListW 
) const
protected

Get the cluster lists.

Parameters
inputClusterListNamesthe input cluster list names
clusterListUthe U-view cluster list to populate
clusterListVthe V-view cluster list to populate
clusterListWthe W-view cluster list to populate

Definition at line 92 of file VertexSelectionBaseAlgorithm.cc.

References lar_content::LArClusterHelper::GetClusterHitType().

Referenced by lar_content::EnergyKickVertexSelectionAlgorithm::GetVertexScoreList(), and lar_content::MvaVertexSelectionAlgorithm< T >::GetVertexScoreList().

94 {
95  for (const std::string &clusterListName : inputClusterListNames)
96  {
97  const ClusterList *pClusterList(NULL);
98  PANDORA_THROW_RESULT_IF_AND_IF(
99  STATUS_CODE_SUCCESS, STATUS_CODE_NOT_INITIALIZED, !=, PandoraContentApi::GetList(*this, clusterListName, pClusterList));
100 
101  if (!pClusterList || pClusterList->empty())
102  {
103  if (PandoraContentApi::GetSettings(*this)->ShouldDisplayAlgorithmInfo())
104  std::cout << "EnergyKickVertexSelectionAlgorithm: unable to find cluster list " << clusterListName << std::endl;
105 
106  continue;
107  }
108 
109  const HitType hitType(LArClusterHelper::GetClusterHitType(*(pClusterList->begin())));
110 
111  if ((TPC_VIEW_U != hitType) && (TPC_VIEW_V != hitType) && (TPC_VIEW_W != hitType))
112  throw StatusCodeException(STATUS_CODE_INVALID_PARAMETER);
113 
114  ClusterList &clusterList((TPC_VIEW_U == hitType) ? clusterListU : (TPC_VIEW_V == hitType) ? clusterListV : clusterListW);
115  clusterList.insert(clusterList.end(), pClusterList->begin(), pClusterList->end());
116  }
117 }
static pandora::HitType GetClusterHitType(const pandora::Cluster *const pCluster)
Get the hit type associated with a two dimensional cluster.
HitType
Definition: HitType.h:12
float lar_content::VertexSelectionBaseAlgorithm::GetVertexEnergy ( const pandora::Vertex *const  pVertex,
const KDTreeMap kdTreeMap 
) const
protected

Calculate the energy of a vertex candidate by summing values from all three planes.

Parameters
pVertexthe address of the vertex
kdTreeMapthe map of 2D hit kd trees
Returns
the summed vertex energy

Definition at line 253 of file VertexSelectionBaseAlgorithm.cc.

References f, IsVertexInGap(), and VertexHitEnergy().

Referenced by lar_content::TrainedVertexSelectionAlgorithm::PopulateVertexFeatureInfoMap().

254 {
255  float totalEnergy(0.f);
256 
257  if (!this->IsVertexInGap(pVertex, TPC_VIEW_U))
258  totalEnergy += this->VertexHitEnergy(pVertex, TPC_VIEW_U, kdTreeMap.at(TPC_VIEW_U));
259 
260  if (!this->IsVertexInGap(pVertex, TPC_VIEW_V))
261  totalEnergy += this->VertexHitEnergy(pVertex, TPC_VIEW_V, kdTreeMap.at(TPC_VIEW_V));
262 
263  if (!this->IsVertexInGap(pVertex, TPC_VIEW_W))
264  totalEnergy += this->VertexHitEnergy(pVertex, TPC_VIEW_W, kdTreeMap.at(TPC_VIEW_W));
265 
266  return totalEnergy;
267 }
TFile f
Definition: plotHisto.C:6
float VertexHitEnergy(const pandora::Vertex *const pVertex, const pandora::HitType hitType, HitKDTree2D &kdTree) const
Finds the energy of the nearest hit to the vertex candidate in this view.
bool IsVertexInGap(const pandora::Vertex *const pVertex, const pandora::HitType hitType) const
Whether the vertex lies in a registered gap.
virtual void lar_content::VertexSelectionBaseAlgorithm::GetVertexScoreList ( const pandora::VertexVector &  vertexVector,
const BeamConstants beamConstants,
HitKDTree2D kdTreeU,
HitKDTree2D kdTreeV,
HitKDTree2D kdTreeW,
VertexScoreList vertexScoreList 
) const
protectedpure virtual

Get the vertex score list for a provided list of candidate vertices.

Parameters
vertexVectorthe vertex vector
beamConstantsthe beam constants
kdTreeUthe kd tree for u hits
kdTreeVthe kd tree for v hits
kdTreeWthe kd tree for w hits
vertexScoreListto receive the vertex score list

Implemented in lar_content::TrainedVertexSelectionAlgorithm, lar_content::MvaVertexSelectionAlgorithm< T >, lar_content::EnergyKickVertexSelectionAlgorithm, lar_content::HitAngleVertexSelectionAlgorithm, and lar_content::CheatingVertexSelectionAlgorithm.

Referenced by Run().

void lar_content::VertexSelectionBaseAlgorithm::InitializeKDTrees ( HitKDTree2D kdTreeU,
HitKDTree2D kdTreeV,
HitKDTree2D kdTreeW 
) const
private

Initialize kd trees with details of hits in algorithm-configured cluster lists.

Parameters
kdTreeUthe kd tree for u hits
kdTreeVthe kd tree for v hits
kdTreeWthe kd tree for w hits

Definition at line 196 of file VertexSelectionBaseAlgorithm.cc.

References lar_content::KDTreeLinkerAlgo< DATA, DIM >::build(), lar_content::KDTreeLinkerAlgo< DATA, DIM >::empty(), lar_content::fill_and_bound_2d_kd_tree(), and m_inputCaloHitListNames.

Referenced by Run().

197 {
198  for (const std::string &caloHitListName : m_inputCaloHitListNames)
199  {
200  const CaloHitList *pCaloHitList = NULL;
201  PANDORA_THROW_RESULT_IF_AND_IF(
202  STATUS_CODE_SUCCESS, STATUS_CODE_NOT_INITIALIZED, !=, PandoraContentApi::GetList(*this, caloHitListName, pCaloHitList));
203 
204  if (!pCaloHitList || pCaloHitList->empty())
205  {
206  if (PandoraContentApi::GetSettings(*this)->ShouldDisplayAlgorithmInfo())
207  std::cout << "VertexSelectionBaseAlgorithm: unable to find calo hit list " << caloHitListName << std::endl;
208 
209  continue;
210  }
211 
212  const HitType hitType((*(pCaloHitList->begin()))->GetHitType());
213 
214  if ((TPC_VIEW_U != hitType) && (TPC_VIEW_V != hitType) && (TPC_VIEW_W != hitType))
215  throw StatusCodeException(STATUS_CODE_INVALID_PARAMETER);
216 
217  HitKDTree2D &kdTree((TPC_VIEW_U == hitType) ? kdTreeU : (TPC_VIEW_V == hitType) ? kdTreeV : kdTreeW);
218 
219  if (!kdTree.empty())
220  throw StatusCodeException(STATUS_CODE_FAILURE);
221 
222  HitKDNode2DList hitKDNode2DList;
223  KDTreeBox hitsBoundingRegion2D(fill_and_bound_2d_kd_tree(*pCaloHitList, hitKDNode2DList));
224  kdTree.build(hitKDNode2DList, hitsBoundingRegion2D);
225  }
226 }
KDTreeLinkerAlgo< const pandora::CaloHit *, 2 > HitKDTree2D
pandora::StringVector m_inputCaloHitListNames
The list of calo hit list names.
HitType
Definition: HitType.h:12
KDTreeBox fill_and_bound_2d_kd_tree(const MANAGED_CONTAINER< const T * > &points, std::vector< KDTreeNodeInfoT< const T *, 2 >> &nodes)
fill_and_bound_2d_kd_tree
KDTreeBoxT< 2 > KDTreeBox
bool lar_content::VertexSelectionBaseAlgorithm::IsBeamModeOn ( ) const
inlineprotected

Whether algorithm is running in beam mode, assuming neutrinos travel in positive z-direction.

Returns
boolean

Definition at line 428 of file VertexSelectionBaseAlgorithm.h.

References m_beamMode.

Referenced by lar_content::TrainedVertexSelectionAlgorithm::AddEventFeaturesToVector(), lar_content::TrainedVertexSelectionAlgorithm::AddVertexFeaturesToVector(), lar_content::EnergyKickVertexSelectionAlgorithm::GetVertexScoreList(), and lar_content::TrainedVertexSelectionAlgorithm::PopulateVertexFeatureInfoMap().

429 {
430  return m_beamMode;
431 }
bool m_beamMode
Whether to run in beam mode, assuming neutrinos travel in positive z-direction.
bool lar_content::VertexSelectionBaseAlgorithm::IsVertexInGap ( const pandora::Vertex *const  pVertex,
const pandora::HitType  hitType 
) const
private

Whether the vertex lies in a registered gap.

Parameters
pVertexthe address of the vertex
hitTypethe relevant hit type
Returns
boolean

Definition at line 243 of file VertexSelectionBaseAlgorithm.cc.

References lar_content::LArGeometryHelper::IsInGap3D(), m_gapTolerance, and m_useDetectorGaps.

Referenced by FilterVertexList(), and GetVertexEnergy().

244 {
245  if (!m_useDetectorGaps)
246  return false;
247 
248  return LArGeometryHelper::IsInGap3D(this->GetPandora(), pVertex->GetPosition(), hitType, m_gapTolerance);
249 }
bool m_useDetectorGaps
Whether to account for registered detector gaps in vertex selection.
float m_gapTolerance
The tolerance to use when querying whether a sampling point is in a gap, units cm.
static bool IsInGap3D(const pandora::Pandora &pandora, const pandora::CartesianVector &testPoint3D, const pandora::HitType hitType, const float gapTolerance=0.f)
Whether a 3D test point lies in a registered gap with the associated hit type.
bool lar_content::VertexSelectionBaseAlgorithm::IsVertexOnHit ( const pandora::Vertex *const  pVertex,
const pandora::HitType  hitType,
HitKDTree2D kdTree 
) const
private

Whether the vertex lies on a hit in the specified view.

Parameters
pVertexthe address of the vertex
hitTypethe relevant hit type
kdTreethe relevant kd tree
Returns
boolean

Definition at line 230 of file VertexSelectionBaseAlgorithm.cc.

References lar_content::build_2d_kd_search_region(), m_maxOnHitDisplacement, lar_content::LArGeometryHelper::ProjectPosition(), and lar_content::KDTreeLinkerAlgo< DATA, DIM >::search().

Referenced by FilterVertexList().

231 {
232  const CartesianVector vertexPosition2D(LArGeometryHelper::ProjectPosition(this->GetPandora(), pVertex->GetPosition(), hitType));
234 
235  HitKDNode2DList found;
236  kdTree.search(searchRegionHits, found);
237 
238  return (!found.empty());
239 }
static pandora::CartesianVector ProjectPosition(const pandora::Pandora &pandora, const pandora::CartesianVector &position3D, const pandora::HitType view)
Project 3D position into a given 2D view.
KDTreeBox build_2d_kd_search_region(const pandora::CaloHit *const point, const float x_span, const float z_span)
build_2d_kd_search_region
KDTreeBoxT< 2 > KDTreeBox
float m_maxOnHitDisplacement
Max hit-vertex displacement for declaring vertex to lie on a hit in each view.
StatusCode lar_content::VertexSelectionBaseAlgorithm::ReadSettings ( const pandora::TiXmlHandle  xmlHandle)
protected

Definition at line 403 of file VertexSelectionBaseAlgorithm.cc.

References m_beamMode, m_gapTolerance, m_inputCaloHitListNames, m_inputVertexListName, m_isEmptyViewAcceptable, m_maxOnHitDisplacement, m_maxTopScoreSelections, m_minCandidateDisplacement, m_minCandidateScoreFraction, m_minVertexAcceptableViews, m_nDecayLengthsInZSpan, m_outputVertexListName, m_replaceCurrentVertexList, m_selectSingleVertex, and m_useDetectorGaps.

Referenced by lar_content::EnergyKickVertexSelectionAlgorithm::ReadSettings(), and lar_content::TrainedVertexSelectionAlgorithm::ReadSettings().

404 {
405  PANDORA_RETURN_RESULT_IF(STATUS_CODE_SUCCESS, !=, XmlHelper::ReadVectorOfValues(xmlHandle, "InputCaloHitListNames", m_inputCaloHitListNames));
406 
407  PANDORA_RETURN_RESULT_IF_AND_IF(
408  STATUS_CODE_SUCCESS, STATUS_CODE_NOT_FOUND, !=, XmlHelper::ReadValue(xmlHandle, "InputVertexListName", m_inputVertexListName));
409 
410  PANDORA_RETURN_RESULT_IF(STATUS_CODE_SUCCESS, !=, XmlHelper::ReadValue(xmlHandle, "OutputVertexListName", m_outputVertexListName));
411 
412  PANDORA_RETURN_RESULT_IF_AND_IF(STATUS_CODE_SUCCESS, STATUS_CODE_NOT_FOUND, !=,
413  XmlHelper::ReadValue(xmlHandle, "ReplaceCurrentVertexList", m_replaceCurrentVertexList));
414 
415  PANDORA_RETURN_RESULT_IF_AND_IF(STATUS_CODE_SUCCESS, STATUS_CODE_NOT_FOUND, !=, XmlHelper::ReadValue(xmlHandle, "BeamMode", m_beamMode));
416 
417  PANDORA_RETURN_RESULT_IF_AND_IF(
418  STATUS_CODE_SUCCESS, STATUS_CODE_NOT_FOUND, !=, XmlHelper::ReadValue(xmlHandle, "NDecayLengthsInZSpan", m_nDecayLengthsInZSpan));
419 
420  PANDORA_RETURN_RESULT_IF_AND_IF(
421  STATUS_CODE_SUCCESS, STATUS_CODE_NOT_FOUND, !=, XmlHelper::ReadValue(xmlHandle, "SelectSingleVertex", m_selectSingleVertex));
422 
423  PANDORA_RETURN_RESULT_IF_AND_IF(
424  STATUS_CODE_SUCCESS, STATUS_CODE_NOT_FOUND, !=, XmlHelper::ReadValue(xmlHandle, "MaxTopScoreSelections", m_maxTopScoreSelections));
425 
426  PANDORA_RETURN_RESULT_IF_AND_IF(
427  STATUS_CODE_SUCCESS, STATUS_CODE_NOT_FOUND, !=, XmlHelper::ReadValue(xmlHandle, "MaxOnHitDisplacement", m_maxOnHitDisplacement));
428 
429  PANDORA_RETURN_RESULT_IF_AND_IF(STATUS_CODE_SUCCESS, STATUS_CODE_NOT_FOUND, !=,
430  XmlHelper::ReadValue(xmlHandle, "MinCandidateDisplacement", m_minCandidateDisplacement));
431 
432  PANDORA_RETURN_RESULT_IF_AND_IF(STATUS_CODE_SUCCESS, STATUS_CODE_NOT_FOUND, !=,
433  XmlHelper::ReadValue(xmlHandle, "MinCandidateScoreFraction", m_minCandidateScoreFraction));
434 
435  PANDORA_RETURN_RESULT_IF_AND_IF(STATUS_CODE_SUCCESS, STATUS_CODE_NOT_FOUND, !=, XmlHelper::ReadValue(xmlHandle, "UseDetectorGaps", m_useDetectorGaps));
436 
437  PANDORA_RETURN_RESULT_IF_AND_IF(STATUS_CODE_SUCCESS, STATUS_CODE_NOT_FOUND, !=, XmlHelper::ReadValue(xmlHandle, "GapTolerance", m_gapTolerance));
438 
439  PANDORA_RETURN_RESULT_IF_AND_IF(
440  STATUS_CODE_SUCCESS, STATUS_CODE_NOT_FOUND, !=, XmlHelper::ReadValue(xmlHandle, "IsEmptyViewAcceptable", m_isEmptyViewAcceptable));
441 
442  PANDORA_RETURN_RESULT_IF_AND_IF(STATUS_CODE_SUCCESS, STATUS_CODE_NOT_FOUND, !=,
443  XmlHelper::ReadValue(xmlHandle, "MinVertexAcceptableViews", m_minVertexAcceptableViews));
444 
445  return STATUS_CODE_SUCCESS;
446 }
float m_minCandidateScoreFraction
Ignore other top-scoring candidates with score less than a fraction of original.
std::string m_outputVertexListName
The name under which to save the output vertex list.
pandora::StringVector m_inputCaloHitListNames
The list of calo hit list names.
std::string m_inputVertexListName
The name of an input vertex list to check.
unsigned int m_maxTopScoreSelections
Max number of top-scoring vertex candidate to select for output.
bool m_useDetectorGaps
Whether to account for registered detector gaps in vertex selection.
bool m_beamMode
Whether to run in beam mode, assuming neutrinos travel in positive z-direction.
bool m_isEmptyViewAcceptable
Whether views entirely empty of hits are classed as &#39;acceptable&#39; for candidate filtration.
bool m_selectSingleVertex
Whether to make a final decision and select just one vertex candidate.
unsigned int m_minVertexAcceptableViews
The minimum number of views in which a candidate must sit on/near a hit or in a gap (or view can be e...
float m_nDecayLengthsInZSpan
The number of score decay lengths to use over the course of the vertex z-span.
float m_minCandidateDisplacement
Ignore other top-scoring candidates located in close proximity to original.
bool m_replaceCurrentVertexList
Whether to replace the current vertex list with the output list.
float m_gapTolerance
The tolerance to use when querying whether a sampling point is in a gap, units cm.
float m_maxOnHitDisplacement
Max hit-vertex displacement for declaring vertex to lie on a hit in each view.
StatusCode lar_content::VertexSelectionBaseAlgorithm::Run ( )
private

Definition at line 143 of file VertexSelectionBaseAlgorithm.cc.

References FilterVertexList(), GetBeamConstants(), GetVertexScoreList(), InitializeKDTrees(), m_inputVertexListName, m_outputVertexListName, m_replaceCurrentVertexList, and SelectTopScoreVertices().

144 {
145  const VertexList *pInputVertexList(NULL);
146 
147  if (m_inputVertexListName == "")
148  {
149  PANDORA_RETURN_RESULT_IF(STATUS_CODE_SUCCESS, !=, PandoraContentApi::GetCurrentList(*this, pInputVertexList));
150  }
151  else
152  {
153  PANDORA_RETURN_RESULT_IF_AND_IF(STATUS_CODE_SUCCESS, STATUS_CODE_NOT_INITIALIZED, !=,
154  PandoraContentApi::GetList(*this, m_inputVertexListName, pInputVertexList));
155  }
156 
157  if (!pInputVertexList || pInputVertexList->empty())
158  {
159  if (PandoraContentApi::GetSettings(*this)->ShouldDisplayAlgorithmInfo())
160  std::cout << "VertexSelectionBaseAlgorithm: unable to find current vertex list " << std::endl;
161 
162  return STATUS_CODE_SUCCESS;
163  }
164 
165  HitKDTree2D kdTreeU, kdTreeV, kdTreeW;
166  this->InitializeKDTrees(kdTreeU, kdTreeV, kdTreeW);
167 
168  VertexVector filteredVertices;
169  this->FilterVertexList(pInputVertexList, kdTreeU, kdTreeV, kdTreeW, filteredVertices);
170 
171  if (filteredVertices.empty())
172  return STATUS_CODE_SUCCESS;
173 
174  BeamConstants beamConstants;
175  this->GetBeamConstants(filteredVertices, beamConstants);
176 
177  VertexScoreList vertexScoreList;
178  this->GetVertexScoreList(filteredVertices, beamConstants, kdTreeU, kdTreeV, kdTreeW, vertexScoreList);
179 
180  VertexList selectedVertexList;
181  this->SelectTopScoreVertices(vertexScoreList, selectedVertexList);
182 
183  if (!selectedVertexList.empty())
184  {
185  PANDORA_RETURN_RESULT_IF(STATUS_CODE_SUCCESS, !=, PandoraContentApi::SaveList(*this, m_outputVertexListName, selectedVertexList));
186 
188  PANDORA_RETURN_RESULT_IF(STATUS_CODE_SUCCESS, !=, PandoraContentApi::ReplaceCurrentList<Vertex>(*this, m_outputVertexListName));
189  }
190 
191  return STATUS_CODE_SUCCESS;
192 }
KDTreeLinkerAlgo< const pandora::CaloHit *, 2 > HitKDTree2D
virtual void FilterVertexList(const pandora::VertexList *const pInputVertexList, HitKDTree2D &kdTreeU, HitKDTree2D &kdTreeV, HitKDTree2D &kdTreeW, pandora::VertexVector &filteredVertices) const
Filter the input list of vertices to obtain a reduced number of vertex candidates.
std::string m_outputVertexListName
The name under which to save the output vertex list.
std::string m_inputVertexListName
The name of an input vertex list to check.
virtual void GetBeamConstants(const pandora::VertexVector &vertexVector, BeamConstants &beamConstants) const
Get the beam score constants for a provided list of candidate vertices.
void InitializeKDTrees(HitKDTree2D &kdTreeU, HitKDTree2D &kdTreeV, HitKDTree2D &kdTreeW) const
Initialize kd trees with details of hits in algorithm-configured cluster lists.
std::vector< art::Ptr< recob::Vertex > > VertexVector
virtual void GetVertexScoreList(const pandora::VertexVector &vertexVector, const BeamConstants &beamConstants, HitKDTree2D &kdTreeU, HitKDTree2D &kdTreeV, HitKDTree2D &kdTreeW, VertexScoreList &vertexScoreList) const =0
Get the vertex score list for a provided list of candidate vertices.
void SelectTopScoreVertices(VertexScoreList &vertexScoreList, pandora::VertexList &selectedVertexList) const
From the top-scoring candidate vertices, select a subset for further investigation.
bool m_replaceCurrentVertexList
Whether to replace the current vertex list with the output list.
std::list< Vertex > VertexList
Definition: DCEL.h:169
void lar_content::VertexSelectionBaseAlgorithm::SelectTopScoreVertices ( VertexScoreList vertexScoreList,
pandora::VertexList &  selectedVertexList 
) const
private

From the top-scoring candidate vertices, select a subset for further investigation.

Parameters
vertexScoreListthe vertex score list
selectedVertexListto receive the selected vertex list

Definition at line 296 of file VertexSelectionBaseAlgorithm.cc.

References AcceptVertexLocation(), f, m_maxTopScoreSelections, m_minCandidateScoreFraction, and m_selectSingleVertex.

Referenced by Run().

297 {
298  float bestScore(0.f);
299  std::sort(vertexScoreList.begin(), vertexScoreList.end());
300 
301  for (const VertexScore &vertexScore : vertexScoreList)
302  {
303  if (selectedVertexList.size() >= m_maxTopScoreSelections)
304  break;
305 
306  if (!selectedVertexList.empty() && !this->AcceptVertexLocation(vertexScore.GetVertex(), selectedVertexList))
307  continue;
308 
309  if (!selectedVertexList.empty() && (vertexScore.GetScore() < m_minCandidateScoreFraction * bestScore))
310  continue;
311 
312  selectedVertexList.push_back(vertexScore.GetVertex());
313 
315  return;
316 
317  if (vertexScore.GetScore() > bestScore)
318  bestScore = vertexScore.GetScore();
319  }
320 }
float m_minCandidateScoreFraction
Ignore other top-scoring candidates with score less than a fraction of original.
TFile f
Definition: plotHisto.C:6
bool AcceptVertexLocation(const pandora::Vertex *const pVertex, const pandora::VertexList &selectedVertexList) const
Whether to accept a candidate vertex, based on its spatial position in relation to other selected can...
unsigned int m_maxTopScoreSelections
Max number of top-scoring vertex candidate to select for output.
bool m_selectSingleVertex
Whether to make a final decision and select just one vertex candidate.
bool lar_content::VertexSelectionBaseAlgorithm::SortByVertexZPosition ( const pandora::Vertex *const  pLhs,
const pandora::Vertex *const  pRhs 
)
staticprivate

Sort vertices by increasing z position.

Parameters
pLhsaddress of the lhs vertex
pRhsaddress of the rhs vertex
Returns
whether lhs should precedes rhs

Definition at line 343 of file VertexSelectionBaseAlgorithm.cc.

Referenced by FilterVertexList().

344 {
345  const CartesianVector deltaPosition(pRhs->GetPosition() - pLhs->GetPosition());
346 
347  if (std::fabs(deltaPosition.GetZ()) > std::numeric_limits<float>::epsilon())
348  return (deltaPosition.GetZ() > std::numeric_limits<float>::epsilon());
349 
350  if (std::fabs(deltaPosition.GetX()) > std::numeric_limits<float>::epsilon())
351  return (deltaPosition.GetX() > std::numeric_limits<float>::epsilon());
352 
353  // ATTN No way to distinguish between vertices if still have a tie in y coordinate
354  return (deltaPosition.GetY() > std::numeric_limits<float>::epsilon());
355 }
float lar_content::VertexSelectionBaseAlgorithm::VertexHitEnergy ( const pandora::Vertex *const  pVertex,
const pandora::HitType  hitType,
HitKDTree2D kdTree 
) const
protected

Finds the energy of the nearest hit to the vertex candidate in this view.

Parameters
pVertexthe address of the vertex
hitTypethe relevant hit type
kdTreethe kd tree of 2D hits
Returns
the energy of the nearest hit

Definition at line 271 of file VertexSelectionBaseAlgorithm.cc.

References lar_content::build_2d_kd_search_region(), energy, m_maxOnHitDisplacement, lar_content::LArGeometryHelper::ProjectPosition(), and lar_content::KDTreeLinkerAlgo< DATA, DIM >::search().

Referenced by GetVertexEnergy().

272 {
273  const CartesianVector vertexPosition2D(LArGeometryHelper::ProjectPosition(this->GetPandora(), pVertex->GetPosition(), hitType));
275 
276  HitKDNode2DList foundHits;
277  kdTree.search(searchRegionHits, foundHits);
278 
279  float dr(std::numeric_limits<float>::max());
280  float energy(0);
281 
282  for (auto hit : foundHits)
283  {
284  const float diff = (vertexPosition2D - hit.data->GetPositionVector()).GetMagnitude();
285  if (diff < dr)
286  {
287  dr = diff;
288  energy = hit.data->GetElectromagneticEnergy();
289  }
290  }
291  return energy;
292 }
static pandora::CartesianVector ProjectPosition(const pandora::Pandora &pandora, const pandora::CartesianVector &position3D, const pandora::HitType view)
Project 3D position into a given 2D view.
double energy
Definition: plottest35.C:25
Detector simulation of raw signals on wires.
KDTreeBox build_2d_kd_search_region(const pandora::CaloHit *const point, const float x_span, const float z_span)
build_2d_kd_search_region
KDTreeBoxT< 2 > KDTreeBox
float m_maxOnHitDisplacement
Max hit-vertex displacement for declaring vertex to lie on a hit in each view.

Member Data Documentation

bool lar_content::VertexSelectionBaseAlgorithm::m_beamMode
private

Whether to run in beam mode, assuming neutrinos travel in positive z-direction.

Definition at line 400 of file VertexSelectionBaseAlgorithm.h.

Referenced by GetBeamConstants(), IsBeamModeOn(), and ReadSettings().

float lar_content::VertexSelectionBaseAlgorithm::m_gapTolerance
private

The tolerance to use when querying whether a sampling point is in a gap, units cm.

Definition at line 412 of file VertexSelectionBaseAlgorithm.h.

Referenced by IsVertexInGap(), and ReadSettings().

pandora::StringVector lar_content::VertexSelectionBaseAlgorithm::m_inputCaloHitListNames
private

The list of calo hit list names.

Definition at line 394 of file VertexSelectionBaseAlgorithm.h.

Referenced by InitializeKDTrees(), and ReadSettings().

std::string lar_content::VertexSelectionBaseAlgorithm::m_inputVertexListName
private

The name of an input vertex list to check.

Definition at line 395 of file VertexSelectionBaseAlgorithm.h.

Referenced by ReadSettings(), and Run().

bool lar_content::VertexSelectionBaseAlgorithm::m_isEmptyViewAcceptable
private

Whether views entirely empty of hits are classed as 'acceptable' for candidate filtration.

Definition at line 414 of file VertexSelectionBaseAlgorithm.h.

Referenced by FilterVertexList(), and ReadSettings().

float lar_content::VertexSelectionBaseAlgorithm::m_maxOnHitDisplacement
private

Max hit-vertex displacement for declaring vertex to lie on a hit in each view.

Definition at line 406 of file VertexSelectionBaseAlgorithm.h.

Referenced by IsVertexOnHit(), ReadSettings(), and VertexHitEnergy().

unsigned int lar_content::VertexSelectionBaseAlgorithm::m_maxTopScoreSelections
private

Max number of top-scoring vertex candidate to select for output.

Definition at line 404 of file VertexSelectionBaseAlgorithm.h.

Referenced by ReadSettings(), and SelectTopScoreVertices().

float lar_content::VertexSelectionBaseAlgorithm::m_minCandidateDisplacement
private

Ignore other top-scoring candidates located in close proximity to original.

Definition at line 408 of file VertexSelectionBaseAlgorithm.h.

Referenced by AcceptVertexLocation(), and ReadSettings().

float lar_content::VertexSelectionBaseAlgorithm::m_minCandidateScoreFraction
private

Ignore other top-scoring candidates with score less than a fraction of original.

Definition at line 409 of file VertexSelectionBaseAlgorithm.h.

Referenced by ReadSettings(), and SelectTopScoreVertices().

unsigned int lar_content::VertexSelectionBaseAlgorithm::m_minVertexAcceptableViews
private

The minimum number of views in which a candidate must sit on/near a hit or in a gap (or view can be empty)

Definition at line 415 of file VertexSelectionBaseAlgorithm.h.

Referenced by FilterVertexList(), and ReadSettings().

float lar_content::VertexSelectionBaseAlgorithm::m_nDecayLengthsInZSpan
private

The number of score decay lengths to use over the course of the vertex z-span.

Definition at line 401 of file VertexSelectionBaseAlgorithm.h.

Referenced by GetBeamConstants(), and ReadSettings().

std::string lar_content::VertexSelectionBaseAlgorithm::m_outputVertexListName
private

The name under which to save the output vertex list.

Definition at line 396 of file VertexSelectionBaseAlgorithm.h.

Referenced by ReadSettings(), and Run().

bool lar_content::VertexSelectionBaseAlgorithm::m_replaceCurrentVertexList
private

Whether to replace the current vertex list with the output list.

Definition at line 398 of file VertexSelectionBaseAlgorithm.h.

Referenced by ReadSettings(), and Run().

bool lar_content::VertexSelectionBaseAlgorithm::m_selectSingleVertex
private

Whether to make a final decision and select just one vertex candidate.

Definition at line 403 of file VertexSelectionBaseAlgorithm.h.

Referenced by ReadSettings(), and SelectTopScoreVertices().

bool lar_content::VertexSelectionBaseAlgorithm::m_useDetectorGaps
private

Whether to account for registered detector gaps in vertex selection.

Definition at line 411 of file VertexSelectionBaseAlgorithm.h.

Referenced by IsVertexInGap(), and ReadSettings().


The documentation for this class was generated from the following files: