LArSoft  v06_85_00
Liquid Argon Software toolkit - http://larsoft.org/
lar_content::ThreeDKinkBaseTool Class Referenceabstract

ThreeDKinkBaseTool class. More...

#include "ThreeDKinkBaseTool.h"

Inheritance diagram for lar_content::ThreeDKinkBaseTool:
lar_content::TransverseTensorTool lar_content::OvershootTracksTool lar_content::UndershootTracksTool

Classes

class  Modification
 Modification class. More...
 

Public Types

typedef ThreeDTransverseTracksAlgorithm::TensorType TensorType
 
typedef std::vector< TensorType::ElementList::const_iteratorIteratorList
 

Public Member Functions

 ThreeDKinkBaseTool (const unsigned int nCommonClusters)
 Constructor. More...
 
virtual ~ThreeDKinkBaseTool ()
 Destructor. More...
 
bool Run (ThreeDTransverseTracksAlgorithm *const pAlgorithm, TensorType &overlapTensor)
 Run the algorithm tool. More...
 

Protected Types

typedef std::vector< ModificationModificationList
 

Protected Member Functions

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 identification. More...
 
virtual void GetIteratorListModifications (ThreeDTransverseTracksAlgorithm *const pAlgorithm, const IteratorList &iteratorList, ModificationList &modificationList) const =0
 Get modification objects for a specific elements of the tensor, identifying required splits and merges for clusters. More...
 
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. More...
 
pandora::StatusCode ReadSettings (const pandora::TiXmlHandle xmlHandle)
 

Static Protected Member Functions

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) More...
 

Protected Attributes

unsigned int m_nCommonClusters
 The number of common clusters. More...
 
bool m_majorityRulesMode
 Whether to run in majority rules mode (always split overshoots, always merge undershoots) More...
 
float m_minMatchedFraction
 The min matched sampling point fraction for use as a key tensor element. More...
 
unsigned int m_minMatchedSamplingPoints
 The min number of matched sampling points for use as a key tensor element. More...
 
float m_minLongitudinalImpactParameter
 The min longitudinal impact parameter for connecting accompanying clusters. More...
 
int m_nLayersForKinkSearch
 The number of sliding fit layers to step in the kink search. More...
 
float m_additionalXStepForKinkSearch
 An additional (safety) step to tack-on when choosing x sampling points. More...
 

Private Member Functions

void GetModifications (ThreeDTransverseTracksAlgorithm *const pAlgorithm, const TensorType &overlapTensor, ModificationList &modificationList) const
 Get modification objects, identifying required splits and merges for clusters. More...
 
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 clustering. More...
 
bool ApplyChanges (ThreeDTransverseTracksAlgorithm *const pAlgorithm, const ModificationList &modificationList) const
 Apply the changes cached in a modification list and update the tensor accordingly. More...
 

Detailed Description

ThreeDKinkBaseTool class.

Definition at line 21 of file ThreeDKinkBaseTool.h.

Member Typedef Documentation

Definition at line 50 of file ThreeDKinkBaseTool.h.

Constructor & Destructor Documentation

lar_content::ThreeDKinkBaseTool::ThreeDKinkBaseTool ( const unsigned int  nCommonClusters)

Constructor.

Parameters
nCommonClustersthe number of common clusters to select

Definition at line 22 of file ThreeDKinkBaseTool.cc.

References m_nCommonClusters.

22  :
23  m_nCommonClusters(nCommonClusters),
24  m_majorityRulesMode(false),
30 {
31  if (!((1 == m_nCommonClusters) || (2 == m_nCommonClusters)))
32  throw StatusCodeException(STATUS_CODE_INVALID_PARAMETER);
33 }
unsigned int m_nCommonClusters
The number of common clusters.
TFile f
Definition: plotHisto.C:6
int m_nLayersForKinkSearch
The number of sliding fit layers to step in the kink search.
float m_additionalXStepForKinkSearch
An additional (safety) step to tack-on when choosing x sampling points.
unsigned int m_minMatchedSamplingPoints
The min number of matched sampling points for use as a key tensor element.
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.
float m_minMatchedFraction
The min matched sampling point fraction for use as a key tensor element.
lar_content::ThreeDKinkBaseTool::~ThreeDKinkBaseTool ( )
virtual

Destructor.

Definition at line 37 of file ThreeDKinkBaseTool.cc.

