Belle II Software development

Topics

 mdst data objects
 
 
 mdst modules
 
 

Classes

class  BeamSpot
 This class contains the beam spot position and size modeled as a gaussian distribution in space. More...
 
class  CollisionAxisCMS
 This class contains the measured values of the orientation of the collision axis in the CM system obtained by pure Lorentz boost angleXZ = atan(pHERcms.X / pHERcms.Z) angleYZ = atan(pHERcms.Y / pHERcms.Z) where pHERcms is HER momentum in CM system obtained by boost. More...
 
class  CollisionBoostVector
 This class contains the measured average boost vector vec(beta) = (beta_x, beta_y, beta_z) = vec(p_e+e-)/E_e+e- of the center-of-mass system in the lab frame and its uncertainty. More...
 
class  CollisionInvariantMass
 This class contains the measured average center-of-mass energy, which is equal to the invariant mass of the colliding beams, and its uncertainty. More...
 
class  DBRepresentationOfSoftwareTriggerCut
 Class to handle storing SoftwareTriggerCuts in the database. More...
 
class  SoftwareTriggerCutBase
 Base class for the SoftwareTriggerCut and its DBRepresentation. More...
 
class  SoftwareTriggerMenu
 Class to handle storing the trigger menu in the database. More...
 
class  TRGGDLDBBadrun
 The payload class for GDL badrun. More...
 
class  TRGGDLDBFTDLBits
 The payload class for FTDL output bit. More...
 
class  TRGGDLDBInputBits
 The payload class for GDL input bit. More...
 
class  TRGGDLDBPrescales
 The payload class for GDL psnm. More...
 
class  TTDOffsets
 This class contains information to correct the information obtained from the TTD (simple offsets) More...
 
class  BeamSpotTest
 
class  ECLClusterTest
 Test class for the Track object. More...
 
class  EventLevelTrackingInfoTest
 Unit tests for the event level tracking information. More...
 
class  HitPatternCDCTest
 Unit tests for the CDC hit Patterns. More...
 
class  HitPatternVXDTest
 
class  KlIdTest
 Test class for the KlId object. More...
 
class  TrackTest
 Test class for the Track object. More...
 
class  TrackFitResultTest
 Set up a few arrays and objects in the datastore. More...
 
class  V0Test
 Set up a few arrays and objects in the datastore. More...
 

Functions

 TEST_F (BeamSpotTest, Basic)
 Constructor, copy constructor, comparison, setters and getters.
 
 TEST_F (ECLClusterTest, Constructors)
 Test default constructor.
 
 TEST_F (ECLClusterTest, SettersAndGetters)
 Test setter and getter.
 
 TEST_F (EventLevelTrackingInfoTest, settersNGettersCDC)
 Test simple Setters, Getters, and Hassers for the CDC related part.
 
 TEST_F (EventLevelTrackingInfoTest, settersNGettersVXD)
 Test simple Setters and Getters for the VXD related part.
 
 TEST_F (EventLevelTrackingInfoTest, settersNGettersFlagBlock)
 Test simple Setters and Getters for the VXD related part.
 
 TEST_F (HitPatternCDCTest, settersNGetters)
 Test simple Setters, Getters, and Hassers.
 
 TEST_F (HitPatternCDCTest, SetNGetTotalNumberOfHits)
 This tests if the total number of hits is set and read correctly.
 
 TEST_F (HitPatternCDCTest, getLongestContRunInSL)
 Test if the longest run in a superlayer is returned correctly.
 
 TEST_F (HitPatternCDCTest, getFirstLastLayer)
 Test if getFirst/LastLayer returns the proper value.
 
 TEST_F (HitPatternVXDTest, NumberingScheme)
 Test the numbering scheme in the static variables.
 
 TEST_F (HitPatternVXDTest, General)
 Constructor and some general getters.
 
 TEST_F (HitPatternVXDTest, SVDSetterAndGetter)
 Test simple Setters and Getters for SVD.
 
 TEST_F (HitPatternVXDTest, PXDSetterAndGetter)
 Test simple Setters and Getters for the PXD.
 
 TEST_F (HitPatternVXDTest, NGetters)
 Test total number of hit getters.
 
 TEST_F (HitPatternVXDTest, getNLayers)
 Test the getNLayer functions.
 
 TEST_F (HitPatternVXDTest, getFirstLastLayer)
 Test the getters for First/Last Layer.
 
 TEST_F (KlIdTest, SettersAndGetters)
 Test setter and getter.
 
TrackFitResult const * addDummyTrack (StoreArray< TrackFitResult > &trackFitResults, Const::ChargedStable particeType, float pValue=1.)
 Utility function to create dummy TrackFitResults.
 
 TEST_F (TrackTest, settersNGetters)
 Test simple Setters and Getters.
 
 TEST_F (TrackTest, getTrackFitResultWithClosestMass)
 Test getTrackFitResultWithClosestMass.
 
 TEST_F (TrackTest, getTrackFitResultWithBestPValue)
 Test getTrackFitResultWithBestPValue.
 
 TEST_F (TrackFitResultTest, Getters)
 Test simple Setters and Getters.
 
 TEST_F (TrackFitResultTest, ErrorPropagation)
 Test if the error propagation of the covariance matrix works properly.
 
 TEST_F (TrackFitResultTest, Charge)
 Test get charge.
 
 TEST_F (V0Test, IndexGetters)
 Test Index Getter.
 
 TEST_F (V0Test, PointerGetters)
 Test Pointer Getter.
 

Detailed Description

Function Documentation

◆ addDummyTrack()

TrackFitResult const * addDummyTrack ( StoreArray< TrackFitResult > & trackFitResults,
Const::ChargedStable particeType,
float pValue = 1. )

Utility function to create dummy TrackFitResults.

Definition at line 35 of file track.cc.

37 {
38 const ROOT::Math::XYZVector dummyVector3;
39 const TMatrixDSym dummyMatrix(6);
40 const int charge = 1;
41 const float bField = 1.5;
42
43 const auto newFitRes = trackFitResults.appendNew(dummyVector3, dummyVector3, dummyMatrix, charge, particeType, pValue,
44 bField, 0, 0, 0);
45 return newFitRes;
46 }
T * appendNew()
Construct a new T object at the end of the array.
Definition StoreArray.h:246

◆ TEST_F() [1/26]

TEST_F ( BeamSpotTest ,
Basic  )

Constructor, copy constructor, comparison, setters and getters.

Definition at line 25 of file BeamSpotUT.cc.

26 {
27 BeamSpot bs;
28 EXPECT_EQ(bs.getIPPosition().X(), 0.);
29 EXPECT_EQ(bs.getIPPosition().Y(), 0.);
30 EXPECT_EQ(bs.getIPPosition().Z(), 0.);
31
32 std::function<float (int, int)> sizeElement = [ & sizeElement](int i, int j) {
33 return j >= i ? (i + 1) + 10 * (j + 1) : sizeElement(j, i) ;
34 };
35
36 std::function<float (int, int)> errorElement = [& errorElement](int i, int j) {
37 return j >= i ? 100 + (i + 1) + 10 * (j + 1) : errorElement(j, i);
38 };
39
40 TMatrixDSym size(3), positionError(3);
41 for (int i = 0; i < 3; i++)
42 for (int j = i; j < 3; j++) {
43 size(i, j) = size(j, i) = sizeElement(i, j);
44 positionError(i, j) = positionError(j, i) = errorElement(i, j);
45 }
46
47 ROOT::Math::XYZVector position;
48 position.SetXYZ(1., 2., 3.);
49
50 bs.setSizeCovMatrix(size);
51 bs.setIP(position, positionError);
52
53 ROOT::Math::XYZVector testPosition = bs.getIPPosition();
54 EXPECT_EQ(testPosition.X(), 1.);
55 EXPECT_EQ(testPosition.Y(), 2.);
56 EXPECT_EQ(testPosition.Z(), 3.);
57
58 TMatrixDSym testError = bs.getIPPositionCovMatrix();
59 for (int i = 0; i < 3; i++)
60 for (int j = 0; j < 3; j++)
61 EXPECT_EQ(testError(i, j), errorElement(i, j));
62
63 TMatrixDSym testSize = bs.getSizeCovMatrix();
64 for (int i = 0; i < 3; i++)
65 for (int j = 0; j < 3; j++)
66 EXPECT_EQ(testSize(i, j), sizeElement(i, j));
67
68
69 TMatrixDSym testCovVertex = bs.getCovVertex();
70 for (int i = 0; i < 3; i++)
71 for (int j = 0; j < 3; j++)
72 EXPECT_EQ(testCovVertex(i, j), (sizeElement(i, j) + errorElement(i, j)));
73
74 EXPECT_EQ(bs.getGlobalUniqueID(), 1);
75 BeamSpot bs2(bs);
76 EXPECT_EQ(bs == bs2, true);
77
78 BeamSpot bs3;
79 bs3 = bs;
80 EXPECT_EQ(bs == bs3, true);
81
82 BeamSpot bs4;
83 bs4 = bs3;
84 size(2, 2) = 0.;
85
86 bs3.setSizeCovMatrix(size);
87 size(2, 2) = std::numeric_limits<double>::min();
88 bs4.setSizeCovMatrix(size);
89
90 EXPECT_EQ(bs4 == bs3, false);
91 }
This class contains the beam spot position and size modeled as a gaussian distribution in space.
Definition BeamSpot.h:22

