Belle II Software  release-05-01-25
eclCluster.cc
1 #include <mdst/dataobjects/ECLCluster.h>
2 #include <gtest/gtest.h>
3 #include <cmath>
4 #include <TMatrixD.h>
5 
6 using namespace std;
7 
8 namespace Belle2 {
17  class ECLClusterTest : public ::testing::Test {
18  protected:
19  };
20 
22  TEST_F(ECLClusterTest, Constructors)
23  {
24  ECLCluster myECLCluster;
25 
26  EXPECT_EQ(exp(-5.), myECLCluster.getEnergy(ECLCluster::EHypothesisBit::c_nPhotons));
27  EXPECT_EQ(exp(-5.), myECLCluster.getEnergyRaw());
28  EXPECT_EQ(exp(-5.), myECLCluster.getEnergyHighestCrystal());
29  EXPECT_EQ(0, myECLCluster.getTheta());
30  EXPECT_EQ(0, myECLCluster.getPhi());
31  EXPECT_EQ(0, myECLCluster.getR());
32  EXPECT_EQ(0, myECLCluster.getTime());
33  EXPECT_EQ(0, myECLCluster.getDeltaTime99());
34  EXPECT_EQ(0, myECLCluster.getStatus());
35  EXPECT_EQ(0, myECLCluster.getNumberOfCrystals());
36  EXPECT_EQ(0, myECLCluster.getLAT());
37  EXPECT_EQ(0, myECLCluster.getAbsZernike40());
38  EXPECT_EQ(0, myECLCluster.getAbsZernike51());
39  EXPECT_EQ(0, myECLCluster.getZernikeMVA());
40  EXPECT_EQ(0, myECLCluster.getE1oE9());
41  EXPECT_EQ(0, myECLCluster.getE9oE21());
42 
43  EXPECT_EQ(0, myECLCluster.getUncertaintyEnergy());
44  EXPECT_EQ(0, myECLCluster.getUncertaintyTheta());
45  EXPECT_EQ(0, myECLCluster.getUncertaintyPhi());
46 
47  EXPECT_FALSE(myECLCluster.isTrack());
48  EXPECT_TRUE(myECLCluster.isNeutral());
49 
50  double x = myECLCluster.getClusterPosition().X();
51  double y = myECLCluster.getClusterPosition().Y();
52  double z = myECLCluster.getClusterPosition().Z();
53  EXPECT_EQ(0, x);
54  EXPECT_EQ(0, y);
55  EXPECT_EQ(0, z);
56 
57  const auto error3x3 = myECLCluster.getCovarianceMatrix3x3();
58  EXPECT_EQ(0, error3x3(0, 0));
59  EXPECT_EQ(0, error3x3(0, 1));
60  EXPECT_EQ(0, error3x3(0, 2));
61  EXPECT_EQ(0, error3x3(1, 0));
62  EXPECT_EQ(0, error3x3(1, 1));
63  EXPECT_EQ(0, error3x3(1, 2));
64  EXPECT_EQ(0, error3x3(2, 0));
65  EXPECT_EQ(0, error3x3(2, 1));
66  EXPECT_EQ(0, error3x3(2, 2));
67 
68  } // default constructor
69 
71  TEST_F(ECLClusterTest, SettersAndGetters)
72  {
73  ECLCluster myECLCluster;
74  // Pick some arbitrary numbers to test with
75  const bool isTrack = true;
76  const double energy = 1.165;
77  const float theta = 1.2;
78  const float phi = 1.2;
79  const double r = 1.2;
80  const double energyDepSum = 12.3;
81  const double time = 17.2;
82  const double deltaTime99 = 1.1;
83  const double E9oE21 = 0.1;
84  const double highestEnergy = 32.1;
85  const double lat = 0.5;
86  const double nOfCrystals = 4;
87  const ECLCluster::EStatusBit status = ECLCluster::EStatusBit::c_PulseShapeDiscrimination;
88  // Energy->[0], Phi->[2], Theta->[5]
89  double error[6] = {0.1, 0.2, 0.3, 0.4, 0.5, 0.6};
90 
91  myECLCluster.setEnergy(energy);
92  myECLCluster.setE9oE21(E9oE21);
93  myECLCluster.setEnergyRaw(energyDepSum);
94  myECLCluster.setTheta(theta);
95  myECLCluster.setPhi(phi);
96  myECLCluster.setR(r);
97  myECLCluster.setTime(time);
98  myECLCluster.setDeltaTime99(deltaTime99);
99  myECLCluster.setEnergyHighestCrystal(highestEnergy);
100  myECLCluster.setStatus(status);
101  myECLCluster.setNumberOfCrystals(nOfCrystals);
102  myECLCluster.setLAT(lat);
103  myECLCluster.setCovarianceMatrix(error);
104  myECLCluster.setIsTrack(isTrack);
105  myECLCluster.setHypothesis(ECLCluster::EHypothesisBit::c_nPhotons);
106 
107  EXPECT_FLOAT_EQ(energy, myECLCluster.getEnergy(ECLCluster::EHypothesisBit::c_nPhotons));
108  EXPECT_FLOAT_EQ(E9oE21, myECLCluster.getE9oE21());
109  EXPECT_FLOAT_EQ(energyDepSum, myECLCluster.getEnergyRaw());
110  EXPECT_FLOAT_EQ(theta, myECLCluster.getTheta());
111  EXPECT_FLOAT_EQ(phi, myECLCluster.getPhi());
112  EXPECT_FLOAT_EQ(r, myECLCluster.getR());
113  EXPECT_FLOAT_EQ(time, myECLCluster.getTime());
114  EXPECT_FLOAT_EQ(deltaTime99, myECLCluster.getDeltaTime99());
115  EXPECT_FLOAT_EQ(highestEnergy, myECLCluster.getEnergyHighestCrystal());
116  EXPECT_TRUE(myECLCluster.hasStatus(status));
117  EXPECT_FLOAT_EQ(nOfCrystals, myECLCluster.getNumberOfCrystals());
118  EXPECT_FLOAT_EQ(lat, myECLCluster.getLAT());
119 
120  EXPECT_FLOAT_EQ(error[0], myECLCluster.getUncertaintyEnergy()*myECLCluster.getUncertaintyEnergy());
121  EXPECT_FLOAT_EQ(error[5], myECLCluster.getUncertaintyTheta()*myECLCluster.getUncertaintyTheta());
122  EXPECT_FLOAT_EQ(error[2], myECLCluster.getUncertaintyPhi()*myECLCluster.getUncertaintyPhi());
123 
124  EXPECT_TRUE(myECLCluster.isTrack());
125  EXPECT_FALSE(myECLCluster.isNeutral());
126 
127  const auto error3x3 = myECLCluster.getCovarianceMatrix3x3();
128  EXPECT_FLOAT_EQ(error[0], error3x3(0, 0));
129  EXPECT_FLOAT_EQ(error[1], error3x3(0, 1));
130  EXPECT_FLOAT_EQ(error[3], error3x3(0, 2));
131  EXPECT_FLOAT_EQ(error[1], error3x3(1, 0));
132  EXPECT_FLOAT_EQ(error[2], error3x3(1, 1));
133  EXPECT_FLOAT_EQ(error[4], error3x3(1, 2));
134  EXPECT_FLOAT_EQ(error[3], error3x3(2, 0));
135  EXPECT_FLOAT_EQ(error[4], error3x3(2, 1));
136  EXPECT_FLOAT_EQ(error[5], error3x3(2, 2));
137 
138  } // default constructor
139 
140 
142 } // namespace
Belle2::ECLCluster::getClusterPosition
TVector3 getClusterPosition() const
Return TVector3 on cluster position (x,y,z)
Definition: ECLCluster.cc:42
Belle2::ECLCluster::setTime
void setTime(double time)
Set time information.
Definition: ECLCluster.h:223
Belle2::ECLCluster::setIsTrack
void setIsTrack(bool istrack)
Set m_isTrack true if the cluster matches with a track.
Definition: ECLCluster.h:115
Belle2::ECLCluster::getE9oE21
double getE9oE21() const
Return E9/E21 (shower shape variable).
Definition: ECLCluster.h:295
Belle2::ECLCluster::getDeltaTime99
double getDeltaTime99() const
Return cluster delta time 99.
Definition: ECLCluster.h:320
Belle2::ECLCluster
ECL cluster data.
Definition: ECLCluster.h:39
Belle2::ECLCluster::setNumberOfCrystals
void setNumberOfCrystals(double noc)
Set number of crystals (sum of weights).
Definition: ECLCluster.h:220
Belle2::ECLCluster::getUncertaintyTheta
double getUncertaintyTheta() const
Return Uncertainty on Theta of Shower.
Definition: ECLCluster.h:344
Belle2::TEST_F
TEST_F(ECLClusterTest, SettersAndGetters)
Test setter and getter.
Definition: eclCluster.cc:71
Belle2::ECLCluster::getTheta
double getTheta() const
Return Corrected Theta of Shower (radian).
Definition: ECLCluster.h:326
Belle2::ECLCluster::getPhi
double getPhi() const
Return Corrected Phi of Shower (radian).
Definition: ECLCluster.h:323
Belle2::ECLCluster::setHypothesis
void setHypothesis(EHypothesisBit hypothesis)
Set hypotheses.
Definition: ECLCluster.h:134
Belle2::ECLCluster::getR
double getR() const
Return R.
Definition: ECLCluster.h:329
Belle2::ECLCluster::getLAT
double getLAT() const
Return LAT (shower shape variable).
Definition: ECLCluster.h:311
Belle2::ECLCluster::setEnergy
void setEnergy(double energy)
Set Corrected Energy (GeV).
Definition: ECLCluster.h:238
Belle2::ECLCluster::getStatus
unsigned short getStatus() const
Return status.
Definition: ECLCluster.h:253
Belle2::ECLCluster::getNumberOfCrystals
double getNumberOfCrystals() const
Return number of a crystals in a shower (sum of weights).
Definition: ECLCluster.h:314
Belle2::ECLCluster::getZernikeMVA
double getZernikeMVA() const
Return MVA based hadron/photon value based on Zernike moments (shower shape variable).
Definition: ECLCluster.h:289
Belle2::ECLCluster::getEnergy
double getEnergy(const EHypothesisBit &hypothesis) const
Return Energy (GeV).
Definition: ECLCluster.cc:21
Belle2::ECLCluster::getEnergyRaw
double getEnergyRaw() const
Return Uncorrected Energy deposited (GeV)
Definition: ECLCluster.h:335
Belle2::ECLCluster::isTrack
bool isTrack() const
Return true if the cluster matches with track.
Definition: ECLCluster.h:247
Belle2::ECLCluster::getUncertaintyPhi
double getUncertaintyPhi() const
Return Uncertainty on Phi of Shower.
Definition: ECLCluster.h:347
Belle2::ECLCluster::setPhi
void setPhi(double phi)
Set Phi of Shower (radian).
Definition: ECLCluster.h:232
Belle2::ECLCluster::setLAT
void setLAT(double LAT)
Set Lateral distribution parameter.
Definition: ECLCluster.h:217
Belle2
Abstract base class for different kinds of events.
Definition: MillepedeAlgorithm.h:19
Belle2::ECLCluster::getEnergyHighestCrystal
double getEnergyHighestCrystal() const
Return energy of highest energetic crystal in cluster (GeV)
Definition: ECLCluster.h:338
Belle2::ECLCluster::getTime
double getTime() const
Return cluster time.
Definition: ECLCluster.h:317
Belle2::ECLCluster::setEnergyRaw
void setEnergyRaw(double energyraw)
Set Uncorrect Energy deposited (GeV).
Definition: ECLCluster.h:241
Belle2::ECLCluster::setStatus
void setStatus(EStatusBit status)
Set status.
Definition: ECLCluster.h:118
Belle2::ECLCluster::setDeltaTime99
void setDeltaTime99(double dtime99)
Set 99% time containment range.
Definition: ECLCluster.h:226
Belle2::ECLClusterTest
Test class for the Track object.
Definition: eclCluster.cc:17
Belle2::ECLCluster::getAbsZernike40
double getAbsZernike40() const
Return Zernike moment 40 (shower shape variable).
Definition: ECLCluster.h:283
Belle2::ECLCluster::getAbsZernike51
double getAbsZernike51() const
Return Zernike moment 51 (shower shape variable).
Definition: ECLCluster.h:286
Belle2::ECLCluster::setR
void setR(double r)
Set R (in cm).
Definition: ECLCluster.h:235
Belle2::ECLCluster::hasStatus
bool hasStatus(EStatusBit bitmask) const
Return if specific status bit is set.
Definition: ECLCluster.h:367
Belle2::ECLCluster::setE9oE21
void setE9oE21(double E9oE21)
Set E9/E21 energy ratio.
Definition: ECLCluster.h:201
Belle2::ECLCluster::getE1oE9
double getE1oE9() const
Return E1/E9 (shower shape variable).
Definition: ECLCluster.h:292
Belle2::ECLCluster::setEnergyHighestCrystal
void setEnergyHighestCrystal(double energyhighestcrystal)
Set energy of highest energetic crystal (GeV).
Definition: ECLCluster.h:244
Belle2::ECLCluster::EStatusBit
EStatusBit
The status information for the ECLCluster.
Definition: ECLCluster.h:61
Belle2::ECLCluster::getUncertaintyEnergy
double getUncertaintyEnergy() const
Return Uncertainty on Energy of Shower.
Definition: ECLCluster.h:341
Belle2::ECLCluster::getCovarianceMatrix3x3
TMatrixDSym getCovarianceMatrix3x3() const
Return TMatrixDsym 3x3 covariance matrix for E, Phi and Theta.
Definition: ECLCluster.cc:50
Belle2::ECLCluster::isNeutral
bool isNeutral() const
Return true if cluster has no match with track.
Definition: ECLCluster.h:250
Belle2::ECLCluster::setCovarianceMatrix
void setCovarianceMatrix(double covArray[6])
Set covariance matrix (3x3), i.e.
Definition: ECLCluster.h:163
Belle2::ECLCluster::setTheta
void setTheta(double theta)
Set Theta of Shower (radian).
Definition: ECLCluster.h:229