12#include <framework/datastore/RelationsObject.h>
15#include <Math/Vector3D.h>
16#include <TMatrixDSym.h>
78 m_Error{0.0, 0.0, 0.0, 0.0, 0.0, 0.0},
156 for (
unsigned int i = 0; i < 6; i++) {
314 for (
unsigned int i = 0; i < 6; i++) {
454 return ROOT::Math::XYZVector(
464 TMatrixDSym covmatecl(3);
473 for (
int i = 0; i < 3; i++)
474 for (
int j = 0; j < i ; j++)
475 covmatecl(j, i) = covmatecl(i, j);
484 if (theta < 0.2164208)
return 0;
485 if (theta < 0.5480334)
return 1;
486 if (theta < 0.561996)
return 11;
487 if (theta < 2.2462387)
return 2;
488 if (theta < 2.2811453)
return 13;
489 if (theta < 2.7070057)
return 3;
569 std::vector<std::pair<unsigned int, bool>>
Class to store ECL Showers.
ECLShower()
Default constructor for ROOT.
int getStatus() const
Get Status.
std::vector< std::pair< unsigned int, bool > > getListOfCrystalEnergyRankAndQuality()
Get list of indexes of related ECLCalDigit objects sorted by calibrated energy with flag for PSD usab...
void setE9oE21(double E9oE21)
Set energy ration E9 over E21.
bool m_isTrk
Match with track (GDN)
void setEnergyRaw(double EnergySum)
Set Raw Energy Sum.
void setPulseShapeDiscriminationMVA(double mvaVal)
Set shower hadron intensity.
Double32_t m_zernikeMVA
Shower shape variable, zernike MVA output.
void setLateralEnergy(double lateralEnergy)
Set Lateral Energy.
ClassDef(ECLShower, 17)
ClassDef.
void setShowerId(int ShowerId)
Set Shower ID.
std::vector< unsigned int > & getListOfCrystalsForEnergy()
Get list of cellids used for energy calculation.
void setNOptimalEnergyBin(int nOptimalEnergyBin)
Set energy bin number used to find nominalNumberOfCrystalsForEnergy.
double getAbsZernikeMoment(unsigned int n, unsigned int m) const
Get absolute value of Zernike Moment nm.
void setEnergy(double Energy)
Set Energy.
void setPhi(double Phi)
Set Phi (rad)
int getHypothesisId() const
Get Hypothesis Id.
int m_centralCellId
Central cell ID (TF)
void setConnectedRegionId(int connectedRegionId)
Set Connected region ID.
void addStatus(unsigned short int bitmask)
Add bitmask to current status.
void setNumberOfCrystals(double nofCrystals)
Set sum of weights of crystals.
Double32_t m_nOptimalEnergy
energy used in ECLSplitterN1 to find nOptimalEnergyBin (CH)
double getPulseShapeDiscriminationMVA() const
Get shower hadron intensity.
TMatrixDSym getCovarianceMatrix3x3() const
Return TMatrixDsym 3x3 covariance matrix for E, Phi and Theta.
void setEnergyHighestCrystal(double HighestEnergy)
Set Highest Energy.
double getPhi() const
Get Phi.
Double32_t m_numberOfCrystals
Sum of weights of crystals (~number of crystals) (TF)
double getLateralEnergy() const
Get Lateral Energy in Shower.
Double32_t m_ShowerHadronIntensity
Shower Hadron Component Intensity (pulse shape discrimination variable).
double getE1oE9() const
Get energy ratio E1oE9.
void setShowerDepth(double showerDepth)
Set path on the average cluster direction.
int getShowerId() const
Get Shower Id.
double getEnergy() const
Get Energy.
void getCovarianceMatrixAsArray(double covArray[6]) const
Get Error Array for Energy->[0], Phi->[2], Theta->[5].
bool hasStatus(unsigned short int bitmask) const
Return if specific status bit is set.
void setSecondMoment(double secondMoment)
Set second moment.
Double32_t m_E1oE9
Shower shape variable, E1oE9 (TF)
int getNOptimalGroupIndex() const
Get index of group of crystals used to find nominalNumberOfCrystalsForEnergy.
int getNOptimalEnergyBin() const
Get energy bin used to find nominalNumberOfCrystalsForEnergy.
double getShowerDepth() const
path on track extrapolation to POCA to average cluster direction
void setCovarianceMatrix(double covArray[6])
Set symmetric Error Array(3x3) for [0]->Error on Energy [2]->Error on Phi [5]->Error on Theta.
Double32_t m_trkDepth
Path on track ext.
Double32_t m_theta
Theta (rad)
int getConnectedRegionId() const
Get Connected region Id.
void setNOptimalGroupIndex(int nOptimalGroupIndex)
Set group number used to find nominalNumberOfCrystalsForEnergy.
Double32_t m_absZernikeMoments[20]
Shower shape variables, absolute values of Zernike Moments (MH)
double getR() const
Get R.
double getEnergyRaw() const
Get Energy Sum.
void setListOfCrystalEnergyRankAndQuality(std::vector< std::pair< unsigned int, bool > > listOfCrystalEnergyRankAndQuality)
Set list of indexes of related ECLCalDigit objects sorted by calibrated energy with flag for PSD usab...
std::vector< unsigned int > m_listOfCrystalsForEnergy
list of cell ids used for energy calculation (TF)
Double32_t m_showerDepth
Same as above, but on the cluster average direction (GDN)
void setHypothesisId(int hypothesisId)
Set Hypothesis identifier.
StatusBit
The status information for the ECLShowers.
@ c_hasDeadCrystal
bit 0: Dead crystal within nominal shower neighbour region.
@ c_hasHotCrystal
bit 1: Hot crystal within nominal shower neighbour region.
@ c_hasProblematicCrystal
combined flag to test whether the shower is 'problematic'
@ c_hasPulseShapeDiscrimination
bit 2: Shower has pulse shape discrimination variables.
void setListOfCrystalsForEnergy(const std::vector< unsigned int > &listofcrystals)
Set list of cell ids used for energy calculation.
void setTheta(double Theta)
Set Theta (rad)
double getUncertaintyTheta() const
Get Error of theta.
int m_connectedRegionId
Connected Region ID (TF)
double getNominalNumberOfCrystalsForEnergy() const
Get nominal number of crystals used for energy calculation.
double getNOptimalEnergy() const
Get energy used to find nOptimalEnergyBin.
void setIsTrack(bool val)
Set Match with Track.
double getE9oE21() const
Get energy ratio E9oE21.
void setTrkDepth(double trkDepth)
Set path on track extrapolation line to POCA to average cluster direction.
double getNumberOfCrystalsForEnergy() const
Get number of crystals used for energy calculation.
Double32_t m_PulseShapeDiscriminationMVA
MVA classifier that uses pulse shape discrimination to identify electromagnetic vs hadronic showers.
int getUniqueId() const
Return unique identifier.
void setCentralCellId(int centralCellId)
Set central cell id.
void setAbsZernikeMoment(unsigned int n, unsigned int m, double absZernikeMoment)
Set absolute value of Zernike Moment nm, for nm between 10 and 55.
int getDetectorRegion() const
Return detector region: 0: below acceptance, 1: FWD, 2: BRL, 3: BWD, 11: FWDGAP, 13: BWDGAP.
Hypothesis
The hypothesis ID for ECLShowers.
@ c_mergedPi0
CR is reconstructed as merged pi0 (N3)
@ c_neutralHadron
CR is reconstructed as a neutral hadron (N2)
@ c_chargedHadron
CR is reconstructed as a charged hadron (T2)
@ c_muonNPhotons
CR is split into a muon and n photons (T1)
@ c_electronNPhotons
CR is split into an electron and n photons (T3)
@ c_nPhotons
CR is split into n photons (N1)
void setR(double R)
Set R.
Double32_t m_minTrkDistance
Distance between shower and closest track (GDN)
Double32_t m_deltaTime99
Time that contains 99% of signal crystals.
Double32_t m_Error[6]
Error of Energy, Theta and Phi.
int m_nOptimalEnergyBin
energy bin used to find nominalNumberOfCrystalsForEnergy (CH)
void setDeltaTime99(double TimeReso)
Set Time Resolution.
Double32_t m_secondMoment
Shower shape variable, second moment (for merged pi0) (TF)
Double32_t m_E9oE21
Shower shape variable, E9oE25.
Double32_t m_lateralEnergy
Lateral Energy in Shower (GDN)
void setNominalNumberOfCrystalsForEnergy(double nominalNumberOfCrystalsForEnergy)
Set nominal number of crystals used for energy calculation.
Double32_t m_NumberOfHadronDigits
Number of hadron digits in shower (pulse shape discrimination variable).
void setNumberOfCrystalsForEnergy(double numberOfCrystalsForEnergy)
Set number of crystals used for energy calculation.
double getUncertaintyEnergy() const
Get Error of Energy.
void setShowerHadronIntensity(double hadronIntensity)
Set shower hadron intensity.
void setNOptimalEnergy(double nOptimalEnergy)
Set energy used to find nOptimalEnergyBin.
ROOT::Math::XYZVector getMomentum() const
The method to get return ROOT::Math::XYZVector Momentum.
double getTrkDepth() const
path on track extrapolation to POCA to average cluster direction
double getNumberOfHadronDigits() const
Get number of hadron digits.
Double32_t m_energyHighestCrystal
Highest Energy in Shower (GeV) (TF)
double getMinTrkDistance() const
Get distance to closest Track.
double getNumberOfCrystals() const
Get NofCrystals.
Double32_t m_nominalNumberOfCrystalsForEnergy
number of crystals used for energy calculation (TF)
double getEnergyHighestCrystal() const
Get Highest Energy in Shower.
double getZernikeMVA() const
Get Zernike MVA.
bool getIsTrack() const
Get if matched with a Track.
double getUncertaintyPhi() const
Get Error of phi.
std::vector< std::pair< unsigned int, bool > > m_listOfCrystalEnergyRankAndQuality
list of indices of related ECLCalDigits by energy.
int m_nOptimalGroupIndex
group (of crystals) number used to find nominalNumberOfCrystalsForEnergy (CH)
void setTime(double Time)
Set Time.
double getShowerHadronIntensity() const
Get shower hadron intensity.
int getCentralCellId() const
Get central cell Id.
Double32_t m_phi
Phi (rad)
Double32_t m_numberOfCrystalsForEnergy
number of crystals used for energy calculation (TF)
Double32_t m_energy
Energy (GeV)
void setE1oE9(double E1oE9)
Set energy ration E1 over E9.
void setNumberOfHadronDigits(double NumberOfHadronDigits)
Set number of hadron digits.
void setStatus(int Status)
Set Status.
double getSecondMoment() const
Get second moment.
void setZernikeMVA(double zernikeMVA)
SetZernike MVA value.
double getTheta() const
Get Theta.
double getDeltaTime99() const
Get Time Resolution.
Double32_t m_energyRaw
Raw Energy Sum(GeV)
void setMinTrkDistance(double dist)
Set Distance to closest track.
double getTime() const
Get Time.
int m_hypothesisId
Hypothesis ID (TF)
Defines interface for accessing relations of objects in StoreArray.
bool hasProblematicCrystal() const
Check if shower contains a problematic crystal.
bool hasPulseShapeDiscrimination() const
Check if shower contains pulse shape discrimination information.
bool hasHotCrystal() const
Check if shower contains a hot crystal.
bool hasDeadCrystal() const
Check if shower contains a dead crystal.
double sqrt(double a)
sqrt for double
Abstract base class for different kinds of events.