◆ TEST_F() [2/26]

TEST_F ( ECLClusterTest ,
Constructors  )

Test default constructor.

Definition at line 29 of file eclCluster.cc.

30 {
31 ECLCluster myECLCluster;
32
33 EXPECT_EQ(exp(-5.), myECLCluster.getEnergy(ECLCluster::EHypothesisBit::c_nPhotons));
34 EXPECT_EQ(exp(-5.), myECLCluster.getEnergyRaw());
35 EXPECT_EQ(exp(-5.), myECLCluster.getEnergyHighestCrystal());
36 EXPECT_EQ(0, myECLCluster.getTheta());
37 EXPECT_EQ(0, myECLCluster.getPhi());
38 EXPECT_EQ(0, myECLCluster.getR());
39 EXPECT_EQ(0, myECLCluster.getTime());
40 EXPECT_EQ(0, myECLCluster.getDeltaTime99());
41 EXPECT_EQ(0, myECLCluster.getStatus());
42 EXPECT_EQ(0, myECLCluster.getNumberOfCrystals());
43 EXPECT_EQ(0, myECLCluster.getLAT());
44 EXPECT_EQ(0, myECLCluster.getAbsZernike40());
45 EXPECT_EQ(0, myECLCluster.getAbsZernike51());
46 EXPECT_EQ(0, myECLCluster.getZernikeMVA());
47 EXPECT_EQ(0, myECLCluster.getE1oE9());
48 EXPECT_EQ(0, myECLCluster.getE9oE21());
49
50 EXPECT_EQ(0, myECLCluster.getUncertaintyEnergy());
51 EXPECT_EQ(0, myECLCluster.getUncertaintyTheta());
52 EXPECT_EQ(0, myECLCluster.getUncertaintyPhi());
53
54 EXPECT_FALSE(myECLCluster.isTrack());
55 EXPECT_TRUE(myECLCluster.isNeutral());
56
57 double x = myECLCluster.getClusterPosition().X();
58 double y = myECLCluster.getClusterPosition().Y();
59 double z = myECLCluster.getClusterPosition().Z();
60 EXPECT_EQ(0, x);
61 EXPECT_EQ(0, y);
62 EXPECT_EQ(0, z);
63
64 const auto error3x3 = myECLCluster.getCovarianceMatrix3x3();
65 EXPECT_EQ(0, error3x3(0, 0));
66 EXPECT_EQ(0, error3x3(0, 1));
67 EXPECT_EQ(0, error3x3(0, 2));
68 EXPECT_EQ(0, error3x3(1, 0));
69 EXPECT_EQ(0, error3x3(1, 1));
70 EXPECT_EQ(0, error3x3(1, 2));
71 EXPECT_EQ(0, error3x3(2, 0));
72 EXPECT_EQ(0, error3x3(2, 1));
73 EXPECT_EQ(0, error3x3(2, 2));
74
75 } // default constructor
ECL cluster data.
Definition ECLCluster.h:27
bool isTrack() const
Return true if the cluster matches with track.
Definition ECLCluster.h:235
TMatrixDSym getCovarianceMatrix3x3() const
Return TMatrixDsym 3x3 covariance matrix for E, Phi and Theta.
Definition ECLCluster.cc:52
double getPhi() const
Return Corrected Phi of Shower (radian).
Definition ECLCluster.h:304
double getE1oE9() const
Return E1/E9 (shower shape variable).
Definition ECLCluster.h:277
double getR() const
Return R.
Definition ECLCluster.h:310
double getEnergyRaw() const
Return Uncorrected Energy deposited (GeV)
Definition ECLCluster.h:316
double getUncertaintyTheta() const
Return Uncertainty on Theta of Shower.
Definition ECLCluster.h:325
double getLAT() const
Return LAT (shower shape variable).
Definition ECLCluster.h:292
double getE9oE21() const
Return E9/E21 (shower shape variable).
Definition ECLCluster.h:280
unsigned short getStatus() const
Return status.
Definition ECLCluster.h:241
double getEnergy(EHypothesisBit hypothesis) const
Return Energy (GeV).
Definition ECLCluster.cc:23
double getUncertaintyEnergy() const
Return Uncertainty on Energy of Shower.
Definition ECLCluster.h:322
double getNumberOfCrystals() const
Return number of a crystals in a shower (sum of weights).
Definition ECLCluster.h:295
double getEnergyHighestCrystal() const
Return energy of highest energetic crystal in cluster (GeV)
Definition ECLCluster.h:319
double getZernikeMVA() const
Return MVA based hadron/photon value based on Zernike moments (shower shape variable).
Definition ECLCluster.h:274
ROOT::Math::XYZVector getClusterPosition() const
Return ROOT::Math::XYZVector on cluster position (x,y,z)
Definition ECLCluster.cc:44
double getUncertaintyPhi() const
Return Uncertainty on Phi of Shower.
Definition ECLCluster.h:328
double getAbsZernike40() const
Return Zernike moment 40 (shower shape variable).
Definition ECLCluster.h:268
bool isNeutral() const
Return true if cluster has no match with track.
Definition ECLCluster.h:238
double getTheta() const
Return Corrected Theta of Shower (radian).
Definition ECLCluster.h:307
double getDeltaTime99() const
Return cluster delta time 99.
Definition ECLCluster.h:301
double getTime() const
Return cluster time.
Definition ECLCluster.h:298
@ c_nPhotons
CR is split into n photons (N1)
Definition ECLCluster.h:41
double getAbsZernike51() const
Return Zernike moment 51 (shower shape variable).
Definition ECLCluster.h:271

◆ TEST_F() [3/26]

TEST_F ( ECLClusterTest ,
SettersAndGetters  )

Test setter and getter.

Definition at line 78 of file eclCluster.cc.

