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

CosmicRaySplittingAlgorithm class. More...

#include "CosmicRaySplittingAlgorithm.h"

Inheritance diagram for lar_content::CosmicRaySplittingAlgorithm:
Collaboration diagram for lar_content::CosmicRaySplittingAlgorithm:

Public Member Functions

 CosmicRaySplittingAlgorithm ()
 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 Member Functions

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 Member Functions

pandora::StatusCode Run ()
 Run the algorithm.
 
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 BuildSlidingFitResultMap (const pandora::ClusterVector &clusterVector, TwoDSlidingFitResultMap &slidingFitResultMap) const
 Build the map of sliding fit results.
 
pandora::StatusCode FindBestSplitPosition (const TwoDSlidingFitResult &slidingFitResult, pandora::CartesianVector &splitPosition, pandora::CartesianVector &splitDirection1, pandora::CartesianVector &splitDirection2) const
 Find the position of greatest scatter along a sliding linear fit.
 
pandora::StatusCode ConfirmSplitPosition (const TwoDSlidingFitResult &branchSlidingFitResult, const TwoDSlidingFitResult &replacementSlidingFitResult, const pandora::CartesianVector &splitPosition, const pandora::CartesianVector &splitDirection1, const pandora::CartesianVector &splitDirection2, float &lengthSquared1, float &lengthSquared2) const
 Find a second replacement cluster that aligns with the scatter of the first branch cluster.
 
pandora::StatusCode PerformSingleSplit (const pandora::Cluster *const pBranchCluster, const pandora::Cluster *const pReplacementCluster, const pandora::CartesianVector &splitPosition, const pandora::CartesianVector &forwardDirection, const pandora::CartesianVector &backwardDirection) const
 Split a branch cluster for case of one replacement cluster.
 
pandora::StatusCode PerformDoubleSplit (const pandora::Cluster *const pBranchCluster, const pandora::Cluster *const pReplacementCluster1, const pandora::Cluster *const pReplacementCluster2, const pandora::CartesianVector &splitPosition, const pandora::CartesianVector &splitDirection1, const pandora::CartesianVector &splitDirection2) const
 Split a branch cluster for case of two replacement clusters.
 
void GetCaloHitListToMove (const pandora::Cluster *const pBranchCluster, const pandora::Cluster *const pReplacementCluster, const pandora::CartesianVector &splitPosition, const pandora::CartesianVector &forwardDirection, const pandora::CartesianVector &backwardDirection, pandora::CaloHitList &caloHitList) const
 Get list of calo hits to move in order to split a branch cluster into two segments for case of one replacement cluster.
 
void GetCaloHitListsToMove (const pandora::Cluster *const pBranchCluster, const pandora::CartesianVector &splitPosition, const pandora::CartesianVector &splitDirection1, const pandora::CartesianVector &splitDirection2, pandora::CaloHitList &caloHitList1, pandora::CaloHitList &caloHitList2) const
 Get lists of calo hits to move in order to split a branch cluster into two segments for case of two replacement clusters.
 
bool IdentifyCrossedTracks (const pandora::Cluster *const pBranchCluster, const pandora::Cluster *const pReplacementCluster1, const pandora::Cluster *const pReplacementCluster2, const pandora::CartesianVector &splitPosition) const
 Identify crossed tracks formed from the branch cluster and its replacement cluster.
 
pandora::StatusCode GetCaloHitListToKeep (const pandora::Cluster *const pBranchCluster, const pandora::CaloHitList &caloHitListToMove, pandora::CaloHitList &caloHitListToKeep) const
 Split the branch cluster and add hits to the replacement cluster.
 
pandora::StatusCode SplitCluster (const pandora::Cluster *const pBranchCluster, const pandora::Cluster *const pReplacementCluster, const pandora::CaloHitList &caloHitListToMove) const
 Split the branch cluster and add hits to the replacement cluster.
 

Private Attributes

float m_clusterMinLength
 minimum length of clusters for this algorithm
 
unsigned int m_halfWindowLayers
 number of layers to use for half-window of sliding fit
 
float m_samplingPitch
 sampling pitch for walking along sliding linear fit
 
float m_maxCosSplittingAngle
 smallest scatter angle allowed when splitting cluster
 
float m_minCosMergingAngle
 largest relative angle allowed when merging clusters
 
float m_maxTransverseDisplacement
 maximum transverse displacement of associated clusters
 
float m_maxLongitudinalDisplacement
 maximum longitudinal displacement of associated clusters
 
float m_maxLongitudinalDisplacementSquared
 longitudinal displacement squared
 

Detailed Description

Constructor & Destructor Documentation

◆ CosmicRaySplittingAlgorithm()

lar_content::CosmicRaySplittingAlgorithm::CosmicRaySplittingAlgorithm ( )

Default constructor.

Definition at line 22 of file CosmicRaySplittingAlgorithm.cc.

Member Function Documentation

◆ BuildSlidingFitResultMap()

void lar_content::CosmicRaySplittingAlgorithm::BuildSlidingFitResultMap ( const pandora::ClusterVector clusterVector,
TwoDSlidingFitResultMap slidingFitResultMap 
) const
private

Build the map of sliding fit results.

Parameters
clusterVectorthe input cluster vector
slidingFitResultMapthe output sliding fit result map

Definition at line 181 of file CosmicRaySplittingAlgorithm.cc.

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

◆ ConfirmSplitPosition()

StatusCode lar_content::CosmicRaySplittingAlgorithm::ConfirmSplitPosition ( const TwoDSlidingFitResult branchSlidingFitResult,
const TwoDSlidingFitResult replacementSlidingFitResult,
const pandora::CartesianVector splitPosition,
const pandora::CartesianVector splitDirection1,
const pandora::CartesianVector splitDirection2,
float &  lengthSquared1,
float &  lengthSquared2 
) const
private

Find a second replacement cluster that aligns with the scatter of the first branch cluster.

Parameters
branchSlidingFitResultthe sliding fit result for the branch cluster
replacementSlidingFitResultthe sliding fit result for the replacement cluster
splitPositionthe candidate split position on the branch cluster
splitDirection1the first track direction just above the split position
splitDirection2the second track direction just below the split position
lengthSquared1figure of merit for association with first track direction
lengthSquared2figure of merit for association with second track direction

Definition at line 270 of file CosmicRaySplittingAlgorithm.cc.

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

◆ FindBestSplitPosition()

StatusCode lar_content::CosmicRaySplittingAlgorithm::FindBestSplitPosition ( const TwoDSlidingFitResult slidingFitResult,
pandora::CartesianVector splitPosition,
pandora::CartesianVector splitDirection1,
pandora::CartesianVector splitDirection2 
) const
private

Find the position of greatest scatter along a sliding linear fit.

Parameters
slidingFitResultthe input sliding linear fit result
splitPositionthe position of greatest scatter
splitDirection1the direction vector just above the scatter position
splitDirection2the direction vector just below the scatter position

Definition at line 207 of file CosmicRaySplittingAlgorithm.cc.

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

◆ GetCaloHitListsToMove()

void lar_content::CosmicRaySplittingAlgorithm::GetCaloHitListsToMove ( const pandora::Cluster *const  pBranchCluster,
const pandora::CartesianVector splitPosition,
const pandora::CartesianVector splitDirection1,
const pandora::CartesianVector splitDirection2,
pandora::CaloHitList caloHitList1,
pandora::CaloHitList caloHitList2 
) const
private

Get lists of calo hits to move in order to split a branch cluster into two segments for case of two replacement clusters.

Parameters
pBranchClusterthe branch cluster
splitPositionthe split position
splitDirection1the direction of the branch cluster just above the split position
splitDirection2the direction of the branch cluster just below the split position
caloHitList1the first segment to be split from the branch cluster
caloHitList2the second segment to be split from the branch cluster

Definition at line 449 of file CosmicRaySplittingAlgorithm.cc.

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

◆ GetCaloHitListToKeep()

StatusCode lar_content::CosmicRaySplittingAlgorithm::GetCaloHitListToKeep ( const pandora::Cluster *const  pBranchCluster,
const pandora::CaloHitList caloHitListToMove,
pandora::CaloHitList caloHitListToKeep 
) const
private

Split the branch cluster and add hits to the replacement cluster.

Parameters
pBranchClusterthe branch cluster
caloHitListToMovethe list of hits to be removed from the branch cluster and added to the replacement cluster
caloHitListToKeepto receive the list of calo hits to keep

Definition at line 491 of file CosmicRaySplittingAlgorithm.cc.

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

◆ GetCaloHitListToMove()

void lar_content::CosmicRaySplittingAlgorithm::GetCaloHitListToMove ( const pandora::Cluster *const  pBranchCluster,
const pandora::Cluster *const  pReplacementCluster,
const pandora::CartesianVector splitPosition,
const pandora::CartesianVector forwardDirection,
const pandora::CartesianVector backwardDirection,
pandora::CaloHitList caloHitList 
) const
private

Get list of calo hits to move in order to split a branch cluster into two segments for case of one replacement cluster.

Parameters
pBranchClusterthe branch cluster
pReplacementClusterthe replacement cluster
splitPositionthe split position
forwardDirectionthe direction of the branch cluster just above the split position
backwardDirectionthe direction of the branch cluster just below the split position
caloHitListthe output hits to be removed from the branch cluster

Definition at line 397 of file CosmicRaySplittingAlgorithm.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::CosmicRaySplittingAlgorithm::GetListOfCleanClusters ( const pandora::ClusterList *const  pClusterList,
pandora::ClusterVector clusterVector 
) const
private

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

Definition at line 164 of file CosmicRaySplittingAlgorithm.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.

◆ GetType()

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

Get the type.

Returns
The type

Definition at line 102 of file Process.h.

◆ IdentifyCrossedTracks()

bool lar_content::CosmicRaySplittingAlgorithm::IdentifyCrossedTracks ( const pandora::Cluster *const  pBranchCluster,
const pandora::Cluster *const  pReplacementCluster1,
const pandora::Cluster *const  pReplacementCluster2,
const pandora::CartesianVector splitPosition 
) const
private

