Pandora
Pandora source code navigator
Loading...
Searching...
No Matches
lar_content::TransverseAssociationAlgorithm Class Reference

TransverseAssociationAlgorithm class. More...

#include "TransverseAssociationAlgorithm.h"

Inheritance diagram for lar_content::TransverseAssociationAlgorithm:
Collaboration diagram for lar_content::TransverseAssociationAlgorithm:

Classes

class  LArTransverseCluster
 LArTransverseCluster class. More...
 

Public Member Functions

 TransverseAssociationAlgorithm ()
 Default constructor.
 
const std::string & GetType () const
 Get the type.
 
const std::string & GetInstanceName () const
 Get the instance name.
 
const PandoraGetPandora () const
 Get the associated pandora instance.
 

Protected Types

typedef std::unordered_map< const pandora::Cluster *, ClusterAssociationClusterAssociationMap
 

Protected Member Functions

virtual pandora::StatusCode Run ()
 Run the algorithm.
 
virtual StatusCode Initialize ()
 Perform any operations that must occur after reading settings, but before running the process.
 
virtual StatusCode Reset ()
 Perform any operations when pandora is reset, typically at the end of each event.
 
StatusCode RegisterDetails (const Pandora *const pPandora, const std::string &type, const std::string &instanceName)
 Register i) the pandora instance that will run the process and ii) the process type.
 

Protected Attributes

const Pandoram_pPandora
 The pandora object that will run the process.
 
std::string m_type
 The process type.
 
std::string m_instanceName
 The process instance name.
 

Private Types

typedef std::vector< LArTransverseCluster * > TransverseClusterList
 
typedef KDTreeLinkerAlgo< const pandora::CaloHit *, 2 > HitKDTree2D
 
typedef KDTreeNodeInfoT< const pandora::CaloHit *, 2 > HitKDNode2D
 
typedef std::vector< HitKDNode2DHitKDNode2DList
 
typedef std::unordered_map< const pandora::Cluster *, pandora::ClusterSetClusterToClustersMap
 
typedef std::unordered_map< const pandora::CaloHit *, const pandora::Cluster * > HitToClusterMap
 

Private Member Functions

pandora::StatusCode ReadSettings (const pandora::TiXmlHandle xmlHandle)
 Read the algorithm settings.
 
void GetListOfCleanClusters (const pandora::ClusterList *const pClusterList, pandora::ClusterVector &clusterVector) const
 Populate cluster vector with subset of cluster list, containing clusters judged to be clean.
 
void PopulateClusterAssociationMap (const pandora::ClusterVector &clusterVector, ClusterAssociationMap &clusterAssociationMap) const
 Populate the cluster association map.
 
bool IsExtremalCluster (const bool isForward, const pandora::Cluster *const pCurrentCluster, const pandora::Cluster *const pTestCluster) const
 Determine which of two clusters is extremal.
 
void GetNearbyClusterMap (const pandora::ClusterVector &allClusters, ClusterToClustersMap &nearbyClusters) const
 Use a kd-tree to obtain details of all nearby cluster combinations.
 
void SortInputClusters (const pandora::ClusterVector &inputClusters, pandora::ClusterVector &shortClusters, pandora::ClusterVector &transverseMediumClusters, pandora::ClusterVector &longitudinalMediumClusters, pandora::ClusterVector &longClusters) const
 Separate input clusters by length.
 
void FillReducedAssociationMap (const ClusterToClustersMap &nearbyClusters, const pandora::ClusterVector &firstVector, const pandora::ClusterVector &secondVector, ClusterAssociationMap &clusterAssociationMap) const
 Form a reduced set of associations between two input lists of clusters.
 
void FillAssociationMap (const ClusterToClustersMap &nearbyClusters, const pandora::ClusterVector &firstVector, const pandora::ClusterVector &secondVector, ClusterAssociationMap &firstAssociationMap, ClusterAssociationMap &secondAssociationMap) const
 Form associations between two input lists of cluster.
 
void FillTransverseClusterList (const ClusterToClustersMap &nearbyClusters, const pandora::ClusterVector &inputClusters, const ClusterAssociationMap &inputAssociationMap, TransverseClusterList &transverseClusterList) const
 Create transverse cluster objects, these are protoclusters with a direction and inner/outer vertices.
 
void FillTransverseAssociationMap (const ClusterToClustersMap &nearbyClusters, const TransverseClusterList &transverseClusterList, const ClusterAssociationMap &transverseAssociationMap, ClusterAssociationMap &clusterAssociationMap) const
 Form associations between transverse cluster objects.
 
void GetAssociatedClusters (const ClusterToClustersMap &nearbyClusters, const pandora::Cluster *const pCluster, const ClusterAssociationMap &inputAssociationMap, pandora::ClusterVector &associatedClusters) const
 Find the clusters that are transversely associated with a target cluster.
 
bool IsAssociated (const bool isForward, const pandora::Cluster *const pCluster1, const pandora::Cluster *const pCluster2, const ClusterToClustersMap &nearbyClusters) const
 Determine whether clusters are association.
 
bool IsTransverseAssociated (const pandora::Cluster *const pCluster1, const pandora::Cluster *const pCluster2, const ClusterToClustersMap &nearbyClusters) const
 Determine whether two clusters are within the same cluster window.
 
bool IsTransverseAssociated (const LArTransverseCluster *const pTransverseCluster1, const LArTransverseCluster *const pTransverseCluster2, const ClusterToClustersMap &nearbyClusters) const
 Determine whether two transverse clusters are associated.
 
bool IsTransverseAssociated (const LArTransverseCluster *const pTransverseCluster, const pandora::CartesianVector &testPosition) const
 Determine whether one transverse cluster is associated with the vertex from a second transverse cluster.
 
bool IsOverlapping (const pandora::Cluster *const pCluster1, const pandora::Cluster *const pCluster2) const
 Determine whether two clusters are overlapping.
 
float GetTransverseSpan (const pandora::Cluster *const pCluster) const
 Calculate the overall span in X for a clusters.
 
float GetLongitudinalSpan (const pandora::Cluster *const pCluster) const
 Calculate the overall span in Z for a clusters.
 
float GetTransverseSpan (const pandora::Cluster *const pCluster, const pandora::ClusterVector &associatedClusters) const
 Calculate the overall span in X for a set of clusters.
 
void GetExtremalCoordinatesX (const pandora::Cluster *const pCluster, float &minX, float &maxX) const
 Get minimum and maximum X coordinates for a given cluster.
 
void GetExtremalCoordinatesZ (const pandora::Cluster *const pCluster, float &minZ, float &maxZ) const
 Get minimum and maximum Z coordinates for a given cluster.
 
void GetExtremalCoordinatesXZ (const pandora::Cluster *const pCluster, const bool useX, float &minXZ, float &maxXZ) const
 Get minimum and maximum X or Z coordinates for a given cluster.
 
void GetExtremalCoordinatesX (const pandora::Cluster *const pCluster, pandora::CartesianVector &innerCoordinate, pandora::CartesianVector &outerCoordinate) const
 Get extremal 2D coordinates for a given cluster (ordered by X)
 
void FillReducedAssociationMap (const ClusterAssociationMap &inputAssociationMap, ClusterAssociationMap &outputAssociationMap) const
 Remove double-counting from association map.
 
void FillReducedAssociationMap (const ClusterAssociationMap &firstAssociationMap, const ClusterAssociationMap &secondAssociationMap, const ClusterAssociationMap &secondAssociationMapSwapped, ClusterAssociationMap &clusterAssociationMap) const
 Use one map to block associations from another map.
 
void FillSymmetricAssociationMap (const ClusterAssociationMap &inputAssociationMap, ClusterAssociationMap &outputAssociationMap) const
 Symmetrise an association map.
 
void FinalizeClusterAssociationMap (const ClusterAssociationMap &inputAssociationMap, ClusterAssociationMap &outputAssociationMap) const
 Symmetrise and then remove double-counting from an association map.
 
void UnambiguousPropagation (const pandora::Cluster *const pCluster, const bool isForward, ClusterAssociationMap &clusterAssociationMap) const
 Unambiguous propagation.
 
void AmbiguousPropagation (const pandora::Cluster *const pCluster, const bool isForward, ClusterAssociationMap &clusterAssociationMap) const
 Ambiguous propagation.
 
void UpdateForUnambiguousMerge (const pandora::Cluster *const pClusterToEnlarge, const pandora::Cluster *const pClusterToDelete, const bool isForwardMerge, ClusterAssociationMap &clusterAssociationMap) const
 Update cluster association map to reflect an unambiguous cluster merge.
 