79 {
80 ECLCluster myECLCluster;
81 // Pick some arbitrary numbers to test with
82 const bool isTrack = true;
83 const double energy = 1.165;
84 const float theta = 1.2;
85 const float phi = 1.2;
86 const double r = 1.2;
87 const double energyDepSum = 12.3;
88 const double time = 17.2;
89 const double deltaTime99 = 1.1;
90 const double E9oE21 = 0.1;
91 const double highestEnergy = 32.1;
92 const double lat = 0.5;
93 const double nOfCrystals = 4;
95 // Energy->[0], Phi->[2], Theta->[5]
96 double error[6] = {0.1, 0.2, 0.3, 0.4, 0.5, 0.6};
97
98 myECLCluster.setEnergy(energy);
99 myECLCluster.setE9oE21(E9oE21);
100 myECLCluster.setEnergyRaw(energyDepSum);
101 myECLCluster.setTheta(theta);
102 myECLCluster.setPhi(phi);
103 myECLCluster.setR(r);
104 myECLCluster.setTime(time);
105 myECLCluster.setDeltaTime99(deltaTime99);
106 myECLCluster.setEnergyHighestCrystal(highestEnergy);
107 myECLCluster.setStatus(status);
108 myECLCluster.setNumberOfCrystals(nOfCrystals);
109 myECLCluster.setLAT(lat);
110 myECLCluster.setCovarianceMatrix(error);
111 myECLCluster.setIsTrack(isTrack);
113
114 EXPECT_FLOAT_EQ(energy, myECLCluster.getEnergy(ECLCluster::EHypothesisBit::c_nPhotons));
115 EXPECT_FLOAT_EQ(E9oE21, myECLCluster.getE9oE21());
116 EXPECT_FLOAT_EQ(energyDepSum, myECLCluster.getEnergyRaw());
117 EXPECT_FLOAT_EQ(theta, myECLCluster.getTheta());
118 EXPECT_FLOAT_EQ(phi, myECLCluster.getPhi());
119 EXPECT_FLOAT_EQ(r, myECLCluster.getR());
120 EXPECT_FLOAT_EQ(time, myECLCluster.getTime());
121 EXPECT_FLOAT_EQ(deltaTime99, myECLCluster.getDeltaTime99());
122 EXPECT_FLOAT_EQ(highestEnergy, myECLCluster.getEnergyHighestCrystal());
123 EXPECT_TRUE(myECLCluster.hasStatus(status));
124 EXPECT_FLOAT_EQ(nOfCrystals, myECLCluster.getNumberOfCrystals());
125 EXPECT_FLOAT_EQ(lat, myECLCluster.getLAT());
126
127 EXPECT_FLOAT_EQ(error[0], myECLCluster.getUncertaintyEnergy()*myECLCluster.getUncertaintyEnergy());
128 EXPECT_FLOAT_EQ(error[5], myECLCluster.getUncertaintyTheta()*myECLCluster.getUncertaintyTheta());
129 EXPECT_FLOAT_EQ(error[2], myECLCluster.getUncertaintyPhi()*myECLCluster.getUncertaintyPhi());
130
131 EXPECT_TRUE(myECLCluster.isTrack());
132 EXPECT_FALSE(myECLCluster.isNeutral());
133
134 const auto error3x3 = myECLCluster.getCovarianceMatrix3x3();
135 EXPECT_FLOAT_EQ(error[0], error3x3(0, 0));
136 EXPECT_FLOAT_EQ(error[1], error3x3(0, 1));
137 EXPECT_FLOAT_EQ(error[3], error3x3(0, 2));
138 EXPECT_FLOAT_EQ(error[1], error3x3(1, 0));
139 EXPECT_FLOAT_EQ(error[2], error3x3(1, 1));
140 EXPECT_FLOAT_EQ(error[4], error3x3(1, 2));
141 EXPECT_FLOAT_EQ(error[3], error3x3(2, 0));
142 EXPECT_FLOAT_EQ(error[4], error3x3(2, 1));
143 EXPECT_FLOAT_EQ(error[5], error3x3(2, 2));
144
145 } // default constructor
void setE9oE21(double E9oE21)
Set E9/E21 energy ratio.
Definition ECLCluster.h:193
void setTheta(double theta)
Set Theta of Shower (radian).
Definition ECLCluster.h:217
EStatusBit
The status information for the ECLCluster.
Definition ECLCluster.h:49
@ c_PulseShapeDiscrimination
bit 2: ECLCluster has pulse shape discrimination variables.
Definition ECLCluster.h:55
void setPhi(double phi)
Set Phi of Shower (radian).
Definition ECLCluster.h:220
void setEnergyHighestCrystal(double energyhighestcrystal)
Set energy of highest energetic crystal (GeV).
Definition ECLCluster.h:232
void setEnergyRaw(double energyraw)
Set Incorrect Energy deposited (GeV).
Definition ECLCluster.h:229
void setTime(double time)
Set time information.
Definition ECLCluster.h:211
void setCovarianceMatrix(double covArray[6])
Set covariance matrix (3x3), i.e.
Definition ECLCluster.h:152
bool hasStatus(EStatusBit bitmask) const
Return if specific status bit is set.
Definition ECLCluster.h:344
void setDeltaTime99(double dtime99)
Set 99% time containment range.
Definition ECLCluster.h:214
void setStatus(EStatusBit status)
Set status.
Definition ECLCluster.h:107
void setLAT(double LAT)
Set Lateral distribution parameter.
Definition ECLCluster.h:205
void setHypothesis(EHypothesisBit hypothesis)
Set hypotheses.
Definition ECLCluster.h:123
void setNumberOfCrystals(double noc)
Set number of crystals (sum of weights).
Definition ECLCluster.h:208
void setEnergy(double energy)
Set Corrected Energy (GeV).
Definition ECLCluster.h:226
void setIsTrack(bool istrack)
Set m_isTrack true if the cluster matches with a track.
Definition ECLCluster.h:104
void setR(double r)
Set R (in cm).
Definition ECLCluster.h:223

◆ TEST_F() [4/26]

TEST_F ( EventLevelTrackingInfoTest ,
settersNGettersCDC  )

Test simple Setters, Getters, and Hassers for the CDC related part.

Definition at line 23 of file eventLevelTrackingInfo.cc.

24 {
25 // Test proper initialization for an empty afterimage.
26 EventLevelTrackingInfo eventLevelTrackingInfo;
27 EXPECT_EQ(eventLevelTrackingInfo.getNCDCHitsNotAssigned(), 0);
28 EXPECT_EQ(eventLevelTrackingInfo.getNCDCHitsNotAssignedPostCleaning(), 0);
29
30 //Let's set the total number CDC hits in the afterimage
31 eventLevelTrackingInfo.setNCDCHitsNotAssigned(324);
32 eventLevelTrackingInfo.setNCDCHitsNotAssignedPostCleaning(257);
33
34 EXPECT_EQ(eventLevelTrackingInfo.getNCDCHitsNotAssigned(), 324);
35 EXPECT_EQ(eventLevelTrackingInfo.getNCDCHitsNotAssignedPostCleaning(), 257);
36
37 //Let's set and get information for the various layers:
38 eventLevelTrackingInfo.setCDCLayer(9); // SL1
39 EXPECT_TRUE(eventLevelTrackingInfo.hasCDCLayer(9));
40 EXPECT_FALSE(eventLevelTrackingInfo.hasCDCLayer(10));
41 eventLevelTrackingInfo.setCDCLayer(23);
42 EXPECT_TRUE(eventLevelTrackingInfo.hasCDCLayer(23));
43 EXPECT_FALSE(eventLevelTrackingInfo.hasCDCLayer(55));
44
45 EXPECT_B2FATAL(eventLevelTrackingInfo.setCDCLayer(56));
46 EXPECT_B2FATAL(eventLevelTrackingInfo.hasCDCLayer(56));
47
48 //Let's have a look at the SuperLayers ...
49 EXPECT_TRUE(eventLevelTrackingInfo.hasCDCSLayer(1));
50 EXPECT_FALSE(eventLevelTrackingInfo.hasCDCSLayer(5));
51
52 //Let's set and get the information on unused segments:
53 eventLevelTrackingInfo.setNCDCSegments(21);
54 EXPECT_EQ(eventLevelTrackingInfo.getNCDCSegments(), 21);
55 eventLevelTrackingInfo.setNCDCSegments(300);
56 EXPECT_EQ(eventLevelTrackingInfo.getNCDCSegments(), 255);
57 }
Tracking-related info on event-level, for example number of unassigned measurements.
bool hasCDCLayer(uint16_t const cdcLayer) const
Getter for presence of hit in specific CDC Layer.
bool hasCDCSLayer(uint16_t const cdcSLayer) const
Getter for the presence of hit in a SuperLayer.
uint16_t getNCDCSegments() const
Getter for number of segments not used in Tracks.
uint16_t getNCDCHitsNotAssignedPostCleaning() const
Getter for number of CDC measurements, that are not assigned to any Track nor very likely beam-backgr...
void setNCDCHitsNotAssignedPostCleaning(uint16_t const nCDCHitsNotAssignedPostCleaning)
Setter for number of CDC measurements, that are not assigned to any Track nor very likely beam-backgr...
uint16_t getNCDCHitsNotAssigned() const
Getter for number of CDC measurements, that are not assigned to any Track.
void setCDCLayer(uint16_t const cdcLayer)
Setter for presence of hit in specific CDC Layer.
void setNCDCSegments(uint16_t nHits)
Setter for number of Segments not used in Tracks.
void setNCDCHitsNotAssigned(uint16_t const nCDCHitsNotAssigned)
Setter for number of CDC measurements, that are not assigned to any Track.

◆ TEST_F() [5/26]

TEST_F ( EventLevelTrackingInfoTest ,
settersNGettersFlagBlock  )

Test simple Setters and Getters for the VXD related part.

Definition at line 82 of file eventLevelTrackingInfo.cc.

