HerdSoftware  0.4.0
Public Member Functions | Private Member Functions | Private Attributes | List of all members
Herd::PcaCaloAxisTrackingAlgo Class Reference

Algorithm for Calorimeter Shower Axis reconstruction based on Principal Component Analysis (PCA) method. More...

#include <algorithms/tracking/CaloAxis/PcaCaloAxisTrackingAlgo.h>

Inheritance diagram for Herd::PcaCaloAxisTrackingAlgo:

Public Member Functions

 PcaCaloAxisTrackingAlgo (const std::string &name)
 Constructor. More...
 
bool Initialize () override
 Initialization of the algorithm. More...
 
bool Process () override
 Process a single event. More...
 
bool Finalize () override
 Post processing part. More...
 

Private Member Functions

bool BuildAxis (const CaloHits &, std::string hitsObjName, size_t clusterIndex)
 Build Shower Axis. More...
 

Private Attributes

bool m_processCalo
 Flag variable to instruct the algorithm to process the whole calo hit collection instead of separate CaloClusters. More...
 
float m_eDepThreshold
 Threshold (in GeV) for energy deposit in CALO hits. Only hits above threshold are used to build the CALO axis. More...
 
unsigned short m_minhits
 Minimum number of hits above threshold to reconstruct the axis. More...
 
std::string m_caloHitsName
 Name of the CaloHits collections to be used for reconstruction. More...
 
Tracks m_caloAxes
 Pointer to tracks objects. More...
 
std::vector< CaloHitsRefFramem_chRefFrames
 
EA::observer_ptr< EA::EventDataStore > m_evStore
 
EA::observer_ptr< EA::GlobalDataStore > m_globStore
 

Detailed Description

Algorithm for Calorimeter Shower Axis reconstruction based on Principal Component Analysis (PCA) method.

This algorithm reconstructs the calorimeter shower axis based on Principal Component Analysis (PCA) method. It works either on the whole set of calorimeter hits or on calorimeter clusters ar reconstructed by another algorithm. The algorithm searches for the eigenvectors of the calorimeter energy deposit covariance matrix and the corresponding eigenvalues. Eigenvectors are sorted from largest eigenvalue to smallest eigenvalue. The first eigenvector represents the main longitudinal axis. The remaining two eigenvectors represent the main lateral axes. The direction of the axis is defined by the sign of the skewness for the energy deposits along the first eigenvector, so it is related to the shower development direction (although this reconstruction method might yield the wrong direction for showers with significant leakage). The Center-Of-Gravity (COG) of the cluster is used as the anchor point of the track.

The algorithm produces a Tracks object with all the reconstructed axes and a vector of PcaTrackingInfo objects whose elements contain the PCA variables (eigenvalues etc.) used to reconstruct each axis. The tracks and PCA info containers are aligned, e.g. the first PCA info is related to the first axis.

Needed event objects:

name type store required description
caloGeoParams CaloGeoParams globStore if processCalo=false Calorimeter Geometrical Parameters
caloClusters CaloClusters evStore if processCalo=false Calorimeter clusters
caloHits<X> CaloHits evStore if processCalo=true Calorimeter hit collection

Produced event objects:

name -type- alias store description
caloAxes_pca Tracks caloAxes evStore The collection of CALO axes.
caloHitsRefFrames_pca std::vector<CaloHitsRefFrame> caloHitsRefFrames evStore The reference frame of each CALO hits (cluster) object.

Parameters:

name type default value description
processCalo bool false If true, neglect CaloClusters and process the collection of CaloHits of the whole Calo
edepThreshold float 0.020 Energy deposit threshold (in GeV) for CaloHits to enter the reconstruction algorithm
minHits int 4 Minimum number of hit above threshold to reconstruct CaloAxis
caloHitsName string caloHitsGeV Name of the CaloHits collection used for reconstruction. Possible suggested solutions are: caloHitsGeV; caloHitsGGS.

Constructor & Destructor Documentation

◆ PcaCaloAxisTrackingAlgo()

Herd::PcaCaloAxisTrackingAlgo::PcaCaloAxisTrackingAlgo ( const std::string &  name)

Constructor.

Parameters
nameThe name of the algorithm

Member Function Documentation

◆ BuildAxis()

bool Herd::PcaCaloAxisTrackingAlgo::BuildAxis ( const CaloHits caloHits,
std::string  hitsObjName,
size_t  clusterIndex 
)
private

Build Shower Axis.

◆ Finalize()

bool Herd::PcaCaloAxisTrackingAlgo::Finalize ( )
override

Post processing part.

Returns
If post-processing is successful.

◆ Initialize()

bool Herd::PcaCaloAxisTrackingAlgo::Initialize ( )
override

Initialization of the algorithm.

Returns
true if the initialization procedure is successful.

◆ Process()

bool Herd::PcaCaloAxisTrackingAlgo::Process ( )
override

Process a single event.

Returns
If event processing is successful.

Member Data Documentation

◆ m_caloAxes

Tracks Herd::PcaCaloAxisTrackingAlgo::m_caloAxes
private

Pointer to tracks objects.

◆ m_caloHitsName

std::string Herd::PcaCaloAxisTrackingAlgo::m_caloHitsName
private

Name of the CaloHits collections to be used for reconstruction.

◆ m_chRefFrames

std::vector<CaloHitsRefFrame> Herd::PcaCaloAxisTrackingAlgo::m_chRefFrames
private

◆ m_eDepThreshold

float Herd::PcaCaloAxisTrackingAlgo::m_eDepThreshold
private

Threshold (in GeV) for energy deposit in CALO hits. Only hits above threshold are used to build the CALO axis.

◆ m_evStore

EA::observer_ptr<EA::EventDataStore> Herd::PcaCaloAxisTrackingAlgo::m_evStore
private

◆ m_globStore

EA::observer_ptr<EA::GlobalDataStore> Herd::PcaCaloAxisTrackingAlgo::m_globStore
private

◆ m_minhits

unsigned short Herd::PcaCaloAxisTrackingAlgo::m_minhits
private

Minimum number of hits above threshold to reconstruct the axis.

If below, reconstruction is not completed and no CaloAxis object is added to the collection

◆ m_processCalo

bool Herd::PcaCaloAxisTrackingAlgo::m_processCalo
private

Flag variable to instruct the algorithm to process the whole calo hit collection instead of separate CaloClusters.


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