38 {
39 }

Member Function Documentation

bool lar_content::ThreeDKinkBaseTool::ApplyChanges ( ThreeDTransverseTracksAlgorithm *const  pAlgorithm,
const ModificationList modificationList 
) const
private

Apply the changes cached in a modification list and update the tensor accordingly.

Parameters
pAlgorithmaddress of the calling algorithm
modificationListthe modification list
Returns
whether changes to the tensor have been made

Definition at line 187 of file ThreeDKinkBaseTool.cc.

References lar_content::ThreeDBaseAlgorithm< T >::MakeClusterMerges(), lar_content::ThreeDTracksBaseAlgorithm< T >::MakeClusterSplits(), and lar_content::LArClusterHelper::SortByNHits().

Referenced by Run().

188 {
189  ClusterMergeMap consolidatedMergeMap;
190  SplitPositionMap consolidatedSplitMap;
191 
192  for (const Modification &modification : modificationList)
193  {
194  ClusterList parentClusters;
195  for (const auto &mapEntry : modification.m_clusterMergeMap) parentClusters.push_back(mapEntry.first);
196  parentClusters.sort(LArClusterHelper::SortByNHits);
197 
198  for (const Cluster *const pParentCluster : parentClusters)
199  {
200  const ClusterList &daughterClusters(modification.m_clusterMergeMap.at(pParentCluster));
201 
202  for (const Cluster *const pDaughterCluster : daughterClusters)
203  {
204  if (consolidatedMergeMap.count(pDaughterCluster))
205  throw StatusCodeException(STATUS_CODE_FAILURE);
206  }
207 
208  ClusterList &targetClusterList(consolidatedMergeMap[pParentCluster]);
209  targetClusterList.insert(targetClusterList.end(), daughterClusters.begin(), daughterClusters.end());
210  }
211 
212  ClusterList splitClusters;
213  for (const auto &mapEntry : modification.m_splitPositionMap) splitClusters.push_back(mapEntry.first);
214  splitClusters.sort(LArClusterHelper::SortByNHits);
215 
216  for (const Cluster *const pSplitCluster : splitClusters)
217  {
218  const CartesianPointVector &splitPositions(modification.m_splitPositionMap.at(pSplitCluster));
219 
220  CartesianPointVector &cartesianPointVector(consolidatedSplitMap[pSplitCluster]);
221  cartesianPointVector.insert(cartesianPointVector.end(), splitPositions.begin(), splitPositions.end());
222  }
223  }
224 
225  bool changesMade(false);
226  changesMade |= pAlgorithm->MakeClusterMerges(consolidatedMergeMap);
227  changesMade |= pAlgorithm->MakeClusterSplits(consolidatedSplitMap);
228 
229  return changesMade;
230 }
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.
std::unordered_map< const pandora::Cluster *, pandora::CartesianPointVector > SplitPositionMap
std::unordered_map< const pandora::Cluster *, pandora::ClusterList > ClusterMergeMap
virtual void lar_content::ThreeDKinkBaseTool::GetIteratorListModifications ( ThreeDTransverseTracksAlgorithm *const  pAlgorithm,
const IteratorList iteratorList,
ModificationList modificationList 
) const
protectedpure virtual

Get modification objects for a specific elements of the tensor, identifying required splits and merges for clusters.

Parameters
pAlgorithmaddress of the calling algorithm
iteratorListlist of iterators to relevant tensor elements
modificationListto be populated with modifications

Implemented in lar_content::OvershootTracksTool, and lar_content::UndershootTracksTool.

Referenced by GetModifications().

void lar_content::ThreeDKinkBaseTool::GetModifications ( ThreeDTransverseTracksAlgorithm *const  pAlgorithm,
const TensorType overlapTensor,
ModificationList modificationList 
) const
private

Get modification objects, identifying required splits and merges for clusters.

Parameters
pAlgorithmaddress of the calling algorithm
overlapTensorthe overlap tensor
modificationListto be populated with modifications

Definition at line 140 of file ThreeDKinkBaseTool.cc.

References lar_content::OverlapTensor< T >::GetConnectedElements(), GetIteratorListModifications(), lar_content::OverlapTensor< T >::GetSortedKeyClusters(), PassesElementCuts(), and SelectTensorElements().

Referenced by Run().