83 {
84 EventLevelTrackingInfo eventLevelTrackingInfo;
85 EXPECT_EQ(eventLevelTrackingInfo.hasUnspecifiedTrackFindingFailure(), false);
86 EXPECT_EQ(eventLevelTrackingInfo.hasAnErrorFlag(), false);
87 EXPECT_EQ(eventLevelTrackingInfo.hasVXDTF2AbortionFlag(), false);
88 eventLevelTrackingInfo.setUnspecifiedTrackFindingFailure();
89 EXPECT_EQ(eventLevelTrackingInfo.hasUnspecifiedTrackFindingFailure(), true);
90 EXPECT_EQ(eventLevelTrackingInfo.hasAnErrorFlag(), true);
91 EXPECT_EQ(eventLevelTrackingInfo.hasVXDTF2AbortionFlag(), false);
92
93 EventLevelTrackingInfo eventLevelTrackingInfo2;
94 EXPECT_EQ(eventLevelTrackingInfo2.hasVXDTF2AbortionFlag(), false);
95 EXPECT_EQ(eventLevelTrackingInfo2.hasAnErrorFlag(), false);
96 EXPECT_EQ(eventLevelTrackingInfo2.hasUnspecifiedTrackFindingFailure(), false);
97 eventLevelTrackingInfo2.setVXDTF2AbortionFlag();
98 EXPECT_EQ(eventLevelTrackingInfo2.hasVXDTF2AbortionFlag(), true);
99 EXPECT_EQ(eventLevelTrackingInfo2.hasAnErrorFlag(), true);
100 EXPECT_EQ(eventLevelTrackingInfo2.hasUnspecifiedTrackFindingFailure(), false);
101 }
bool hasVXDTF2AbortionFlag() const
Getter for flag indicating that the VXDTF2 was aborted due to high combinatorics in the event.
void setVXDTF2AbortionFlag()
Setter for flag indicating that the VXDTF2 was aborted due to high combinatorics in the event.
bool hasAnErrorFlag() const
Check if any flag was set in the event.
bool hasUnspecifiedTrackFindingFailure() const
Getter for unspecified hint of track finding failure.
void setUnspecifiedTrackFindingFailure()
Setter for unspecified hint of track finding failure.

◆ TEST_F() [6/26]

TEST_F ( EventLevelTrackingInfoTest ,
settersNGettersVXD  )

Test simple Setters and Getters for the VXD related part.

Definition at line 60 of file eventLevelTrackingInfo.cc.

61 {
62 EventLevelTrackingInfo eventLevelTrackingInfo;
63 EXPECT_EQ(eventLevelTrackingInfo.getNVXDClustersInLayer(3), 0);
64 eventLevelTrackingInfo.setNVXDClustersInLayer(3, true, 81);
65 EXPECT_EQ(eventLevelTrackingInfo.getNVXDClustersInLayer(3), 81);
66 eventLevelTrackingInfo.setNVXDClustersInLayer(2, true, 3456);
67 EXPECT_EQ(eventLevelTrackingInfo.getNVXDClustersInLayer(2), 3456);
68 EXPECT_EQ(eventLevelTrackingInfo.getNVXDClustersInLayer(3, true), 81);
69 EXPECT_EQ(eventLevelTrackingInfo.getNVXDClustersInLayer(3, false), 0);
70 EXPECT_B2FATAL(eventLevelTrackingInfo.getNVXDClustersInLayer(56));
71
72 eventLevelTrackingInfo.setNVXDClustersInLayer(6, true, 300);
73 EXPECT_EQ(eventLevelTrackingInfo.getNVXDClustersInLayer(6, true), 255);
74
75 eventLevelTrackingInfo.setSVDFirstSampleTime(-128);
76 EXPECT_EQ(eventLevelTrackingInfo.getSVDFirstSampleTime(), -128);
77 eventLevelTrackingInfo.setSVDFirstSampleTime(127);
78 EXPECT_EQ(eventLevelTrackingInfo.getSVDFirstSampleTime(), 127);
79 }
uint16_t getNVXDClustersInLayer(uint16_t const layer, bool const isU)
Getter for number of clusters in a specific VXD layer, SVD separated by direction.
void setSVDFirstSampleTime(int8_t const sampleTime)
Setter for time of first SVD sample relatvie to event T0.
void setNVXDClustersInLayer(uint16_t const layer, bool const isU, uint16_t const nClusters)
Setter for number of clusters in specific VXD layer, SVD directions are separated.
int8_t getSVDFirstSampleTime() const
Getter for time of first SVD sample relative to event T0.

◆ TEST_F() [7/26]

TEST_F ( HitPatternCDCTest ,
getFirstLastLayer  )

Test if getFirst/LastLayer returns the proper value.

Definition at line 97 of file hitPatternCDC.cc.

98 {
99 HitPatternCDC myHitPatternCDC(0);
100 myHitPatternCDC.setNHits(123); //arbitrary number to check if this layer is masked out correctly
101
102 unsigned short firstLayer = 5;
103 unsigned short lastLayer = 46;
104 myHitPatternCDC.setLayer(firstLayer);
105 myHitPatternCDC.setLayer(lastLayer);
106 EXPECT_EQ(firstLayer, myHitPatternCDC.getFirstLayer());
107 EXPECT_EQ(lastLayer, myHitPatternCDC.getLastLayer());
108
109 myHitPatternCDC.resetPattern();
110 EXPECT_EQ(-1, myHitPatternCDC.getFirstLayer());
111 EXPECT_EQ(-1, myHitPatternCDC.getLastLayer());
112 }
Hit pattern of CDC hits within a track.

◆ TEST_F() [8/26]

TEST_F ( HitPatternCDCTest ,
getLongestContRunInSL  )

Test if the longest run in a superlayer is returned correctly.

Definition at line 80 of file hitPatternCDC.cc.

81 {
82 unsigned long long int initValue = static_cast<unsigned long long int>(0xEEEEEEEEEEEEEEL); // 11101110...11101110
83 HitPatternCDC myHitPatternCDC(initValue);
84 EXPECT_EQ(3, myHitPatternCDC.getLongestContRunInSL(0));
85 EXPECT_EQ(3, myHitPatternCDC.getLongestContRunInSL(1));
86 EXPECT_EQ(3, myHitPatternCDC.getLongestContRunInSL(2));
87 EXPECT_EQ(3, myHitPatternCDC.getLongestContRunInSL(3));
88 EXPECT_EQ(3, myHitPatternCDC.getLongestContRunInSL(4));
89 EXPECT_EQ(3, myHitPatternCDC.getLongestContRunInSL(5));
90 EXPECT_EQ(3, myHitPatternCDC.getLongestContRunInSL(6));
91 EXPECT_EQ(3, myHitPatternCDC.getLongestContRunInSL(7));
92 EXPECT_EQ(3, myHitPatternCDC.getLongestContRunInSL(8));
93
94 }

◆ TEST_F() [9/26]

TEST_F ( HitPatternCDCTest ,
SetNGetTotalNumberOfHits  )

This tests if the total number of hits is set and read correctly.

Definition at line 63 of file hitPatternCDC.cc.

64 {
65 unsigned long long int initValue = static_cast<unsigned long long int>(0xAAAAAAAAAAAAAAAAL); //101010...101010
66 HitPatternCDC myHitPatternCDC(initValue);
67 EXPECT_EQ(170, myHitPatternCDC.getNHits());
68 unsigned short int nHits1 = 255;
69 myHitPatternCDC.setNHits(nHits1);
70 EXPECT_EQ(nHits1, myHitPatternCDC.getNHits());
71 unsigned short int nHits2 = 0;
72 myHitPatternCDC.setNHits(nHits2);
73 EXPECT_EQ(nHits2, myHitPatternCDC.getNHits());
74 unsigned short int nHits3 = 93;
75 myHitPatternCDC.setNHits(nHits3);
76 EXPECT_EQ(nHits3, myHitPatternCDC.getNHits());
77 }

◆ TEST_F() [10/26]

TEST_F ( HitPatternCDCTest ,
settersNGetters  )

Test simple Setters, Getters, and Hassers.

Definition at line 22 of file hitPatternCDC.cc.

