12#ifndef ALICEO2_EMCAL_ANALYSISCLUSTER_H_
13#define ALICEO2_EMCAL_ANALYSISCLUSTER_H_
15#include <fairlogger/Logger.h>
20#include "TLorentzVector.h"
49 mCellIndex(cellIndex),
50 mMessage(
"Cell index " +
std::
to_string(mCellIndex) +
" out of range.")
63 const char*
what() const noexcept final {
return mMessage.data(); }
189 TLorentzVector
getMomentum(std::array<const float, 3> vertexPosition)
const;
Exception handling non-existing cell indices.
const char * what() const noexcept final
Access to error message of the exception.
CellOutOfRangeException(Int_t cellIndex)
Constructor, setting cell wrong cell index raising the exception.
~CellOutOfRangeException() noexcept final=default
Destructor.
Int_t getCellIndex() const noexcept
Access to cell ID raising the exception.
Cluster class for kinematic cluster parametersported from AliVCluster in AliRoot.
ClassDefNV(AnalysisCluster, 1)
float mDistToBadChannel
Distance to nearest bad channel.
math_utils::Point3D< float > mGlobalPos
Position in global coordinate system (cm).
void setNExMax(unsigned char nExMax)
void setGlobalPosition(math_utils::Point3D< float > x)
Set the cluster global position.
float mM02
2-nd moment along the main eigen axis.
const std::vector< float > & getCellsAmplitudeFraction() const
void setDistanceToBadChannel(float dist)
AnalysisCluster(const AnalysisCluster &clus)=default
float getEmcCpvDistance() const
void setCoreEnergy(float energy)
float mTrackDx
Distance to closest track in phi.
unsigned char getNExMax() const
float mEmcCpvDistance
the distance from PHOS EMC rec.point to the closest CPV rec.point.
float getDispersion() const
math_utils::Point3D< float > getGlobalPosition() const
float mChi2
Chi2 of cluster fit (unfolded clusters)
math_utils::Point3D< float > getLocalPosition() const
float mTrackDz
Distance to closest track in z.
~AnalysisCluster()=default
int mInputIndMax
index of digit/cell with max energy
float getClusterTime() const
float mEnergy
Energy measured by calorimeter in GeV.
AnalysisCluster()=default
void setCellsAmplitudeFraction(const std::vector< float > &array)
int mID
Unique Id of the cluster.
bool mIsExotic
! Cluster marked as "exotic" (high energy deposition concentrated in a single cell)
void setCellsIndices(const std::vector< unsigned short > &array)
Set the array of cell indices.
math_utils::Point3D< float > mLocalPos
Local position in the sub-detector coordinate.
void setEmcCpvDistance(float dEmcCpv)
TLorentzVector getMomentum(std::array< const float, 3 > vertexPosition) const
float mM20
2-nd moment along the second eigen axis.
float getCoreEnergy() const
AnalysisCluster & operator=(const AnalysisCluster &source)=default
int getCellIndex(int i) const
float mDispersion
Cluster shape dispersion.
float getDistanceToBadChannel() const
float getCellAmplitudeFraction(int i) const
std::vector< float > mCellsAmpFraction
const std::vector< unsigned short > & getCellsIndices() const
std::vector< int > mLabels
TODO to replace later by o2::MCLabel when implementing the MC handling.
void setDispersion(float disp)
void setIndMaxInput(const int ind)
void setTrackDistance(float dx, float dz)
unsigned char mNExMax
Number of Local (Ex-)maxima before unfolding.
std::vector< unsigned short > mCellsIndices
Array of cell indices contributing to this cluster.
void setClusterTime(float time)
float mCoreEnergy
Energy in a shower core.
float mTime
Time of the digit/cell with maximal energy deposition.
int getIndMaxInput() const
int mNCells
Number of cells in cluster.
void setLocalPosition(math_utils::Point3D< float > x)
GLboolean GLboolean GLboolean b
GLsizei GLsizei GLchar * source
a couple of static helper functions to create timestamp values for CCDB queries or override obsolete ...
Defining DataPointCompositeObject explicitly as copiable.
std::string to_string(gsl::span< T, Size > span)