LArSoft  v09_90_00
Liquid Argon Software toolkit - https://larsoft.org/
lar_content::ThreeViewTransverseTracksAlgorithm Class Reference

ThreeViewTransverseTracksAlgorithm class. More...

#include "ThreeViewTransverseTracksAlgorithm.h"

Inheritance diagram for lar_content::ThreeViewTransverseTracksAlgorithm:
lar_content::NViewTrackMatchingAlgorithm< ThreeViewMatchingControl< TransverseOverlapResult > > lar_content::NViewMatchingAlgorithm< ThreeViewMatchingControl< TransverseOverlapResult > > lar_content::MatchingBaseAlgorithm

Public Types

typedef NViewTrackMatchingAlgorithm< ThreeViewMatchingControl< TransverseOverlapResult > > BaseAlgorithm
 
typedef ThreeViewMatchingControl< TransverseOverlapResultMatchingType
 

Public Member Functions

 ThreeViewTransverseTracksAlgorithm ()
 Default constructor. More...
 
const TwoDSlidingFitResultGetCachedSlidingFitResult (const pandora::Cluster *const pCluster) const
 Get a sliding fit result from the algorithm cache. More...
 
unsigned int GetSlidingFitWindow () const
 Get the layer window for the sliding linear fits. More...
 
virtual bool MakeClusterSplits (const SplitPositionMap &splitPositionMap)
 Make cluster splits. More...
 
virtual bool MakeClusterSplit (const pandora::CartesianVector &splitPosition, const pandora::Cluster *&pCurrentCluster, const pandora::Cluster *&pLowXCluster, const pandora::Cluster *&pHighXCluster) const
 Make a cluster split. More...
 
virtual void UpdateForNewCluster (const pandora::Cluster *const pNewCluster)
 Update to reflect addition of a new cluster to the problem space. More...
 
virtual void UpdateUponDeletion (const pandora::Cluster *const pDeletedCluster)
 Update to reflect cluster deletion. More...
 
virtual void SelectInputClusters (const pandora::ClusterList *const pInputClusterList, pandora::ClusterList &selectedClusterList) const
 Select a subset of input clusters for processing in this algorithm. More...
 
virtual void PrepareInputClusters (pandora::ClusterList &preparedClusterList)
 Perform any preparatory steps required on the input clusters, e.g. caching expensive fit results. More...
 
virtual void SetPfoParticleId (PandoraContentApi::ParticleFlowObject::Parameters &pfoParameters) const
 Set pfo particle id. More...
 
const std::string & GetClusterListName (const pandora::HitType hitType) const
 Get the cluster list name corresponding to a specified hit type. More...
 
const pandora::ClusterList & GetInputClusterList (const pandora::HitType hitType) const
 Get the input cluster list corresponding to a specified hit type. More...
 
const pandora::ClusterList & GetSelectedClusterList (const pandora::HitType hitType) const
 Get the selected cluster list corresponding to a specified hit type. More...
 
virtual bool MakeClusterMerges (const ClusterMergeMap &clusterMergeMap)
 Merge clusters together. More...
 
virtual bool CreateThreeDParticles (const ProtoParticleVector &protoParticleVector)
 Create particles using findings from recent algorithm processing. More...
 
virtual void SetPfoParameters (const ProtoParticle &protoParticle, PandoraContentApi::ParticleFlowObject::Parameters &pfoParameters) const
 Set Pfo properties. More...
 

Static Public Member Functions

static bool SortSplitPositions (const pandora::CartesianVector &lhs, const pandora::CartesianVector &rhs)
 Sort split position cartesian vectors by increasing x coordinate. More...
 

Protected Member Functions

void AddToSlidingFitCache (const pandora::Cluster *const pCluster)
 Add a new sliding fit result, for the specified cluster, to the algorithm cache. More...
 
void RemoveFromSlidingFitCache (const pandora::Cluster *const pCluster)
 Remova an existing sliding fit result, for the specified cluster, from the algorithm cache. More...
 
virtual void TidyUp ()
 Tidy member variables in derived class. More...
 
MatchingTypeGetMatchingControl ()
 Get the matching control. More...
 
virtual void SelectAllInputClusters ()
 Select a subset of input clusters for processing in this algorithm. More...
 
virtual void PrepareAllInputClusters ()
 Perform any preparatory steps required, e.g. caching expensive fit results for clusters. More...
 
virtual void PerformMainLoop ()
 Main loop over cluster combinations in order to populate the overlap container. Responsible for calling CalculateOverlapResult. More...
 

Protected Attributes

MatchingType m_matchingControl
 The matching control. More...
 

Private Types

typedef std::map< unsigned int, TransverseOverlapResultFitSegmentToOverlapResultMap
 
typedef std::map< unsigned int, FitSegmentToOverlapResultMapFitSegmentMatrix
 
typedef std::map< unsigned int, FitSegmentMatrixFitSegmentTensor
 
typedef std::vector< TransverseTensorTool * > TensorToolVector
 

Private Member Functions

void CalculateOverlapResult (const pandora::Cluster *const pClusterU, const pandora::Cluster *const pClusterV, const pandora::Cluster *const pClusterW)
 Calculate cluster overlap result and store in container. More...
 
pandora::StatusCode CalculateOverlapResult (const pandora::Cluster *const pClusterU, const pandora::Cluster *const pClusterV, const pandora::Cluster *const pClusterW, TransverseOverlapResult &overlapResult)
 Calculate the overlap result for given group of clusters. More...
 
void GetFitSegmentTensor (const TwoDSlidingFitResult &slidingFitResultU, const TwoDSlidingFitResult &slidingFitResultV, const TwoDSlidingFitResult &slidingFitResultW, FitSegmentTensor &fitSegmentTensor) const
 Get the number of matched points for three fit segments and accompanying sliding fit results. More...
 
pandora::StatusCode GetSegmentOverlap (const FitSegment &fitSegmentU, const FitSegment &fitSegmentV, const FitSegment &fitSegmentW, const TwoDSlidingFitResult &slidingFitResultU, const TwoDSlidingFitResult &slidingFitResultV, const TwoDSlidingFitResult &slidingFitResultW, TransverseOverlapResult &transverseOverlapResult) const
 Get the overlap result for three fit segments and the accompanying sliding fit results. More...
 
void GetBestOverlapResult (const FitSegmentTensor &fitSegmentTensor, TransverseOverlapResult &bestTransverseOverlapResult) const
 Get the best overlap result, by examining the fit segment tensor. More...
 
