10 #ifndef HERD_CALOAXIS_H_ 11 #define HERD_CALOAXIS_H_ 67 DEFAULT_INIT(m_axisPathlengthHit), m_caloHits{std::move(caloHits)}, m_energyThreshold{energyThreshold} {};
79 if (m_axisSigma == DefaultValue(m_axisSigma)) {
80 ComputeMomenta(geoParams);
92 if (m_axisSkewness == DefaultValue(m_axisSkewness)) {
93 ComputeMomenta(geoParams);
95 return m_axisSkewness;
105 if (m_axisKurtosis == DefaultValue(m_axisKurtosis)) {
106 ComputeMomenta(geoParams);
108 return m_axisKurtosis;
116 return std::count_if(begin(m_caloHits), end(m_caloHits),
117 [
this](
const Hit &hit) {
return hit.
EDep() > m_energyThreshold; });
132 std::array<double, 3>
Eigenvalues()
const {
return m_axisEigenvalues; };
139 std::array<Point, 3>
Eigenvectors()
const {
return m_axisEigenvectors; };
154 if (m_axisEntryHit == DefaultValue(m_axisEntryHit)) {
155 ComputePathlength(geoParams);
157 return m_axisEntryHit;
166 if (m_axisExitHit == DefaultValue(m_axisExitHit)) {
167 ComputePathlength(geoParams);
169 return m_axisExitHit;
178 if (m_axisPathlengthHit == DefaultValue(m_axisPathlengthHit)) {
179 ComputePathlength(geoParams);
181 return m_axisPathlengthHit;
192 double LateralEnergy(
const CaloGeoParams &geoParams,
double radmin = 0,
double radmax = defaultValue<double>);
205 double LongitudinalEntryEnergy(
const CaloGeoParams &geoParams,
double dist,
double radmin = 0,
206 double radmax = defaultValue<double>);
219 double LongitudinalExitEnergy(
const CaloGeoParams &geoParams,
double dist,
double radmin = 0,
220 double radmax = defaultValue<double>);
236 double LocalEnergy(
const CaloGeoParams &geoParams,
Point center,
double distneg,
double distpos,
double radmin = 0,
237 double radmax = defaultValue<double>);
285 float m_energyThreshold = 0;
unsigned short AxisHits() const
Number of hits used for axis reconstruction.
Definition: CaloAxis.h:115
Point AxisExitHit(const CaloGeoParams &geoParams)
Axis Exit point
Definition: CaloAxis.h:165
CssGeoParams.h CssGeoParams class declaration.
Definition: CaloPDCalibrationAlgo.h:24
Container of information about the Calorimeter Shower Axis.
Definition: CaloAxis.h:46
std::array< double, 3 > m_axisSkewness
Definition: CaloAxis.h:274
Vec3D m_axisDir
Definition: CaloAxis.h:272
Line Axis() const
get the shower Axis
Definition: CaloAxis.h:146
Point COG() const
Axis Center of Gravity
Definition: CaloAxis.h:125
CaloAxis()
Default constructor.
Definition: CaloAxis.h:53
#define DEFAULT_INIT(x)
Definition: DefaultValues.h:23
CaloAxisAlgoType AlgoType() const
Flag provinding the algorithm used for the reconstruction of the CaloAxis object. ...
Definition: CaloAxis.h:112
CaloAxis(const CaloHits caloHits, float energyThreshold)
Constructor from a collection of hits and threshold.
Definition: CaloAxis.h:63
double AxisPathlengthHit(const CaloGeoParams &geoParams)
Axis total pathlength inside crystals
Definition: CaloAxis.h:177
Point AxisEntryHit(const CaloGeoParams &geoParams)
Axis Entry point
Definition: CaloAxis.h:153
void SetCOG(Point cog)
Set the COG.
Definition: CaloAxis.h:244
Point m_axisExitHit
Definition: CaloAxis.h:277
Point m_axisEntryHit
Definition: CaloAxis.h:276
void SetDirection(Vec3D dir)
Set the direction.
Definition: CaloAxis.h:249
void SetEigenvectors(std::array< Point, 3 > eig)
Set the eigenvectors.
Definition: CaloAxis.h:259
CaloAxisAlgoType
Definition: CaloAxis.h:34
A class describing a vector in 3D space.
Definition: Vec3D.h:33
Data structure for the Calo geometry parameters.
Definition: CaloGeoParams.h:29
CaloAxisAlgoType m_axisAlgo
Definition: CaloAxis.h:268
std::array< Point, 3 > m_axisEigenvectors
Definition: CaloAxis.h:271
std::array< double, 3 > AxisSigma(const CaloGeoParams &geoParams)
Axis Sigma around COG (cm).
Definition: CaloAxis.h:78
Class describing a line in the 3D space.
Definition: Line.h:32
std::array< double, 3 > AxisKurtosis(const CaloGeoParams &geoParams)
Axis Kurtosis around COG (adim).
Definition: CaloAxis.h:104
double m_axisPathlengthHit
Definition: CaloAxis.h:278
void SetAlgoType(CaloAxisAlgoType algoType)
Definition: CaloAxis.h:239
std::array< Point, 3 > Eigenvectors() const
Eigenvectors of Axis Covariance matrix.
Definition: CaloAxis.h:139
void SetEigenvalues(std::array< double, 3 > eig)
Set the eigenvalues.
Definition: CaloAxis.h:254
CaloHits m_caloHits
Definition: CaloAxis.h:280
std::array< double, 3 > AxisSkewness(const CaloGeoParams &geoParams)
Axis Skewness around COG (adim).
Definition: CaloAxis.h:91
std::array< double, 3 > m_axisSigma
Definition: CaloAxis.h:273
std::array< double, 3 > m_axisEigenvalues
Definition: CaloAxis.h:270
float EDep() const
Get the deposited energy.
Definition: Hit.h:45
std::array< double, 3 > m_axisKurtosis
Definition: CaloAxis.h:275
Hit object for transient data model.
Definition: Hit.h:30
std::array< double, 3 > Eigenvalues() const
Eigenvalues of Axis Covariance matrix.
Definition: CaloAxis.h:132
Point m_axisCOG
Definition: CaloAxis.h:269
Container for the hits of a single CALO detector.