HerdSoftware  0.3.2
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 _processCalo
 Flag variable to instruct the algorithm to process the whole calo hit collection instead of separate CaloClusters. More...
 
float _eDepThreshold
 Threshold (in GeV) for energy deposit in CALO hits. Only hits above threshold are used to build the CALO axis. More...
 
unsigned short _minhits
 Minimum number of hits above threshold to reconstruct the axis. More...
 
std::string _caloHitsName
 Name of the CaloHits collections to be used for reconstruction. More...
 
Tracks _caloAxes
 Pointer to tracks objects. More...
 
std::vector< CaloHitsRefFrame_chRefFrames
 
observer_ptr< EventDataStore > _evStore
 
observer_ptr< GlobalDataStore > _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.20 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

◆ _caloAxes

Tracks Herd::PcaCaloAxisTrackingAlgo::_caloAxes
private

Pointer to tracks objects.

◆ _caloHitsName

std::string Herd::PcaCaloAxisTrackingAlgo::_caloHitsName
private

Name of the CaloHits collections to be used for reconstruction.

◆ _chRefFrames

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

◆ _eDepThreshold

float Herd::PcaCaloAxisTrackingAlgo::_eDepThreshold
private

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

◆ _evStore

observer_ptr<EventDataStore> Herd::PcaCaloAxisTrackingAlgo::_evStore
private

◆ _globStore

observer_ptr<GlobalDataStore> Herd::PcaCaloAxisTrackingAlgo::_globStore
private

◆ _minhits

unsigned short Herd::PcaCaloAxisTrackingAlgo::_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

◆ _processCalo

bool Herd::PcaCaloAxisTrackingAlgo::_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: