Belle II Software development
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
21namespace 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 {
53
56
59
62
63 };
64
67 m_isTrk(false),
68 m_status(0),
69 m_showerId(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),
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
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;
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;
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 {
595 }
596
597 inline bool ECLShower::hasDeadCrystal() const
598 {
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
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...
Definition: ECLShower.h:447
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
std::vector< unsigned int > & getListOfCrystalsForEnergy()
Get list of cellids used for energy calculation.
Definition: ECLShower.h:442
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
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
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...
Definition: ECLShower.h:251
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
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
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 number 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.