141 {
142  ClusterSet usedClusters;
143  ClusterVector sortedKeyClusters;
144  overlapTensor.GetSortedKeyClusters(sortedKeyClusters);
145 
146  for (const Cluster *const pKeyCluster : sortedKeyClusters)
147  {
148  if (!pKeyCluster->IsAvailable())
149  continue;
150 
151  unsigned int nU(0), nV(0), nW(0);
152  TensorType::ElementList elementList;
153  overlapTensor.GetConnectedElements(pKeyCluster, true, elementList, nU, nV, nW);
154 
155  if (nU * nV * nW < 2)
156  continue;
157 
158  for (TensorType::ElementList::const_iterator eIter = elementList.begin(); eIter != elementList.end(); ++eIter)
159  {
160  if (!this->PassesElementCuts(eIter, usedClusters))
161  continue;
162 
163  IteratorList iteratorList;
164  this->SelectTensorElements(eIter, elementList, usedClusters, iteratorList);
165 
166  if (iteratorList.size() < 2)
167  continue;
168 
169  ModificationList localModificationList;
170  this->GetIteratorListModifications(pAlgorithm, iteratorList, localModificationList);
171 
172  if (localModificationList.empty())
173  continue;
174 
175  for (ModificationList::const_iterator mIter = localModificationList.begin(), mIterEnd = localModificationList.end(); mIter != mIterEnd; ++mIter)
176  {
177  usedClusters.insert(mIter->m_affectedClusters.begin(), mIter->m_affectedClusters.end());
178  }
179 
180  modificationList.insert(modificationList.end(), localModificationList.begin(), localModificationList.end());
181  }
182  }
183 }
std::vector< Modification > ModificationList
std::vector< TensorType::ElementList::const_iterator > IteratorList
virtual void GetIteratorListModifications(ThreeDTransverseTracksAlgorithm *const pAlgorithm, const IteratorList &iteratorList, ModificationList &modificationList) const =0
Get modification objects for a specific elements of the tensor, identifying required splits and merge...
intermediate_table::const_iterator const_iterator
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...
std::vector< art::Ptr< recob::Cluster > > ClusterVector
float lar_content::ThreeDKinkBaseTool::GetXSamplingPoint ( const pandora::CartesianVector &  splitPosition1,
const bool  isForwardInX,
const TwoDSlidingFitResult fitResult1,
const TwoDSlidingFitResult fitResult2,
const TwoDSlidingFitResult fitResult3 
) const
protected

Get a sampling point in x that is common to sliding linear fit objects in three views.

Parameters
splitPosition1the split position in view 1
isForwardInXwhether to work forwards (or backwards) in x
fitResult1the sliding fit result in view 1
fitResult2the sliding fit result in view 2
fitResult3the sliding fit result in view 3
Returns
the sampling point

Definition at line 59 of file ThreeDKinkBaseTool.cc.

References f, lar_content::TwoDSlidingFitResult::GetGlobalFitPosition(), lar_content::TwoDSlidingFitResult::GetL(), lar_content::TwoDSlidingFitResult::GetLayer(), lar_content::TwoDSlidingFitResult::GetLocalPosition(), lar_content::TwoDSlidingFitResult::GetMaxLayer(), lar_content::TwoDSlidingFitResult::GetMinAndMaxX(), lar_content::TwoDSlidingFitResult::GetMinLayer(), m_additionalXStepForKinkSearch, m_nLayersForKinkSearch, max, and min.

Referenced by lar_content::UndershootTracksTool::IsThreeDKink(), and lar_content::OvershootTracksTool::IsThreeDKink().

61 {
62  // Nearest common x position
66  fitResult1.GetMinAndMaxX(xMin1, xMax1);
67  fitResult2.GetMinAndMaxX(xMin2, xMax2);
68  fitResult3.GetMinAndMaxX(xMin3, xMax3);
69 
70  const float commonX(isForwardInX ? std::max(xMin1, std::max(xMin2, xMin3)) : std::min(xMax1, std::min(xMax2, xMax3)));
71 
72  if (isForwardInX && ((commonX > xMax1) || (commonX > xMax2) || (commonX > xMax3)))
73  throw StatusCodeException(STATUS_CODE_NOT_FOUND);
74 
75  if (!isForwardInX && ((commonX < xMin1) || (commonX < xMin2) || (commonX < xMin3)))
76  throw StatusCodeException(STATUS_CODE_NOT_FOUND);
77 
78  // Layer step x position
79  float rL1(0.f), rT1(0.f);
80  fitResult1.GetLocalPosition(splitPosition1, rL1, rT1);
81  const int splitLayer(fitResult1.GetLayer(rL1));
82 
83  const int lowLayer(std::max(fitResult1.GetMinLayer(), std::min(fitResult1.GetMaxLayer(), splitLayer - m_nLayersForKinkSearch)));
84  const int highLayer(std::max(fitResult1.GetMinLayer(), std::min(fitResult1.GetMaxLayer(), splitLayer + m_nLayersForKinkSearch)));
85 
86  CartesianVector minus(0.f, 0.f, 0.f), plus(0.f, 0.f, 0.f);
87  PANDORA_THROW_RESULT_IF(STATUS_CODE_SUCCESS, !=, fitResult1.GetGlobalFitPosition(fitResult1.GetL(lowLayer), minus));
88  PANDORA_THROW_RESULT_IF(STATUS_CODE_SUCCESS, !=, fitResult1.GetGlobalFitPosition(fitResult1.GetL(highLayer), plus));
89 
90  if (minus.GetX() > plus.GetX())
91  {
92  CartesianVector temporary(minus);
93  minus = plus;
94  plus = temporary;
95  }
96 
97  const float layerStepX(isForwardInX ? plus.GetX() : minus.GetX());
98 
99  // Final x position selection
100  const float chosenX(isForwardInX ? std::max(layerStepX, commonX) : std::min(layerStepX, commonX));
101  const float finalX(isForwardInX ? chosenX + m_additionalXStepForKinkSearch : chosenX - m_additionalXStepForKinkSearch);
102  return finalX;
103 }
TFile f
Definition: plotHisto.C:6
Int_t max
Definition: plot.C:27
int m_nLayersForKinkSearch
The number of sliding fit layers to step in the kink search.
float m_additionalXStepForKinkSearch
An additional (safety) step to tack-on when choosing x sampling points.
Int_t min
Definition: plot.C:26
bool lar_content::ThreeDKinkBaseTool::IsALowestInX ( const LArPointingCluster pointingClusterA,
const LArPointingCluster pointingClusterB 
)
staticprotected

Whether pointing cluster labelled A extends to lowest x positions (as opposed to that labelled B)

Parameters
pointingClusterApointing cluster A
pointingClusterBpointing cluster B

Definition at line 107 of file ThreeDKinkBaseTool.cc.

References lar_content::LArPointingCluster::GetInnerVertex(), lar_content::LArPointingCluster::GetOuterVertex(), and lar_content::LArPointingCluster::Vertex::GetPosition().

Referenced by lar_content::UndershootTracksTool::GetIteratorListModifications(), and lar_content::OvershootTracksTool::GetIteratorListModifications().

108 {
109  if ((pointingClusterA.GetInnerVertex().GetPosition().GetX() < pointingClusterB.GetInnerVertex().GetPosition().GetX()) &&
110  (pointingClusterA.GetInnerVertex().GetPosition().GetX() < pointingClusterB.GetOuterVertex().GetPosition().GetX()) )
111  {
112  return true;
113  }
114 
115  if ((pointingClusterA.GetOuterVertex().GetPosition().GetX() < pointingClusterB.GetInnerVertex().GetPosition().GetX()) &&
116  (pointingClusterA.GetOuterVertex().GetPosition().GetX() < pointingClusterB.GetOuterVertex().GetPosition().GetX()) )
117  {
118  return true;
119  }
120 
121  return false;
122 }
bool lar_content::ThreeDKinkBaseTool::PassesElementCuts ( TensorType::ElementList::const_iterator  eIter,
const pandora::ClusterSet &  usedClusters 
) const
protectedvirtual

Whether a provided (iterator to a) tensor element passes the selection cuts for overshoot identification.

Parameters
eIterthe iterator to the tensor element
usedClustersthe list of used clusters

Definition at line 43 of file ThreeDKinkBaseTool.cc.

References m_minMatchedFraction, and m_minMatchedSamplingPoints.

Referenced by GetModifications(), and SelectTensorElements().

44 {
45  if (usedClusters.count(eIter->GetClusterU()) || usedClusters.count(eIter->GetClusterV()) || usedClusters.count(eIter->GetClusterW()))
46  return false;
47 
48  if (eIter->GetOverlapResult().GetMatchedFraction() < m_minMatchedFraction)
49  return false;
50 
51  if (eIter->GetOverlapResult().GetNMatchedSamplingPoints() < m_minMatchedSamplingPoints)
52  return false;
53 
54  return true;
55 }
unsigned int m_minMatchedSamplingPoints
The min number of matched sampling points for use as a key tensor element.
float m_minMatchedFraction
The min matched sampling point fraction for use as a key tensor element.
StatusCode lar_content::ThreeDKinkBaseTool::ReadSettings ( const pandora::TiXmlHandle  xmlHandle)
protected

Definition at line 274 of file ThreeDKinkBaseTool.cc.

References m_additionalXStepForKinkSearch, m_majorityRulesMode, m_minLongitudinalImpactParameter, m_minMatchedFraction, m_minMatchedSamplingPoints, and m_nLayersForKinkSearch.

Referenced by lar_content::UndershootTracksTool::ReadSettings(), and lar_content::OvershootTracksTool::ReadSettings().

275 {
276  PANDORA_RETURN_RESULT_IF_AND_IF(STATUS_CODE_SUCCESS, STATUS_CODE_NOT_FOUND, !=, XmlHelper::ReadValue(xmlHandle,
277  "MajorityRulesMode", m_majorityRulesMode));
278 
279  PANDORA_RETURN_RESULT_IF_AND_IF(STATUS_CODE_SUCCESS, STATUS_CODE_NOT_FOUND, !=, XmlHelper::ReadValue(xmlHandle,
280  "MinMatchedFraction", m_minMatchedFraction));
281 
282  PANDORA_RETURN_RESULT_IF_AND_IF(STATUS_CODE_SUCCESS, STATUS_CODE_NOT_FOUND, !=, XmlHelper::ReadValue(xmlHandle,
283  "MinMatchedSamplingPoints", m_minMatchedSamplingPoints));
284 
285  PANDORA_RETURN_RESULT_IF_AND_IF(STATUS_CODE_SUCCESS, STATUS_CODE_NOT_FOUND, !=, XmlHelper::ReadValue(xmlHandle,
286  "MinLongitudinalImpactParameter", m_minLongitudinalImpactParameter));
287 
288  PANDORA_RETURN_RESULT_IF_AND_IF(STATUS_CODE_SUCCESS, STATUS_CODE_NOT_FOUND, !=, XmlHelper::ReadValue(xmlHandle,
289  "NLayersForKinkSearch", m_nLayersForKinkSearch));
290 
291  PANDORA_RETURN_RESULT_IF_AND_IF(STATUS_CODE_SUCCESS, STATUS_CODE_NOT_FOUND, !=, XmlHelper::ReadValue(xmlHandle,
292  "AdditionalXStepForKinkSearch", m_additionalXStepForKinkSearch));
293 
294  return STATUS_CODE_SUCCESS;
295 }
int m_nLayersForKinkSearch
The number of sliding fit layers to step in the kink search.
float m_additionalXStepForKinkSearch
An additional (safety) step to tack-on when choosing x sampling points.
unsigned int m_minMatchedSamplingPoints
The min number of matched sampling points for use as a key tensor element.
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.
float m_minMatchedFraction
The min matched sampling point fraction for use as a key tensor element.
bool lar_content::ThreeDKinkBaseTool::Run ( ThreeDTransverseTracksAlgorithm *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 126 of file ThreeDKinkBaseTool.cc.

References ApplyChanges(), and GetModifications().

127 {
128  if (PandoraContentApi::GetSettings(*pAlgorithm)->ShouldDisplayAlgorithmInfo())
129  std::cout << "----> Running Algorithm Tool: " << this->GetInstanceName() << ", " << this->GetType() << std::endl;
130 
131  ModificationList modificationList;
132  this->GetModifications(pAlgorithm, overlapTensor, modificationList);
133  const bool changesMade(this->ApplyChanges(pAlgorithm, modificationList));
134 
135  return changesMade;
136 }
std::vector< Modification > ModificationList
bool ApplyChanges(ThreeDTransverseTracksAlgorithm *const pAlgorithm, const ModificationList &modificationList) const
Apply the changes cached in a modification list and update the tensor accordingly.
void GetModifications(ThreeDTransverseTracksAlgorithm *const pAlgorithm, const TensorType &overlapTensor, ModificationList &modificationList) const
Get modification objects, identifying required splits and merges for clusters.
void lar_content::ThreeDKinkBaseTool::SelectTensorElements ( TensorType::ElementList::const_iterator  eIter,
const TensorType::ElementList elementList,
const pandora::ClusterSet &  usedClusters,
IteratorList iteratorList 
) const
private

Select elements representing possible components of interest due to overshoots or undershoots in clustering.

Parameters
eIteriterator to a candidate element
elementListthe provided element list
usedClustersthe list of used clusters
iteratorListto receive a list of iterators to relevant elements

Definition at line 234 of file ThreeDKinkBaseTool.cc.

References m_nCommonClusters, and PassesElementCuts().

Referenced by GetModifications().

236 {
237  iteratorList.push_back(eIter);
238 
239  for (TensorType::ElementList::const_iterator eIter2 = elementList.begin(); eIter2 != elementList.end(); ++eIter2)
240  {
241  if (eIter == eIter2)
242  continue;
243 
244  if (!this->PassesElementCuts(eIter2, usedClusters))
245  continue;
246 
247  for (IteratorList::const_iterator iIter = iteratorList.begin(); iIter != iteratorList.end(); ++iIter)
248  {
249  if ((*iIter) == eIter2)
250  continue;
251 
252  unsigned int nMatchedClusters(0);
253 
254  if ((*iIter)->GetClusterU() == eIter2->GetClusterU())
255  ++nMatchedClusters;
256 
257  if ((*iIter)->GetClusterV() == eIter2->GetClusterV())
258  ++nMatchedClusters;
259 
260  if ((*iIter)->GetClusterW() == eIter2->GetClusterW())
261  ++nMatchedClusters;
262 
263  if (m_nCommonClusters == nMatchedClusters)
264  {
265  iteratorList.push_back(eIter2);
266  return;
267  }
268  }
269  }
270 }
unsigned int m_nCommonClusters
The number of common clusters.
intermediate_table::const_iterator const_iterator
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...

Member Data Documentation

float lar_content::ThreeDKinkBaseTool::m_additionalXStepForKinkSearch
protected

An additional (safety) step to tack-on when choosing x sampling points.

Definition at line 100 of file ThreeDKinkBaseTool.h.

Referenced by GetXSamplingPoint(), and ReadSettings().

bool lar_content::ThreeDKinkBaseTool::m_majorityRulesMode
protected

Whether to run in majority rules mode (always split overshoots, always merge undershoots)

Definition at line 95 of file ThreeDKinkBaseTool.h.

Referenced by lar_content::UndershootTracksTool::GetIteratorListModifications(), lar_content::OvershootTracksTool::GetIteratorListModifications(), and ReadSettings().

float lar_content::ThreeDKinkBaseTool::m_minLongitudinalImpactParameter
protected

The min longitudinal impact parameter for connecting accompanying clusters.

Definition at line 98 of file ThreeDKinkBaseTool.h.

Referenced by lar_content::UndershootTracksTool::GetIteratorListModifications(), lar_content::OvershootTracksTool::PassesVertexCuts(), and ReadSettings().

float lar_content::ThreeDKinkBaseTool::m_minMatchedFraction
protected

The min matched sampling point fraction for use as a key tensor element.

Definition at line 96 of file ThreeDKinkBaseTool.h.

Referenced by PassesElementCuts(), and ReadSettings().

unsigned int lar_content::ThreeDKinkBaseTool::m_minMatchedSamplingPoints
protected

The min number of matched sampling points for use as a key tensor element.

Definition at line 97 of file ThreeDKinkBaseTool.h.

Referenced by PassesElementCuts(), and ReadSettings().

unsigned int lar_content::ThreeDKinkBaseTool::m_nCommonClusters
protected

The number of common clusters.

Definition at line 94 of file ThreeDKinkBaseTool.h.

Referenced by SelectTensorElements(), and ThreeDKinkBaseTool().

int lar_content::ThreeDKinkBaseTool::m_nLayersForKinkSearch
protected

The number of sliding fit layers to step in the kink search.

Definition at line 99 of file ThreeDKinkBaseTool.h.

Referenced by GetXSamplingPoint(), and ReadSettings().


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