void UpdateForAmbiguousMerge (const pandora::Cluster *const pCluster, ClusterAssociationMap &clusterAssociationMap) const
 Update cluster association map to reflect an ambiguous cluster merge.
 
void NavigateAlongAssociations (const ClusterAssociationMap &clusterAssociationMap, const pandora::Cluster *const pCluster, const bool isForward, const pandora::Cluster *&pExtremalCluster, pandora::ClusterSet &clusterSet) const
 Navigate along cluster associations, from specified cluster, in specified direction.
 

Private Attributes

float m_firstLengthCut
 
float m_secondLengthCut
 
float m_clusterWindow
 
float m_clusterAngle
 
float m_clusterCosAngle
 
float m_clusterTanAngle
 
float m_maxTransverseOverlap
 
float m_maxProjectedOverlap
 
float m_maxLongitudinalOverlap
 
float m_transverseClusterMinCosTheta
 
float m_transverseClusterMinLength
 
float m_transverseClusterMaxDisplacement
 
float m_searchRegionX
 Search region, applied to x dimension, for look-up from kd-trees.
 
float m_searchRegionZ
 Search region, applied to u/v/w dimension, for look-up from kd-trees.
 
bool m_mergeMade
 
bool m_resolveAmbiguousAssociations
 Whether to resolve ambiguous associations.
 

Detailed Description

Member Typedef Documentation

◆ ClusterAssociationMap

Definition at line 43 of file ClusterAssociationAlgorithm.h.

◆ ClusterToClustersMap

◆ HitKDNode2D

◆ HitKDNode2DList

◆ HitKDTree2D

◆ HitToClusterMap

Definition at line 101 of file TransverseAssociationAlgorithm.h.

◆ TransverseClusterList

Constructor & Destructor Documentation

◆ TransverseAssociationAlgorithm()

lar_content::TransverseAssociationAlgorithm::TransverseAssociationAlgorithm ( )

Default constructor.

Definition at line 22 of file TransverseAssociationAlgorithm.cc.

Member Function Documentation

◆ AmbiguousPropagation()

void lar_content::ClusterAssociationAlgorithm::AmbiguousPropagation ( const pandora::Cluster *const  pCluster,
const bool  isForward,
ClusterAssociationMap clusterAssociationMap 
) const
privateinherited

Ambiguous propagation.

Parameters
pClusteraddress of the cluster to propagate
isForwardwhether propagation direction is forward
clusterAssociationMapthe cluster association map

Definition at line 121 of file ClusterAssociationAlgorithm.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ FillAssociationMap()

void lar_content::TransverseAssociationAlgorithm::FillAssociationMap ( const ClusterToClustersMap nearbyClusters,
const pandora::ClusterVector firstVector,
const pandora::ClusterVector secondVector,
ClusterAssociationMap firstAssociationMap,
ClusterAssociationMap secondAssociationMap 
) const
private

Form associations between two input lists of cluster.

Parameters
nearbyClustersthe nearby cluster map, extracted via use of a kd-tree
firstVectorthe first input vector of clusters
secondVectorthe second input vector of clusters
firstAssociationMapthe map of associations between first and second cluster vectors
secondAssociationMapthe reversed map of associations between first and cluster vectors

Definition at line 212 of file TransverseAssociationAlgorithm.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ FillReducedAssociationMap() [1/3]

void lar_content::TransverseAssociationAlgorithm::FillReducedAssociationMap ( const ClusterAssociationMap firstAssociationMap,
const ClusterAssociationMap secondAssociationMap,
const ClusterAssociationMap secondAssociationMapSwapped,
ClusterAssociationMap clusterAssociationMap 
) const
private

Use one map to block associations from another map.

Parameters
firstAssociationMapthe first association map
secondAssociationMapthe second association map
secondAssociationMapthe second association map reversed
clusterAssociationMapthe outputted association map

Definition at line 600 of file TransverseAssociationAlgorithm.cc.

Here is the call graph for this function:

◆ FillReducedAssociationMap() [2/3]

void lar_content::TransverseAssociationAlgorithm::FillReducedAssociationMap ( const ClusterAssociationMap inputAssociationMap,
ClusterAssociationMap outputAssociationMap 
) const
private

Remove double-counting from association map.