Identify crossed tracks formed from the branch cluster and its replacement cluster.

Parameters
pBranchClusterthe branch cluster
pReplacementCluster1the first replacement cluster
pReplacementCluster2the second replacement cluster
splitPositionthe split position

Definition at line 474 of file CosmicRaySplittingAlgorithm.cc.

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

◆ 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:

◆ PerformDoubleSplit()

StatusCode lar_content::CosmicRaySplittingAlgorithm::PerformDoubleSplit ( const pandora::Cluster *const  pBranchCluster,
const pandora::Cluster *const  pReplacementCluster1,
const pandora::Cluster *const  pReplacementCluster2,
const pandora::CartesianVector splitPosition,
const pandora::CartesianVector splitDirection1,
const pandora::CartesianVector splitDirection2 
) const
private

Split a branch cluster for case of two replacement clusters.

Parameters
pBranchClusterthe branch cluster
pReplacementCluster1the first replacement cluster
pReplacementCluster2the second replacement cluster
splitPositionthe split position
splitDirection1the direction of the branch cluster just above the split position
splitDirection2the direction of the branch cluster just below the split position

Definition at line 371 of file CosmicRaySplittingAlgorithm.cc.

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

◆ PerformSingleSplit()

StatusCode lar_content::CosmicRaySplittingAlgorithm::PerformSingleSplit ( const pandora::Cluster *const  pBranchCluster,
const pandora::Cluster *const  pReplacementCluster,
const pandora::CartesianVector splitPosition,
const pandora::CartesianVector forwardDirection,
const pandora::CartesianVector backwardDirection 
) const
private

Split a branch cluster for case of one replacement cluster.

Parameters
pBranchClusterthe branch cluster
pReplacementClusterthe replacement cluster
splitPositionthe split position
forwardDirectionthe direction of the branch cluster just above the split position
backwardDirectionthe direction of the branch cluster just below the split position

Definition at line 354 of file CosmicRaySplittingAlgorithm.cc.

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

◆ ReadSettings()

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

Read the algorithm settings.

Parameters
xmlHandlethe relevant xml handle

Implements pandora::Process.

Definition at line 531 of file CosmicRaySplittingAlgorithm.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::CosmicRaySplittingAlgorithm::Run ( )
privatevirtual

Run the algorithm.

Implements pandora::Algorithm.

Definition at line 36 of file CosmicRaySplittingAlgorithm.cc.

Here is the call graph for this function:

◆ SplitCluster()

StatusCode lar_content::CosmicRaySplittingAlgorithm::SplitCluster ( const pandora::Cluster *const  pBranchCluster,
const pandora::Cluster *const  pReplacementCluster,
const pandora::CaloHitList caloHitListToMove 
) const
private

Split the branch cluster and add hits to the replacement cluster.

Parameters
pBranchClusterthe branch cluster
pReplacementClusterthe replacement cluster
caloHitListToMovethe list of hits to be removed from the branch cluster and added to the replacement cluster

Definition at line 513 of file CosmicRaySplittingAlgorithm.cc.

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

Member Data Documentation

◆ m_clusterMinLength

float lar_content::CosmicRaySplittingAlgorithm::m_clusterMinLength
private

minimum length of clusters for this algorithm

Definition at line 161 of file CosmicRaySplittingAlgorithm.h.

◆ m_halfWindowLayers

unsigned int lar_content::CosmicRaySplittingAlgorithm::m_halfWindowLayers
private

number of layers to use for half-window of sliding fit

Definition at line 162 of file CosmicRaySplittingAlgorithm.h.

◆ m_instanceName

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

The process instance name.

Definition at line 89 of file Process.h.

◆ m_maxCosSplittingAngle

float lar_content::CosmicRaySplittingAlgorithm::m_maxCosSplittingAngle
private

smallest scatter angle allowed when splitting cluster

Definition at line 164 of file CosmicRaySplittingAlgorithm.h.

◆ m_maxLongitudinalDisplacement

float lar_content::CosmicRaySplittingAlgorithm::m_maxLongitudinalDisplacement
private

maximum longitudinal displacement of associated clusters

Definition at line 167 of file CosmicRaySplittingAlgorithm.h.

◆ m_maxLongitudinalDisplacementSquared

float lar_content::CosmicRaySplittingAlgorithm::m_maxLongitudinalDisplacementSquared
private

longitudinal displacement squared

Definition at line 168 of file CosmicRaySplittingAlgorithm.h.

◆ m_maxTransverseDisplacement

float lar_content::CosmicRaySplittingAlgorithm::m_maxTransverseDisplacement
private

maximum transverse displacement of associated clusters

Definition at line 166 of file CosmicRaySplittingAlgorithm.h.

◆ m_minCosMergingAngle

float lar_content::CosmicRaySplittingAlgorithm::m_minCosMergingAngle
private

largest relative angle allowed when merging clusters

Definition at line 165 of file CosmicRaySplittingAlgorithm.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_samplingPitch

float lar_content::CosmicRaySplittingAlgorithm::m_samplingPitch
private

sampling pitch for walking along sliding linear fit

Definition at line 163 of file CosmicRaySplittingAlgorithm.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: