All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Classes | Public Member Functions | Private Member Functions | Private Attributes | List of all members
lar_content::TrackSplittingTool Class Reference

TrackSplittingTool class. More...

#include <TrackSplittingTool.h>

Inheritance diagram for lar_content::TrackSplittingTool:
lar_content::TransverseTensorTool

Classes

class  Particle
 Particle class. More...
 

Public Member Functions

 TrackSplittingTool ()
 Default constructor. More...
 
bool Run (ThreeViewTransverseTracksAlgorithm *const pAlgorithm, TensorType &overlapTensor)
 Run the algorithm tool. More...
 

Private Member Functions

pandora::StatusCode ReadSettings (const pandora::TiXmlHandle xmlHandle)
 
void FindTracks (ThreeViewTransverseTracksAlgorithm *const pAlgorithm, const TensorType &overlapTensor, SplitPositionMap &splitPositionMap) const
 Find remaining tracks, hidden by spurious track segments (and maybe other ambiguities) in the tensor. More...
 
void SelectElements (const TensorType::ElementList &elementList, const pandora::ClusterSet &usedClusters, IteratorList &iteratorList) const
 Select a list of the relevant elements from a set of connected tensor elements. More...
 
bool PassesChecks (ThreeViewTransverseTracksAlgorithm *const pAlgorithm, const TensorType::Element &element, const bool isMinX, pandora::ClusterSet &usedClusters, SplitPositionMap &splitPositionMap) const
 Whether a provided tensor element can be used to construct a pfo. More...
 
bool CheckSplitPosition (const pandora::CartesianVector &splitPosition, const float splitX, const TwoDSlidingFitResult &longFitResult) const
 Check a candidate split position for consistency with the associated track cluster sliding linear fit. More...
 

Private Attributes

float m_minMatchedFraction
 The min matched sampling point fraction for particle creation. More...
 
unsigned int m_minMatchedSamplingPoints
 The min number of matched sampling points for particle creation. More...
 
float m_minXOverlapFraction
 The min x overlap fraction (between long clusters and short cluster vs. shared overlap) More...
 
unsigned int m_minMatchedSamplingPointRatio
 The min ratio between 1st and 2nd highest msps for simple ambiguity resolution. More...
 
float m_maxShortDeltaXFraction
 Max x distance between ends of two short clusters (measured as fraction of long cluster x length) More...
 
float m_maxAbsoluteShortDeltaX
 Max x distance between ends of two short clusters (measured as an absolute distance) More...
 
float m_minLongDeltaXFraction
 Min x distance between ends of short and long clusters (measured as fraction of long cluster x length) More...
 
float m_minAbsoluteLongDeltaX
 Min x distance between ends of short and long clusters (measured as an absolute distance) More...
 
float m_minSplitToVertexProjection
 Min projected distance between split position and either inner or outer vertex of long cluster. More...
 
float m_maxSplitVsFitPositionDistance
 Max allowed distance between split position and sliding linear fit position at the split x coordinate. More...
 

Additional Inherited Members

- Public Types inherited from lar_content::TransverseTensorTool
typedef
ThreeViewTransverseTracksAlgorithm::MatchingType::TensorType 
TensorType
 
typedef std::vector
< TensorType::ElementList::const_iterator
IteratorList
 

Detailed Description

TrackSplittingTool class.

Definition at line 19 of file TrackSplittingTool.h.

Constructor & Destructor Documentation

lar_content::TrackSplittingTool::TrackSplittingTool ( )

Default constructor.

Definition at line 23 of file TrackSplittingTool.cc.

23  :
24  m_minMatchedFraction(0.75f),
26  m_minXOverlapFraction(0.75f),
34 {
35 }
unsigned int m_minMatchedSamplingPoints
The min number of matched sampling points for particle creation.
float m_minSplitToVertexProjection
Min projected distance between split position and either inner or outer vertex of long cluster...
float m_maxAbsoluteShortDeltaX
Max x distance between ends of two short clusters (measured as an absolute distance) ...
float m_minMatchedFraction
The min matched sampling point fraction for particle creation.
float m_minAbsoluteLongDeltaX
Min x distance between ends of short and long clusters (measured as an absolute distance) ...
float m_maxShortDeltaXFraction
Max x distance between ends of two short clusters (measured as fraction of long cluster x length) ...
float m_minLongDeltaXFraction
Min x distance between ends of short and long clusters (measured as fraction of long cluster x length...
float m_minXOverlapFraction
The min x overlap fraction (between long clusters and short cluster vs. shared overlap) ...
unsigned int m_minMatchedSamplingPointRatio
The min ratio between 1st and 2nd highest msps for simple ambiguity resolution.
float m_maxSplitVsFitPositionDistance
Max allowed distance between split position and sliding linear fit position at the split x coordinate...

Member Function Documentation

bool lar_content::TrackSplittingTool::CheckSplitPosition ( const pandora::CartesianVector &  splitPosition,
const float  splitX,
const TwoDSlidingFitResult longFitResult 
) const
private

Check a candidate split position for consistency with the associated track cluster sliding linear fit.

Parameters
splitPositionthe candidate split position
splitXthe split x coordinate
longFitResultthe sliding linear fit for the long cluster

Definition at line 212 of file TrackSplittingTool.cc.

213 {
214  CartesianPointVector fitPositionList;
215  if (STATUS_CODE_SUCCESS != longFitResult.GetGlobalFitPositionListAtX(splitX, fitPositionList))
216  return false;
217 
218  for (CartesianPointVector::const_iterator iter = fitPositionList.begin(), iterEnd = fitPositionList.end(); iter != iterEnd; ++iter)
219  {
220  if ((splitPosition - *iter).GetMagnitude() < m_maxSplitVsFitPositionDistance)
221  return true;
222  }
223 
224  return false;
225 }
float m_maxSplitVsFitPositionDistance
Max allowed distance between split position and sliding linear fit position at the split x coordinate...
void lar_content::TrackSplittingTool::FindTracks ( ThreeViewTransverseTracksAlgorithm *const  pAlgorithm,
const TensorType overlapTensor,
SplitPositionMap splitPositionMap 
) const
private

Find remaining tracks, hidden by spurious track segments (and maybe other ambiguities) in the tensor.

Parameters
pAlgorithmaddress of the calling algorithm
overlapTensorthe overlap tensor
splitPositionMapto receive the split position map

Definition at line 53 of file TrackSplittingTool.cc.

55 {
56  ClusterSet usedClusters;
57  ClusterVector sortedKeyClusters;
58  overlapTensor.GetSortedKeyClusters(sortedKeyClusters);
59 
60  for (const Cluster *const pKeyCluster : sortedKeyClusters)
61  {
62  if (!pKeyCluster->IsAvailable())
63  continue;
64 
65  unsigned int nU(0), nV(0), nW(0);
66  TensorType::ElementList elementList;
67  overlapTensor.GetConnectedElements(pKeyCluster, true, elementList, nU, nV, nW);
68 
69  IteratorList iteratorList;
70  this->SelectElements(elementList, usedClusters, iteratorList);
71 
72  for (IteratorList::const_iterator iIter = iteratorList.begin(), iIterEnd = iteratorList.end(); iIter != iIterEnd; ++iIter)
73  {
74  if (LongTracksTool::HasLongDirectConnections(iIter, iteratorList))
75  continue;
76 
78  continue;
79 
80  if (!this->PassesChecks(pAlgorithm, *(*iIter), true, usedClusters, splitPositionMap) &&
81  !this->PassesChecks(pAlgorithm, *(*iIter), false, usedClusters, splitPositionMap))
82  {
83  continue;
84  }
85 
86  usedClusters.insert((*iIter)->GetClusterU());
87  usedClusters.insert((*iIter)->GetClusterV());
88  usedClusters.insert((*iIter)->GetClusterW());
89  }
90  }
91 }
std::vector< TensorType::ElementList::const_iterator > IteratorList
static bool IsLongerThanDirectConnections(IteratorList::const_iterator iIter, const TensorType::ElementList &elementList, const unsigned int minMatchedSamplingPointRatio, const pandora::ClusterSet &usedClusters)
Whether a long element is significantly longer that other elements with which it shares a cluster...
void SelectElements(const TensorType::ElementList &elementList, const pandora::ClusterSet &usedClusters, IteratorList &iteratorList) const
Select a list of the relevant elements from a set of connected tensor elements.
bool PassesChecks(ThreeViewTransverseTracksAlgorithm *const pAlgorithm, const TensorType::Element &element, const bool isMinX, pandora::ClusterSet &usedClusters, SplitPositionMap &splitPositionMap) const
Whether a provided tensor element can be used to construct a pfo.
unsigned int m_minMatchedSamplingPointRatio
The min ratio between 1st and 2nd highest msps for simple ambiguity resolution.
std::vector< art::Ptr< recob::Cluster > > ClusterVector
static bool HasLongDirectConnections(IteratorList::const_iterator iIter, const IteratorList &iteratorList)
Whether a long element shares clusters with any other long elements.
bool lar_content::TrackSplittingTool::PassesChecks ( ThreeViewTransverseTracksAlgorithm *const  pAlgorithm,
const TensorType::Element &  element,
const bool  isMinX,
pandora::ClusterSet &  usedClusters,
SplitPositionMap splitPositionMap 
) const
private

Whether a provided tensor element can be used to construct a pfo.

Parameters
pAlgorithmaddress of the calling algorithm
elementthe tensor element
isMinXwhether to look for track splits at min or max x coordinate
usedClustersthe list of used clusters
splitPositionMapto receive the split position map

Definition at line 134 of file TrackSplittingTool.cc.

136 {
137  try
138  {
139  const Particle particle(element);
140 
141  if (usedClusters.count(particle.m_pLongCluster) || usedClusters.count(particle.m_pCluster1) || usedClusters.count(particle.m_pCluster2))
142  return false;
143 
144  const float longXSpan(particle.m_longMaxX - particle.m_longMinX);
145 
146  if (longXSpan < std::numeric_limits<float>::epsilon())
147  return false;
148 
149  const float splitX(isMinX ? (0.5f * (particle.m_short1MinX + particle.m_short2MinX)) : (0.5f * (particle.m_short1MaxX + particle.m_short2MaxX)));
150  const float shortDeltaX(
151  isMinX ? std::fabs(particle.m_short1MinX - particle.m_short2MinX) : std::fabs(particle.m_short1MaxX - particle.m_short2MaxX));
152  const float longDeltaX(isMinX ? (splitX - particle.m_longMinX) : (particle.m_longMaxX - splitX));
153 
154  if (((shortDeltaX / longXSpan) > m_maxShortDeltaXFraction) || (shortDeltaX > m_maxAbsoluteShortDeltaX) ||
155  ((longDeltaX / longXSpan) < m_minLongDeltaXFraction) || (longDeltaX < m_minAbsoluteLongDeltaX))
156  {
157  return false;
158  }
159 
160  const LArPointingCluster pointingCluster1(pAlgorithm->GetCachedSlidingFitResult(particle.m_pCluster1));
161  const LArPointingCluster pointingCluster2(pAlgorithm->GetCachedSlidingFitResult(particle.m_pCluster2));
162  const LArPointingCluster longPointingCluster(pAlgorithm->GetCachedSlidingFitResult(particle.m_pLongCluster));
163 
164  const CartesianVector &minPos1{
165  pointingCluster1.GetInnerVertex().GetPosition().GetX() < pointingCluster1.GetOuterVertex().GetPosition().GetX()
166  ? pointingCluster1.GetInnerVertex().GetPosition()
167  : pointingCluster1.GetOuterVertex().GetPosition()};
168  const CartesianVector &minPos2{
169  pointingCluster2.GetInnerVertex().GetPosition().GetX() < pointingCluster2.GetOuterVertex().GetPosition().GetX()
170  ? pointingCluster2.GetInnerVertex().GetPosition()
171  : pointingCluster2.GetOuterVertex().GetPosition()};
172  const CartesianVector &maxPos1{
173  pointingCluster1.GetInnerVertex().GetPosition().GetX() > pointingCluster1.GetOuterVertex().GetPosition().GetX()
174  ? pointingCluster1.GetInnerVertex().GetPosition()
175  : pointingCluster1.GetOuterVertex().GetPosition()};
176  const CartesianVector &maxPos2{
177  pointingCluster2.GetInnerVertex().GetPosition().GetX() > pointingCluster2.GetOuterVertex().GetPosition().GetX()
178  ? pointingCluster2.GetInnerVertex().GetPosition()
179  : pointingCluster2.GetOuterVertex().GetPosition()};
180  const CartesianVector position1(isMinX ? minPos1 : maxPos1);
181  const CartesianVector position2(isMinX ? minPos2 : maxPos2);
182 
183  CartesianVector splitPosition(0.f, 0.f, 0.f);
184  float chiSquared(std::numeric_limits<float>::max());
185  LArGeometryHelper::MergeTwoPositions(this->GetPandora(), LArClusterHelper::GetClusterHitType(particle.m_pCluster1),
186  LArClusterHelper::GetClusterHitType(particle.m_pCluster2), position1, position2, splitPosition, chiSquared);
187 
188  if (!this->CheckSplitPosition(splitPosition, splitX, pAlgorithm->GetCachedSlidingFitResult(particle.m_pLongCluster)))
189  return false;
190 
191  const CartesianVector splitToInnerVertex(splitPosition - longPointingCluster.GetInnerVertex().GetPosition());
192  const CartesianVector outerVertexToSplit(longPointingCluster.GetOuterVertex().GetPosition() - splitPosition);
193  const CartesianVector outerToInnerUnitVector(
194  (longPointingCluster.GetOuterVertex().GetPosition() - longPointingCluster.GetInnerVertex().GetPosition()).GetUnitVector());
195 
196  if ((splitToInnerVertex.GetDotProduct(outerToInnerUnitVector) > m_minSplitToVertexProjection) &&
197  (outerVertexToSplit.GetDotProduct(outerToInnerUnitVector) > m_minSplitToVertexProjection))
198  {
199  splitPositionMap[particle.m_pLongCluster].push_back(splitPosition);
200  return true;
201  }
202  }
203  catch (StatusCodeException &)
204  {
205  }
206 
207  return false;
208 }
bool CheckSplitPosition(const pandora::CartesianVector &splitPosition, const float splitX, const TwoDSlidingFitResult &longFitResult) const
Check a candidate split position for consistency with the associated track cluster sliding linear fit...
float m_minSplitToVertexProjection
Min projected distance between split position and either inner or outer vertex of long cluster...
static pandora::HitType GetClusterHitType(const pandora::Cluster *const pCluster)
Get the hit type associated with a two dimensional cluster.
float m_maxAbsoluteShortDeltaX
Max x distance between ends of two short clusters (measured as an absolute distance) ...
float m_minAbsoluteLongDeltaX
Min x distance between ends of short and long clusters (measured as an absolute distance) ...
float m_maxShortDeltaXFraction
Max x distance between ends of two short clusters (measured as fraction of long cluster x length) ...
float m_minLongDeltaXFraction
Min x distance between ends of short and long clusters (measured as fraction of long cluster x length...
static float MergeTwoPositions(const pandora::Pandora &pandora, const pandora::HitType view1, const pandora::HitType view2, const float position1, const float position2)
Merge two views (U,V) to give a third view (Z).
StatusCode lar_content::TrackSplittingTool::ReadSettings ( const pandora::TiXmlHandle  xmlHandle)
private

Definition at line 259 of file TrackSplittingTool.cc.

260 {
261  PANDORA_RETURN_RESULT_IF_AND_IF(
262  STATUS_CODE_SUCCESS, STATUS_CODE_NOT_FOUND, !=, XmlHelper::ReadValue(xmlHandle, "MinMatchedFraction", m_minMatchedFraction));
263 
264  PANDORA_RETURN_RESULT_IF_AND_IF(STATUS_CODE_SUCCESS, STATUS_CODE_NOT_FOUND, !=,
265  XmlHelper::ReadValue(xmlHandle, "MinMatchedSamplingPoints", m_minMatchedSamplingPoints));
266 
267  PANDORA_RETURN_RESULT_IF_AND_IF(
268  STATUS_CODE_SUCCESS, STATUS_CODE_NOT_FOUND, !=, XmlHelper::ReadValue(xmlHandle, "MinXOverlapFraction", m_minXOverlapFraction));
269 
270  PANDORA_RETURN_RESULT_IF_AND_IF(STATUS_CODE_SUCCESS, STATUS_CODE_NOT_FOUND, !=,
271  XmlHelper::ReadValue(xmlHandle, "MinMatchedSamplingPointRatio", m_minMatchedSamplingPointRatio));
272 
273  PANDORA_RETURN_RESULT_IF_AND_IF(
274  STATUS_CODE_SUCCESS, STATUS_CODE_NOT_FOUND, !=, XmlHelper::ReadValue(xmlHandle, "MaxShortDeltaXFraction", m_maxShortDeltaXFraction));
275 
276  PANDORA_RETURN_RESULT_IF_AND_IF(
277  STATUS_CODE_SUCCESS, STATUS_CODE_NOT_FOUND, !=, XmlHelper::ReadValue(xmlHandle, "MaxAbsoluteShortDeltaX", m_maxAbsoluteShortDeltaX));
278 
279  PANDORA_RETURN_RESULT_IF_AND_IF(
280  STATUS_CODE_SUCCESS, STATUS_CODE_NOT_FOUND, !=, XmlHelper::ReadValue(xmlHandle, "MinLongDeltaXFraction", m_minLongDeltaXFraction));
281 
282  PANDORA_RETURN_RESULT_IF_AND_IF(
283  STATUS_CODE_SUCCESS, STATUS_CODE_NOT_FOUND, !=, XmlHelper::ReadValue(xmlHandle, "MinAbsoluteLongDeltaX", m_minAbsoluteLongDeltaX));
284 
285  PANDORA_RETURN_RESULT_IF_AND_IF(STATUS_CODE_SUCCESS, STATUS_CODE_NOT_FOUND, !=,
286  XmlHelper::ReadValue(xmlHandle, "MinSplitToVertexProjection", m_minSplitToVertexProjection));
287 
288  PANDORA_RETURN_RESULT_IF_AND_IF(STATUS_CODE_SUCCESS, STATUS_CODE_NOT_FOUND, !=,
289  XmlHelper::ReadValue(xmlHandle, "MaxSplitVsFitPositionDistance", m_maxSplitVsFitPositionDistance));
290 
291  return STATUS_CODE_SUCCESS;
292 }
unsigned int m_minMatchedSamplingPoints
The min number of matched sampling points for particle creation.
float m_minSplitToVertexProjection
Min projected distance between split position and either inner or outer vertex of long cluster...
float m_maxAbsoluteShortDeltaX
Max x distance between ends of two short clusters (measured as an absolute distance) ...
float m_minMatchedFraction
The min matched sampling point fraction for particle creation.
float m_minAbsoluteLongDeltaX
Min x distance between ends of short and long clusters (measured as an absolute distance) ...
float m_maxShortDeltaXFraction
Max x distance between ends of two short clusters (measured as fraction of long cluster x length) ...
float m_minLongDeltaXFraction
Min x distance between ends of short and long clusters (measured as fraction of long cluster x length...
float m_minXOverlapFraction
The min x overlap fraction (between long clusters and short cluster vs. shared overlap) ...
unsigned int m_minMatchedSamplingPointRatio
The min ratio between 1st and 2nd highest msps for simple ambiguity resolution.
float m_maxSplitVsFitPositionDistance
Max allowed distance between split position and sliding linear fit position at the split x coordinate...
bool lar_content::TrackSplittingTool::Run ( ThreeViewTransverseTracksAlgorithm *const  pAlgorithm,
TensorType overlapTensor 
)
virtual

Run the algorithm tool.

Parameters
pAlgorithmaddress of the calling algorithm
overlapTensorthe overlap tensor
Returns
whether changes have been made by the tool

Implements lar_content::TransverseTensorTool.

Definition at line 39 of file TrackSplittingTool.cc.

40 {
41  if (PandoraContentApi::GetSettings(*pAlgorithm)->ShouldDisplayAlgorithmInfo())
42  std::cout << "----> Running Algorithm Tool: " << this->GetInstanceName() << ", " << this->GetType() << std::endl;
43 
44  SplitPositionMap splitPositionMap;
45  this->FindTracks(pAlgorithm, overlapTensor, splitPositionMap);
46 
47  const bool splitsMade(pAlgorithm->MakeClusterSplits(splitPositionMap));
48  return splitsMade;
49 }
void FindTracks(ThreeViewTransverseTracksAlgorithm *const pAlgorithm, const TensorType &overlapTensor, SplitPositionMap &splitPositionMap) const
Find remaining tracks, hidden by spurious track segments (and maybe other ambiguities) in the tensor...
std::unordered_map< const pandora::Cluster *, pandora::CartesianPointVector > SplitPositionMap
BEGIN_PROLOG could also be cout
void lar_content::TrackSplittingTool::SelectElements ( const TensorType::ElementList elementList,
const pandora::ClusterSet &  usedClusters,
IteratorList iteratorList 
) const
private

Select a list of the relevant elements from a set of connected tensor elements.

Parameters
elementListthe full list of connected tensor elements
usedClustersthe list of clusters already marked as to be added to a pfo
iteratorListto receive a list of iterators to long track-like elements

Definition at line 95 of file TrackSplittingTool.cc.

96 {
97  for (TensorType::ElementList::const_iterator eIter = elementList.begin(); eIter != elementList.end(); ++eIter)
98  {
99  if (usedClusters.count(eIter->GetClusterU()) || usedClusters.count(eIter->GetClusterV()) || usedClusters.count(eIter->GetClusterW()))
100  continue;
101 
102  if (eIter->GetOverlapResult().GetMatchedFraction() < m_minMatchedFraction)
103  continue;
104 
105  if (eIter->GetOverlapResult().GetNMatchedSamplingPoints() < m_minMatchedSamplingPoints)
106  continue;
107 
108  const XOverlap &xOverlap(eIter->GetOverlapResult().GetXOverlap());
109  const float longSpan(std::max(xOverlap.GetXSpanU(), std::max(xOverlap.GetXSpanV(), xOverlap.GetXSpanW())));
110  const float shortSpan1(std::min(xOverlap.GetXSpanU(), std::min(xOverlap.GetXSpanV(), xOverlap.GetXSpanW())));
111  const float shortSpan2(
112  ((xOverlap.GetXSpanU() > shortSpan1) && (xOverlap.GetXSpanU() < longSpan))
113  ? xOverlap.GetXSpanU()
114  : ((xOverlap.GetXSpanV() > shortSpan1) && (xOverlap.GetXSpanV() < longSpan)) ? xOverlap.GetXSpanV() : xOverlap.GetXSpanW());
115 
116  if ((shortSpan1 < std::numeric_limits<float>::epsilon()) || (longSpan < std::numeric_limits<float>::epsilon()))
117  continue;
118 
119  if ((shortSpan1 / xOverlap.GetXOverlapSpan()) < m_minXOverlapFraction)
120  continue;
121 
122  if ((shortSpan1 / shortSpan2) < m_minXOverlapFraction)
123  continue;
124 
125  if ((shortSpan1 / longSpan) > m_minXOverlapFraction)
126  continue;
127 
128  iteratorList.push_back(eIter);
129  }
130 }
unsigned int m_minMatchedSamplingPoints
The min number of matched sampling points for particle creation.
float m_minMatchedFraction
The min matched sampling point fraction for particle creation.
float m_minXOverlapFraction
The min x overlap fraction (between long clusters and short cluster vs. shared overlap) ...

Member Data Documentation

float lar_content::TrackSplittingTool::m_maxAbsoluteShortDeltaX
private

Max x distance between ends of two short clusters (measured as an absolute distance)

Definition at line 101 of file TrackSplittingTool.h.

float lar_content::TrackSplittingTool::m_maxShortDeltaXFraction
private

Max x distance between ends of two short clusters (measured as fraction of long cluster x length)

Definition at line 100 of file TrackSplittingTool.h.

float lar_content::TrackSplittingTool::m_maxSplitVsFitPositionDistance
private

Max allowed distance between split position and sliding linear fit position at the split x coordinate.

Definition at line 105 of file TrackSplittingTool.h.

float lar_content::TrackSplittingTool::m_minAbsoluteLongDeltaX
private

Min x distance between ends of short and long clusters (measured as an absolute distance)

Definition at line 103 of file TrackSplittingTool.h.

float lar_content::TrackSplittingTool::m_minLongDeltaXFraction
private

Min x distance between ends of short and long clusters (measured as fraction of long cluster x length)

Definition at line 102 of file TrackSplittingTool.h.

float lar_content::TrackSplittingTool::m_minMatchedFraction
private

The min matched sampling point fraction for particle creation.

Definition at line 95 of file TrackSplittingTool.h.

unsigned int lar_content::TrackSplittingTool::m_minMatchedSamplingPointRatio
private

The min ratio between 1st and 2nd highest msps for simple ambiguity resolution.

Definition at line 98 of file TrackSplittingTool.h.

unsigned int lar_content::TrackSplittingTool::m_minMatchedSamplingPoints
private

The min number of matched sampling points for particle creation.

Definition at line 96 of file TrackSplittingTool.h.

float lar_content::TrackSplittingTool::m_minSplitToVertexProjection
private

Min projected distance between split position and either inner or outer vertex of long cluster.

Definition at line 104 of file TrackSplittingTool.h.

float lar_content::TrackSplittingTool::m_minXOverlapFraction
private

The min x overlap fraction (between long clusters and short cluster vs. shared overlap)

Definition at line 97 of file TrackSplittingTool.h.


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