23 {
24 // Test proper initialization.
25 unsigned long initValue = 66560; // python >>> 2 ** 16 + 2 ** 10
26 HitPatternCDC hitPatternCDC(initValue);
27 EXPECT_EQ(initValue, hitPatternCDC.getInteger());
28
29 HitPatternCDC hitPatternCDC2;
30 EXPECT_EQ(0, hitPatternCDC2.getNHits());
31
32 // Test setting and getting individual bits
33 short layer = 5;
34 hitPatternCDC2.setLayer(layer);
35 EXPECT_EQ(true, hitPatternCDC2.hasLayer(5));
36
37 // Test of SuperLayer getters; setters don't make sense.
38 // Reminder: Start counting from 0 here.
39 // Even -> Axial Layer; Odd -> Stereo Layer
40 HitPatternCDC hitPatternCDC3;
41 hitPatternCDC3.setLayer(9); // SL 1
42 hitPatternCDC3.setLayer(15); // SL 2
43 hitPatternCDC3.setLayer(21); // SL 3
44
45 EXPECT_FALSE(hitPatternCDC3.hasSLayer(0));
46 EXPECT_TRUE(hitPatternCDC3.hasSLayer(1));
47
48 // Test Axial and Stereo requests.
49 EXPECT_TRUE(hitPatternCDC3.hasAxialLayer());
50 EXPECT_TRUE(hitPatternCDC3.hasStereoLayer());
51 EXPECT_FALSE(hitPatternCDC2.hasStereoLayer());
52
53 hitPatternCDC3.resetLayer(15);
54 EXPECT_FALSE(hitPatternCDC3.hasAxialLayer());
55
56 // Test resetting of super layers.
57 hitPatternCDC3.resetSLayer(1);
58 hitPatternCDC3.resetSLayer(3);
59 EXPECT_EQ(0, hitPatternCDC3.getNHits());
60 } // settersNGetters
bool hasSLayer(const unsigned short sLayer) const
Getter for super-layer match.
bool hasAxialLayer() const
True, if at least one axial layer is true.
void setLayer(const unsigned short layer)
Set bit corresponding to layer to true.
bool hasLayer(const unsigned short layer) const
Getter for single layer.
unsigned short getNHits() const
Get the total Number of CDC hits in the fit.
void resetLayer(const unsigned short layer)
Set bit corresponding to layer to false.
void resetSLayer(const unsigned short sLayer)
Reset complete superLayer, e.g.
bool hasStereoLayer() const
True, if at least one axial layer is true.

◆ TEST_F() [11/26]

TEST_F ( HitPatternVXDTest ,
General  )

Constructor and some general getters.

Definition at line 34 of file hitPatternVXD.cc.

35 {
36 unsigned int initValue = 16776960;
37 std::bitset<32> initValueAsBitset(static_cast<std::string>("00000000111111111111111100000000"));
38
39 HitPatternVXD myHitPattern(initValue);
40 EXPECT_EQ(initValueAsBitset, myHitPattern.getBitset());
41 EXPECT_EQ(initValue, myHitPattern.getInteger());
42
43 }
Hit pattern of the VXD within a track.

◆ TEST_F() [12/26]

TEST_F ( HitPatternVXDTest ,
getFirstLastLayer  )

Test the getters for First/Last Layer.

Definition at line 142 of file hitPatternVXD.cc.

143 {
144 HitPatternVXD myHitPattern(0);
145 // random choices
146 const unsigned short firstLayerPXD = 1;
147 const unsigned short lastLayerPXD = 2;
148 const unsigned short firstLayerSVD = 4;
149 const unsigned short lastLayerSVD = 6;
150
151 // set SVD
152 myHitPattern.setSVDLayer(3, 0, 0);
153 myHitPattern.setSVDLayer(4, 3, 0);
154 myHitPattern.setSVDLayer(5, 0, 1);
155 myHitPattern.setSVDLayer(6, 1, 1);
156 // set PXD normal
157 myHitPattern.setPXDLayer(1, 1, HitPatternVXD::PXDMode::normal);
158 myHitPattern.setPXDLayer(2, 2, HitPatternVXD::PXDMode::normal);
159 // set PXD gated
160 myHitPattern.setPXDLayer(1, 1, HitPatternVXD::PXDMode::gated);
161 myHitPattern.setPXDLayer(2, 2, HitPatternVXD::PXDMode::gated);
162
163 EXPECT_EQ(firstLayerSVD, myHitPattern.getFirstSVDLayer());
164 EXPECT_EQ(lastLayerSVD, myHitPattern.getLastSVDLayer());
165 EXPECT_EQ(firstLayerPXD, myHitPattern.getFirstPXDLayer(HitPatternVXD::PXDMode::normal));
166 EXPECT_EQ(lastLayerPXD, myHitPattern.getLastPXDLayer(HitPatternVXD::PXDMode::normal));
167 EXPECT_EQ(firstLayerPXD, myHitPattern.getFirstPXDLayer(HitPatternVXD::PXDMode::gated));
168 EXPECT_EQ(lastLayerPXD, myHitPattern.getLastPXDLayer(HitPatternVXD::PXDMode::gated));
169 }

◆ TEST_F() [13/26]

TEST_F ( HitPatternVXDTest ,
getNLayers  )

Test the getNLayer functions.

Definition at line 114 of file hitPatternVXD.cc.

115 {
116 HitPatternVXD myHitPattern(0);
117 const unsigned short nSVD = 3;
118 const unsigned short nPXDnormal = 2;
119 const unsigned short nPXDgated = 1;
120
121 // set SVD
122 myHitPattern.setSVDLayer(3, 1, 3);
123 myHitPattern.setSVDLayer(4, 0, 0);
124 myHitPattern.setSVDLayer(5, 1, 1);
125 myHitPattern.setSVDLayer(6, 0, 1);
126 // set PXD normal
127 myHitPattern.setPXDLayer(1, 1, HitPatternVXD::PXDMode::normal);
128 myHitPattern.setPXDLayer(2, 2, HitPatternVXD::PXDMode::normal);
129 // set PXD gated
130 myHitPattern.setPXDLayer(1, 0, HitPatternVXD::PXDMode::gated);
131 myHitPattern.setPXDLayer(2, 2, HitPatternVXD::PXDMode::gated);
132
133 EXPECT_EQ(nSVD, myHitPattern.getNSVDLayers());
134 EXPECT_EQ(nPXDnormal, myHitPattern.getNPXDLayers(HitPatternVXD::PXDMode::normal));
135 EXPECT_EQ(nPXDgated, myHitPattern.getNPXDLayers(HitPatternVXD::PXDMode::gated));
136 EXPECT_EQ(nSVD + nPXDnormal, myHitPattern.getNVXDLayers(HitPatternVXD::PXDMode::normal));
137 EXPECT_EQ(nSVD + nPXDgated, myHitPattern.getNVXDLayers(HitPatternVXD::PXDMode::gated));
138
139 }

◆ TEST_F() [14/26]

TEST_F ( HitPatternVXDTest ,
NGetters  )

Test total number of hit getters.

Definition at line 101 of file hitPatternVXD.cc.

102 {
103 HitPatternVXD myHitPattern(16777215);
104 const unsigned short svdHits = 24;
105 const unsigned short pxdHits = 12;
106 const unsigned short ndf = 2 * pxdHits + svdHits;
107 EXPECT_EQ(svdHits, myHitPattern.getNSVDHits());
108 EXPECT_EQ(pxdHits, myHitPattern.getNPXDHits());
109 EXPECT_EQ(ndf, myHitPattern.getNdf());
110
111 }

◆ TEST_F() [15/26]

TEST_F ( HitPatternVXDTest ,
NumberingScheme  )

Test the numbering scheme in the static variables.

Definition at line 25 of file hitPatternVXD.cc.

26 {
27 const std::list<unsigned short> pxdNumbering = {1, 2};
28 const std::list<unsigned short> svdNumbering = {3, 4, 5, 6};
29 EXPECT_EQ(pxdNumbering, HitPatternVXD::s_PXDLayerNumbers);
30 EXPECT_EQ(svdNumbering, HitPatternVXD::s_SVDLayerNumbers);
31 }
static const std::list< unsigned short > s_SVDLayerNumbers
For iterating through layers.
static const std::list< unsigned short > s_PXDLayerNumbers
For iterating through layers.

◆ TEST_F() [16/26]

TEST_F ( HitPatternVXDTest ,
PXDSetterAndGetter  )

Test simple Setters and Getters for the PXD.

Definition at line 68 of file hitPatternVXD.cc.

