File indexing completed on 2025-08-03 08:19:01
0001 #include <gtest/gtest.h>
0002
0003 #include <TVector3.h>
0004
0005 #include <Exception.h>
0006 #include <RKTrackRep.h>
0007 #include <ConstField.h>
0008 #include <FieldManager.h>
0009 #include <StateOnPlane.h>
0010 #include <SharedPlanePtr.h>
0011 #include <MeasurementOnPlane.h>
0012
0013
0014 namespace genfit {
0015
0016 class RKTrackRepTests : public ::testing::Test {
0017
0018 protected:
0019 virtual void SetUp() {
0020 const double bFieldZ = 20;
0021 m_constField = new genfit::ConstField(0., 0., bFieldZ);
0022 genfit::FieldManager::getInstance()->init(m_constField);
0023 }
0024 virtual void TearDown() {
0025 genfit::FieldManager::getInstance()->destruct();
0026 }
0027 genfit::ConstField* m_constField;
0028 };
0029
0030 TEST_F (RKTrackRepTests, RKStep) {
0031 genfit::RKStep myRKStep;
0032
0033 EXPECT_EQ(0, myRKStep.state7_[0]);
0034 EXPECT_EQ(0, myRKStep.state7_[1]);
0035 EXPECT_EQ(0, myRKStep.state7_[2]);
0036 EXPECT_EQ(0, myRKStep.state7_[3]);
0037 EXPECT_EQ(0, myRKStep.state7_[4]);
0038 EXPECT_EQ(0, myRKStep.state7_[5]);
0039 EXPECT_EQ(0, myRKStep.state7_[6]);
0040 }
0041
0042 TEST_F (RKTrackRepTests, ExtrapStep) {
0043 genfit::ExtrapStep myExtrapStep;
0044
0045 EXPECT_EQ(0, myExtrapStep.jac7_(0, 0));
0046 EXPECT_EQ(0, myExtrapStep.jac7_(0, 1));
0047 EXPECT_EQ(0, myExtrapStep.jac7_(0, 2));
0048 EXPECT_EQ(0, myExtrapStep.jac7_(0, 3));
0049 EXPECT_EQ(0, myExtrapStep.jac7_(0, 4));
0050 EXPECT_EQ(0, myExtrapStep.jac7_(0, 5));
0051 EXPECT_EQ(0, myExtrapStep.jac7_(0, 6));
0052
0053 EXPECT_EQ(0, myExtrapStep.jac7_(1, 0));
0054 EXPECT_EQ(0, myExtrapStep.jac7_(1, 1));
0055 EXPECT_EQ(0, myExtrapStep.jac7_(1, 2));
0056 EXPECT_EQ(0, myExtrapStep.jac7_(1, 3));
0057 EXPECT_EQ(0, myExtrapStep.jac7_(1, 4));
0058 EXPECT_EQ(0, myExtrapStep.jac7_(1, 5));
0059 EXPECT_EQ(0, myExtrapStep.jac7_(1, 6));
0060
0061 EXPECT_EQ(0, myExtrapStep.jac7_(2, 0));
0062 EXPECT_EQ(0, myExtrapStep.jac7_(2, 1));
0063 EXPECT_EQ(0, myExtrapStep.jac7_(2, 2));
0064 EXPECT_EQ(0, myExtrapStep.jac7_(2, 3));
0065 EXPECT_EQ(0, myExtrapStep.jac7_(2, 4));
0066 EXPECT_EQ(0, myExtrapStep.jac7_(2, 5));
0067 EXPECT_EQ(0, myExtrapStep.jac7_(2, 6));
0068
0069 EXPECT_EQ(0, myExtrapStep.jac7_(3, 0));
0070 EXPECT_EQ(0, myExtrapStep.jac7_(3, 1));
0071 EXPECT_EQ(0, myExtrapStep.jac7_(3, 2));
0072 EXPECT_EQ(0, myExtrapStep.jac7_(3, 3));
0073 EXPECT_EQ(0, myExtrapStep.jac7_(3, 4));
0074 EXPECT_EQ(0, myExtrapStep.jac7_(3, 5));
0075 EXPECT_EQ(0, myExtrapStep.jac7_(3, 6));
0076
0077 EXPECT_EQ(0, myExtrapStep.jac7_(4, 0));
0078 EXPECT_EQ(0, myExtrapStep.jac7_(4, 1));
0079 EXPECT_EQ(0, myExtrapStep.jac7_(4, 2));
0080 EXPECT_EQ(0, myExtrapStep.jac7_(4, 3));
0081 EXPECT_EQ(0, myExtrapStep.jac7_(4, 4));
0082 EXPECT_EQ(0, myExtrapStep.jac7_(4, 5));
0083 EXPECT_EQ(0, myExtrapStep.jac7_(4, 6));
0084
0085 EXPECT_EQ(0, myExtrapStep.jac7_(5, 0));
0086 EXPECT_EQ(0, myExtrapStep.jac7_(5, 1));
0087 EXPECT_EQ(0, myExtrapStep.jac7_(5, 2));
0088 EXPECT_EQ(0, myExtrapStep.jac7_(5, 3));
0089 EXPECT_EQ(0, myExtrapStep.jac7_(5, 4));
0090 EXPECT_EQ(0, myExtrapStep.jac7_(5, 5));
0091 EXPECT_EQ(0, myExtrapStep.jac7_(5, 6));
0092
0093 EXPECT_EQ(0, myExtrapStep.jac7_(6, 0));
0094 EXPECT_EQ(0, myExtrapStep.jac7_(6, 1));
0095 EXPECT_EQ(0, myExtrapStep.jac7_(6, 2));
0096 EXPECT_EQ(0, myExtrapStep.jac7_(6, 3));
0097 EXPECT_EQ(0, myExtrapStep.jac7_(6, 4));
0098 EXPECT_EQ(0, myExtrapStep.jac7_(6, 5));
0099 EXPECT_EQ(0, myExtrapStep.jac7_(6, 6));
0100
0101 EXPECT_EQ(0, myExtrapStep.noise7_(0, 0));
0102 EXPECT_EQ(0, myExtrapStep.noise7_(0, 1));
0103 EXPECT_EQ(0, myExtrapStep.noise7_(0, 2));
0104 EXPECT_EQ(0, myExtrapStep.noise7_(0, 3));
0105 EXPECT_EQ(0, myExtrapStep.noise7_(0, 4));
0106 EXPECT_EQ(0, myExtrapStep.noise7_(0, 5));
0107 EXPECT_EQ(0, myExtrapStep.noise7_(0, 6));
0108
0109 EXPECT_EQ(0, myExtrapStep.noise7_(1, 0));
0110 EXPECT_EQ(0, myExtrapStep.noise7_(1, 1));
0111 EXPECT_EQ(0, myExtrapStep.noise7_(1, 2));
0112 EXPECT_EQ(0, myExtrapStep.noise7_(1, 3));
0113 EXPECT_EQ(0, myExtrapStep.noise7_(1, 4));
0114 EXPECT_EQ(0, myExtrapStep.noise7_(1, 5));
0115 EXPECT_EQ(0, myExtrapStep.noise7_(1, 6));
0116
0117 EXPECT_EQ(0, myExtrapStep.noise7_(2, 0));
0118 EXPECT_EQ(0, myExtrapStep.noise7_(2, 1));
0119 EXPECT_EQ(0, myExtrapStep.noise7_(2, 2));
0120 EXPECT_EQ(0, myExtrapStep.noise7_(2, 3));
0121 EXPECT_EQ(0, myExtrapStep.noise7_(2, 4));
0122 EXPECT_EQ(0, myExtrapStep.noise7_(2, 5));
0123 EXPECT_EQ(0, myExtrapStep.noise7_(2, 6));
0124
0125 EXPECT_EQ(0, myExtrapStep.noise7_(3, 0));
0126 EXPECT_EQ(0, myExtrapStep.noise7_(3, 1));
0127 EXPECT_EQ(0, myExtrapStep.noise7_(3, 2));
0128 EXPECT_EQ(0, myExtrapStep.noise7_(3, 3));
0129 EXPECT_EQ(0, myExtrapStep.noise7_(3, 4));
0130 EXPECT_EQ(0, myExtrapStep.noise7_(3, 5));
0131 EXPECT_EQ(0, myExtrapStep.noise7_(3, 6));
0132
0133 EXPECT_EQ(0, myExtrapStep.noise7_(4, 0));
0134 EXPECT_EQ(0, myExtrapStep.noise7_(4, 1));
0135 EXPECT_EQ(0, myExtrapStep.noise7_(4, 2));
0136 EXPECT_EQ(0, myExtrapStep.noise7_(4, 3));
0137 EXPECT_EQ(0, myExtrapStep.noise7_(4, 4));
0138 EXPECT_EQ(0, myExtrapStep.noise7_(4, 5));
0139 EXPECT_EQ(0, myExtrapStep.noise7_(4, 6));
0140
0141 EXPECT_EQ(0, myExtrapStep.noise7_(5, 0));
0142 EXPECT_EQ(0, myExtrapStep.noise7_(5, 1));
0143 EXPECT_EQ(0, myExtrapStep.noise7_(5, 2));
0144 EXPECT_EQ(0, myExtrapStep.noise7_(5, 3));
0145 EXPECT_EQ(0, myExtrapStep.noise7_(5, 4));
0146 EXPECT_EQ(0, myExtrapStep.noise7_(5, 5));
0147 EXPECT_EQ(0, myExtrapStep.noise7_(5, 6));
0148
0149 EXPECT_EQ(0, myExtrapStep.noise7_(6, 0));
0150 EXPECT_EQ(0, myExtrapStep.noise7_(6, 1));
0151 EXPECT_EQ(0, myExtrapStep.noise7_(6, 2));
0152 EXPECT_EQ(0, myExtrapStep.noise7_(6, 3));
0153 EXPECT_EQ(0, myExtrapStep.noise7_(6, 4));
0154 EXPECT_EQ(0, myExtrapStep.noise7_(6, 5));
0155 EXPECT_EQ(0, myExtrapStep.noise7_(6, 6));
0156 }
0157
0158
0159 TEST_F (RKTrackRepTests, RKPropagate01) {
0160 genfit::M1x7 myState7;
0161 myState7.vals[0] = 0;
0162 myState7.vals[1] = 0;
0163 myState7.vals[2] = 0;
0164 myState7.vals[3] = 0;
0165 myState7.vals[4] = 0;
0166 myState7.vals[5] = 1;
0167 myState7.vals[6] = 1;
0168 genfit::M7x7* myJacobian = nullptr;
0169 genfit::M1x3 mySA;
0170 double myS = 0.5;
0171 const bool varField = false;
0172 const bool calcOnlyLastRowOfJ = false;
0173
0174 genfit::RKTrackRep myRKTrackRep;
0175 EXPECT_EQ(10, myRKTrackRep.RKPropagate(myState7, myJacobian, mySA, myS, varField, calcOnlyLastRowOfJ));
0176 EXPECT_EQ(0, myState7[0]);
0177 EXPECT_EQ(0, myState7[1]);
0178 EXPECT_EQ(0.5, myState7[2]);
0179 EXPECT_EQ(0, myState7[3]);
0180 EXPECT_EQ(0, myState7[4]);
0181 EXPECT_EQ(1, myState7[5]);
0182 EXPECT_EQ(1, myState7[6]);
0183 EXPECT_EQ(0, mySA[0]);
0184 EXPECT_EQ(0, mySA[1]);
0185 EXPECT_EQ(0, mySA[2]);
0186 }
0187
0188
0189 TEST_F (RKTrackRepTests, RKPropagate02) {
0190 genfit::M1x7 myState7;
0191 myState7.vals[0] = 1;
0192 myState7.vals[1] = 1;
0193 myState7.vals[2] = 1;
0194 myState7.vals[3] = 1;
0195 myState7.vals[4] = 1;
0196 myState7.vals[5] = 1;
0197 myState7.vals[6] = 1;
0198 genfit::M7x7* myJacobian = nullptr;
0199 genfit::M1x3 mySA;
0200 double myS = 0.1;
0201 const bool varField = false;
0202 const bool calcOnlyLastRowOfJ = false;
0203
0204 genfit::RKTrackRep myRKTrackRep;
0205 EXPECT_FLOAT_EQ(10, myRKTrackRep.RKPropagate(myState7, myJacobian, mySA, myS, varField, calcOnlyLastRowOfJ));
0206 EXPECT_FLOAT_EQ(1.1000299732532006, myState7[0]);
0207 EXPECT_FLOAT_EQ(1.0999700147633968, myState7[1]);
0208 EXPECT_FLOAT_EQ(1.1, myState7[2]);
0209 EXPECT_FLOAT_EQ(0.5776963359022331, myState7[3]);
0210 EXPECT_FLOAT_EQ(0.5770039949184069, myState7[4]);
0211 EXPECT_FLOAT_EQ(0.5773502691896258, myState7[5]);
0212 EXPECT_FLOAT_EQ(1, myState7[6]);
0213 EXPECT_FLOAT_EQ(0.000599405129044106, mySA[0]);
0214 EXPECT_FLOAT_EQ(-0.0005997646311051152, mySA[1]);
0215 EXPECT_FLOAT_EQ(0., mySA[2]);
0216 }
0217
0218
0219 TEST_F (RKTrackRepTests, getState7) {
0220 RKTrackRep myRKTrackRep;
0221 genfit::M1x7 myState7;
0222 myState7.vals[0] = 0;
0223 myState7.vals[1] = 0;
0224 myState7.vals[2] = 0;
0225 myState7.vals[3] = 0;
0226 myState7.vals[4] = 0;
0227 myState7.vals[5] = 0;
0228 myState7.vals[6] = 0;
0229
0230 genfit::MeasurementOnPlane myMeasurementOnPlane;
0231 EXPECT_THROW(myRKTrackRep.getState7(myMeasurementOnPlane, myState7), genfit::Exception);
0232 EXPECT_EQ(0, myState7[0]);
0233 EXPECT_EQ(0, myState7[1]);
0234 EXPECT_EQ(0, myState7[2]);
0235 EXPECT_EQ(0, myState7[3]);
0236 EXPECT_EQ(0, myState7[4]);
0237 EXPECT_EQ(0, myState7[5]);
0238 EXPECT_EQ(0, myState7[6]);
0239
0240 TVectorD myState5(5);
0241 myState5[0] = -1;
0242 myState5[1] = 1;
0243 myState5[2] = 1;
0244 myState5[3] = 0.1;
0245 myState5[4] = 0.1;
0246 genfit::SharedPlanePtr mySharedPlanePtr(new genfit::DetPlane(TVector3(0, 0, 1), TVector3(0, 0, 1), nullptr));
0247 genfit::StateOnPlane myStateOnPlane(myState5, mySharedPlanePtr, &myRKTrackRep);
0248 EXPECT_NO_THROW(myRKTrackRep.getState7(myStateOnPlane, myState7));
0249 EXPECT_FLOAT_EQ(-0.1, myState7[0]);
0250 EXPECT_FLOAT_EQ(-0.1, myState7[1]);
0251 EXPECT_FLOAT_EQ(1, myState7[2]);
0252 EXPECT_FLOAT_EQ(-0.57735, myState7[3]);
0253 EXPECT_FLOAT_EQ(-0.57735, myState7[4]);
0254 EXPECT_FLOAT_EQ(0.57735, myState7[5]);
0255 EXPECT_FLOAT_EQ(-1, myState7[6]);
0256
0257 }
0258
0259
0260 TEST_F (RKTrackRepTests, getState5) {
0261 RKTrackRep myRKTrackRep;
0262 genfit::M1x7 myState7;
0263
0264
0265 myState7[0] = -0.1;
0266 myState7[1] = -0.1;
0267 myState7[2] = 1;
0268 myState7[3] = -0.57735;
0269 myState7[4] = -0.57735;
0270 myState7[5] = 0.57735;
0271 myState7[6] = -1;
0272 TVectorD myState5(5);
0273 genfit::SharedPlanePtr mySharedPlanePtr(new genfit::DetPlane(TVector3(0, 0, 1), TVector3(0, 0, 1), nullptr));
0274 genfit::StateOnPlane myStateOnPlane(myState5, mySharedPlanePtr, &myRKTrackRep);
0275 EXPECT_NO_THROW(myRKTrackRep.getState5(myStateOnPlane, myState7));
0276 EXPECT_FLOAT_EQ(-0.1, myState7[0]);
0277 EXPECT_FLOAT_EQ(-0.1, myState7[1]);
0278 EXPECT_FLOAT_EQ(1, myState7[2]);
0279 EXPECT_FLOAT_EQ(-0.57735, myState7[3]);
0280 EXPECT_FLOAT_EQ(-0.57735, myState7[4]);
0281 EXPECT_FLOAT_EQ(0.57735, myState7[5]);
0282 EXPECT_FLOAT_EQ(-1, myState7[6]);
0283
0284 EXPECT_EQ(-1, myStateOnPlane.getState()[0]);
0285 EXPECT_EQ(1, myStateOnPlane.getState()[1]);
0286 EXPECT_EQ(1, myStateOnPlane.getState()[2]);
0287 EXPECT_EQ(0.1, myStateOnPlane.getState()[3]);
0288 EXPECT_EQ(0.1, myStateOnPlane.getState()[4]);
0289 }
0290
0291
0292 TEST_F (RKTrackRepTests, calcJ_pM_5x7) {
0293
0294 }
0295
0296
0297 TEST_F (RKTrackRepTests, transformPM6) {
0298
0299 }
0300
0301
0302 TEST_F (RKTrackRepTests, calcJ_Mp_7x5) {
0303
0304 }
0305
0306
0307 TEST_F (RKTrackRepTests, calcForwardJacobianAndNoise) {
0308 const TVector3 startPlaneO(0, 0, 1);
0309 const TVector3 startPlaneN(0, 0, 1);
0310 const TVector3 destPlaneO(0, 0, -1);
0311 const TVector3 destPlaneN(0, 0, 1);
0312
0313 genfit::RKTrackRep myRKTrackRep;
0314 genfit::DetPlane myStartPlane(startPlaneO, startPlaneN);
0315 genfit::DetPlane myDestPlane(destPlaneO, destPlaneN);
0316 genfit::M1x7 myStartState;
0317 genfit::M1x7 myDestState;
0318
0319 EXPECT_EQ(0u, myRKTrackRep.ExtrapSteps_.size());
0320 EXPECT_THROW(myRKTrackRep.calcForwardJacobianAndNoise(myStartState, myStartPlane, myDestState, myDestPlane),
0321 genfit::Exception);
0322 }
0323
0324
0325 TEST_F (RKTrackRepTests, transformM6P) {
0326
0327 }
0328
0329
0330 TEST_F (RKTrackRepTests, RKutta) {
0331
0332 }
0333
0334
0335 TEST_F (RKTrackRepTests, estimateStep) {
0336
0337 }
0338
0339
0340 TEST_F (RKTrackRepTests, Extrap) {
0341
0342 }
0343
0344
0345 TEST_F (RKTrackRepTests, momMag) {
0346 genfit::RKTrackRep myRKTrackRep;
0347 genfit::M1x7 myState7 = {0, 0, 0, 0, 0, 0, 0};
0348 EXPECT_EQ(std::numeric_limits<double>::infinity(), myRKTrackRep.momMag(myState7));
0349 myState7 = {0, 0, 0, 0, 0, 0, 1};
0350 EXPECT_EQ(1.0, myRKTrackRep.momMag(myState7));
0351 myState7 = {0, 0, 0, 0, 0, 0, -1};
0352 EXPECT_EQ(1.0, myRKTrackRep.momMag(myState7));
0353 }
0354
0355 }