diff --git a/InnerDetector/InDetRecTools/InDetEtaDependentCuts/src/InDetEtaDependentCutsSvc.cxx b/InnerDetector/InDetRecTools/InDetEtaDependentCuts/src/InDetEtaDependentCutsSvc.cxx index 69fddc30421d0b8e729e9709f757706207a5afdb..7b6bd2af7e660161e6909c53c29536c480c3fc7d 100644 --- a/InnerDetector/InDetRecTools/InDetEtaDependentCuts/src/InDetEtaDependentCutsSvc.cxx +++ b/InnerDetector/InDetRecTools/InDetEtaDependentCuts/src/InDetEtaDependentCutsSvc.cxx @@ -42,10 +42,9 @@ namespace InDet { /////////////// // Initialize /////////////// - StatusCode InDetEtaDependentCutsSvc::initialize() { - - ATH_MSG_INFO ("Initializing " << name() << "..."); - + StatusCode + InDetEtaDependentCutsSvc::initialize() { + ATH_MSG_DEBUG ("Initializing " << name() << "..."); if ((m_etaBins.size()-1) <= 0) { ATH_MSG_ERROR( "Wrong initialisation of eta bins. Check the eta bin values in " << name() ); return StatusCode::FAILURE; diff --git a/InnerDetector/InDetRecTools/InDetEtaDependentCuts/test/InDetEtaDependentCutsSvc_test.cxx b/InnerDetector/InDetRecTools/InDetEtaDependentCuts/test/InDetEtaDependentCutsSvc_test.cxx index 1d3897f11f0fcc85b814ba3f40c7534481cb8350..80f38b69790f6668803933e6343b4360640c9f1e 100644 --- a/InnerDetector/InDetRecTools/InDetEtaDependentCuts/test/InDetEtaDependentCutsSvc_test.cxx +++ b/InnerDetector/InDetRecTools/InDetEtaDependentCuts/test/InDetEtaDependentCutsSvc_test.cxx @@ -25,6 +25,8 @@ #include "CxxUtils/checker_macros.h" ATLAS_NO_CHECK_FILE_THREAD_SAFETY; // This is unit test and a static variable is used in IDEDC_GaudiFixtureBase. +namespace utf = boost::unit_test; + static const std::string testJobOptionsFile("InDetEtaDependentCutsTestJobOpts.txt"); struct GaudiKernelFixture:public IDEDC_GaudiFixtureBase{ @@ -38,22 +40,73 @@ using namespace InDet; BOOST_AUTO_TEST_SUITE(EtaDependentCutsSvcTest) const GaudiKernelFixture g(testJobOptionsFile); const auto & svcLoc=g.svcLoc; - - BOOST_AUTO_TEST_CASE( sanityCheck ){ - const bool svcLocatorIsOk=(svcLoc != nullptr); - BOOST_TEST(svcLocatorIsOk); - } - BOOST_AUTO_TEST_CASE( retrieveSvc ){ - ServiceHandle<IInDetEtaDependentCutsSvc> idEDCSvc ("InDet::InDetEtaDependentCutsSvc", "test"); - BOOST_TEST (idEDCSvc.retrieve().isSuccess()); - } - BOOST_AUTO_TEST_CASE( interfaceID ){ - ServiceHandle<IInDetEtaDependentCutsSvc> idEDCSvc ("InDet::InDetEtaDependentCutsSvc", "test"); - InterfaceID testId("IInDetEtaDependentCutsSvc",1,0); - BOOST_TEST(idEDCSvc->interfaceID()==testId); - } - BOOST_AUTO_TEST_CASE(publicMethods){ - ServiceHandle<IInDetEtaDependentCutsSvc> idEDCSvc ("InDet::InDetEtaDependentCutsSvc", "test"); - BOOST_TEST(idEDCSvc->getMaxEta() == 4.0); - } + + BOOST_AUTO_TEST_CASE( sanityCheck ){ + const bool svcLocatorIsOk=(svcLoc != nullptr); + BOOST_TEST(svcLocatorIsOk); + } + BOOST_AUTO_TEST_CASE( retrieveSvc ){ + ServiceHandle<IInDetEtaDependentCutsSvc> idEDCSvc ("InDet::InDetEtaDependentCutsSvc", "test"); + BOOST_TEST (idEDCSvc.retrieve().isSuccess()); + } + BOOST_AUTO_TEST_CASE( interfaceID ){ + InterfaceID testId("IInDetEtaDependentCutsSvc",1,0); + ServiceHandle<IInDetEtaDependentCutsSvc> idEDCSvc ("InDet::InDetEtaDependentCutsSvc", "test"); + BOOST_TEST(idEDCSvc->interfaceID()==testId); + } + + //two failures related to use of template getValue() with the eta argument + BOOST_AUTO_TEST_CASE(publicMethods, * utf::expected_failures(2)){ + ServiceHandle<IInDetEtaDependentCutsSvc> idEDCSvc ("InDet::InDetEtaDependentCutsSvc", "test"); + //for default constructed service, and choosing a nominal (valid) eta + const double eta=2.0; + const double invalidEta{9.0}; + //double getMaxEta() + BOOST_TEST(idEDCSvc->getMaxEta() == 4.0); + //double getMinPtAtEta (const double eta) + BOOST_TEST(idEDCSvc->getMinPtAtEta(eta) == 900.); + //check it throws if eta is out of bounds (will also print error) + BOOST_CHECK_THROW(idEDCSvc->getMinPtAtEta(invalidEta), std::out_of_range); + //double getMaxZImpactAtEta (const double eta) + BOOST_TEST(idEDCSvc->getMaxZImpactAtEta(eta) == 200.); + //double getMaxPrimaryImpactAtEta(const double eta); + BOOST_TEST(idEDCSvc->getMaxPrimaryImpactAtEta(eta) == 2.0); + //int getMinSiHitsAtEta (const double eta); + BOOST_TEST(idEDCSvc->getMinSiHitsAtEta(eta) == 9); + //int getMinSiNotSharedAtEta (const double eta); + BOOST_TEST(idEDCSvc->getMinSiNotSharedAtEta(eta) == 7); + //int getMaxSharedAtEta (const double eta); + BOOST_TEST(idEDCSvc->getMaxSharedAtEta(eta) == 2); + //int getMinPixelHitsAtEta (const double eta); + BOOST_TEST(idEDCSvc->getMinPixelHitsAtEta(eta) == 1); + //int getMaxSiHolesAtEta (const double eta); + BOOST_TEST(idEDCSvc->getMaxSiHolesAtEta(eta) == 2); + //int getMaxPixelHolesAtEta (const double eta); + BOOST_TEST(idEDCSvc->getMaxPixelHolesAtEta(eta) == 1); + //int getMaxSctHolesAtEta (const double eta); + BOOST_TEST(idEDCSvc->getMaxSctHolesAtEta(eta) == 2); + //int getMaxDoubleHolesAtEta (const double eta) const override final; + BOOST_TEST(idEDCSvc->getMaxDoubleHolesAtEta(eta) == 1); + //return values on argument-changing methods + std::vector<int> intCutReturnValue{}; + std::vector<double> doubleCutReturnValue{}; + const auto dblCutEnum = InDet::CutName::etaWidthBrem; + const auto intCutEnum = InDet::CutName::minClusters; + // + BOOST_CHECK_NO_THROW(idEDCSvc->getValue(dblCutEnum, doubleCutReturnValue)); + BOOST_TEST(doubleCutReturnValue.at(0) == 0.2); //only has one entry by default + BOOST_CHECK_NO_THROW(idEDCSvc->getValue(intCutEnum, intCutReturnValue)); + BOOST_TEST(intCutReturnValue.at(0) == 9); //only has one entry by default + //try to return an integer cut from a double enum index (will print an ERROR message) + BOOST_CHECK_NO_THROW(idEDCSvc->getValue(dblCutEnum, intCutReturnValue));//doesn't throw + // + BOOST_TEST(intCutReturnValue.at(0) == 9);//i.e. should remain unchanged + //something wrong here, needs fixing in the code? + double etaBinCut{1.}; + // T getValueAtEta(const std::vector< T > cuts, const double eta) + BOOST_CHECK_NO_THROW(idEDCSvc->getValue(InDet::CutName::etaBins, etaBinCut, eta)); + BOOST_TEST( etaBinCut == 0.0); //failure + BOOST_CHECK_THROW(idEDCSvc->getValue(InDet::CutName::etaBins, etaBinCut, invalidEta), std::out_of_range); //failure + + } BOOST_AUTO_TEST_SUITE_END()