69 {
70 HitPatternVXD myHitPattern(0);
71
72 for (const auto layerId : HitPatternVXD::s_PXDLayerNumbers) {
73 for (unsigned int nHits = 0; nHits <= 3; ++nHits) {
74 myHitPattern.setPXDLayer(layerId, nHits, HitPatternVXD::PXDMode::normal);
75 EXPECT_EQ(nHits, myHitPattern.getPXDLayer(layerId, HitPatternVXD::PXDMode::normal));
76 myHitPattern.resetPXDLayer(layerId, HitPatternVXD::PXDMode::normal);
77 EXPECT_EQ(0, myHitPattern.getPXDLayer(layerId, HitPatternVXD::PXDMode::normal));
78
79 myHitPattern.setPXDLayer(layerId, nHits, HitPatternVXD::PXDMode::gated);
80 EXPECT_EQ(nHits, myHitPattern.getPXDLayer(layerId, HitPatternVXD::PXDMode::gated));
81 myHitPattern.resetPXDLayer(layerId, HitPatternVXD::PXDMode::gated);
82 EXPECT_EQ(0, myHitPattern.getPXDLayer(layerId, HitPatternVXD::PXDMode::gated));
83 }
84 }
85
86 for (const auto layerId : HitPatternVXD::s_PXDLayerNumbers) {
87 unsigned int nHits = 4;
88 myHitPattern.setPXDLayer(layerId, nHits, HitPatternVXD::PXDMode::normal);
89 EXPECT_EQ(3, myHitPattern.getPXDLayer(layerId, HitPatternVXD::PXDMode::normal));
90 myHitPattern.resetPXDLayer(layerId, HitPatternVXD::PXDMode::normal);
91 EXPECT_EQ(0, myHitPattern.getPXDLayer(layerId, HitPatternVXD::PXDMode::normal));
92
93 myHitPattern.setPXDLayer(layerId, nHits, HitPatternVXD::PXDMode::gated);
94 EXPECT_EQ(3, myHitPattern.getPXDLayer(layerId, HitPatternVXD::PXDMode::gated));
95 myHitPattern.resetPXDLayer(layerId, HitPatternVXD::PXDMode::gated);
96 EXPECT_EQ(0, myHitPattern.getPXDLayer(layerId, HitPatternVXD::PXDMode::gated));
97 }
98 }

◆ TEST_F() [17/26]

TEST_F ( HitPatternVXDTest ,
SVDSetterAndGetter  )

Test simple Setters and Getters for SVD.

Definition at line 46 of file hitPatternVXD.cc.

47 {
48 HitPatternVXD myHitPattern(0);
49
50 for (const auto layerId : HitPatternVXD::s_SVDLayerNumbers) {
51 unsigned short uHits = 2;
52 unsigned short vHits = 1;
53 myHitPattern.setSVDLayer(layerId, uHits, vHits);
54 EXPECT_EQ(uHits, myHitPattern.getSVDLayer(layerId).first);
55 EXPECT_EQ(vHits, myHitPattern.getSVDLayer(layerId).second);
56 myHitPattern.resetSVDLayer(layerId);
57 EXPECT_EQ(0, myHitPattern.getSVDLayer(layerId).first);
58 EXPECT_EQ(0, myHitPattern.getSVDLayer(layerId).second);
59 uHits = 4;
60 vHits = 4;
61 myHitPattern.setSVDLayer(layerId, uHits, vHits);
62 EXPECT_EQ(3, myHitPattern.getSVDLayer(layerId).first);
63 EXPECT_EQ(3, myHitPattern.getSVDLayer(layerId).second);
64 }
65 }

◆ TEST_F() [18/26]

TEST_F ( KlIdTest ,
SettersAndGetters  )

Test setter and getter.

Definition at line 30 of file KlIdTest.cc.

31 {
32
34 StoreArray<ECLCluster> eclClusters;
35 eclClusters.registerInDataStore();
36 StoreArray<KLMCluster> klmClusters;
37 klmClusters.registerInDataStore();
38 StoreArray<KlId> klids;
39 klids.registerInDataStore();
40 klmClusters.registerRelationTo(klids);
41 eclClusters.registerRelationTo(klids);
42
43
44 const KlId* klid = klids.appendNew();
45 const KLMCluster* klmCluster = klmClusters.appendNew();
46 const ECLCluster* eclCluster = eclClusters.appendNew();
47
48 EXPECT_FALSE(klid->isECL());
49 EXPECT_FALSE(klid->isKLM());
50 EXPECT_TRUE(std::isnan(klid->getKlId()));
51
52 klmCluster->addRelationTo(klid, 0.5);
53 eclCluster->addRelationTo(klid, 0.5);
54
55 EXPECT_TRUE(klid->isECL());
56 EXPECT_TRUE(klid->isKLM());
57 EXPECT_EQ(0.5, klid->getKlId());
58
59 }
static DataStore & Instance()
Instance of singleton Store.
Definition DataStore.cc:53
void setInitializeActive(bool active)
Setter for m_initializeActive.
Definition DataStore.cc:93
KLM cluster data.
Definition KLMCluster.h:28
Klong identification (KlId) datastore object to store results from KlId calculations.
Definition KlId.h:23
double getKlId() const
get the klong classifier output
Definition KlId.cc:29
bool isECL() const
is this ID originally a ECL Cluster ?
Definition KlId.cc:24
bool isKLM() const
is this ID originally a KLM Cluster ?
Definition KlId.cc:19
void addRelationTo(const RelationsInterface< BASE > *object, float weight=1.0, const std::string &namedRelation="") const
Add a relation from this object to another object (with caching).
bool registerInDataStore(DataStore::EStoreFlags storeFlags=DataStore::c_WriteOut)
Register the object/array in the DataStore.
Accessor to arrays stored in the data store.
Definition StoreArray.h:113
bool registerRelationTo(const StoreArray< TO > &toArray, DataStore::EDurability durability=DataStore::c_Event, DataStore::EStoreFlags storeFlags=DataStore::c_WriteOut, const std::string &namedRelation="") const
Register a relation to the given StoreArray.
Definition StoreArray.h:140

◆ TEST_F() [19/26]

TEST_F ( TrackFitResultTest ,
Charge  )

Test get charge.

Definition at line 151 of file trackFitResult.cc.

152 {
153 auto bField = 1.5;
154 auto pValue = 0.45;
155 ROOT::Math::XYZVector position(0., 0., 0.);
156 ROOT::Math::XYZVector momentum(1., 1., 1.);
157 TMatrixDSym cov6(6);
158 auto pType = Belle2::Const::electron;
159
160 auto charge = -1.0;
161 Belle2::TrackFitResult myResultMinus(position, momentum, cov6, charge, pType, pValue, bField, 0, 0, 0);
162 EXPECT_EQ(myResultMinus.getChargeSign(), charge);
163
164 charge = 0;
165 Belle2::TrackFitResult myResultNull(position, momentum, cov6, charge, pType, pValue, bField, 0, 0, 0);
166 EXPECT_EQ(myResultNull.getChargeSign(), charge);
167
168 charge = +1.0;
169 Belle2::TrackFitResult myResultPlus(position, momentum, cov6, charge, pType, pValue, bField, 0, 0, 0);
170 EXPECT_EQ(myResultPlus.getChargeSign(), charge);
171 }
static const ChargedStable electron
electron particle
Definition Const.h:659
Values of the result of a track fit with a given particle hypothesis.

◆ TEST_F() [20/26]

TEST_F ( TrackFitResultTest ,
ErrorPropagation  )

Test if the error propagation of the covariance matrix works properly.

Definition at line 82 of file trackFitResult.cc.