Parameters
inputAssociationMapthe inputted association map
outputAssociationMapthe outputted association map

Definition at line 592 of file TransverseAssociationAlgorithm.cc.

Here is the call graph for this function:

◆ FillReducedAssociationMap() [3/3]

void lar_content::TransverseAssociationAlgorithm::FillReducedAssociationMap ( const ClusterToClustersMap nearbyClusters,
const pandora::ClusterVector firstVector,
const pandora::ClusterVector secondVector,
ClusterAssociationMap clusterAssociationMap 
) const
private

Form a reduced set of associations between two input lists of clusters.

Parameters
nearbyClustersthe nearby cluster map, extracted via use of a kd-tree
firstVectorthe first input vector of clusters
secondVectorthe second input vector of clusters
clusterAssociationMapthe output map of associations between clusters

Definition at line 195 of file TransverseAssociationAlgorithm.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ FillSymmetricAssociationMap()

void lar_content::TransverseAssociationAlgorithm::FillSymmetricAssociationMap ( const ClusterAssociationMap inputAssociationMap,
ClusterAssociationMap outputAssociationMap 
) const
private

Symmetrise an association map.

Parameters
inputAssociationMapthe inputted association map
outputAssociationMapthe outputted association map

Definition at line 685 of file TransverseAssociationAlgorithm.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ FillTransverseAssociationMap()

void lar_content::TransverseAssociationAlgorithm::FillTransverseAssociationMap ( const ClusterToClustersMap nearbyClusters,
const TransverseClusterList transverseClusterList,
const ClusterAssociationMap transverseAssociationMap,
ClusterAssociationMap clusterAssociationMap 
) const
private

Form associations between transverse cluster objects.

Parameters
nearbyClustersthe nearby cluster map, extracted via use of a kd-tree
transverseClusterListthe input vector of transverse cluster objects
transverseAssociationMapthe external map of associations between clusters
clusterAssociationMapthe output map of associations between clusters

Definition at line 262 of file TransverseAssociationAlgorithm.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ FillTransverseClusterList()

void lar_content::TransverseAssociationAlgorithm::FillTransverseClusterList ( const ClusterToClustersMap nearbyClusters,
const pandora::ClusterVector inputClusters,
const ClusterAssociationMap inputAssociationMap,
TransverseClusterList transverseClusterList 
) const
private

Create transverse cluster objects, these are protoclusters with a direction and inner/outer vertices.

Parameters
nearbyClustersthe nearby cluster map, extracted via use of a kd-tree
inputClustersthe input vector of clusters
inputAssociationMapthe map of associations between input clusters
transverseClusterListthe output vector of transverse cluster objects

Definition at line 243 of file TransverseAssociationAlgorithm.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ FinalizeClusterAssociationMap()

void lar_content::TransverseAssociationAlgorithm::FinalizeClusterAssociationMap ( const ClusterAssociationMap inputAssociationMap,
ClusterAssociationMap outputAssociationMap 
) const
private

Symmetrise and then remove double-counting from an association map.

Parameters
inputAssociationMapthe inputted association map
outputAssociationMapthe outputted association map

Definition at line 769 of file TransverseAssociationAlgorithm.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetAssociatedClusters()

void lar_content::TransverseAssociationAlgorithm::GetAssociatedClusters ( const ClusterToClustersMap nearbyClusters,
const pandora::Cluster *const  pCluster,
const ClusterAssociationMap inputAssociationMap,
pandora::ClusterVector associatedClusters 
) const
private

Find the clusters that are transversely associated with a target cluster.

Parameters
nearbyClustersthe nearby cluster map, extracted via use of a kd-tree
pClusterthe target cluster
inputAssociationMapthe map of associations between clusters
outputClustersthe output vector of clusters transversely associated with target cluster

Definition at line 305 of file TransverseAssociationAlgorithm.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetExtremalCoordinatesX() [1/2]

void lar_content::TransverseAssociationAlgorithm::GetExtremalCoordinatesX ( const pandora::Cluster *const  pCluster,
float &  minX,
float &  maxX 
) const
private

Get minimum and maximum X coordinates for a given cluster.

Parameters
pClusterthe input cluster
minXthe minimum X position
maxXthe maximum X position

Definition at line 539 of file TransverseAssociationAlgorithm.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetExtremalCoordinatesX() [2/2]

void lar_content::TransverseAssociationAlgorithm::GetExtremalCoordinatesX ( const pandora::Cluster *const  pCluster,
pandora::CartesianVector innerCoordinate,
pandora::CartesianVector outerCoordinate 
) const
private

Get extremal 2D coordinates for a given cluster (ordered by X)

Parameters
pClusterthe input cluster
innerCoordinatethe inner coordinate
outerCoordinatethe outer coordinate

Definition at line 580 of file TransverseAssociationAlgorithm.cc.

Here is the call graph for this function:

◆ GetExtremalCoordinatesXZ()

void lar_content::TransverseAssociationAlgorithm::GetExtremalCoordinatesXZ ( const pandora::Cluster *const  pCluster,
const bool  useX,
float &  minXZ,
float &  maxXZ 
) const
private

Get minimum and maximum X or Z coordinates for a given cluster.

Parameters
pClusterthe input cluster
useXcalculate extermal coordinates for X (rather than Z)
minXZthe minimum X or Z position
maxXZthe maximum X or Z position

Definition at line 553 of file TransverseAssociationAlgorithm.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetExtremalCoordinatesZ()

void lar_content::TransverseAssociationAlgorithm::GetExtremalCoordinatesZ ( const pandora::Cluster *const  pCluster,
float &  minZ,
float &  maxZ 
) const
private

Get minimum and maximum Z coordinates for a given cluster.

Parameters
pClusterthe input cluster
minZthe minimum Z position
maxZthe maximum Z position

Definition at line 546 of file TransverseAssociationAlgorithm.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetInstanceName()

const std::string & pandora::Process::GetInstanceName ( ) const
inlineinherited

Get the instance name.

Returns
The instance name

Definition at line 109 of file Process.h.

◆ GetListOfCleanClusters()

void lar_content::TransverseAssociationAlgorithm::GetListOfCleanClusters ( const pandora::ClusterList *const  pClusterList,
pandora::ClusterVector clusterVector 
) const
privatevirtual

Populate cluster vector with subset of cluster list, containing clusters judged to be clean.

Parameters
pClusterListaddress of the cluster list
clusterVectorto receive the populated cluster vector

Implements lar_content::ClusterAssociationAlgorithm.

Definition at line 42 of file TransverseAssociationAlgorithm.cc.

Here is the call graph for this function:

◆ GetLongitudinalSpan()

float lar_content::TransverseAssociationAlgorithm::GetLongitudinalSpan ( const pandora::Cluster *const  pCluster) const
private

Calculate the overall span in Z for a clusters.

Parameters
pClusterthe target cluster

Definition at line 475 of file TransverseAssociationAlgorithm.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetNearbyClusterMap()

void lar_content::TransverseAssociationAlgorithm::GetNearbyClusterMap ( const pandora::ClusterVector allClusters,
ClusterToClustersMap nearbyClusters 
) const
private

Use a kd-tree to obtain details of all nearby cluster combinations.

Parameters
allClustersthe list of all clusters
nearbyClustersto obtain the nearby cluster map

Definition at line 118 of file TransverseAssociationAlgorithm.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetPandora()

const Pandora & pandora::Process::GetPandora ( ) const
inlineinherited

Get the associated pandora instance.

Returns
the associated pandora instance

Definition at line 116 of file Process.h.

◆ GetTransverseSpan() [1/2]

float lar_content::TransverseAssociationAlgorithm::GetTransverseSpan ( const pandora::Cluster *const  pCluster) const
private

Calculate the overall span in X for a clusters.

Parameters
pClusterthe target cluster

Definition at line 463 of file TransverseAssociationAlgorithm.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetTransverseSpan() [2/2]

float lar_content::TransverseAssociationAlgorithm::GetTransverseSpan ( const pandora::Cluster *const  pCluster,
const pandora::ClusterVector associatedClusters 
) const
private

Calculate the overall span in X for a set of clusters.

Parameters
pClusterthe target cluster
associatedClustersthe vector of associated clusters

Definition at line 487 of file TransverseAssociationAlgorithm.cc.

Here is the call graph for this function:

◆ GetType()

const std::string & pandora::Process::GetType ( ) const
inlineinherited

Get the type.

Returns
The type

Definition at line 102 of file Process.h.

◆ Initialize()

StatusCode pandora::Process::Initialize ( )
inlineprotectedvirtualinherited

Perform any operations that must occur after reading settings, but before running the process.

Reimplemented in lar_content::BdtBeamParticleIdTool, lar_content::BeamParticleIdTool, lar_content::CosmicRayTaggingTool, lar_content::EventReadingAlgorithm, lar_content::EventWritingAlgorithm, lar_content::LArPseudoLayerPlugin, lar_content::LArRotationalTransformationPlugin, EventReadingAlgorithm, and EventWritingAlgorithm.

Definition at line 126 of file Process.h.

Here is the caller graph for this function:

◆ IsAssociated()

bool lar_content::TransverseAssociationAlgorithm::IsAssociated ( const bool  isForward,
const pandora::Cluster *const  pCluster1,
const pandora::Cluster *const  pCluster2,
const ClusterToClustersMap nearbyClusters 
) const
private

Determine whether clusters are association.

Parameters
isForwardwhether the association is forwards or backwards
pCluster1the first cluster
pCluster2the second cluster
nearbyClustersthe nearby cluster map, extracted via use of a kd-tree
Returns
boolean

Definition at line 335 of file TransverseAssociationAlgorithm.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ IsExtremalCluster()

bool lar_content::TransverseAssociationAlgorithm::IsExtremalCluster ( const bool  isForward,
const pandora::Cluster *const  pCurrentCluster,
const pandora::Cluster *const  pTestCluster 
) const
privatevirtual

Determine which of two clusters is extremal.

Parameters
isForwardwhether propagation direction is forward
pCurrentClustercurrent extremal cluster
pTestClusterpotential extremal cluster
Returns
boolean

Implements lar_content::ClusterAssociationAlgorithm.

Definition at line 515 of file TransverseAssociationAlgorithm.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ IsOverlapping()

bool lar_content::TransverseAssociationAlgorithm::IsOverlapping ( const pandora::Cluster *const  pCluster1,
const pandora::Cluster *const  pCluster2 
) const
private

Determine whether two clusters are overlapping.

Parameters
pCluster1the first cluster
pCluster2the second cluster
Returns
boolean

Definition at line 445 of file TransverseAssociationAlgorithm.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ IsTransverseAssociated() [1/3]

bool lar_content::TransverseAssociationAlgorithm::IsTransverseAssociated ( const LArTransverseCluster *const  pTransverseCluster,
const pandora::CartesianVector testPosition 
) const
private

Determine whether one transverse cluster is associated with the vertex from a second transverse cluster.

Parameters
pTransverseClusterthe target cluster
theVertexthe vertex position
Returns
boolean

Definition at line 427 of file TransverseAssociationAlgorithm.cc.

Here is the call graph for this function:

◆ IsTransverseAssociated() [2/3]

bool lar_content::TransverseAssociationAlgorithm::IsTransverseAssociated ( const LArTransverseCluster *const  pTransverseCluster1,
const LArTransverseCluster *const  pTransverseCluster2,
const ClusterToClustersMap nearbyClusters 
) const
private

Determine whether two transverse clusters are associated.

Parameters
pTransverseCluster1the first transverse cluster
pTransverseCluster2the second transverse cluster
nearbyClustersthe nearby cluster map, extracted via use of a kd-tree
Returns
boolean

Definition at line 404 of file TransverseAssociationAlgorithm.cc.

Here is the call graph for this function:

◆ IsTransverseAssociated() [3/3]

bool lar_content::TransverseAssociationAlgorithm::IsTransverseAssociated ( const pandora::Cluster *const  pCluster1,
const pandora::Cluster *const  pCluster2,
const ClusterToClustersMap nearbyClusters 
) const
private

Determine whether two clusters are within the same cluster window.

Parameters
pCluster1the first cluster
pCluster2the second cluster
nearbyClustersthe nearby cluster map, extracted via use of a kd-tree
Returns
boolean

Definition at line 371 of file TransverseAssociationAlgorithm.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ NavigateAlongAssociations()

void lar_content::ClusterAssociationAlgorithm::NavigateAlongAssociations ( const ClusterAssociationMap clusterAssociationMap,
const pandora::Cluster *const  pCluster,
const bool  isForward,
const pandora::Cluster *&  pExtremalCluster,
pandora::ClusterSet clusterSet 
) const
privateinherited

Navigate along cluster associations, from specified cluster, in specified direction.

Parameters
clusterAssociationMapthe cluster association map
pClusteraddress of cluster with which to begin search
isForwardwhether propagation direction is forward
pExtremalClusterto receive the extremal cluster
clusterSetto receive set of clusters traversed

Definition at line 231 of file ClusterAssociationAlgorithm.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ PopulateClusterAssociationMap()

void lar_content::TransverseAssociationAlgorithm::PopulateClusterAssociationMap ( const pandora::ClusterVector clusterVector,
ClusterAssociationMap clusterAssociationMap 
) const
privatevirtual

Populate the cluster association map.

Parameters
clusterVectorthe cluster vector
clusterAssociationMapto receive the populated cluster association map

Implements lar_content::ClusterAssociationAlgorithm.

Definition at line 51 of file TransverseAssociationAlgorithm.cc.

Here is the call graph for this function:

◆ ReadSettings()

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

Read the algorithm settings.

Parameters
xmlHandlethe relevant xml handle

Reimplemented from lar_content::ClusterAssociationAlgorithm.

Definition at line 850 of file TransverseAssociationAlgorithm.cc.

Here is the call graph for this function:

◆ RegisterDetails()

StatusCode pandora::Process::RegisterDetails ( const Pandora *const  pPandora,
const std::string &  type,
const std::string &  instanceName 
)
inlineprotectedinherited

Register i) the pandora instance that will run the process and ii) the process type.

Parameters
pPandoraaddress of the pandora object that will run the process
typethe process type
instanceNamethe process instance name

Definition at line 146 of file Process.h.

Here is the caller graph for this function:

◆ Reset()

StatusCode pandora::Process::Reset ( )
inlineprotectedvirtualinherited

Perform any operations when pandora is reset, typically at the end of each event.

Reimplemented in lar_content::MasterAlgorithm, lar_content::PostProcessingAlgorithm, and lar_content::PreProcessingAlgorithm.

Definition at line 133 of file Process.h.

Here is the caller graph for this function:

◆ Run()

StatusCode lar_content::ClusterAssociationAlgorithm::Run ( )
protectedvirtualinherited

Run the algorithm.

Implements pandora::Algorithm.

Definition at line 26 of file ClusterAssociationAlgorithm.cc.

Here is the call graph for this function:

◆ SortInputClusters()

void lar_content::TransverseAssociationAlgorithm::SortInputClusters ( const pandora::ClusterVector inputClusters,
pandora::ClusterVector shortClusters,
pandora::ClusterVector transverseMediumClusters,
pandora::ClusterVector longitudinalMediumClusters,
pandora::ClusterVector longClusters 
) const
private

Separate input clusters by length.

Parameters
inputClustersthe input vector of clusters
shortClustersthe output vector of short clusters
transverseMediumClustersthe output vector of transverse medium clusters
longitudinalMediumClustersthe output vector of longitudinal medium clusters
longClustersthe output vector of all long clusters

Definition at line 159 of file TransverseAssociationAlgorithm.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ UnambiguousPropagation()

void lar_content::ClusterAssociationAlgorithm::UnambiguousPropagation ( const pandora::Cluster *const  pCluster,
const bool  isForward,
ClusterAssociationMap clusterAssociationMap 
) const
privateinherited

Unambiguous propagation.

Parameters
pClusteraddress of the cluster to propagate
isForwardwhether propagation direction is forward
clusterAssociationMapthe cluster association map

Definition at line 87 of file ClusterAssociationAlgorithm.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ UpdateForAmbiguousMerge()

void lar_content::ClusterAssociationAlgorithm::UpdateForAmbiguousMerge ( const pandora::Cluster *const  pCluster,
ClusterAssociationMap clusterAssociationMap 
) const
privateinherited

Update cluster association map to reflect an ambiguous cluster merge.

Parameters
pClusteraddress of the cluster to be cleared
clusterAssociationMapthe cluster association map

Definition at line 204 of file ClusterAssociationAlgorithm.cc.

Here is the caller graph for this function:

◆ UpdateForUnambiguousMerge()

void lar_content::ClusterAssociationAlgorithm::UpdateForUnambiguousMerge ( const pandora::Cluster *const  pClusterToEnlarge,
const pandora::Cluster *const  pClusterToDelete,
const bool  isForwardMerge,
ClusterAssociationMap clusterAssociationMap 
) const
privateinherited

Update cluster association map to reflect an unambiguous cluster merge.

Parameters
pClusterToEnlargeaddress of the cluster to be enlarged
pClusterToDeleteaddress of the cluster to be deleted
isForwardMergewhether merge is forward (pClusterToEnlarge is forward-associated with pClusterToDelete)
clusterAssociationMapthe cluster association map

Definition at line 166 of file ClusterAssociationAlgorithm.cc.

Here is the caller graph for this function:

Member Data Documentation

◆ m_clusterAngle

float lar_content::TransverseAssociationAlgorithm::m_clusterAngle
private

Definition at line 340 of file TransverseAssociationAlgorithm.h.

◆ m_clusterCosAngle

float lar_content::TransverseAssociationAlgorithm::m_clusterCosAngle
private

Definition at line 341 of file TransverseAssociationAlgorithm.h.

◆ m_clusterTanAngle

float lar_content::TransverseAssociationAlgorithm::m_clusterTanAngle
private

Definition at line 342 of file TransverseAssociationAlgorithm.h.

◆ m_clusterWindow

float lar_content::TransverseAssociationAlgorithm::m_clusterWindow
private

Definition at line 339 of file TransverseAssociationAlgorithm.h.

◆ m_firstLengthCut

float lar_content::TransverseAssociationAlgorithm::m_firstLengthCut
private

Definition at line 336 of file TransverseAssociationAlgorithm.h.

◆ m_instanceName

std::string pandora::Process::m_instanceName
protectedinherited

The process instance name.

Definition at line 89 of file Process.h.

◆ m_maxLongitudinalOverlap

float lar_content::TransverseAssociationAlgorithm::m_maxLongitudinalOverlap
private

Definition at line 346 of file TransverseAssociationAlgorithm.h.

◆ m_maxProjectedOverlap

float lar_content::TransverseAssociationAlgorithm::m_maxProjectedOverlap
private

Definition at line 345 of file TransverseAssociationAlgorithm.h.

◆ m_maxTransverseOverlap

float lar_content::TransverseAssociationAlgorithm::m_maxTransverseOverlap
private

Definition at line 344 of file TransverseAssociationAlgorithm.h.

◆ m_mergeMade

bool lar_content::ClusterAssociationAlgorithm::m_mergeMade
mutableprivateinherited

Definition at line 123 of file ClusterAssociationAlgorithm.h.

◆ m_pPandora

const Pandora* pandora::Process::m_pPandora
protectedinherited

The pandora object that will run the process.

Definition at line 87 of file Process.h.

◆ m_resolveAmbiguousAssociations

bool lar_content::ClusterAssociationAlgorithm::m_resolveAmbiguousAssociations
privateinherited

Whether to resolve ambiguous associations.

Definition at line 125 of file ClusterAssociationAlgorithm.h.

◆ m_searchRegionX

float lar_content::TransverseAssociationAlgorithm::m_searchRegionX
private

Search region, applied to x dimension, for look-up from kd-trees.

Definition at line 352 of file TransverseAssociationAlgorithm.h.

◆ m_searchRegionZ

float lar_content::TransverseAssociationAlgorithm::m_searchRegionZ
private

Search region, applied to u/v/w dimension, for look-up from kd-trees.

Definition at line 353 of file TransverseAssociationAlgorithm.h.

◆ m_secondLengthCut

float lar_content::TransverseAssociationAlgorithm::m_secondLengthCut
private

Definition at line 337 of file TransverseAssociationAlgorithm.h.

◆ m_transverseClusterMaxDisplacement

float lar_content::TransverseAssociationAlgorithm::m_transverseClusterMaxDisplacement
private

Definition at line 350 of file TransverseAssociationAlgorithm.h.

◆ m_transverseClusterMinCosTheta

float lar_content::TransverseAssociationAlgorithm::m_transverseClusterMinCosTheta
private

Definition at line 348 of file TransverseAssociationAlgorithm.h.

◆ m_transverseClusterMinLength

float lar_content::TransverseAssociationAlgorithm::m_transverseClusterMinLength
private

Definition at line 349 of file TransverseAssociationAlgorithm.h.

◆ m_type

std::string pandora::Process::m_type
protectedinherited

The process type.

Definition at line 88 of file Process.h.


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