Belle II Software  release-08-01-10
ECLShower.h
1 /**************************************************************************
2  * basf2 (Belle II Analysis Software Framework) *
3  * Author: The Belle II Collaboration *
4  * *
5  * See git log for contributors and copyright holders. *
6  * This file is licensed under LGPL-3.0, see LICENSE.md. *
7  **************************************************************************/
8 
9 #pragma once
10 
11 /* Basf2 headers. */
12 #include <framework/datastore/RelationsObject.h>
13 
14 /* ROOT headers. */
15 #include <Math/Vector3D.h>
16 #include <TMatrixDSym.h>
17 
18 /* C++ headers. */
19 #include <cmath>
20 
21 namespace Belle2 {
30  class ECLShower : public RelationsObject {
31  public:
32 
34  enum Hypothesis : unsigned int {
46  c_mergedPi0 = 7
47  };
48 
50  enum StatusBit : unsigned int {
52  c_hasDeadCrystal = 1 << 0,
53 
55  c_hasHotCrystal = 1 << 1,
56 
59 
62 
63  };
64 
67  m_isTrk(false),
68  m_status(0),
69  m_showerId(0),
71  m_hypothesisId(0),
72  m_centralCellId(0),
73  m_energy(0.0),
74  m_energyRaw(0.0),
75  m_theta(0.0),
76  m_phi(0.0),
77  m_r(0.0),
78  m_Error{0.0, 0.0, 0.0, 0.0, 0.0, 0.0},
79  m_time(0),
80  m_deltaTime99(0),
82  m_lateralEnergy(0.0),
83  m_minTrkDistance(0.0),
84  m_trkDepth(0.0),
85  m_showerDepth(0.0),
86  m_numberOfCrystals(0.0),
87  m_absZernikeMoments{ -999.0},
88  m_zernikeMVA(0.0),
89  m_secondMoment(0.0),
90  m_E1oE9(0.0),
91  m_E9oE21(0.0),
99  m_nOptimalEnergy(0.0),
103  { }
104 
107  void setIsTrack(bool val) { m_isTrk = val; }
108 
111  void setStatus(int Status) { m_status = Status; }
112 
115  void setShowerId(int ShowerId) { m_showerId = ShowerId; }
116 
119  void setConnectedRegionId(int connectedRegionId) { m_connectedRegionId = connectedRegionId; }
120 
123  void setHypothesisId(int hypothesisId) { m_hypothesisId = hypothesisId; }
124 
127  void setCentralCellId(int centralCellId) { m_centralCellId = centralCellId; }
128 
131  void setEnergy(double Energy) { m_energy = Energy; }
132 
135  void setEnergyRaw(double EnergySum) { m_energyRaw = EnergySum; }
136 
139  void setTheta(double Theta) { m_theta = Theta; }
140 
143  void setPhi(double Phi) { m_phi = Phi; }
144 
147  void setR(double R) { m_r = R; }
148 
154  void setCovarianceMatrix(double covArray[6])
155  {
156  for (unsigned int i = 0; i < 6; i++) {
157  m_Error[i] = covArray[i];
158  }
159  }
160 
163  void setTime(double Time) { m_time = Time; }
164 
167  void setDeltaTime99(double TimeReso) { m_deltaTime99 = TimeReso; }
168 
171  void setEnergyHighestCrystal(double HighestEnergy) { m_energyHighestCrystal = HighestEnergy; }
172 
175  void setLateralEnergy(double lateralEnergy) { m_lateralEnergy = lateralEnergy; }
176 
179  void setMinTrkDistance(double dist) { m_minTrkDistance = dist; }
180 
183  void setTrkDepth(double trkDepth) { m_trkDepth = trkDepth; }
184 
187  void setShowerDepth(double showerDepth) { m_showerDepth = showerDepth; }
188 
191  void setNumberOfCrystals(double nofCrystals) { m_numberOfCrystals = nofCrystals; }
192 
195  void setAbsZernikeMoment(unsigned int n, unsigned int m, double absZernikeMoment) { m_absZernikeMoments[(n * (n + 1)) / 2 + m - 1] = absZernikeMoment; }
196 
199  void setZernikeMVA(double zernikeMVA) {m_zernikeMVA = zernikeMVA; }
200 
203  void setSecondMoment(double secondMoment) { m_secondMoment = secondMoment; }
204 
207  void setE1oE9(double E1oE9) { m_E1oE9 = E1oE9; }
208 
211  void setE9oE21(double E9oE21) { m_E9oE21 = E9oE21; }
212 
215  void setShowerHadronIntensity(double hadronIntensity) { m_ShowerHadronIntensity = hadronIntensity; }
216 
220 
223  void setNumberOfHadronDigits(double NumberOfHadronDigits) { m_NumberOfHadronDigits = NumberOfHadronDigits; }
224 
227  void setNumberOfCrystalsForEnergy(double numberOfCrystalsForEnergy) { m_numberOfCrystalsForEnergy = numberOfCrystalsForEnergy; }
228 
231  void setNominalNumberOfCrystalsForEnergy(double nominalNumberOfCrystalsForEnergy) { m_nominalNumberOfCrystalsForEnergy = nominalNumberOfCrystalsForEnergy; }
232 
235  void setNOptimalGroupIndex(int nOptimalGroupIndex) { m_nOptimalGroupIndex = nOptimalGroupIndex; }
236 
239  void setNOptimalEnergyBin(int nOptimalEnergyBin) { m_nOptimalEnergyBin = nOptimalEnergyBin; }
240 
243  void setNOptimalEnergy(double nOptimalEnergy) { m_nOptimalEnergy = nOptimalEnergy; }
244 
247  void setListOfCrystalsForEnergy(const std::vector<unsigned int>& listofcrystals) { m_listOfCrystalsForEnergy = listofcrystals;}
248 
251  void setListOfCrystalEnergyRankAndQuality(std::vector<std::pair<unsigned int, bool>>
252  listOfCrystalEnergyRankAndQuality) {m_listOfCrystalEnergyRankAndQuality = listOfCrystalEnergyRankAndQuality;}
253 
257  bool getIsTrack() const { return m_isTrk; }
258 
262  int getStatus() const { return m_status; }
263 
267  int getShowerId() const { return m_showerId; }
268 
273 
277  int getHypothesisId() const { return m_hypothesisId; }
278 
282  int getCentralCellId() const { return m_centralCellId; }
283 
287  double getEnergy() const { return m_energy; }
288 
292  double getEnergyRaw() const { return m_energyRaw; }
293 
297  double getTheta() const { return m_theta; }
298 
302  double getPhi() const { return m_phi; }
303 
307  double getR() const { return m_r; }
308 
312  void getCovarianceMatrixAsArray(double covArray[6]) const
313  {
314  for (unsigned int i = 0; i < 6; i++) {
315  covArray[i] = m_Error[i];
316  }
317  }
318 
322  double getUncertaintyEnergy() const { return sqrt(m_Error[0]);}
323 
327  double getUncertaintyTheta() const { return sqrt(m_Error[5]);}
328 
332  double getUncertaintyPhi() const {return sqrt(m_Error[2]);}
333 
337  double getTime() const { return m_time; }
338 
342  double getDeltaTime99() const { return m_deltaTime99; }
343 
348 
352  double getLateralEnergy() const { return m_lateralEnergy; }
353 
357  double getMinTrkDistance() const { return m_minTrkDistance; }
358 
362  double getTrkDepth() const { return m_trkDepth; }
363 
367  double getShowerDepth() const { return m_showerDepth; }
368 
372  double getNumberOfCrystals() const { return m_numberOfCrystals; }
373 
377  double getAbsZernikeMoment(unsigned int n, unsigned int m) const { return m_absZernikeMoments[(n * (n + 1)) / 2 + m - 1]; }
378 
382  double getZernikeMVA() const {return m_zernikeMVA; }
383 
387  double getSecondMoment() const { return m_secondMoment; }
388 
392  double getE1oE9() const { return m_E1oE9; }
393 
397  double getE9oE21() const { return m_E9oE21; }
398 
403 
408 
413 
418 
423 
428 
433 
437  double getNOptimalEnergy() const { return m_nOptimalEnergy; }
438 
442  std::vector<unsigned int>& getListOfCrystalsForEnergy() { return m_listOfCrystalsForEnergy; }
443 
447  std::vector<std::pair<unsigned int, bool>> getListOfCrystalEnergyRankAndQuality() {return m_listOfCrystalEnergyRankAndQuality; }
448 
449 
450 
452  ROOT::Math::XYZVector getMomentum() const
453  {
454  return ROOT::Math::XYZVector(
455  m_energy * std::sin(m_theta) * std::cos(m_phi),
456  m_energy * std::sin(m_theta) * std::sin(m_phi),
457  m_energy * std::cos(m_theta)
458  );
459  }
460 
462  TMatrixDSym getCovarianceMatrix3x3() const
463  {
464  TMatrixDSym covmatecl(3);
465  covmatecl(0, 0) = m_Error[0];
466  covmatecl(1, 0) = m_Error[1];
467  covmatecl(1, 1) = m_Error[2];
468  covmatecl(2, 0) = m_Error[3];
469  covmatecl(2, 1) = m_Error[4];
470  covmatecl(2, 2) = m_Error[5];
471 
472  //make symmetric
473  for (int i = 0; i < 3; i++)
474  for (int j = 0; j < i ; j++)
475  covmatecl(j, i) = covmatecl(i, j);
476  return covmatecl;
477  }
478 
480  int getDetectorRegion() const
481  {
482  const double theta = getTheta();
483 
484  if (theta < 0.2164208) return 0; // < 12.4deg
485  if (theta < 0.5480334) return 1; // < 31.4deg
486  if (theta < 0.561996) return 11; // < 32.2deg
487  if (theta < 2.2462387) return 2; // < 128.7deg
488  if (theta < 2.2811453) return 13; // < 130.7deg
489  if (theta < 2.7070057) return 3; // < 155.1deg
490  else return 0;
491  }
492 
498  bool hasStatus(unsigned short int bitmask) const { return (m_status & bitmask) == bitmask; }
499 
504  void addStatus(unsigned short int bitmask) { m_status |= bitmask; }
505 
508  bool hasHotCrystal() const;
509 
512  bool hasDeadCrystal() const;
513 
516  bool hasProblematicCrystal() const;
517 
520  bool hasPulseShapeDiscrimination() const;
521 
523  int getUniqueId() const
524  {
525  return 100000 * m_connectedRegionId + 1000 * m_hypothesisId + m_showerId;
526  }
527 
528 
529  private:
530  bool m_isTrk;
532  int m_status;
538  Double32_t m_energy;
539  Double32_t m_energyRaw;
540  Double32_t m_theta;
541  Double32_t m_phi;
542  Double32_t m_r;
543  Double32_t m_Error[6];
544  Double32_t m_time;
545  Double32_t m_deltaTime99;
547  Double32_t m_lateralEnergy;
548  Double32_t m_minTrkDistance;
549  Double32_t m_trkDepth;
550  Double32_t m_showerDepth;
551  Double32_t m_numberOfCrystals;
552  Double32_t m_absZernikeMoments[20];
553  Double32_t m_zernikeMVA;
554  Double32_t m_secondMoment;
555  Double32_t m_E1oE9;
556  Double32_t m_E9oE21;
557  Double32_t
559  Double32_t
561  Double32_t
567  Double32_t m_nOptimalEnergy;
568  std::vector<unsigned int> m_listOfCrystalsForEnergy;
569  std::vector<std::pair<unsigned int, bool>>
572  // 2: added uniqueID and highestE (TF)
573  // 3: added LAT and distance to closest track and trk match flag (GDN)
574  // 4: added time resolution (TF)
575  // 5: clean up, float to Double32_t, and new variables (TF)
576  // 6: changed names of Zernike moment variables/getters/setters to indicate that they are the absolute values of the moments (TF and AH)
577  // 7: added centralCellId (TF)
578  // 8: added zernikeMVA, removed absZernike20, 42, 53 (AH)
579  // 9: renamed variables according to the new mdst scheme (TF)
580  // 10: added getUniqueId()
581  // 11: added m_ShowerHadronIntensity and m_NumberOfHadronDigits variables (SL)
582  // 12: added m_PulseShapeDiscriminationMVA. Noted m_ShowerHadronIntensity will be removed in release-04 (SL)
583  // 13: made enums strongly typed
584  // 14: added m_numberOfCrystalsForEnergy of crystals for energy determination
585  // 15: added m_listOfCrystalsForEnergy, m_nominalNumberOfCrystalsForEnergy
586  // 16: removed m_absZernike40 and 51, added m_absZernikeMoments, m_listOfCrystalEnergyRankAndQuality (MH)
587  // 17: added m_nOptimalGroupIndex, m_nOptimalEnergyBin, and m_nOptimalEnergy (CH)
590  };
591 
592  inline bool ECLShower::hasHotCrystal() const
593  {
594  return hasStatus(c_hasHotCrystal);
595  }
596 
597  inline bool ECLShower::hasDeadCrystal() const
598  {
599  return hasStatus(c_hasDeadCrystal);
600  }
601 
603  {
605  }
606 
608  {
610  }
611 
613 } // end namespace Belle2
614 
double R
typedef autogenerated by FFTW
Class to store ECL Showers.
Definition: ECLShower.h:30
ECLShower()
Default constructor for ROOT.
Definition: ECLShower.h:66
int getStatus() const
Get Status.
Definition: ECLShower.h:262
void setE9oE21(double E9oE21)
Set energy ration E9 over E21.
Definition: ECLShower.h:211
bool m_isTrk
Match with track (GDN)
Definition: ECLShower.h:530
void setEnergyRaw(double EnergySum)
Set Raw Energy Sum.
Definition: ECLShower.h:135
Double32_t m_r
R (cm)
Definition: ECLShower.h:542
void setPulseShapeDiscriminationMVA(double mvaVal)
Set shower hadron intensity.
Definition: ECLShower.h:219
Double32_t m_zernikeMVA
Shower shape variable, zernike MVA output.
Definition: ECLShower.h:553
void setLateralEnergy(double lateralEnergy)
Set Lateral Energy.
Definition: ECLShower.h:175
ClassDef(ECLShower, 17)
ClassDef.
void setShowerId(int ShowerId)
Set Shower ID.
Definition: ECLShower.h:115
int m_showerId
Shower ID.
Definition: ECLShower.h:533
void setNOptimalEnergyBin(int nOptimalEnergyBin)
Set energy bin number used to find nominalNumberOfCrystalsForEnergy.
Definition: ECLShower.h:239
double getAbsZernikeMoment(unsigned int n, unsigned int m) const
Get absolute value of Zernike Moment nm.
Definition: ECLShower.h:377
void setEnergy(double Energy)
Set Energy.
Definition: ECLShower.h:131
void setPhi(double Phi)
Set Phi (rad)
Definition: ECLShower.h:143
int getHypothesisId() const
Get Hypothesis Id.
Definition: ECLShower.h:277
int m_centralCellId
Central cell ID (TF)
Definition: ECLShower.h:536
void setConnectedRegionId(int connectedRegionId)
Set Connected region ID.
Definition: ECLShower.h:119
void addStatus(unsigned short int bitmask)
Add bitmask to current status.
Definition: ECLShower.h:504
void setNumberOfCrystals(double nofCrystals)
Set sum of weights of crystals.
Definition: ECLShower.h:191
Double32_t m_nOptimalEnergy
energy used in ECLSplitterN1 to find nOptimalEnergyBin (CH)
Definition: ECLShower.h:567
std::vector< std::pair< unsigned int, bool > > getListOfCrystalEnergyRankAndQuality()
Get list of indexes of related ECLCalDigit objects sorted by calibrated energy with flag for PSD usea...
Definition: ECLShower.h:447
double getPulseShapeDiscriminationMVA() const
Get shower hadron intensity.
Definition: ECLShower.h:407
TMatrixDSym getCovarianceMatrix3x3() const
Return TMatrixDsym 3x3 covariance matrix for E, Phi and Theta.
Definition: ECLShower.h:462
void setEnergyHighestCrystal(double HighestEnergy)
Set Highest Energy.
Definition: ECLShower.h:171
double getPhi() const
Get Phi.
Definition: ECLShower.h:302
Double32_t m_numberOfCrystals
Sum of weights of crystals (~number of crystals) (TF)
Definition: ECLShower.h:551
double getLateralEnergy() const
Get Lateral Energy in Shower.
Definition: ECLShower.h:352
Double32_t m_time
Time.
Definition: ECLShower.h:544
Double32_t m_ShowerHadronIntensity
Shower Hadron Component Intensity (pulse shape discrimination variable).
Definition: ECLShower.h:558
double getE1oE9() const
Get energy ratio E1oE9.
Definition: ECLShower.h:392
void setShowerDepth(double showerDepth)
Set path on the average cluster direction.
Definition: ECLShower.h:187
int getShowerId() const
Get Shower Id.
Definition: ECLShower.h:267
double getEnergy() const
Get Energy.
Definition: ECLShower.h:287
void getCovarianceMatrixAsArray(double covArray[6]) const
Get Error Array for Energy->[0], Phi->[2], Theta->[5].
Definition: ECLShower.h:312
bool hasStatus(unsigned short int bitmask) const
Return if specific status bit is set.
Definition: ECLShower.h:498
void setSecondMoment(double secondMoment)
Set second moment.
Definition: ECLShower.h:203
Double32_t m_E1oE9
Shower shape variable, E1oE9 (TF)
Definition: ECLShower.h:555
int getNOptimalGroupIndex() const
Get index of group of crystals used to find nominalNumberOfCrystalsForEnergy.
Definition: ECLShower.h:427
int getNOptimalEnergyBin() const
Get energy bin used to find nominalNumberOfCrystalsForEnergy.
Definition: ECLShower.h:432
double getShowerDepth() const
path on track extrapolation to POCA to average cluster direction
Definition: ECLShower.h:367
void setCovarianceMatrix(double covArray[6])
Set symmetric Error Array(3x3) for [0]->Error on Energy [2]->Error on Phi [5]->Error on Theta.
Definition: ECLShower.h:154
Double32_t m_trkDepth
Path on track ext.
Definition: ECLShower.h:549
Double32_t m_theta
Theta (rad)
Definition: ECLShower.h:540
int getConnectedRegionId() const
Get Connected region Id.
Definition: ECLShower.h:272
void setNOptimalGroupIndex(int nOptimalGroupIndex)
Set group number used to find nominalNumberOfCrystalsForEnergy.
Definition: ECLShower.h:235
Double32_t m_absZernikeMoments[20]
Shower shape variables, absolute values of Zernike Moments (MH)
Definition: ECLShower.h:552
double getR() const
Get R.
Definition: ECLShower.h:307
double getEnergyRaw() const
Get Energy Sum.
Definition: ECLShower.h:292
std::vector< unsigned int > m_listOfCrystalsForEnergy
list of cell ids used for energy calculation (TF)
Definition: ECLShower.h:568
Double32_t m_showerDepth
Same as above, but on the cluster average direction (GDN)
Definition: ECLShower.h:550
void setHypothesisId(int hypothesisId)
Set Hypothesis identifier.
Definition: ECLShower.h:123
StatusBit
The status information for the ECLShowers.
Definition: ECLShower.h:50
@ c_hasDeadCrystal
bit 0: Dead crystal within nominal shower neighbour region.
Definition: ECLShower.h:52
@ c_hasHotCrystal
bit 1: Hot crystal within nominal shower neighbour region.
Definition: ECLShower.h:55
@ c_hasProblematicCrystal
combined flag to test whether the shower is 'problematic'
Definition: ECLShower.h:58
@ c_hasPulseShapeDiscrimination
bit 2: Shower has pulse shape discrimination variables.
Definition: ECLShower.h:61
void setListOfCrystalsForEnergy(const std::vector< unsigned int > &listofcrystals)
Set list of cell ids used for energy calculation.
Definition: ECLShower.h:247
void setTheta(double Theta)
Set Theta (rad)
Definition: ECLShower.h:139
double getUncertaintyTheta() const
Get Error of theta.
Definition: ECLShower.h:327
int m_connectedRegionId
Connected Region ID (TF)
Definition: ECLShower.h:534
double getNominalNumberOfCrystalsForEnergy() const
Get nominal number of crystals used for energy calculation.
Definition: ECLShower.h:422
double getNOptimalEnergy() const
Get energy used to find nOptimalEnergyBin.
Definition: ECLShower.h:437
void setIsTrack(bool val)
Set Match with Track.
Definition: ECLShower.h:107
double getE9oE21() const
Get energy ratio E9oE21.
Definition: ECLShower.h:397
void setTrkDepth(double trkDepth)
Set path on track extrapolation line to POCA to average cluster direction.
Definition: ECLShower.h:183
double getNumberOfCrystalsForEnergy() const
Get number of crystals used for energy calculation.
Definition: ECLShower.h:417
Double32_t m_PulseShapeDiscriminationMVA
MVA classifier that uses pulse shape discrimination to identify electromagnetic vs hadronic showers.
Definition: ECLShower.h:560
int getUniqueId() const
Return unique identifier.
Definition: ECLShower.h:523
void setCentralCellId(int centralCellId)
Set central cell id.
Definition: ECLShower.h:127
void setAbsZernikeMoment(unsigned int n, unsigned int m, double absZernikeMoment)
Set absolute value of Zernike Moment nm, for nm between 10 and 55.
Definition: ECLShower.h:195
int m_status
Status.
Definition: ECLShower.h:532
int getDetectorRegion() const
Return detector region: 0: below acceptance, 1: FWD, 2: BRL, 3: BWD, 11: FWDGAP, 13: BWDGAP.
Definition: ECLShower.h:480
Hypothesis
The hypothesis ID for ECLShowers.
Definition: ECLShower.h:34
@ c_mergedPi0
CR is reconstructed as merged pi0 (N3)
Definition: ECLShower.h:46
@ c_neutralHadron
CR is reconstructed as a neutral hadron (N2)
Definition: ECLShower.h:44
@ c_chargedHadron
CR is reconstructed as a charged hadron (T2)
Definition: ECLShower.h:38
@ c_muonNPhotons
CR is split into a muon and n photons (T1)
Definition: ECLShower.h:36
@ c_electronNPhotons
CR is split into an electron and n photons (T3)
Definition: ECLShower.h:40
@ c_nPhotons
CR is split into n photons (N1)
Definition: ECLShower.h:42
void setR(double R)
Set R.
Definition: ECLShower.h:147
Double32_t m_minTrkDistance
Distance between shower and closest track (GDN)
Definition: ECLShower.h:548
Double32_t m_deltaTime99
Time that contains 99% of signal crystals.
Definition: ECLShower.h:545
Double32_t m_Error[6]
Error of Energy, Theta and Phi.
Definition: ECLShower.h:543
int m_nOptimalEnergyBin
energy bin used to find nominalNumberOfCrystalsForEnergy (CH)
Definition: ECLShower.h:566
void setDeltaTime99(double TimeReso)
Set Time Resolution.
Definition: ECLShower.h:167
Double32_t m_secondMoment
Shower shape variable, second moment (for merged pi0) (TF)
Definition: ECLShower.h:554
Double32_t m_E9oE21
Shower shape variable, E9oE25.
Definition: ECLShower.h:556
Double32_t m_lateralEnergy
Lateral Energy in Shower (GDN)
Definition: ECLShower.h:547
std::vector< unsigned int > & getListOfCrystalsForEnergy()
Get list of cellids used for energy calculation.
Definition: ECLShower.h:442
void setNominalNumberOfCrystalsForEnergy(double nominalNumberOfCrystalsForEnergy)
Set nominal number of crystals used for energy calculation.
Definition: ECLShower.h:231
Double32_t m_NumberOfHadronDigits
Number of hadron digits in shower (pulse shape discrimination variable).
Definition: ECLShower.h:562
void setNumberOfCrystalsForEnergy(double numberOfCrystalsForEnergy)
Set number of crystals used for energy calculation.
Definition: ECLShower.h:227
double getUncertaintyEnergy() const
Get Error of Energy.
Definition: ECLShower.h:322
void setShowerHadronIntensity(double hadronIntensity)
Set shower hadron intensity.
Definition: ECLShower.h:215
void setNOptimalEnergy(double nOptimalEnergy)
Set energy used to find nOptimalEnergyBin.
Definition: ECLShower.h:243
ROOT::Math::XYZVector getMomentum() const
The method to get return ROOT::Math::XYZVector Momentum.
Definition: ECLShower.h:452
double getTrkDepth() const
path on track extrapolation to POCA to average cluster direction
Definition: ECLShower.h:362
double getNumberOfHadronDigits() const
Get number of hadron digits.
Definition: ECLShower.h:412
Double32_t m_energyHighestCrystal
Highest Energy in Shower (GeV) (TF)
Definition: ECLShower.h:546
double getMinTrkDistance() const
Get distance to closest Track.
Definition: ECLShower.h:357
double getNumberOfCrystals() const
Get NofCrystals.
Definition: ECLShower.h:372
Double32_t m_nominalNumberOfCrystalsForEnergy
number of crystals used for energy calculation (TF)
Definition: ECLShower.h:564
double getEnergyHighestCrystal() const
Get Highest Energy in Shower.
Definition: ECLShower.h:347
double getZernikeMVA() const
Get Zernike MVA.
Definition: ECLShower.h:382
bool getIsTrack() const
Get if matched with a Track.
Definition: ECLShower.h:257
double getUncertaintyPhi() const
Get Error of phi.
Definition: ECLShower.h:332
std::vector< std::pair< unsigned int, bool > > m_listOfCrystalEnergyRankAndQuality
list of indices of related ECLCalDigits by energy.
Definition: ECLShower.h:570
int m_nOptimalGroupIndex
group (of crystals) number used to find nominalNumberOfCrystalsForEnergy (CH)
Definition: ECLShower.h:565
void setTime(double Time)
Set Time.
Definition: ECLShower.h:163
double getShowerHadronIntensity() const
Get shower hadron intensity.
Definition: ECLShower.h:402
int getCentralCellId() const
Get central cell Id.
Definition: ECLShower.h:282
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 usea...
Definition: ECLShower.h:251
Double32_t m_phi
Phi (rad)
Definition: ECLShower.h:541
Double32_t m_numberOfCrystalsForEnergy
number of crystals used for energy calculation (TF)
Definition: ECLShower.h:563
Double32_t m_energy
Energy (GeV)
Definition: ECLShower.h:538
void setE1oE9(double E1oE9)
Set energy ration E1 over E9.
Definition: ECLShower.h:207
void setNumberOfHadronDigits(double NumberOfHadronDigits)
Set numver of hadron digits.
Definition: ECLShower.h:223
void setStatus(int Status)
Set Status.
Definition: ECLShower.h:111
double getSecondMoment() const
Get second moment.
Definition: ECLShower.h:387
void setZernikeMVA(double zernikeMVA)
SetZernike MVA value.
Definition: ECLShower.h:199
double getTheta() const
Get Theta.
Definition: ECLShower.h:297
double getDeltaTime99() const
Get Time Resolution.
Definition: ECLShower.h:342
Double32_t m_energyRaw
Raw Energy Sum(GeV)
Definition: ECLShower.h:539
void setMinTrkDistance(double dist)
Set Distance to closest track.
Definition: ECLShower.h:179
double getTime() const
Get Time.
Definition: ECLShower.h:337
int m_hypothesisId
Hypothesis ID (TF)
Definition: ECLShower.h:535
Defines interface for accessing relations of objects in StoreArray.
bool hasProblematicCrystal() const
Check if shower contains a problematic crystal.
Definition: ECLShower.h:602
bool hasPulseShapeDiscrimination() const
Check if shower contains pulse shape discrimination information.
Definition: ECLShower.h:607
bool hasHotCrystal() const
Check if shower contains a hot crystal.
Definition: ECLShower.h:592
bool hasDeadCrystal() const
Check if shower contains a dead crystal.
Definition: ECLShower.h:597
double sqrt(double a)
sqrt for double
Definition: beamHelpers.h:28
Abstract base class for different kinds of events.