void GetPreviousOverlapResults (const unsigned int indexU, const unsigned int indexV, const unsigned int indexW, FitSegmentTensor &fitSegmentSumTensor, TransverseOverlapResultVector &transverseOverlapResultVector) const
 Get track overlap results for possible connected segments. More...
 
void ExamineOverlapContainer ()
 Examine contents of overlap container, collect together best-matching 2D particles and modify clusters as required. More...
 
pandora::StatusCode ReadSettings (const pandora::TiXmlHandle xmlHandle)
 

Private Attributes

TensorToolVector m_algorithmToolVector
 The algorithm tool vector. More...
 
unsigned int m_nMaxTensorToolRepeats
 The maximum number of repeat loops over tensor tools. More...
 
unsigned int m_maxFitSegmentIndex
 The maximum number of fit segments used when identifying best overlap result. More...
 
float m_pseudoChi2Cut
 The pseudo chi2 cut to identify matched sampling points. More...
 
float m_minSegmentMatchedFraction
 The minimum segment matched sampling fraction to allow segment grouping. More...
 
unsigned int m_minSegmentMatchedPoints
 The minimum number of matched segment sampling points to allow segment grouping. More...
 
float m_minOverallMatchedFraction
 The minimum matched sampling fraction to allow particle creation. More...
 
unsigned int m_minOverallMatchedPoints
 The minimum number of matched segment sampling points to allow particle creation. More...
 
float m_minSamplingPointsPerLayer
 The minimum number of sampling points per layer to allow particle creation. More...
 

Detailed Description

Member Typedef Documentation

Constructor & Destructor Documentation

lar_content::ThreeViewTransverseTracksAlgorithm::ThreeViewTransverseTracksAlgorithm ( )

Default constructor.

Definition at line 21 of file ThreeViewTransverseTracksAlgorithm.cc.

References CalculateOverlapResult(), f, GetBestOverlapResult(), lar_content::NViewTrackMatchingAlgorithm< ThreeViewMatchingControl< TransverseOverlapResult > >::GetCachedSlidingFitResult(), GetFitSegmentTensor(), lar_content::TrackOverlapResult::GetMatchedFraction(), lar_content::NViewMatchingAlgorithm< ThreeViewMatchingControl< TransverseOverlapResult > >::GetMatchingControl(), lar_content::TwoDSlidingFitResult::GetMaxLayer(), lar_content::TwoDSlidingFitResult::GetMinLayer(), lar_content::TrackOverlapResult::GetNMatchedSamplingPoints(), lar_content::TrackOverlapResult::GetNSamplingPoints(), lar_content::ThreeViewMatchingControl< T >::GetOverlapTensor(), lar_content::TrackOverlapResult::IsInitialized(), m_minOverallMatchedFraction, m_minOverallMatchedPoints, m_minSamplingPointsPerLayer, and lar_content::OverlapTensor< T >::SetOverlapResult().

21  :
24  m_pseudoChi2Cut(3.f),
30 {
31 }
float m_minSegmentMatchedFraction
The minimum segment matched sampling fraction to allow segment grouping.
float m_minOverallMatchedFraction
The minimum matched sampling fraction to allow particle creation.
float m_pseudoChi2Cut
The pseudo chi2 cut to identify matched sampling points.
TFile f
Definition: plotHisto.C:6
float m_minSamplingPointsPerLayer
The minimum number of sampling points per layer to allow particle creation.
unsigned int m_minSegmentMatchedPoints
The minimum number of matched segment sampling points to allow segment grouping.
unsigned int m_maxFitSegmentIndex
The maximum number of fit segments used when identifying best overlap result.
unsigned int m_minOverallMatchedPoints
The minimum number of matched segment sampling points to allow particle creation. ...
unsigned int m_nMaxTensorToolRepeats
The maximum number of repeat loops over tensor tools.

Member Function Documentation

void lar_content::NViewTrackMatchingAlgorithm< ThreeViewMatchingControl< TransverseOverlapResult > >::AddToSlidingFitCache ( const pandora::Cluster *const  pCluster)
protectedinherited

Add a new sliding fit result, for the specified cluster, to the algorithm cache.

Parameters
pClusteraddress of the relevant cluster
void lar_content::ThreeViewTransverseTracksAlgorithm::CalculateOverlapResult ( const pandora::Cluster *const  pCluster1,
const pandora::Cluster *const  pCluster2,
const pandora::Cluster *const  pCluster3 
)
privatevirtual

Calculate cluster overlap result and store in container.

Parameters
pCluster1address of cluster1
pCluster2address of cluster2
pCluster3address of cluster3

Implements lar_content::MatchingBaseAlgorithm.

Referenced by ThreeViewTransverseTracksAlgorithm().

pandora::StatusCode lar_content::ThreeViewTransverseTracksAlgorithm::CalculateOverlapResult ( const pandora::Cluster *const  pClusterU,
const pandora::Cluster *const  pClusterV,
const pandora::Cluster *const  pClusterW,
TransverseOverlapResult overlapResult 
)
private

Calculate the overlap result for given group of clusters.

Parameters
pClusterUthe cluster from the U view
pClusterVthe cluster from the V view
pClusterWthe cluster from the W view
overlapResultto receive the overlap result
Returns
statusCode, faster than throwing in regular use-cases
bool lar_content::MatchingBaseAlgorithm::CreateThreeDParticles ( const ProtoParticleVector protoParticleVector)
virtualinherited

Create particles using findings from recent algorithm processing.

Parameters
protoParticleVectorthe proto particle vector
whetherparticles were created

Definition at line 88 of file MatchingBaseAlgorithm.cc.

Referenced by lar_content::NViewDeltaRayMatchingAlgorithm< T >::CreatePfos(), lar_content::ClearRemnantsTool::CreateThreeDParticles(), lar_content::ClearLongitudinalTracksTool::CreateThreeDParticles(), lar_content::ClearTracksTool::CreateThreeDParticles(), lar_content::TwoViewClearTracksTool::CreateThreeDParticles(), lar_content::ClearTrackFragmentsTool::FindTrackFragments(), lar_content::TwoViewSimpleTracksTool::Run(), lar_content::MissingTrackTool::Run(), lar_content::ConnectedRemnantsTool::Run(), lar_content::MopUpRemnantsTool::Run(), lar_content::MatchedEndPointsTool::Run(), lar_content::SimpleShowersTool::Run(), lar_content::TracksCrossingGapsTool::Run(), lar_content::MissingTrackSegmentTool::Run(), lar_content::LongTracksTool::Run(), lar_content::TwoViewLongTracksTool::Run(), and lar_content::ClearShowersTool::Run().

89 {
90  bool particlesMade(false);
91  const PfoList *pPfoList(nullptr);
92  std::string pfoListName;
93  PANDORA_THROW_RESULT_IF(STATUS_CODE_SUCCESS, !=, PandoraContentApi::CreateTemporaryListAndSetCurrent(*this, pPfoList, pfoListName));
94 
95  for (const ProtoParticle &protoParticle : protoParticleVector)
96  {
97  PandoraContentApi::ParticleFlowObject::Parameters pfoParameters;
98  this->SetPfoParameters(protoParticle, pfoParameters);
99 
100  const ParticleFlowObject *pPfo(nullptr);
101  PANDORA_THROW_RESULT_IF(STATUS_CODE_SUCCESS, !=, PandoraContentApi::ParticleFlowObject::Create(*this, pfoParameters, pPfo));
102  particlesMade = true;
103  }
104 
105  if (!pPfoList->empty())
106  {
107  PANDORA_THROW_RESULT_IF(STATUS_CODE_SUCCESS, !=, PandoraContentApi::SaveList<Pfo>(*this, m_outputPfoListName));
108  PANDORA_THROW_RESULT_IF(STATUS_CODE_SUCCESS, !=, PandoraContentApi::ReplaceCurrentList<Pfo>(*this, m_outputPfoListName));
109  }
110 
111  return particlesMade;
112 }
virtual void SetPfoParameters(const ProtoParticle &protoParticle, PandoraContentApi::ParticleFlowObject::Parameters &pfoParameters) const
Set Pfo properties.
std::string m_outputPfoListName
The output pfo list name.
void lar_content::ThreeViewTransverseTracksAlgorithm::ExamineOverlapContainer ( )
privatevirtual

Examine contents of overlap container, collect together best-matching 2D particles and modify clusters as required.

Implements lar_content::MatchingBaseAlgorithm.

Definition at line 297 of file ThreeViewTransverseTracksAlgorithm.cc.

References m_algorithmToolVector, and m_nMaxTensorToolRepeats.

298 {
299  unsigned int repeatCounter(0);
300 
301  for (TensorToolVector::const_iterator iter = m_algorithmToolVector.begin(), iterEnd = m_algorithmToolVector.end(); iter != iterEnd;)
302  {
303  if ((*iter)->Run(this, this->GetMatchingControl().GetOverlapTensor()))
304  {
305  iter = m_algorithmToolVector.begin();
306 
307  if (++repeatCounter > m_nMaxTensorToolRepeats)
308  break;
309  }
310  else
311  {
312  ++iter;
313  }
314  }
315 }
intermediate_table::const_iterator const_iterator
TensorToolVector m_algorithmToolVector
The algorithm tool vector.
unsigned int m_nMaxTensorToolRepeats
The maximum number of repeat loops over tensor tools.
void lar_content::ThreeViewTransverseTracksAlgorithm::GetBestOverlapResult ( const FitSegmentTensor fitSegmentTensor,
TransverseOverlapResult bestTransverseOverlapResult 
) const
private

Get the best overlap result, by examining the fit segment tensor.

Parameters
fitSegmentTensorthe fit segment tensor
bestTransverseOverlapResultto receive the best transverse overlap result

Definition at line 193 of file ThreeViewTransverseTracksAlgorithm.cc.

References GetPreviousOverlapResults(), lar_content::TrackOverlapResult::IsInitialized(), and m_maxFitSegmentIndex.

Referenced by ThreeViewTransverseTracksAlgorithm().

195 {
196  if (fitSegmentTensor.empty())
197  {
198  bestTransverseOverlapResult = TransverseOverlapResult();
199  return;
200  }
201 
202  unsigned int maxIndexU(0), maxIndexV(0), maxIndexW(0);
203  for (FitSegmentTensor::const_iterator tIter = fitSegmentTensor.begin(), tIterEnd = fitSegmentTensor.end(); tIter != tIterEnd; ++tIter)
204  {
205  maxIndexU = std::max(tIter->first, maxIndexU);
206 
207  for (FitSegmentMatrix::const_iterator mIter = tIter->second.begin(), mIterEnd = tIter->second.end(); mIter != mIterEnd; ++mIter)
208  {
209  maxIndexV = std::max(mIter->first, maxIndexV);
210 
211  for (FitSegmentToOverlapResultMap::const_iterator rIter = mIter->second.begin(), rIterEnd = mIter->second.end(); rIter != rIterEnd; ++rIter)
212  maxIndexW = std::max(rIter->first, maxIndexW);
213  }
214  }
215 
216  // ATTN Protect against longitudinal tracks winding back and forth; can cause large number of memory allocations
217  maxIndexU = std::min(m_maxFitSegmentIndex, maxIndexU);
218  maxIndexV = std::min(m_maxFitSegmentIndex, maxIndexV);
219  maxIndexW = std::min(m_maxFitSegmentIndex, maxIndexW);
220 
221  FitSegmentTensor fitSegmentSumTensor;
222  for (unsigned int indexU = 0; indexU <= maxIndexU; ++indexU)
223  {
224  for (unsigned int indexV = 0; indexV <= maxIndexV; ++indexV)
225  {
226  for (unsigned int indexW = 0; indexW <= maxIndexW; ++indexW)
227  {
228  TransverseOverlapResultVector transverseOverlapResultVector;
229  this->GetPreviousOverlapResults(indexU, indexV, indexW, fitSegmentSumTensor, transverseOverlapResultVector);
230 
232  std::max_element(transverseOverlapResultVector.begin(), transverseOverlapResultVector.end());
233  TransverseOverlapResult maxTransverseOverlapResult(
234  (transverseOverlapResultVector.end() != maxElement) ? *maxElement : TransverseOverlapResult());
235 
236  TransverseOverlapResult thisOverlapResult;
237  if (fitSegmentTensor.count(indexU) && (fitSegmentTensor.find(indexU))->second.count(indexV) &&
238  ((fitSegmentTensor.find(indexU))->second.find(indexV))->second.count(indexW))
239  thisOverlapResult = (((fitSegmentTensor.find(indexU))->second.find(indexV))->second.find(indexW))->second;
240 
241  if (!thisOverlapResult.IsInitialized() && !maxTransverseOverlapResult.IsInitialized())
242  continue;
243 
244  fitSegmentSumTensor[indexU][indexV][indexW] = thisOverlapResult + maxTransverseOverlapResult;
245  }
246  }
247  }
248 
249  for (unsigned int indexU = 0; indexU <= maxIndexU; ++indexU)
250  {
251  for (unsigned int indexV = 0; indexV <= maxIndexV; ++indexV)
252  {
253  for (unsigned int indexW = 0; indexW <= maxIndexW; ++indexW)
254  {
255  const TransverseOverlapResult &transverseOverlapResult(fitSegmentSumTensor[indexU][indexV][indexW]);
256 
257  if (!transverseOverlapResult.IsInitialized())
258  continue;
259 
260  if (transverseOverlapResult > bestTransverseOverlapResult)
261  bestTransverseOverlapResult = transverseOverlapResult;
262  }
263  }
264  }
265 }
std::map< unsigned int, FitSegmentMatrix > FitSegmentTensor
intermediate_table::const_iterator const_iterator
std::vector< TransverseOverlapResult > TransverseOverlapResultVector
void GetPreviousOverlapResults(const unsigned int indexU, const unsigned int indexV, const unsigned int indexW, FitSegmentTensor &fitSegmentSumTensor, TransverseOverlapResultVector &transverseOverlapResultVector) const
Get track overlap results for possible connected segments.
unsigned int m_maxFitSegmentIndex
The maximum number of fit segments used when identifying best overlap result.
second_as<> second
Type of time stored in seconds, in double precision.
Definition: spacetime.h:82
const TwoDSlidingFitResult& lar_content::NViewTrackMatchingAlgorithm< ThreeViewMatchingControl< TransverseOverlapResult > >::GetCachedSlidingFitResult ( const pandora::Cluster *const  pCluster) const
inherited

Get a sliding fit result from the algorithm cache.

Parameters
pClusteraddress of the relevant cluster

Referenced by ThreeViewTransverseTracksAlgorithm().

const std::string& lar_content::NViewMatchingAlgorithm< ThreeViewMatchingControl< TransverseOverlapResult > >::GetClusterListName ( const pandora::HitType  hitType) const
virtualinherited

Get the cluster list name corresponding to a specified hit type.

Parameters
hitTypethe hit type
Returns
the cluster list name

Implements lar_content::MatchingBaseAlgorithm.

void lar_content::ThreeViewTransverseTracksAlgorithm::GetFitSegmentTensor ( const TwoDSlidingFitResult slidingFitResultU,
const TwoDSlidingFitResult slidingFitResultV,
const TwoDSlidingFitResult slidingFitResultW,
FitSegmentTensor fitSegmentTensor 
) const
private

Get the number of matched points for three fit segments and accompanying sliding fit results.

Parameters
slidingFitResultUsliding fit result for u cluster
slidingFitResultVsliding fit result for v cluster
slidingFitResultWsliding fit result for w cluster
fitSegmentTensorthe fit segment tensor

Definition at line 87 of file ThreeViewTransverseTracksAlgorithm.cc.

References lar_content::TwoDSlidingFitResult::GetFitSegmentList(), GetSegmentOverlap(), m_minSegmentMatchedFraction, and m_minSegmentMatchedPoints.

Referenced by ThreeViewTransverseTracksAlgorithm().

89 {
90  FitSegmentList fitSegmentListU(slidingFitResultU.GetFitSegmentList());
91  FitSegmentList fitSegmentListV(slidingFitResultV.GetFitSegmentList());
92  FitSegmentList fitSegmentListW(slidingFitResultW.GetFitSegmentList());
93 
94  for (unsigned int indexU = 0, indexUEnd = fitSegmentListU.size(); indexU < indexUEnd; ++indexU)
95  {
96  const FitSegment &fitSegmentU(fitSegmentListU.at(indexU));
97 
98  for (unsigned int indexV = 0, indexVEnd = fitSegmentListV.size(); indexV < indexVEnd; ++indexV)
99  {
100  const FitSegment &fitSegmentV(fitSegmentListV.at(indexV));
101 
102  for (unsigned int indexW = 0, indexWEnd = fitSegmentListW.size(); indexW < indexWEnd; ++indexW)
103  {
104  const FitSegment &fitSegmentW(fitSegmentListW.at(indexW));
105 
106  TransverseOverlapResult segmentOverlap;
107  if (STATUS_CODE_SUCCESS !=
108  this->GetSegmentOverlap(fitSegmentU, fitSegmentV, fitSegmentW, slidingFitResultU, slidingFitResultV, slidingFitResultW, segmentOverlap))
109  continue;
110 
111  if ((segmentOverlap.GetMatchedFraction() < m_minSegmentMatchedFraction) ||
112  (segmentOverlap.GetNMatchedSamplingPoints() < m_minSegmentMatchedPoints))
113  continue;
114 
115  fitSegmentTensor[indexU][indexV][indexW] = segmentOverlap;
116  }
117  }
118  }
119 }
float m_minSegmentMatchedFraction
The minimum segment matched sampling fraction to allow segment grouping.
std::vector< FitSegment > FitSegmentList
unsigned int m_minSegmentMatchedPoints
The minimum number of matched segment sampling points to allow segment grouping.
pandora::StatusCode GetSegmentOverlap(const FitSegment &fitSegmentU, const FitSegment &fitSegmentV, const FitSegment &fitSegmentW, const TwoDSlidingFitResult &slidingFitResultU, const TwoDSlidingFitResult &slidingFitResultV, const TwoDSlidingFitResult &slidingFitResultW, TransverseOverlapResult &transverseOverlapResult) const
Get the overlap result for three fit segments and the accompanying sliding fit results.
const pandora::ClusterList& lar_content::NViewMatchingAlgorithm< ThreeViewMatchingControl< TransverseOverlapResult > >::GetInputClusterList ( const pandora::HitType  hitType) const
virtualinherited

Get the input cluster list corresponding to a specified hit type.

Parameters
hitTypethe hit type
Returns
the input cluster list

Implements lar_content::MatchingBaseAlgorithm.

Get the matching control.

Referenced by ThreeViewTransverseTracksAlgorithm().

void lar_content::ThreeViewTransverseTracksAlgorithm::GetPreviousOverlapResults ( const unsigned int  indexU,
const unsigned int  indexV,
const unsigned int  indexW,
FitSegmentTensor fitSegmentSumTensor,
TransverseOverlapResultVector transverseOverlapResultVector 
) const
private

Get track overlap results for possible connected segments.

Parameters
indexUthe index u
indexVthe index v
indexWthe index w
transverseOverlapResultVectorthe transverse overlap result vector