83 {
84 TRandom3 generator;
85 unsigned int nCases = 1;
86 double absError = 1e-6;
87
88 for (unsigned int iCase = 0; iCase < nCases; ++iCase) {
89
90 auto bField = 1.5;
91 auto pType = Belle2::Const::electron;
92 auto pValue = 0.45;
93 std::vector<float> tau;
94 for (int i = 0; i < 5; ++i) {
95 // does not matter what is appended here, we only test the cov matrix
96 tau.push_back(1);
97 }
98 std::vector<float> cov(15);
99 for (auto& element : cov) {
100 element = generator.Gaus(1e-4);
101 }
102 Belle2::TrackFitResult myResult(tau, cov, pType, pValue, 0, 0, 0);
103 TMatrixDSym covariance(myResult.getCovariance6());
104
105 for (int i = 0; i < 5; ++i)
106 for (int j = i; j < 5; ++j)
107 EXPECT_EQ(covariance(i, j), covariance(j, i));
108
109 TMatrixDSym cov6(6);
110 for (unsigned int row = 0; row < 6; ++row) {
111 for (unsigned int col = 0; col < 6; ++col) {
112 cov6(row, col) = covariance(row, col);
113 }
114 }
115 Belle2::TrackFitResult myResult2(myResult.getPosition(), myResult.getMomentum(), cov6,
116 myResult.getChargeSign(), pType, pValue, bField, 0, 0, 0);
117
118 TMatrixDSym myResultCov5 = myResult.getCovariance5();
119 TMatrixDSym myResult2Cov5 = myResult2.getCovariance5();
120
121 EXPECT_NEAR(myResultCov5(0, 0), myResult2Cov5(0, 0), absError);
122 EXPECT_NEAR(myResultCov5(0, 1), myResult2Cov5(0, 1), absError);
123 EXPECT_NEAR(myResultCov5(0, 2), myResult2Cov5(0, 2), absError);
124 EXPECT_NEAR(myResultCov5(0, 3), myResult2Cov5(0, 3), absError);
125 EXPECT_NEAR(myResultCov5(0, 4), myResult2Cov5(0, 4), absError);
126 EXPECT_NEAR(myResultCov5(1, 0), myResult2Cov5(1, 0), absError);
127 EXPECT_NEAR(myResultCov5(1, 1), myResult2Cov5(1, 1), absError);
128 EXPECT_NEAR(myResultCov5(1, 2), myResult2Cov5(1, 2), absError);
129 EXPECT_NEAR(myResultCov5(1, 3), myResult2Cov5(1, 3), absError);
130 EXPECT_NEAR(myResultCov5(1, 4), myResult2Cov5(1, 4), absError);
131 EXPECT_NEAR(myResultCov5(2, 0), myResult2Cov5(2, 0), absError);
132 EXPECT_NEAR(myResultCov5(2, 1), myResult2Cov5(2, 1), absError);
133 EXPECT_NEAR(myResultCov5(2, 2), myResult2Cov5(2, 2), absError);
134 EXPECT_NEAR(myResultCov5(2, 3), myResult2Cov5(2, 3), absError);
135 EXPECT_NEAR(myResultCov5(2, 4), myResult2Cov5(2, 4), absError);
136 EXPECT_NEAR(myResultCov5(3, 0), myResult2Cov5(3, 0), absError);
137 EXPECT_NEAR(myResultCov5(3, 1), myResult2Cov5(3, 1), absError);
138 EXPECT_NEAR(myResultCov5(3, 2), myResult2Cov5(3, 2), absError);
139 EXPECT_NEAR(myResultCov5(3, 3), myResult2Cov5(3, 3), absError);
140 EXPECT_NEAR(myResultCov5(3, 4), myResult2Cov5(3, 4), absError);
141 EXPECT_NEAR(myResultCov5(4, 0), myResult2Cov5(4, 0), absError);
142 EXPECT_NEAR(myResultCov5(4, 1), myResult2Cov5(4, 1), absError);
143 EXPECT_NEAR(myResultCov5(4, 2), myResult2Cov5(4, 2), absError);
144 EXPECT_NEAR(myResultCov5(4, 3), myResult2Cov5(4, 3), absError);
145 EXPECT_NEAR(myResultCov5(4, 4), myResult2Cov5(4, 4), absError);
146
147 }
148 } // Testcases error propagation

◆ TEST_F() [21/26]

TEST_F ( TrackFitResultTest ,
Getters  )

Test simple Setters and Getters.

Definition at line 36 of file trackFitResult.cc.

37 {
38 TRandom3 generator;
39 unsigned int nCases = 1;
40 double absError = 1e-6;
41 double bField = 1.5;
42
43 for (unsigned int i = 0; i < nCases; ++i) {
44
45 short int charge = generator.Uniform(-1, 1) > 0 ? 1 : -1;
47 float pValue = 0.45;
48
49 // Generate a random put orthogonal pair of vectors in the r-phi plane
50 TVector2 d(generator.Uniform(-1, 1), generator.Uniform(-1, 1));
51 TVector2 pt(generator.Uniform(-1, 1), generator.Uniform(-1, 1));
52 d.Set(d.X(), -(d.X()*pt.Px()) / pt.Py());
53 // Add a random z component
54 ROOT::Math::XYZVector position(d.X(), d.Y(), generator.Uniform(-1, 1));
55 ROOT::Math::XYZVector momentum(pt.Px(), pt.Py(), generator.Uniform(-1, 1));
56
57 TMatrixDSym cov6(6);
58
59 // Set up class for testing
60 TrackFitResult myResult(position, momentum, cov6, charge, pType, pValue, bField, 0, 0, 0);
61
62 // Test all vector elements
63 EXPECT_NEAR(position.X(), myResult.getPosition().X(), absError);
64 EXPECT_NEAR(position.Y(), myResult.getPosition().Y(), absError);
65 EXPECT_NEAR(position.Z(), myResult.getPosition().Z(), absError);
66 EXPECT_NEAR(momentum.X(), myResult.getMomentum().X(), absError);
67 EXPECT_NEAR(momentum.Y(), myResult.getMomentum().Y(), absError);
68 EXPECT_NEAR(momentum.Z(), myResult.getMomentum().Z(), absError);
69
70 // Test getter for transverse momentum
71 EXPECT_NEAR(momentum.Rho(), myResult.getTransverseMomentum(), absError);
72
73 // Test other variables
74 EXPECT_EQ(charge, myResult.getChargeSign());
75 EXPECT_EQ(pValue, myResult.getPValue());
76 EXPECT_EQ(pType, myResult.getParticleType());
77
78 }
79 } // Testcases for getters
The ParticleType class for identifying different particle types.
Definition Const.h:408

◆ TEST_F() [22/26]

TEST_F ( TrackTest ,
getTrackFitResultWithBestPValue  )

Test getTrackFitResultWithBestPValue.

Definition at line 160 of file track.cc.

161 {
162 // Create some TrackFitResults in the the DataStore.
163 // PDGCode of the TrackFitResult will be used in the test to identify the TFR.
166 myResults.registerInDataStore();
167
168 // add four fit results with different p values
169 const auto myMuon = addDummyTrack(myResults, Const::muon, Const::floatNaN);
170 const auto myPion = addDummyTrack(myResults, Const::pion, 0.75);
171 const auto myKaon = addDummyTrack(myResults, Const::kaon, 0.4);
172 const auto myProton = addDummyTrack(myResults, Const::proton, Const::floatNaN);
173
174 Track mytrack;
175 mytrack.setTrackFitResultIndex(Const::muon, myMuon->getArrayIndex());
176 mytrack.setTrackFitResultIndex(Const::pion, myPion->getArrayIndex());
177 mytrack.setTrackFitResultIndex(Const::kaon, myKaon->getArrayIndex());
178 mytrack.setTrackFitResultIndex(Const::proton, myProton->getArrayIndex());
179
180 // check that fit hypothesis with best p value (here pion) is returned
181 const auto bestFit = mytrack.getTrackFitResultWithBestPValue();
182 EXPECT_EQ(Const::pion.getPDGCode(), bestFit->getParticleType().getPDGCode());
183 EXPECT_EQ(mytrack.getTrackFitResult(Const::pion)->getArrayIndex(), bestFit->getArrayIndex());
184 EXPECT_EQ(bestFit->getPValue(), 0.75);
185 }
static const ChargedStable muon
muon particle
Definition Const.h:660
static const float floatNaN
quiet_NaN
Definition Const.h:704
static const ChargedStable pion
charged pion particle
Definition Const.h:661
static const ChargedStable proton
proton particle
Definition Const.h:663
static const ChargedStable kaon
charged kaon particle
Definition Const.h:662
int getArrayIndex() const
Returns this object's array index (in StoreArray), or -1 if not found.
Class that bundles various TrackFitResults.
Definition Track.h:25
const TrackFitResult * getTrackFitResult(const Const::ChargedStable &chargedStable) const
Default Access to TrackFitResults.
Definition Track.cc:30
void setTrackFitResultIndex(const Const::ChargedStable &chargedStable, short index)
Set an index (for positive values) or unavailability-code (index = -1) for a specific mass hypothesis...
Definition Track.h:188
const TrackFitResult * getTrackFitResultWithBestPValue(const std::string &trackFitResultsName="") const
Return the track fit (from TrackFitResult with specified name) for the fit hypothesis with the best p...
Definition Track.cc:109
TrackFitResult const * addDummyTrack(StoreArray< TrackFitResult > &trackFitResults, Const::ChargedStable particeType, float pValue=1.)
Utility function to create dummy TrackFitResults.
Definition track.cc:35

◆ TEST_F() [23/26]

TEST_F ( TrackTest ,
getTrackFitResultWithClosestMass  )

Test getTrackFitResultWithClosestMass.

Definition at line 119 of file track.cc.

