diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index bcbe6cae65e9fd6d5a56765f20bc2b6086aba860..51d75aef043b67c3b200d1c92691090b833b044c 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -4,12 +4,12 @@ - master .print-system-info: &print-system-info - - lsb_release -a - inxi - - git --version + - lsb_release -a - pwd - - g++ --version - clang++ --version + - g++ --version + - git --version before_script: - *print-system-info diff --git a/Event/JamfilePython27 b/Event/JamfilePython27 index 72c581a7f073bae41f38c8c68019a380a441e0cc..8faf6f205b39ba38c6eb99430ae65afc06a76f3a 100644 --- a/Event/JamfilePython27 +++ b/Event/JamfilePython27 @@ -27,14 +27,25 @@ project : project : ; -lib Event : - [ glob *.cc : *App.cc ] - $(TOP)/ErrLogger//ErrLogger $(TOP)/Particle//Particle +lib Event + : [ glob *.cc : *App.cc ] + $(TOP)/ErrLogger//ErrLogger + $(TOP)/Particle//Particle : <use>$(TOP)//HepMc - : - : <library>$(TOP)//HepMc ; + : + : <library>$(TOP)//HepMc + ; -exe HepMCEvtReaderTestApp : HepMCEvtReaderTestApp.cc Event - $(TOP)/ErrLogger//ErrLogger - $(TOP)/Utils//Utils - : ; +exe HepMCEvtReaderTestApp + : HepMCEvtReaderTestApp.cc Event + $(TOP)/ErrLogger//ErrLogger + $(TOP)/Utils//Utils + ; + +unit-test test_Event + : [ glob test/*.cc ] + $(TOP)//boost_test + $(TOP)/ErrLogger//ErrLogger + $(TOP)/Particle//Particle + Event + ; diff --git a/Event/test/SampleFileNoHeader.dat b/Event/test/SampleFileNoHeader.dat new file mode 100644 index 0000000000000000000000000000000000000000..7540adbd31014d018260ec19edfe6522c6e435f6 --- /dev/null +++ b/Event/test/SampleFileNoHeader.dat @@ -0,0 +1,9 @@ +.3 + 0.200134 -1.2208 -0.692975 1.41796 +-0.185839 0.858663 0.00401993 0.88886 +-0.0142958 0.362135 0.688955 0.790078 + + .5 + 0.0695714 1.38152 0.110471 1.38767 +-0.127614 -0.233811 -0.416389 0.512397 + 0.0580429 -1.14771 0.305918 1.19683 diff --git a/Event/test/TestEventReaderDefault.cc b/Event/test/TestEventReaderDefault.cc new file mode 100644 index 0000000000000000000000000000000000000000..5fd99db54e73b1ea68573b7abfc064f74b61302e --- /dev/null +++ b/Event/test/TestEventReaderDefault.cc @@ -0,0 +1,67 @@ +/* + * This file is part of Pawian, which is distributed under + * GNU General Public License v3 (https://www.gnu.org/licenses/gpl-3.0.html) + */ + +#define BOOST_TEST_DYN_LINK +#define BOOST_TEST_MODULE EventReader + +#include "Event/Event.hh" +#include "Event/EventList.hh" +#include "Event/EventReaderDefault.hh" +#include "qft++/topincludes/tensor.hh" + +#include <boost/test/unit_test.hpp> + +BOOST_AUTO_TEST_SUITE(TestEventReaderDefault); + +BOOST_AUTO_TEST_CASE(test_fill) { + std::vector<std::string> inputFiles = {"Event/test/SampleFileNoHeader.dat"}; + int numberOfParticles = 3; + int skipFirstLines = 0; + bool hasWeights = true; + EventReaderDefault gevEventReader(inputFiles, numberOfParticles, + skipFirstLines, hasWeights); + EventReaderDefault mevEventReader(inputFiles, numberOfParticles, + skipFirstLines, hasWeights); + EventList gevEvents, mevEvents; + + gevEventReader.setUnit("GEV"); + gevEventReader.setOrder("Px Py Pz E"); + gevEventReader.fill(gevEvents); + + mevEventReader.setUnit("MEV"); + mevEventReader.setOrder("E Px Py Pz"); // ! note mock order + mevEventReader.fill(mevEvents); + + BOOST_CHECK_EQUAL(gevEvents.size(), 2); + BOOST_CHECK_EQUAL(mevEvents.size(), 2); + if (gevEvents.size() != mevEvents.size()) + throw std::runtime_error("Same number of events required to continue"); + + std::vector<double> expectedWeights = {.3, .5}; + std::vector<float> gevParticle1Energy = {1.41796, 1.38767}; + std::vector<float> gevParticle2Pz = {0.00401993, -0.416389}; + std::vector<float> mevParticle2Energy = {-0.185839, -0.127614}; + std::vector<float> mevParticle3Pz = {0.790078, 1.19683}; + for (int i = 0; i < gevEvents.size(); ++i) { + auto gevEvent = gevEvents.nextEvent(); + auto mevEvent = mevEvents.nextEvent(); + if (!gevEvent || !mevEvent) + throw std::runtime_error("Nullpointer event!"); + BOOST_CHECK_EQUAL(gevEvent->size(), 3); + BOOST_CHECK_EQUAL(mevEvent->size(), 3); + BOOST_CHECK_EQUAL(mevEvent->Weight(), expectedWeights.at(i)); + BOOST_CHECK_EQUAL(gevEvent->Weight(), expectedWeights.at(i)); + auto gevParticle1 = gevEvent->p4(0); + auto gevParticle2 = gevEvent->p4(1); + auto mevParticle2 = mevEvent->p4(1); + auto mevParticle3 = mevEvent->p4(2); + BOOST_CHECK_CLOSE(gevParticle1->E(), gevParticle1Energy.at(i), 1e-5); + BOOST_CHECK_CLOSE(gevParticle2->Pz(), gevParticle2Pz.at(i), 1e-5); + BOOST_CHECK_CLOSE(mevParticle2->E(), mevParticle2Energy.at(i) / 1e3, 1e-5); + BOOST_CHECK_CLOSE(mevParticle3->Pz(), mevParticle3Pz.at(i) / 1e3, 1e-5); + } +} + +BOOST_AUTO_TEST_SUITE_END(); diff --git a/JamrootCentos8 b/JamrootCentos8 index 77a12f7e316376a3b9f1ebd19415b51813c5cdc6..9180f545edbc97928ce1bb3b014a4d5d1989fd8a 100644 --- a/JamrootCentos8 +++ b/JamrootCentos8 @@ -1,4 +1,5 @@ import os ; +import testing ; path-constant TOP : . ; local extern = [ os.environ extern ] ; @@ -14,9 +15,12 @@ BOOSTLIBS = -lboost_serialization -lboost_system -lboost_timer + -lboost_unit_test_framework -lrt ; +lib boost_test : : <name>boost_unit_test_framework ; + project : requirements <include>./ <include>$(TOP) diff --git a/JamrootSL7 b/JamrootSL7 index 071a9021b5fa567aecc313569a1b0b034b5a27a4..9180f545edbc97928ce1bb3b014a4d5d1989fd8a 100644 --- a/JamrootSL7 +++ b/JamrootSL7 @@ -1,4 +1,6 @@ import os ; +import testing ; + path-constant TOP : . ; local extern = [ os.environ extern ] ; local ROOTSYS = [ os.environ ROOTSYS ] ; @@ -13,9 +15,11 @@ BOOSTLIBS = -lboost_serialization -lboost_system -lboost_timer + -lboost_unit_test_framework -lrt ; +lib boost_test : : <name>boost_unit_test_framework ; project : requirements <include>./