Definition at line 269 of file ThreeViewTransverseTracksAlgorithm.cc.

References lar_content::TrackOverlapResult::IsInitialized(), and x1.

Referenced by GetBestOverlapResult().

271 {
272  for (unsigned int iPermutation = 1; iPermutation < 8; ++iPermutation)
273  {
274  const bool decrementU((iPermutation >> 0) & 0x1);
275  const bool decrementV((iPermutation >> 1) & 0x1);
276  const bool decrementW((iPermutation >> 2) & 0x1);
277 
278  if ((decrementU && (0 == indexU)) || (decrementV && (0 == indexV)) || (decrementW && (0 == indexW)))
279  continue;
280 
281  const unsigned int newIndexU(decrementU ? indexU - 1 : indexU);
282  const unsigned int newIndexV(decrementV ? indexV - 1 : indexV);
283  const unsigned int newIndexW(decrementW ? indexW - 1 : indexW);
284 
285  const TransverseOverlapResult &transverseOverlapResult(fitSegmentSumTensor[newIndexU][newIndexV][newIndexW]);
286 
287  if (transverseOverlapResult.IsInitialized())
288  transverseOverlapResultVector.push_back(transverseOverlapResult);
289  }
290 
291  if (transverseOverlapResultVector.empty())
292  transverseOverlapResultVector.push_back(TransverseOverlapResult());
293 }
Float_t x1[n_points_granero]
Definition: compare.C:5
StatusCode lar_content::ThreeViewTransverseTracksAlgorithm::GetSegmentOverlap ( const FitSegment fitSegmentU,
const FitSegment fitSegmentV,
const FitSegment fitSegmentW,
const TwoDSlidingFitResult slidingFitResultU,
const TwoDSlidingFitResult slidingFitResultV,
const TwoDSlidingFitResult slidingFitResultW,
TransverseOverlapResult transverseOverlapResult 
) const
private

Get the overlap result for three fit segments and the accompanying sliding fit results.

Parameters
fitSegmentUthe fit segment u
fitSegmentVthe fit segment v
fitSegmentWthe fit segment w
slidingFitResultUsliding fit result for u cluster
slidingFitResultVsliding fit result for v cluster
slidingFitResultWsliding fit result for w cluster
transverseOverlapResultto receive the transverse overlap result
Returns
statusCode, faster than throwing in regular use-cases

Definition at line 123 of file ThreeViewTransverseTracksAlgorithm.cc.

References f, lar_content::FitSegment::GetEndLayer(), lar_content::FitSegment::GetMaxX(), lar_content::FitSegment::GetMinX(), lar_content::FitSegment::GetStartLayer(), lar_content::TwoDSlidingFitResult::GetTransverseProjection(), m_pseudoChi2Cut, lar_content::LArGeometryHelper::MergeTwoPositions(), n, w, and x.

Referenced by GetFitSegmentTensor().

126 {
127  // Assess x-overlap
128  const float xSpanU(fitSegmentU.GetMaxX() - fitSegmentU.GetMinX());
129  const float xSpanV(fitSegmentV.GetMaxX() - fitSegmentV.GetMinX());
130  const float xSpanW(fitSegmentW.GetMaxX() - fitSegmentW.GetMinX());
131 
132  const float minX(std::max(fitSegmentU.GetMinX(), std::max(fitSegmentV.GetMinX(), fitSegmentW.GetMinX())));
133  const float maxX(std::min(fitSegmentU.GetMaxX(), std::min(fitSegmentV.GetMaxX(), fitSegmentW.GetMaxX())));
134  const float xOverlap(maxX - minX);
135 
136  if (xOverlap < std::numeric_limits<float>::epsilon())
137  return STATUS_CODE_NOT_FOUND;
138 
139  // Sampling in x
140  const float nPointsU(std::fabs((xOverlap / xSpanU) * static_cast<float>(fitSegmentU.GetEndLayer() - fitSegmentU.GetStartLayer())));
141  const float nPointsV(std::fabs((xOverlap / xSpanV) * static_cast<float>(fitSegmentV.GetEndLayer() - fitSegmentV.GetStartLayer())));
142  const float nPointsW(std::fabs((xOverlap / xSpanW) * static_cast<float>(fitSegmentW.GetEndLayer() - fitSegmentW.GetStartLayer())));
143 
144  const unsigned int nPoints(1 + static_cast<unsigned int>((nPointsU + nPointsV + nPointsW) / 3.f));
145 
146  // Chi2 calculations
147  float pseudoChi2Sum(0.f);
148  unsigned int nSamplingPoints(0), nMatchedSamplingPoints(0);
149 
150  for (unsigned int n = 0; n <= nPoints; ++n)
151  {
152  const float x(minX + (maxX - minX) * static_cast<float>(n) / static_cast<float>(nPoints));
153 
154  CartesianVector fitUVector(0.f, 0.f, 0.f), fitVVector(0.f, 0.f, 0.f), fitWVector(0.f, 0.f, 0.f);
155  CartesianVector fitUDirection(0.f, 0.f, 0.f), fitVDirection(0.f, 0.f, 0.f), fitWDirection(0.f, 0.f, 0.f);
156 
157  if ((STATUS_CODE_SUCCESS != slidingFitResultU.GetTransverseProjection(x, fitSegmentU, fitUVector, fitUDirection)) ||
158  (STATUS_CODE_SUCCESS != slidingFitResultV.GetTransverseProjection(x, fitSegmentV, fitVVector, fitVDirection)) ||
159  (STATUS_CODE_SUCCESS != slidingFitResultW.GetTransverseProjection(x, fitSegmentW, fitWVector, fitWDirection)))
160  {
161  continue;
162  }
163 
164  const float u(fitUVector.GetZ()), v(fitVVector.GetZ()), w(fitWVector.GetZ());
165  const float uv2w(LArGeometryHelper::MergeTwoPositions(this->GetPandora(), TPC_VIEW_U, TPC_VIEW_V, u, v));
166  const float uw2v(LArGeometryHelper::MergeTwoPositions(this->GetPandora(), TPC_VIEW_U, TPC_VIEW_W, u, w));
167  const float vw2u(LArGeometryHelper::MergeTwoPositions(this->GetPandora(), TPC_VIEW_V, TPC_VIEW_W, v, w));
168 
169  ++nSamplingPoints;
170  const float deltaU((vw2u - u) * fitUDirection.GetX());
171  const float deltaV((uw2v - v) * fitVDirection.GetX());
172  const float deltaW((uv2w - w) * fitWDirection.GetX());
173 
174  const float pseudoChi2(deltaW * deltaW + deltaV * deltaV + deltaU * deltaU);
175  pseudoChi2Sum += pseudoChi2;
176 
177  if (pseudoChi2 < m_pseudoChi2Cut)
178  ++nMatchedSamplingPoints;
179  }
180 
181  if (0 == nSamplingPoints)
182  return STATUS_CODE_NOT_FOUND;
183 
184  const XOverlap xOverlapObject(fitSegmentU.GetMinX(), fitSegmentU.GetMaxX(), fitSegmentV.GetMinX(), fitSegmentV.GetMaxX(),
185  fitSegmentW.GetMinX(), fitSegmentW.GetMaxX(), xOverlap);
186 
187  transverseOverlapResult = TransverseOverlapResult(nMatchedSamplingPoints, nSamplingPoints, pseudoChi2Sum, xOverlapObject);
188  return STATUS_CODE_SUCCESS;
189 }
Float_t x
Definition: compare.C:6
float m_pseudoChi2Cut
The pseudo chi2 cut to identify matched sampling points.
TFile f
Definition: plotHisto.C:6
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).
Char_t n[5]
Float_t w
Definition: plot.C:20
const pandora::ClusterList& lar_content::NViewMatchingAlgorithm< ThreeViewMatchingControl< TransverseOverlapResult > >::GetSelectedClusterList ( const pandora::HitType  hitType) const
virtualinherited

Get the selected cluster list corresponding to a specified hit type.

Parameters
hitTypethe hit type
Returns
the selected cluster list

Implements lar_content::MatchingBaseAlgorithm.

unsigned int lar_content::NViewTrackMatchingAlgorithm< ThreeViewMatchingControl< TransverseOverlapResult > >::GetSlidingFitWindow ( ) const
inherited

Get the layer window for the sliding linear fits.

Returns
the layer window for the sliding linear fits
bool lar_content::MatchingBaseAlgorithm::MakeClusterMerges ( const ClusterMergeMap clusterMergeMap)
virtualinherited

Merge clusters together.

Parameters
clusterMergeMapthe cluster merge map
Returns
whether changes to the overlap container have been made

Definition at line 48 of file MatchingBaseAlgorithm.cc.

Referenced by lar_content::SplitShowersTool::ApplyChanges(), lar_content::ThreeDKinkBaseTool::ApplyChanges(), lar_content::TwoViewThreeDKinkTool::ApplyChanges(), lar_content::ConnectedRemnantsTool::Run(), and lar_content::MissingTrackSegmentTool::Run().

49 {
50  ClusterSet deletedClusters;
51 
52  ClusterList parentClusters;
53  for (const auto &mapEntry : clusterMergeMap)
54  parentClusters.push_back(mapEntry.first);
55  parentClusters.sort(LArClusterHelper::SortByNHits);
56 
57  for (const Cluster *const pParentCluster : parentClusters)
58  {
59  const HitType hitType(LArClusterHelper::GetClusterHitType(pParentCluster));
60  const std::string &clusterListName(this->GetClusterListName(hitType));
61 
62  if (!((TPC_VIEW_U == hitType) || (TPC_VIEW_V == hitType) || (TPC_VIEW_W == hitType)))
63  throw StatusCodeException(STATUS_CODE_FAILURE);
64 
65  ClusterList daughterClusters(clusterMergeMap.at(pParentCluster));
66  daughterClusters.sort(LArClusterHelper::SortByNHits);
67 
68  for (const Cluster *const pDaughterCluster : daughterClusters)
69  {
70  if (deletedClusters.count(pParentCluster) || deletedClusters.count(pDaughterCluster))
71  throw StatusCodeException(STATUS_CODE_FAILURE);
72 
73  this->UpdateUponDeletion(pDaughterCluster);
74  this->UpdateUponDeletion(pParentCluster);
75  PANDORA_THROW_RESULT_IF(STATUS_CODE_SUCCESS, !=,
76  PandoraContentApi::MergeAndDeleteClusters(*this, pParentCluster, pDaughterCluster, clusterListName, clusterListName));
77 
78  this->UpdateForNewCluster(pParentCluster);
79  deletedClusters.insert(pDaughterCluster);
80  }
81  }
82 
83  return !(deletedClusters.empty());
84 }
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.
virtual void UpdateUponDeletion(const pandora::Cluster *const pDeletedCluster)=0
Update to reflect cluster deletion.
static pandora::HitType GetClusterHitType(const pandora::Cluster *const pCluster)
Get the hit type associated with a two dimensional cluster.
virtual const std::string & GetClusterListName(const pandora::HitType hitType) const =0
Get the cluster list name corresponding to a specified hit type.
virtual void UpdateForNewCluster(const pandora::Cluster *const pNewCluster)=0
Update to reflect addition of a new cluster to the problem space.
HitType
Definition: HitType.h:12
virtual bool lar_content::NViewTrackMatchingAlgorithm< ThreeViewMatchingControl< TransverseOverlapResult > >::MakeClusterSplit ( const pandora::CartesianVector &  splitPosition,
const pandora::Cluster *&  pCurrentCluster,
const pandora::Cluster *&  pLowXCluster,
const pandora::Cluster *&  pHighXCluster 
) const
virtualinherited

Make a cluster split.

Parameters
splitPositionthe split position
pCurrentClusterthe cluster to split
pLowXClusterto receive the low x cluster
pHighXClusterto receive the high x cluster
Returns
whether a cluster split occurred
virtual bool lar_content::NViewTrackMatchingAlgorithm< ThreeViewMatchingControl< TransverseOverlapResult > >::MakeClusterSplits ( const SplitPositionMap splitPositionMap)
virtualinherited

Make cluster splits.

Parameters
splitPositionMapthe split position map
Returns
whether changes to the overlap container have been made
virtual void lar_content::NViewMatchingAlgorithm< ThreeViewMatchingControl< TransverseOverlapResult > >::PerformMainLoop ( )
protectedvirtualinherited

Main loop over cluster combinations in order to populate the overlap container. Responsible for calling CalculateOverlapResult.

Implements lar_content::MatchingBaseAlgorithm.

virtual void lar_content::NViewMatchingAlgorithm< ThreeViewMatchingControl< TransverseOverlapResult > >::PrepareAllInputClusters ( )
protectedvirtualinherited

Perform any preparatory steps required, e.g. caching expensive fit results for clusters.

Implements lar_content::MatchingBaseAlgorithm.

virtual void lar_content::NViewTrackMatchingAlgorithm< ThreeViewMatchingControl< TransverseOverlapResult > >::PrepareInputClusters ( pandora::ClusterList &  preparedClusterList)
virtualinherited

Perform any preparatory steps required on the input clusters, e.g. caching expensive fit results.

Parameters
preparedClusterListto receive the prepared cluster list, non const so as to be able to modify input selected list

Reimplemented from lar_content::MatchingBaseAlgorithm.

StatusCode lar_content::ThreeViewTransverseTracksAlgorithm::ReadSettings ( const pandora::TiXmlHandle  xmlHandle)
privatevirtual

Reimplemented from lar_content::NViewTrackMatchingAlgorithm< ThreeViewMatchingControl< TransverseOverlapResult > >.

Definition at line 320 of file ThreeViewTransverseTracksAlgorithm.cc.

References m_algorithmToolVector, m_maxFitSegmentIndex, m_minOverallMatchedFraction, m_minOverallMatchedPoints, m_minSamplingPointsPerLayer, m_minSegmentMatchedFraction, m_minSegmentMatchedPoints, m_nMaxTensorToolRepeats, m_pseudoChi2Cut, and lar_content::NViewTrackMatchingAlgorithm< ThreeViewMatchingControl< TransverseOverlapResult > >::ReadSettings().

321 {
322  AlgorithmToolVector algorithmToolVector;
323  PANDORA_RETURN_RESULT_IF(STATUS_CODE_SUCCESS, !=, XmlHelper::ProcessAlgorithmToolList(*this, xmlHandle, "TrackTools", algorithmToolVector));
324 
325  for (AlgorithmToolVector::const_iterator iter = algorithmToolVector.begin(), iterEnd = algorithmToolVector.end(); iter != iterEnd; ++iter)
326  {
327  TransverseTensorTool *const pTransverseTensorTool(dynamic_cast<TransverseTensorTool *>(*iter));
328 
329  if (!pTransverseTensorTool)
330  return STATUS_CODE_INVALID_PARAMETER;
331 
332  m_algorithmToolVector.push_back(pTransverseTensorTool);
333  }
334 
335  PANDORA_RETURN_RESULT_IF_AND_IF(
336  STATUS_CODE_SUCCESS, STATUS_CODE_NOT_FOUND, !=, XmlHelper::ReadValue(xmlHandle, "NMaxTensorToolRepeats", m_nMaxTensorToolRepeats));
337 
338  PANDORA_RETURN_RESULT_IF_AND_IF(
339  STATUS_CODE_SUCCESS, STATUS_CODE_NOT_FOUND, !=, XmlHelper::ReadValue(xmlHandle, "MaxFitSegmentIndex", m_maxFitSegmentIndex));
340 
341  PANDORA_RETURN_RESULT_IF_AND_IF(STATUS_CODE_SUCCESS, STATUS_CODE_NOT_FOUND, !=, XmlHelper::ReadValue(xmlHandle, "PseudoChi2Cut", m_pseudoChi2Cut));
342 
343  PANDORA_RETURN_RESULT_IF_AND_IF(STATUS_CODE_SUCCESS, STATUS_CODE_NOT_FOUND, !=,
344  XmlHelper::ReadValue(xmlHandle, "MinSegmentMatchedFraction", m_minSegmentMatchedFraction));
345 
346  PANDORA_RETURN_RESULT_IF_AND_IF(STATUS_CODE_SUCCESS, STATUS_CODE_NOT_FOUND, !=,
347  XmlHelper::ReadValue(xmlHandle, "MinSegmentMatchedPoints", m_minSegmentMatchedPoints));
348 
349  PANDORA_RETURN_RESULT_IF_AND_IF(STATUS_CODE_SUCCESS, STATUS_CODE_NOT_FOUND, !=,
350  XmlHelper::ReadValue(xmlHandle, "MinOverallMatchedFraction", m_minOverallMatchedFraction));
351 
352  PANDORA_RETURN_RESULT_IF_AND_IF(STATUS_CODE_SUCCESS, STATUS_CODE_NOT_FOUND, !=,
353  XmlHelper::ReadValue(xmlHandle, "MinOverallMatchedPoints", m_minOverallMatchedPoints));
354 
355  PANDORA_RETURN_RESULT_IF_AND_IF(STATUS_CODE_SUCCESS, STATUS_CODE_NOT_FOUND, !=,
356  XmlHelper::ReadValue(xmlHandle, "MinSamplingPointsPerLayer", m_minSamplingPointsPerLayer));
357 
358  return BaseAlgorithm::ReadSettings(xmlHandle);
359 }
virtual pandora::StatusCode ReadSettings(const pandora::TiXmlHandle xmlHandle)
float m_minSegmentMatchedFraction
The minimum segment matched sampling fraction to allow segment grouping.
float m_minOverallMatchedFraction
The minimum matched sampling fraction to allow particle creation.
intermediate_table::const_iterator const_iterator
float m_pseudoChi2Cut
The pseudo chi2 cut to identify matched sampling points.
float m_minSamplingPointsPerLayer
The minimum number of sampling points per layer to allow particle creation.
unsigned int m_minSegmentMatchedPoints
The minimum number of matched segment sampling points to allow segment grouping.
TensorToolVector m_algorithmToolVector
The algorithm tool vector.
unsigned int m_maxFitSegmentIndex
The maximum number of fit segments used when identifying best overlap result.
unsigned int m_minOverallMatchedPoints
The minimum number of matched segment sampling points to allow particle creation. ...
unsigned int m_nMaxTensorToolRepeats
The maximum number of repeat loops over tensor tools.
void lar_content::NViewTrackMatchingAlgorithm< ThreeViewMatchingControl< TransverseOverlapResult > >::RemoveFromSlidingFitCache ( const pandora::Cluster *const  pCluster)
protectedinherited

Remova an existing sliding fit result, for the specified cluster, from the algorithm cache.

Parameters
pClusteraddress of the relevant cluster
virtual void lar_content::NViewMatchingAlgorithm< ThreeViewMatchingControl< TransverseOverlapResult > >::SelectAllInputClusters ( )
protectedvirtualinherited

Select a subset of input clusters for processing in this algorithm.

Implements lar_content::MatchingBaseAlgorithm.

virtual void lar_content::NViewTrackMatchingAlgorithm< ThreeViewMatchingControl< TransverseOverlapResult > >::SelectInputClusters ( const pandora::ClusterList *const  pInputClusterList,
pandora::ClusterList &  selectedClusterList 
) const
virtualinherited