120 {
121 //Create some TrackFitResults in the the DataStore.
122 //PDGCode of the TrackFitResult will be used in the test to identify the TFR.
125 myResults.registerInDataStore();
126
127 // add two fit results
128 const auto myKaon = addDummyTrack(myResults, Const::kaon);
129 const auto myElectron = addDummyTrack(myResults, Const::electron);
130
131 Track mytrack1;
132 mytrack1.setTrackFitResultIndex(Const::electron, myElectron->getArrayIndex());
133 mytrack1.setTrackFitResultIndex(Const::kaon, myKaon->getArrayIndex());
134
135 EXPECT_EQ(mytrack1.getNumberOfFittedHypotheses(), 2);
136
137 // check for correct hypothesis if we request a fitted particle
138 const auto fitCloseToKaonMass = mytrack1.getTrackFitResultWithClosestMass(Const::kaon);
139 EXPECT_EQ(Const::kaon.getPDGCode(), fitCloseToKaonMass->getParticleType().getPDGCode());
140 EXPECT_EQ(mytrack1.getTrackFitResult(Const::kaon)->getArrayIndex(), fitCloseToKaonMass->getArrayIndex());
141
142 // check to get Pion fit
143 const auto wantPionButHaveElectronFit = mytrack1.getTrackFitResultWithClosestMass(Const::pion);
144 EXPECT_EQ(Const::electron.getPDGCode(), wantPionButHaveElectronFit->getParticleType().getPDGCode());
145 EXPECT_EQ(mytrack1.getTrackFitResult(Const::electron)->getArrayIndex(), wantPionButHaveElectronFit->getArrayIndex());
146
147 // check to get Electron fit
148 const auto wantMuonButHaveElectronFit = mytrack1.getTrackFitResultWithClosestMass(Const::muon);
149 EXPECT_EQ(Const::electron.getPDGCode(), wantMuonButHaveElectronFit->getParticleType().getPDGCode());
150 EXPECT_EQ(mytrack1.getTrackFitResult(Const::electron)->getArrayIndex(), wantMuonButHaveElectronFit->getArrayIndex());
151
152 // check to get Proton fit
153 const auto wantProtonButHaveKaonFit = mytrack1.getTrackFitResultWithClosestMass(Const::proton);
154 EXPECT_EQ(Const::kaon.getPDGCode(), wantProtonButHaveKaonFit->getParticleType().getPDGCode());
155 EXPECT_EQ(mytrack1.getTrackFitResult(Const::kaon)->getArrayIndex(), wantProtonButHaveKaonFit->getArrayIndex());
156 }
unsigned int getNumberOfFittedHypotheses() const
Returns the number of fitted hypotheses which are stored in this track.
Definition Track.cc:36
const TrackFitResult * getTrackFitResultWithClosestMass(const Const::ChargedStable &requestedType) const
Return the track fit for the fit hypothesis with the closest mass.
Definition Track.cc:104

◆ TEST_F() [24/26]

TEST_F ( TrackTest ,
settersNGetters  )

Test simple Setters and Getters.

Definition at line 50 of file track.cc.

51 {
52 //Create some TrackFitResults in the the DataStore.
53 //PDGCode of the TrackFitResult will be used in the test to identify the TFR.
56 myResults.registerInDataStore();
57
58 const auto myPion = addDummyTrack(myResults, Const::pion);
59 const auto myKaon = addDummyTrack(myResults, Const::kaon);
60 const auto myElectron = addDummyTrack(myResults, Const::electron);
61 const auto myMuon = addDummyTrack(myResults, Const::muon);
62
63 EXPECT_EQ(myPion->getArrayIndex(), 0);
64 EXPECT_EQ(myKaon->getArrayIndex(), 1);
65 EXPECT_EQ(myElectron->getArrayIndex(), 2);
66 EXPECT_EQ(myMuon->getArrayIndex(), 3);
67
68 Track mytrack1;
69 mytrack1.setTrackFitResultIndex(Const::pion, myPion->getArrayIndex());
70 mytrack1.setTrackFitResultIndex(Const::muon, myMuon->getArrayIndex());
71 mytrack1.setTrackFitResultIndex(Const::kaon, myKaon->getArrayIndex());
72
73 EXPECT_EQ(mytrack1.getNumberOfFittedHypotheses(), 3);
74 // If the index of the corresponding particle is set, the correct particle should be returned.
78 // If the index of the corresponding particle is *not* set, a nullptr should be returned.
79 EXPECT_EQ(mytrack1.getTrackFitResult(Const::electron), nullptr);
80
81 // If the index of the corresponding particle is set, the correct particle should be returned.
82 EXPECT_EQ(mytrack1.getTrackFitResult(Const::pion)->getArrayIndex(), myPion->getArrayIndex());
83 EXPECT_EQ(mytrack1.getTrackFitResult(Const::kaon)->getArrayIndex(), myKaon->getArrayIndex());
84 EXPECT_EQ(mytrack1.getTrackFitResult(Const::muon)->getArrayIndex(), myMuon->getArrayIndex());
85 // If the index of the corresponding particle is *not* set, a nullptr should be returned.
86 EXPECT_EQ(mytrack1.getTrackFitResult(Const::electron), nullptr);
87
88 const auto allResults = mytrack1.getTrackFitResults();
89 // should return all hypothesis which were added before
90 EXPECT_EQ(allResults.size(), 3);
91
92 // check that all correct hypothesis are returned and the electron is not
93 auto countPion = std::count_if(allResults.begin(), allResults.end(),
94 [myPion](std::pair<Const::ChargedStable, const TrackFitResult*> fitPair)
95 {return (fitPair.first == Const::pion) && (fitPair.second->getArrayIndex() == myPion->getArrayIndex());});
96 auto countMuon = std::count_if(allResults.begin(), allResults.end(),
97 [myMuon](std::pair<Const::ChargedStable, const TrackFitResult*> fitPair)
98 {return (fitPair.first == Const::muon) && (fitPair.second->getArrayIndex() == myMuon->getArrayIndex());});
99 auto countElectron = std::count_if(allResults.begin(), allResults.end(),
100 [](std::pair<Const::ChargedStable, const TrackFitResult*> fitPair)
101 {return fitPair.first == Const::electron;});
102 auto countKaon = std::count_if(allResults.begin(), allResults.end(),
103 [myKaon](std::pair<Const::ChargedStable, const TrackFitResult*> fitPair)
104 {return (fitPair.first == Const::kaon) && (fitPair.second->getArrayIndex() == myKaon->getArrayIndex());});
105
106 EXPECT_EQ(countPion, 1);
107 EXPECT_EQ(countMuon, 1);
108 EXPECT_EQ(countElectron, 0);
109 EXPECT_EQ(countKaon, 1);
110
111 Track trackQITest;
112 EXPECT_EQ(trackQITest.getQualityIndicator(), 0.);
113 Track trackQITest1(0.5);
114 EXPECT_EQ(trackQITest1.getQualityIndicator(), 0.5);
115 }
Const::ParticleType getParticleType() const
Getter for ParticleType of the mass hypothesis of the track fit.
std::vector< ChargedStableTrackFitResultPair > getTrackFitResults() const
Default Access to all track fit results at the same time.
Definition Track.cc:60
float getQualityIndicator() const
Getter for quality indicator for classification of fake vs.
Definition Track.h:212

◆ TEST_F() [25/26]

TEST_F ( V0Test ,
IndexGetters  )

Test Index Getter.

Definition at line 52 of file v0.cc.

53 {
54 V0 myV0;
55 EXPECT_EQ(m_default_index, std::get<0>(myV0.getTrackIndices()));
56 EXPECT_EQ(m_default_index, std::get<1>(myV0.getTrackIndices()));
57 EXPECT_EQ(m_default_index, std::get<0>(myV0.getTrackFitResultIndices()));
58 EXPECT_EQ(m_default_index, std::get<1>(myV0.getTrackFitResultIndices()));
59
60 } // Testcases for Index Getter
Object holding information for V0s.
Definition V0.h:34
std::pair< short, short > getTrackFitResultIndices() const
Get indices of the TrackFitResults, that are part of the V0 particle.
Definition V0.h:65
std::pair< short, short > getTrackIndices() const
Get indices of the Tracks, that are part of the V0 particle.
Definition V0.h:52

◆ TEST_F() [26/26]

TEST_F ( V0Test ,
PointerGetters  )

Test Pointer Getter.

Definition at line 63 of file v0.cc.

64 {
65 V0 myV0;
66 EXPECT_ANY_THROW(std::get<0>(myV0.getTracks()));
67 EXPECT_ANY_THROW(std::get<1>(myV0.getTracks()));
68 EXPECT_ANY_THROW(std::get<0>(myV0.getTrackFitResults()));
69 EXPECT_ANY_THROW(std::get<1>(myV0.getTrackFitResults()));
70 } // Testcases for Pointer Getter
std::pair< Track *, Track * > getTracks() const
Get pair of the Tracks, that are part of the V0 particle.
Definition V0.h:45
std::pair< TrackFitResult *, TrackFitResult * > getTrackFitResults() const
Get pair of the TrackFitResults, that are part of the V0 particle.
Definition V0.h:58