/* This file is part of MAUS: http://micewww.pp.rl.ac.uk:8080/projects/maus
*
* MAUS is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* MAUS is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with MAUS. If not, see .
*
*/
#include
#include "src/common_cpp/Recon/SciFi/SimpleHelix.hh"
#include "TMatrixD.h"
#include "gtest/gtest.h"
namespace MAUS {
class SimpleHelixTestDS : public ::testing::Test {
protected:
SimpleHelixTestDS() {}
virtual ~SimpleHelixTestDS() {}
virtual void SetUp() {}
virtual void TearDown() {}
};
TEST_F(SimpleHelixTestDS, test_default_constructor) {
SimpleHelix h1;
EXPECT_EQ(h1.get_xc(), 0.0);
EXPECT_EQ(h1.get_xc_err(), 0.0);
EXPECT_EQ(h1.get_yc(), 0.0);
EXPECT_EQ(h1.get_yc_err(), 0.0);
EXPECT_EQ(h1.get_R(), 0.0);
EXPECT_EQ(h1.get_R_err(), 0.0);
EXPECT_EQ(h1.get_dsdz(), 0.0);
EXPECT_EQ(h1.get_dsdz_err(), 0.0);
EXPECT_EQ(h1.get_s0(), 0.0);
EXPECT_EQ(h1.get_s0_err(), 0.0);
EXPECT_EQ(h1.get_transverse_ndf(), 0);
EXPECT_EQ(h1.get_longitudinal_ndf(), 0);
EXPECT_EQ(h1.get_ndf(), 0);
EXPECT_EQ(h1.get_transverse_chisq(), 0.0);
EXPECT_EQ(h1.get_longitudinal_chisq(), 0.0);
EXPECT_EQ(h1.get_chisq(), 0.0);
EXPECT_EQ(h1.get_pvalue(), 0.0);
}
TEST_F(SimpleHelixTestDS, test_parameter_constructor) {
double xc = 1.0;
double xc_err = 0.1;
double yc = 2.0;
double yc_err = 0.2;
double R = 3.0;
double R_err = 0.3;
double dsdz = 4.0;
double dsdz_err = 0.4;
double s0 = 5.0;
double s0_err = 0.5;
int transverse_ndf = 10.0;
int longitudinal_ndf = 11;
int ndf = 12;
double transverse_chisq = 7;
double longitudinal_chisq = 8;
double chisq = 6.0;
std::vector params = {xc, yc, R, dsdz, s0};
std::vector errors = {xc_err, yc_err, R_err, dsdz_err, s0_err};
std::vector ndfs = {transverse_ndf, longitudinal_ndf, ndf};
std::vector chisqs = {transverse_chisq, longitudinal_chisq, chisq};
double pvalue = 0.5;
TMatrixD cov;
SimpleHelix h1(params, errors, ndfs, chisqs, pvalue, cov);
EXPECT_EQ(h1.get_xc(), xc);
EXPECT_EQ(h1.get_xc_err(), xc_err);
EXPECT_EQ(h1.get_yc(), yc);
EXPECT_EQ(h1.get_yc_err(), yc_err);
EXPECT_EQ(h1.get_R(), R);
EXPECT_EQ(h1.get_R_err(), R_err);
EXPECT_EQ(h1.get_dsdz(), dsdz);
EXPECT_EQ(h1.get_dsdz_err(), dsdz_err);
EXPECT_EQ(h1.get_s0(), s0);
EXPECT_EQ(h1.get_s0_err(), s0_err);
EXPECT_EQ(h1.get_transverse_ndf(), transverse_ndf);
EXPECT_EQ(h1.get_longitudinal_ndf(), longitudinal_ndf);
EXPECT_EQ(h1.get_ndf(), ndf);
EXPECT_EQ(h1.get_transverse_chisq(), transverse_chisq);
EXPECT_EQ(h1.get_longitudinal_chisq(), longitudinal_chisq);
EXPECT_EQ(h1.get_chisq(), chisq);
EXPECT_EQ(h1.get_pvalue(), pvalue);
}
TEST_F(SimpleHelixTestDS, test_copy_constructor) {
double xc = 1.0;
double xc_err = 0.1;
double yc = 2.0;
double yc_err = 0.2;
double R = 3.0;
double R_err = 0.3;
double dsdz = 4.0;
double dsdz_err = 0.4;
double s0 = 5.0;
double s0_err = 0.5;
int transverse_ndf = 10.0;
int longitudinal_ndf = 11;
int ndf = 12;
double transverse_chisq = 7;
double longitudinal_chisq = 8;
double chisq = 6.0;
std::vector params = {xc, yc, R, dsdz, s0};
std::vector errors = {xc_err, yc_err, R_err, dsdz_err, s0_err};
std::vector ndfs = {transverse_ndf, longitudinal_ndf, ndf};
std::vector chisqs = {transverse_chisq, longitudinal_chisq, chisq};
double pvalue = 0.5;
TMatrixD cov;
SimpleHelix h1(params, errors, ndfs, chisqs, pvalue, cov);
SimpleHelix h2(h1);
EXPECT_EQ(h2.get_xc(), xc);
EXPECT_EQ(h2.get_xc_err(), xc_err);
EXPECT_EQ(h2.get_yc(), yc);
EXPECT_EQ(h2.get_yc_err(), yc_err);
EXPECT_EQ(h2.get_R(), R);
EXPECT_EQ(h2.get_R_err(), R_err);
EXPECT_EQ(h2.get_dsdz(), dsdz);
EXPECT_EQ(h2.get_dsdz_err(), dsdz_err);
EXPECT_EQ(h2.get_s0(), s0);
EXPECT_EQ(h2.get_s0_err(), s0_err);
EXPECT_EQ(h2.get_transverse_ndf(), transverse_ndf);
EXPECT_EQ(h2.get_longitudinal_ndf(), longitudinal_ndf);
EXPECT_EQ(h2.get_ndf(), ndf);
EXPECT_EQ(h2.get_transverse_chisq(), transverse_chisq);
EXPECT_EQ(h2.get_longitudinal_chisq(), longitudinal_chisq);
EXPECT_EQ(h2.get_chisq(), chisq);
EXPECT_EQ(h2.get_pvalue(), pvalue);
}
TEST_F(SimpleHelixTestDS, test_assignment_operator) {
double xc = 1.0;
double xc_err = 0.1;
double yc = 2.0;
double yc_err = 0.2;
double R = 3.0;
double R_err = 0.3;
double dsdz = 4.0;
double dsdz_err = 0.4;
double s0 = 5.0;
double s0_err = 0.5;
int transverse_ndf = 10.0;
int longitudinal_ndf = 11;
int ndf = 12;
double transverse_chisq = 7;
double longitudinal_chisq = 8;
double chisq = 6.0;
std::vector params = {xc, yc, R, dsdz, s0};
std::vector errors = {xc_err, yc_err, R_err, dsdz_err, s0_err};
std::vector ndfs = {transverse_ndf, longitudinal_ndf, ndf};
std::vector chisqs = {transverse_chisq, longitudinal_chisq, chisq};
double pvalue = 0.5;
TMatrixD cov;
SimpleHelix h1(params, errors, ndfs, chisqs, pvalue, cov);
SimpleHelix h2 = h1;
EXPECT_EQ(h2.get_xc(), xc);
EXPECT_EQ(h2.get_xc_err(), xc_err);
EXPECT_EQ(h2.get_yc(), yc);
EXPECT_EQ(h2.get_yc_err(), yc_err);
EXPECT_EQ(h2.get_R(), R);
EXPECT_EQ(h2.get_R_err(), R_err);
EXPECT_EQ(h2.get_dsdz(), dsdz);
EXPECT_EQ(h2.get_dsdz_err(), dsdz_err);
EXPECT_EQ(h2.get_s0(), s0);
EXPECT_EQ(h2.get_s0_err(), s0_err);
EXPECT_EQ(h2.get_transverse_ndf(), transverse_ndf);
EXPECT_EQ(h2.get_longitudinal_ndf(), longitudinal_ndf);
EXPECT_EQ(h2.get_ndf(), ndf);
EXPECT_EQ(h2.get_transverse_chisq(), transverse_chisq);
EXPECT_EQ(h2.get_longitudinal_chisq(), longitudinal_chisq);
EXPECT_EQ(h2.get_chisq(), chisq);
EXPECT_EQ(h2.get_pvalue(), pvalue);
}
TEST_F(SimpleHelixTestDS, test_getters_setters_clear) {
double xc = 1.0;
double xc_err = 0.1;
double yc = 2.0;
double yc_err = 0.2;
double R = 3.0;
double R_err = 0.3;
double dsdz = 4.0;
double dsdz_err = 0.4;
double s0 = 5.0;
double s0_err = 0.5;
int transverse_ndf = 10;
int longitudinal_ndf = 11;
int ndf = 12;
double transverse_chisq = 7.0;
double longitudinal_chisq = 8.0;
double chisq = 6.0;
std::vector params = {xc, yc, R, dsdz, s0};
std::vector errors = {xc_err, yc_err, R_err, dsdz_err, s0_err};
std::vector ndfs = {transverse_ndf, longitudinal_ndf, ndf};
std::vector chisqs = {transverse_chisq, longitudinal_chisq, chisq};
double pvalue = 0.5;
TMatrixD cov;
SimpleHelix h1;
h1.set_xc(xc);
h1.set_xc_err(xc_err);
h1.set_yc(yc);
h1.set_yc_err(yc_err);
h1.set_R(R);
h1.set_R_err(R_err);
h1.set_dsdz(dsdz);
h1.set_dsdz_err(dsdz_err);
h1.set_s0(s0);
h1.set_s0_err(s0_err);
h1.set_transverse_ndf(transverse_ndf);
h1.set_longitudinal_ndf(longitudinal_ndf);
h1.set_ndf(ndf);
h1.set_transverse_chisq(transverse_chisq);
h1.set_longitudinal_chisq(longitudinal_chisq);
h1.set_chisq(chisq);
h1.set_pvalue(pvalue);
h1.set_cov(cov);
EXPECT_EQ(h1.get_xc(), xc);
EXPECT_EQ(h1.get_xc_err(), xc_err);
EXPECT_EQ(h1.get_yc(), yc);
EXPECT_EQ(h1.get_yc_err(), yc_err);
EXPECT_EQ(h1.get_R(), R);
EXPECT_EQ(h1.get_R_err(), R_err);
EXPECT_EQ(h1.get_dsdz(), dsdz);
EXPECT_EQ(h1.get_dsdz_err(), dsdz_err);
EXPECT_EQ(h1.get_s0(), s0);
EXPECT_EQ(h1.get_s0_err(), s0_err);
EXPECT_EQ(h1.get_transverse_ndf(), transverse_ndf);
EXPECT_EQ(h1.get_longitudinal_ndf(), longitudinal_ndf);
EXPECT_EQ(h1.get_ndf(), ndf);
EXPECT_EQ(h1.get_transverse_chisq(), transverse_chisq);
EXPECT_EQ(h1.get_longitudinal_chisq(), longitudinal_chisq);
EXPECT_EQ(h1.get_chisq(), chisq);
EXPECT_EQ(h1.get_pvalue(), pvalue);
h1.clear();
EXPECT_EQ(h1.get_xc(), 0.0);
EXPECT_EQ(h1.get_xc_err(), 0.0);
EXPECT_EQ(h1.get_yc(), 0.0);
EXPECT_EQ(h1.get_yc_err(), 0.0);
EXPECT_EQ(h1.get_R(), 0.0);
EXPECT_EQ(h1.get_R_err(), 0.0);
EXPECT_EQ(h1.get_dsdz(), 0.0);
EXPECT_EQ(h1.get_dsdz_err(), 0.0);
EXPECT_EQ(h1.get_s0(), 0.0);
EXPECT_EQ(h1.get_s0_err(), 0.0);
EXPECT_EQ(h1.get_transverse_ndf(), 0);
EXPECT_EQ(h1.get_longitudinal_ndf(), 0);
EXPECT_EQ(h1.get_ndf(), 0);
EXPECT_EQ(h1.get_transverse_chisq(), 0.0);
EXPECT_EQ(h1.get_longitudinal_chisq(), 0.0);
EXPECT_EQ(h1.get_chisq(), 0.0);
EXPECT_EQ(h1.get_pvalue(), 0.0);
h1.set_all(params, errors, ndfs, chisqs, pvalue, cov);
EXPECT_EQ(h1.get_xc(), xc);
EXPECT_EQ(h1.get_xc_err(), xc_err);
EXPECT_EQ(h1.get_yc(), yc);
EXPECT_EQ(h1.get_yc_err(), yc_err);
EXPECT_EQ(h1.get_R(), R);
EXPECT_EQ(h1.get_R_err(), R_err);
EXPECT_EQ(h1.get_dsdz(), dsdz);
EXPECT_EQ(h1.get_dsdz_err(), dsdz_err);
EXPECT_EQ(h1.get_s0(), s0);
EXPECT_EQ(h1.get_s0_err(), s0_err);
EXPECT_EQ(h1.get_transverse_ndf(), transverse_ndf);
EXPECT_EQ(h1.get_longitudinal_ndf(), longitudinal_ndf);
EXPECT_EQ(h1.get_ndf(), ndf);
EXPECT_EQ(h1.get_transverse_chisq(), transverse_chisq);
EXPECT_EQ(h1.get_longitudinal_chisq(), longitudinal_chisq);
EXPECT_EQ(h1.get_chisq(), chisq);
EXPECT_EQ(h1.get_pvalue(), pvalue);
h1.clear();
h1.set_parameters(params);
h1.set_errors(errors);
h1.set_ndfs(ndfs);
h1.set_chisqs(chisqs);
h1.set_pvalue(pvalue);
h1.set_cov(cov);
EXPECT_EQ(h1.get_parameters().at(0), xc);
EXPECT_EQ(h1.get_errors().at(0), xc_err);
EXPECT_EQ(h1.get_parameters().at(1), yc);
EXPECT_EQ(h1.get_errors().at(1), yc_err);
EXPECT_EQ(h1.get_parameters().at(2), R);
EXPECT_EQ(h1.get_errors().at(2), R_err);
EXPECT_EQ(h1.get_parameters().at(3), dsdz);
EXPECT_EQ(h1.get_errors().at(3), dsdz_err);
EXPECT_EQ(h1.get_parameters().at(4), s0);
EXPECT_EQ(h1.get_errors().at(4), s0_err);
EXPECT_EQ(h1.get_ndfs().at(0), transverse_ndf);
EXPECT_EQ(h1.get_ndfs().at(1), longitudinal_ndf);
EXPECT_EQ(h1.get_ndfs().at(2), ndf);
EXPECT_EQ(h1.get_chisqs().at(0), transverse_chisq);
EXPECT_EQ(h1.get_chisqs().at(1), longitudinal_chisq);
EXPECT_EQ(h1.get_chisqs().at(2), chisq);
EXPECT_EQ(h1.get_pvalue(), pvalue);
}
} // ~namespace MAUS