Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-11-01 07:55:23

0001 // This file is part of the ACTS project.
0002 //
0003 // Copyright (C) 2016 CERN for the benefit of the ACTS project
0004 //
0005 // This Source Code Form is subject to the terms of the Mozilla Public
0006 // License, v. 2.0. If a copy of the MPL was not distributed with this
0007 // file, You can obtain one at https://mozilla.org/MPL/2.0/.
0008 
0009 #include <boost/test/unit_test.hpp>
0010 
0011 #include "ActsFatras/Selectors/KinematicCasts.hpp"
0012 #include "ActsFatras/Selectors/SelectorHelpers.hpp"
0013 
0014 #include <string>
0015 
0016 #include "Dataset.hpp"
0017 
0018 namespace {
0019 const auto& backward = Dataset::backwardPion;
0020 const auto& central = Dataset::centralPion;
0021 const auto& forward = Dataset::forwardPion;
0022 
0023 // mock-ups for input objects (particles)
0024 
0025 struct Object {
0026   int feature = 0;
0027   std::string name = "";
0028 };
0029 
0030 /// Selector that selects on the feature. Only acts on the object.
0031 struct FeatureSelector {
0032   int select_on = 0;
0033 
0034   bool operator()(const Object& object) const {
0035     return object.feature == select_on;
0036   }
0037 };
0038 
0039 /// Selector that selects on the name. Only acts on the object.
0040 struct NameSelector {
0041   std::string select_on = "";
0042 
0043   bool operator()(const Object& object) const {
0044     return object.name == select_on;
0045   }
0046 };
0047 
0048 struct CombineFixture {
0049   FeatureSelector selectObjectFeature = {1};
0050   NameSelector selectObjectName = {"same_name"};
0051   Object obj = {1, "same_name"};
0052   Object objWrongFeature = {2, "same_name"};
0053   Object objWrongName = {1, "another_name"};
0054 };
0055 
0056 }  // namespace
0057 
0058 namespace ActsTests {
0059 
0060 BOOST_AUTO_TEST_SUITE(SelectorsSuite)
0061 
0062 BOOST_AUTO_TEST_CASE(Min) {
0063   // require a minimum eta value of 0.5
0064   ActsFatras::Min<ActsFatras::Casts::Eta> minEta{0.5};
0065   BOOST_CHECK(!minEta(backward));
0066   BOOST_CHECK(!minEta(central));
0067   BOOST_CHECK(minEta(forward));
0068 
0069   // require a minimum absolute eta value of 0.5
0070   ActsFatras::Min<ActsFatras::Casts::AbsEta> minAbsEta{0.5};
0071   BOOST_CHECK(minAbsEta(backward));
0072   BOOST_CHECK(!minAbsEta(central));
0073   BOOST_CHECK(minAbsEta(forward));
0074 }
0075 
0076 BOOST_AUTO_TEST_CASE(Max) {
0077   // require a maximum eta value of 0.5
0078   ActsFatras::Max<ActsFatras::Casts::Eta> maxEta{0.5};
0079   BOOST_CHECK(maxEta(backward));
0080   BOOST_CHECK(maxEta(central));
0081   BOOST_CHECK(!maxEta(forward));
0082 
0083   // require a maximum absolute eta value of 0.5
0084   ActsFatras::Max<ActsFatras::Casts::AbsEta> maxAbsEta{0.5};
0085   BOOST_CHECK(!maxAbsEta(backward));
0086   BOOST_CHECK(maxAbsEta(central));
0087   BOOST_CHECK(!maxAbsEta(forward));
0088 }
0089 
0090 BOOST_AUTO_TEST_CASE(Range) {
0091   ActsFatras::Range<ActsFatras::Casts::Eta> rangeEta{-6.0, -0.5};
0092   BOOST_CHECK(rangeEta(backward));
0093   BOOST_CHECK(!rangeEta(central));
0094   BOOST_CHECK(!rangeEta(forward));
0095 
0096   ActsFatras::Range<ActsFatras::Casts::AbsEta> rangeAbsEta{0.5, 6.0};
0097   BOOST_CHECK(rangeAbsEta(backward));
0098   BOOST_CHECK(!rangeAbsEta(central));
0099   BOOST_CHECK(rangeAbsEta(forward));
0100 }
0101 
0102 BOOST_AUTO_TEST_CASE(And1) {
0103   CombineFixture f;
0104   ActsFatras::CombineAnd<FeatureSelector> select;
0105   select.get<FeatureSelector>() = f.selectObjectFeature;
0106   BOOST_CHECK(select(f.obj));
0107   BOOST_CHECK(!select(f.objWrongFeature));
0108   BOOST_CHECK(select(f.objWrongName));
0109 }
0110 
0111 BOOST_AUTO_TEST_CASE(And2) {
0112   CombineFixture f;
0113   ActsFatras::CombineAnd<FeatureSelector, NameSelector> select;
0114   select.get<FeatureSelector>() = f.selectObjectFeature;
0115   select.get<NameSelector>() = f.selectObjectName;
0116   BOOST_CHECK(select(f.obj));
0117   BOOST_CHECK(!select(f.objWrongFeature));
0118   BOOST_CHECK(!select(f.objWrongName));
0119 }
0120 
0121 BOOST_AUTO_TEST_CASE(Or1) {
0122   CombineFixture f;
0123   ActsFatras::CombineOr<FeatureSelector> select;
0124   select.get<FeatureSelector>() = f.selectObjectFeature;
0125   BOOST_CHECK(select(f.obj));
0126   BOOST_CHECK(!select(f.objWrongFeature));
0127   BOOST_CHECK(select(f.objWrongName));
0128 }
0129 
0130 BOOST_AUTO_TEST_CASE(Or2) {
0131   CombineFixture f;
0132   ActsFatras::CombineOr<FeatureSelector, NameSelector> select;
0133   select.get<FeatureSelector>() = f.selectObjectFeature;
0134   select.get<NameSelector>() = f.selectObjectName;
0135   BOOST_CHECK(select(f.obj));
0136   BOOST_CHECK(select(f.objWrongFeature));
0137   BOOST_CHECK(select(f.objWrongName));
0138 }
0139 
0140 BOOST_AUTO_TEST_SUITE_END()
0141 
0142 }  // namespace ActsTests