Back to home page

sPhenix code displayed by LXR

 
 

    


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;  // kGauss. Is 1.5T
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     /// Black-Box-Test
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     /// Black-Box-Test
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     /// White-Box-Test
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     /// White-Box-Test
0260     TEST_F (RKTrackRepTests, getState5) {
0261         RKTrackRep myRKTrackRep;
0262         genfit::M1x7 myState7;
0263         // state7 must already lie on plane of state
0264         // We take the values from the getState7 test, because we know them.
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     /// White-Box-Test
0292     TEST_F (RKTrackRepTests, calcJ_pM_5x7) {
0293         // TODO: Implement
0294     }
0295 
0296     /// White-Box-Test
0297     TEST_F (RKTrackRepTests, transformPM6) {
0298         // TODO: Implement
0299     }
0300 
0301     /// White-Box-Test
0302     TEST_F (RKTrackRepTests, calcJ_Mp_7x5) {
0303         // TODO: Implement
0304     }
0305 
0306     /// White-Box-Test
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     /// White-Box-Test
0325     TEST_F (RKTrackRepTests, transformM6P) {
0326         // TODO: Implement
0327     }
0328 
0329     /// White-Box-Test
0330     TEST_F (RKTrackRepTests, RKutta) {
0331         // TODO: Implement
0332     }
0333 
0334     /// White-Box-Test
0335     TEST_F (RKTrackRepTests, estimateStep) {
0336         // TODO: Implement
0337     }
0338 
0339     /// White-Box-Test
0340     TEST_F (RKTrackRepTests, Extrap) {
0341         // TODO: Implement
0342     }
0343 
0344     /// White-Box-Test
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 }