Select a subset of input clusters for processing in this algorithm.

Parameters
pInputClusterListaddress of an input cluster list
selectedClusterListto receive the selected cluster list

Reimplemented from lar_content::MatchingBaseAlgorithm.

void lar_content::MatchingBaseAlgorithm::SetPfoParameters ( const ProtoParticle protoParticle,
PandoraContentApi::ParticleFlowObject::Parameters &  pfoParameters 
) const
virtualinherited

Set Pfo properties.

Parameters
protoParticlethe input proto particle
pfoParametersthe output pfo parameters

Definition at line 116 of file MatchingBaseAlgorithm.cc.

References f, and lar_content::ProtoParticle::m_clusterList.

117 {
118  this->SetPfoParticleId(pfoParameters);
119  pfoParameters.m_charge = PdgTable::GetParticleCharge(pfoParameters.m_particleId.Get());
120  pfoParameters.m_mass = PdgTable::GetParticleMass(pfoParameters.m_particleId.Get());
121  pfoParameters.m_energy = 0.f;
122  pfoParameters.m_momentum = CartesianVector(0.f, 0.f, 0.f);
123  pfoParameters.m_clusterList = protoParticle.m_clusterList;
124 }
TFile f
Definition: plotHisto.C:6
virtual void SetPfoParticleId(PandoraContentApi::ParticleFlowObject::Parameters &pfoParameters) const
Set pfo particle id.
virtual void lar_content::NViewTrackMatchingAlgorithm< ThreeViewMatchingControl< TransverseOverlapResult > >::SetPfoParticleId ( PandoraContentApi::ParticleFlowObject::Parameters &  pfoParameters) const
virtualinherited

Set pfo particle id.

Parameters
pfoParametersthe output pfo parameters

Reimplemented from lar_content::MatchingBaseAlgorithm.

static bool lar_content::NViewTrackMatchingAlgorithm< ThreeViewMatchingControl< TransverseOverlapResult > >::SortSplitPositions ( const pandora::CartesianVector &  lhs,
const pandora::CartesianVector &  rhs 
)
staticinherited

Sort split position cartesian vectors by increasing x coordinate.

Parameters
lhsthe first cartesian vector
rhsthe second cartesian vector
virtual void lar_content::NViewTrackMatchingAlgorithm< ThreeViewMatchingControl< TransverseOverlapResult > >::TidyUp ( )
protectedvirtualinherited

Tidy member variables in derived class.

Reimplemented from lar_content::NViewMatchingAlgorithm< ThreeViewMatchingControl< TransverseOverlapResult > >.

virtual void lar_content::NViewTrackMatchingAlgorithm< ThreeViewMatchingControl< TransverseOverlapResult > >::UpdateForNewCluster ( const pandora::Cluster *const  pNewCluster)
virtualinherited

Update to reflect addition of a new cluster to the problem space.

Parameters
pNewClusteraddress of the new cluster

Reimplemented from lar_content::NViewMatchingAlgorithm< ThreeViewMatchingControl< TransverseOverlapResult > >.

virtual void lar_content::NViewTrackMatchingAlgorithm< ThreeViewMatchingControl< TransverseOverlapResult > >::UpdateUponDeletion ( const pandora::Cluster *const  pDeletedCluster)
virtualinherited

Update to reflect cluster deletion.

Parameters
pDeletedClusteraddress of the deleted cluster

Reimplemented from lar_content::NViewMatchingAlgorithm< ThreeViewMatchingControl< TransverseOverlapResult > >.

Member Data Documentation

TensorToolVector lar_content::ThreeViewTransverseTracksAlgorithm::m_algorithmToolVector
private

The algorithm tool vector.

Definition at line 110 of file ThreeViewTransverseTracksAlgorithm.h.

Referenced by ExamineOverlapContainer(), and ReadSettings().

The matching control.

Definition at line 53 of file NViewMatchingAlgorithm.h.

unsigned int lar_content::ThreeViewTransverseTracksAlgorithm::m_maxFitSegmentIndex
private

The maximum number of fit segments used when identifying best overlap result.

Definition at line 113 of file ThreeViewTransverseTracksAlgorithm.h.

Referenced by GetBestOverlapResult(), and ReadSettings().

float lar_content::ThreeViewTransverseTracksAlgorithm::m_minOverallMatchedFraction
private

The minimum matched sampling fraction to allow particle creation.

Definition at line 117 of file ThreeViewTransverseTracksAlgorithm.h.

Referenced by ReadSettings(), and ThreeViewTransverseTracksAlgorithm().

unsigned int lar_content::ThreeViewTransverseTracksAlgorithm::m_minOverallMatchedPoints
private

The minimum number of matched segment sampling points to allow particle creation.

Definition at line 118 of file ThreeViewTransverseTracksAlgorithm.h.

Referenced by ReadSettings(), and ThreeViewTransverseTracksAlgorithm().

float lar_content::ThreeViewTransverseTracksAlgorithm::m_minSamplingPointsPerLayer
private

The minimum number of sampling points per layer to allow particle creation.

Definition at line 119 of file ThreeViewTransverseTracksAlgorithm.h.

Referenced by ReadSettings(), and ThreeViewTransverseTracksAlgorithm().

float lar_content::ThreeViewTransverseTracksAlgorithm::m_minSegmentMatchedFraction
private

The minimum segment matched sampling fraction to allow segment grouping.

Definition at line 115 of file ThreeViewTransverseTracksAlgorithm.h.

Referenced by GetFitSegmentTensor(), and ReadSettings().

unsigned int lar_content::ThreeViewTransverseTracksAlgorithm::m_minSegmentMatchedPoints
private

The minimum number of matched segment sampling points to allow segment grouping.

Definition at line 116 of file ThreeViewTransverseTracksAlgorithm.h.

Referenced by GetFitSegmentTensor(), and ReadSettings().

unsigned int lar_content::ThreeViewTransverseTracksAlgorithm::m_nMaxTensorToolRepeats
private

The maximum number of repeat loops over tensor tools.

Definition at line 112 of file ThreeViewTransverseTracksAlgorithm.h.

Referenced by ExamineOverlapContainer(), and ReadSettings().

float lar_content::ThreeViewTransverseTracksAlgorithm::m_pseudoChi2Cut
private

The pseudo chi2 cut to identify matched sampling points.

Definition at line 114 of file ThreeViewTransverseTracksAlgorithm.h.

Referenced by GetSegmentOverlap(), and ReadSettings().


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