diff --git a/PhysicsAnalysis/AssociationBuilder/AssociationUtils/AssociationUtils/DeltaROverlapFilter.h b/PhysicsAnalysis/AssociationBuilder/AssociationUtils/AssociationUtils/DeltaROverlapFilter.h deleted file mode 100755 index 445903eef8d766bedf752d4b758160cca6193a4a..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/AssociationBuilder/AssociationUtils/AssociationUtils/DeltaROverlapFilter.h +++ /dev/null @@ -1,135 +0,0 @@ -///////////////////////// -*- C++ -*- ///////////////////////////// - -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -// DeltaROverlapFilter.h -// Header file for class DeltaROverlapFilter -// Author: S.Binet<binet@cern.ch> -/////////////////////////////////////////////////////////////////// -#ifndef ASSOCIATIONUTILS_DELTAROVERLAPFILTER_H -#define ASSOCIATIONUTILS_DELTAROVERLAPFILTER_H - -// STL includes -#include <functional> - -// EventKernel includes -#include "EventKernel/INavigable4Momentum.h" - -// AssociationUtils includes -#include "AssociationUtils/IOverlapFilter.h" - -// Forward declaration - -class DeltaROverlapFilter : public IOverlapFilter -{ - public: - using IOverlapFilter::hasOverlap; - - /////////////////////////////////////////////////////////////////// - // Public methods: - /////////////////////////////////////////////////////////////////// - public: - - /** Default constructor: - */ - DeltaROverlapFilter(); - - /** Copy constructor: - */ - DeltaROverlapFilter( const DeltaROverlapFilter& rhs ); - - /** Assignment operator: - */ - DeltaROverlapFilter& operator=( const DeltaROverlapFilter& rhs ); - - /** Constructor with parameters: - */ - DeltaROverlapFilter( double maxDeltaR ); - - /** Constructor with parameters: - */ - DeltaROverlapFilter( double minDeltaR, double maxDeltaR ); - - /** Destructor: - */ - virtual ~DeltaROverlapFilter(); - - /////////////////////////////////////////////////////////////////// - // Const methods: - /////////////////////////////////////////////////////////////////// - - /** @brief Filtering method. If true then objects overlap. - */ - bool hasOverlap( const INavigable4Momentum& obj1, - const INavigable4Momentum& obj2 ) const; - - /** @brief Retrieve the defined lowest value cut for the $\Delta R$ - */ - double minDeltaR() const; - - /** @brief Retrieve the defined highest value cut for the $\Delta R$ - */ - double maxDeltaR() const; - - - /////////////////////////////////////////////////////////////////// - // Non-const methods: - /////////////////////////////////////////////////////////////////// - - void setMinDeltaR( double minDeltaR ); - - void setMaxDeltaR( double maxDeltaR ); - - void setDeltaR( double minDeltaR, double maxDeltaR ); - - /////////////////////////////////////////////////////////////////// - // Protected data: - /////////////////////////////////////////////////////////////////// - protected: - - /** Inner crown limit for delta-R check - */ - double m_minDeltaR; - - /** Outer crown limit for delta-R check - */ - double m_maxDeltaR; -}; - -/////////////////////////////////////////////////////////////////// -/// Inline methods: -/////////////////////////////////////////////////////////////////// - -inline DeltaROverlapFilter::~DeltaROverlapFilter() -{} - -inline double DeltaROverlapFilter::minDeltaR() const -{ - return m_minDeltaR; -} - -inline double DeltaROverlapFilter::maxDeltaR() const -{ - return m_maxDeltaR; -} - -inline void DeltaROverlapFilter::setMinDeltaR( double minDeltaR ) -{ - m_minDeltaR = minDeltaR; -} - -inline void DeltaROverlapFilter::setMaxDeltaR( double maxDeltaR ) -{ - m_maxDeltaR = maxDeltaR; -} - -inline -void DeltaROverlapFilter::setDeltaR( double minDeltaR, double maxDeltaR ) -{ - m_minDeltaR = minDeltaR; - m_maxDeltaR = maxDeltaR; -} - -#endif //> ASSOCIATIONUTILS_DELTAROVERLAPFILTER_H diff --git a/PhysicsAnalysis/AssociationBuilder/AssociationUtils/AssociationUtils/IOverlapFilter.h b/PhysicsAnalysis/AssociationBuilder/AssociationUtils/AssociationUtils/IOverlapFilter.h deleted file mode 100755 index f4ea999898fb9fe39042f7859919fed58cbaf417..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/AssociationBuilder/AssociationUtils/AssociationUtils/IOverlapFilter.h +++ /dev/null @@ -1,100 +0,0 @@ -///////////////////////// -*- C++ -*- ///////////////////////////// - -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -// IOverlapFilter.h -// Header file for class IOverlapFilter -// Author: S.Binet<binet@cern.ch> -/////////////////////////////////////////////////////////////////// -#ifndef ASSOCIATIONUTILS_IOVERLAPFILTER_H -#define ASSOCIATIONUTILS_IOVERLAPFILTER_H - -// STL includes -#include <functional> - -// EventKernel includes -#include "EventKernel/INavigable4Momentum.h" - -// Forward declaration - -class IOverlapFilter : public std::binary_function< - const INavigable4Momentum*, - const INavigable4Momentum*, - bool - > -{ - - /////////////////////////////////////////////////////////////////// - // Public methods: - /////////////////////////////////////////////////////////////////// - public: - - /** Destructor: - */ - virtual ~IOverlapFilter(); - - /////////////////////////////////////////////////////////////////// - // Const methods: - /////////////////////////////////////////////////////////////////// - - /** @brief Filtering method. - * Return true if objects overlap. - */ - virtual bool hasOverlap( const INavigable4Momentum& obj1, - const INavigable4Momentum& obj2 ) const = 0; - - /** @brief Filtering method. - * Return true if objects overlap ( forwards to @c hasOverlap ) - */ - bool hasOverlap( const INavigable4Momentum* obj1, - const INavigable4Momentum* obj2 ) const; - - /** @brief Filtering method. - * Return true if objects overlap ( forwards to @c hasOverlap ) - */ - bool operator()( const INavigable4Momentum& obj1, - const INavigable4Momentum& obj2 ) const; - - /** @brief Filtering method. - * Return true if objects overlap ( forwards to @c hasOverlap ) - */ - bool operator()( const INavigable4Momentum* obj1, - const INavigable4Momentum* obj2 ) const; - - /////////////////////////////////////////////////////////////////// - // Non-const methods: - /////////////////////////////////////////////////////////////////// - - /////////////////////////////////////////////////////////////////// - // Protected data: - /////////////////////////////////////////////////////////////////// - protected: - -}; - -/////////////////////////////////////////////////////////////////// -/// Inline methods: -/////////////////////////////////////////////////////////////////// - -inline bool -IOverlapFilter::hasOverlap( const INavigable4Momentum* obj1, - const INavigable4Momentum* obj2 ) const -{ - return hasOverlap(*obj1, *obj2); -} - -inline bool IOverlapFilter::operator()( const INavigable4Momentum& obj1, - const INavigable4Momentum& obj2 ) const -{ - return hasOverlap(obj1, obj2); -} - -inline bool IOverlapFilter::operator()( const INavigable4Momentum* obj1, - const INavigable4Momentum* obj2 ) const -{ - return hasOverlap(*obj1, *obj2); -} - -#endif //> ASSOCIATIONUTILS_IOVERLAPFILTER_H diff --git a/PhysicsAnalysis/AssociationBuilder/AssociationUtils/AssociationUtils/NavigationOverlapFilter.h b/PhysicsAnalysis/AssociationBuilder/AssociationUtils/AssociationUtils/NavigationOverlapFilter.h deleted file mode 100755 index 60f8ebeb6c6a5f35004faf707cc25ad92df9b56d..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/AssociationBuilder/AssociationUtils/AssociationUtils/NavigationOverlapFilter.h +++ /dev/null @@ -1,75 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -/////////////////////////////////////////////////////////////////// -// NavigationOverlapFilter.h -// Header file for class NavigationOverlapFilter -// Author: S.Binet<binet@cern.ch> -/////////////////////////////////////////////////////////////////// -#ifndef ASSOCIATIONUTILS_NAVIGATIONOVERLAPFILTER_H -#define ASSOCIATIONUTILS_NAVIGATIONOVERLAPFILTER_H - -// STL includes -#include <functional> - -// EventKernel includes -#include "EventKernel/INavigable4Momentum.h" - -// AssociationUtils includes -#include "AssociationUtils/IOverlapFilter.h" - -// Forward declaration - -class NavigationOverlapFilter : public IOverlapFilter -{ - - /////////////////////////////////////////////////////////////////// - // Public methods: - /////////////////////////////////////////////////////////////////// - public: - - /** Default constructor: - */ - NavigationOverlapFilter(); - - /** Copy constructor: - */ - NavigationOverlapFilter( const NavigationOverlapFilter& rhs ); - - /** Assignment operator: - */ - NavigationOverlapFilter& operator=( const NavigationOverlapFilter& rhs ); - - /** Destructor: - */ - virtual ~NavigationOverlapFilter(); - - /////////////////////////////////////////////////////////////////// - // Const methods: - /////////////////////////////////////////////////////////////////// - - /** @brief Filtering method. If true then objects overlap. - */ - bool hasOverlap( const INavigable4Momentum& obj1, - const INavigable4Momentum& obj2 ) const; - - /////////////////////////////////////////////////////////////////// - // Non-const methods: - /////////////////////////////////////////////////////////////////// - - /////////////////////////////////////////////////////////////////// - // Protected data: - /////////////////////////////////////////////////////////////////// - protected: - -}; - -/////////////////////////////////////////////////////////////////// -/// Inline methods: -/////////////////////////////////////////////////////////////////// - -inline NavigationOverlapFilter::~NavigationOverlapFilter() -{} - -#endif //> ASSOCIATIONUTILS_NAVIGATIONOVERLAPFILTER_H diff --git a/PhysicsAnalysis/AssociationBuilder/AssociationUtils/CMakeLists.txt b/PhysicsAnalysis/AssociationBuilder/AssociationUtils/CMakeLists.txt deleted file mode 100644 index 0839d83023b78ed876d51a5c49a65db4faa6d72a..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/AssociationBuilder/AssociationUtils/CMakeLists.txt +++ /dev/null @@ -1,32 +0,0 @@ -################################################################################ -# Package: AssociationUtils -################################################################################ - -# Declare the package name: -atlas_subdir( AssociationUtils ) - -# Declare the package's dependencies: -atlas_depends_on_subdirs( PUBLIC - Event/EventKernel - PRIVATE - AtlasTest/TestTools - Control/AthContainers - Control/AthLinks - Control/CLIDSvc - Control/Navigation - Control/SGTools - Event/FourMom - Event/FourMomUtils - TestPolicy ) - -# External dependencies: -find_package( Boost COMPONENTS filesystem thread system ) - -# Component(s) in the package: -atlas_add_library( AssociationUtils - src/*.cxx - PUBLIC_HEADERS AssociationUtils - PRIVATE_INCLUDE_DIRS ${Boost_INCLUDE_DIRS} - LINK_LIBRARIES EventKernel - PRIVATE_LINK_LIBRARIES ${Boost_LIBRARIES} AthContainers AthLinks FourMomUtils ) - diff --git a/PhysicsAnalysis/AssociationBuilder/AssociationUtils/cmt/requirements b/PhysicsAnalysis/AssociationBuilder/AssociationUtils/cmt/requirements deleted file mode 100755 index 1158c8205d877ca8d678b3d0cd48acbd0500bb68..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/AssociationBuilder/AssociationUtils/cmt/requirements +++ /dev/null @@ -1,50 +0,0 @@ -package AssociationUtils - -author Ketevi A. Assamagan <ketevi@bnl.gov> -author Sebastien Binet <binet@cern.ch> - -use AtlasPolicy AtlasPolicy-* - -use EventKernel EventKernel-* Event - -branches AssociationUtils src doc share run - -library AssociationUtils *.cxx - -apply_pattern installed_library - -############# -# unit tests -# -private - -use TestPolicy TestPolicy-* -no_auto_imports -use TestTools TestTools-* AtlasTest -no_auto_imports - -use AthContainers AthContainers-* Control -use AthLinks AthLinks-* Control -use Navigation Navigation-* Control -no_auto_imports -#use DataModel DataModel-* Control -no_auto_imports -use CLIDSvc CLIDSvc-* Control -no_auto_imports -use AtlasBoost AtlasBoost-* External -no_auto_imports -use FourMom FourMom-* Event -no_auto_imports -use FourMomUtils FourMomUtils-* Event - -macro cppUnit_deltaROverlapFilterTest_imports "" -macro_append cppUnit_deltaROverlapFilterTest_imports " -import=StoreGate" -macro_append cppUnit_deltaROverlapFilterTest_imports " -import=Navigation" -macro_append cppUnit_deltaROverlapFilterTest_imports " -import=DataModel" -macro_append cppUnit_deltaROverlapFilterTest_imports " -import=AtlasBoost" -macro_append cppUnit_deltaROverlapFilterTest_imports " -import=CLIDSvc" -macro_append cppUnit_deltaROverlapFilterTest_imports " -import=FourMom" -macro_append cppUnit_deltaROverlapFilterTest_imports " -import=FourMomUtils" - -apply_pattern CppUnit name=cppUnit_deltaROverlapFilterTest \ - files="-s=${AssociationUtils_root}/test DeltaROverlapFilter_CppUnit.cxx" \ - imports=$(cppUnit_deltaROverlapFilterTest_imports) - -end_private - - - - diff --git a/PhysicsAnalysis/AssociationBuilder/AssociationUtils/src/DeltaROverlapFilter.cxx b/PhysicsAnalysis/AssociationBuilder/AssociationUtils/src/DeltaROverlapFilter.cxx deleted file mode 100755 index 9fa145fe99a55edbb878f2008fecca10f9c687aa..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/AssociationBuilder/AssociationUtils/src/DeltaROverlapFilter.cxx +++ /dev/null @@ -1,85 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -/////////////////////////////////////////////////////////////////// -// DeltaROverlapFilter.cxx -// Implementation file for class DeltaROverlapFilter -// Author: S.Binet<binet@cern.ch> -/////////////////////////////////////////////////////////////////// - - -// STL includes -#include <cfloat> - -// FourMomUtils includes -#include "FourMomUtils/P4Helpers.h" - -// AssociationUtils includes -#include "AssociationUtils/DeltaROverlapFilter.h" - -/////////////////////////////////////////////////////////////////// -/// Public methods: -/////////////////////////////////////////////////////////////////// - -// Constructors -//////////////// - -DeltaROverlapFilter::DeltaROverlapFilter() : - IOverlapFilter( ), - m_minDeltaR ( 0. ), - m_maxDeltaR ( DBL_MAX ) -{} - -DeltaROverlapFilter::DeltaROverlapFilter( const DeltaROverlapFilter& rhs ) : - IOverlapFilter( rhs ), - m_minDeltaR( rhs.m_minDeltaR ), - m_maxDeltaR( rhs.m_maxDeltaR ) -{} - -DeltaROverlapFilter& -DeltaROverlapFilter::operator=( const DeltaROverlapFilter& rhs ) -{ - if ( this != &rhs ) { - IOverlapFilter::operator=( rhs ); - m_minDeltaR = rhs.m_minDeltaR; - m_maxDeltaR = rhs.m_maxDeltaR; - } - return *this; -} - -DeltaROverlapFilter::DeltaROverlapFilter( double maxDeltaR ) : - IOverlapFilter( ), - m_minDeltaR( 0. ), - m_maxDeltaR( maxDeltaR ) -{} - -DeltaROverlapFilter::DeltaROverlapFilter( double minDeltaR, - double maxDeltaR ) : - IOverlapFilter( ), - m_minDeltaR( minDeltaR ), - m_maxDeltaR( maxDeltaR ) -{} - -// Destructor -/////////////// - -/////////////////////////////////////////////////////////////////// -// Const methods: -/////////////////////////////////////////////////////////////////// - -bool DeltaROverlapFilter::hasOverlap( const INavigable4Momentum& obj1, - const INavigable4Momentum& obj2 ) const -{ - const double deltaR = P4Helpers::deltaR( obj1, obj2 ); - return ( m_minDeltaR <= deltaR ) && ( deltaR < m_maxDeltaR ); -} - -/////////////////////////////////////////////////////////////////// -// Non-const methods: -/////////////////////////////////////////////////////////////////// - -/////////////////////////////////////////////////////////////////// -// Protected methods: -/////////////////////////////////////////////////////////////////// - diff --git a/PhysicsAnalysis/AssociationBuilder/AssociationUtils/src/IOverlapFilter.cxx b/PhysicsAnalysis/AssociationBuilder/AssociationUtils/src/IOverlapFilter.cxx deleted file mode 100755 index 55b92336c5040db9f9235047765c3c924bbc5046..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/AssociationBuilder/AssociationUtils/src/IOverlapFilter.cxx +++ /dev/null @@ -1,40 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -/////////////////////////////////////////////////////////////////// -// IOverlapFilter.cxx -// Implementation file for class IOverlapFilter -// Author: S.Binet<binet@cern.ch> -/////////////////////////////////////////////////////////////////// - - -// STL includes - -// AssociationUtils includes -#include "AssociationUtils/IOverlapFilter.h" - -/////////////////////////////////////////////////////////////////// -/// Public methods: -/////////////////////////////////////////////////////////////////// - -// Constructors -//////////////// - -// Destructor -/////////////// -IOverlapFilter::~IOverlapFilter() -{} - -/////////////////////////////////////////////////////////////////// -// Const methods: -/////////////////////////////////////////////////////////////////// - -/////////////////////////////////////////////////////////////////// -// Non-const methods: -/////////////////////////////////////////////////////////////////// - -/////////////////////////////////////////////////////////////////// -// Protected methods: -/////////////////////////////////////////////////////////////////// - diff --git a/PhysicsAnalysis/AssociationBuilder/AssociationUtils/test/AssociationUtils.sh b/PhysicsAnalysis/AssociationBuilder/AssociationUtils/test/AssociationUtils.sh deleted file mode 100755 index e2137e073c1ba36f006341327ccecd4d3cf8bce4..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/AssociationBuilder/AssociationUtils/test/AssociationUtils.sh +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/sh -# This just selects the directory to run cmt commands -# But with project builds and as this package (AssociationUtils) can be moved -# from some project to another, we wildcard the AtlasXyzRelease directory -cd ${NIGHTLYAREA}/Atlas*Release/cmt -# -cmt broadcast -select=AssociationUtils make CppUnit -stat=$? -if [ "$stat" != "0" ]; then - echo " -------------------------------- " - echo " FAILURE : test AssociationUtils " - echo " -------------------------------- " -fi diff --git a/PhysicsAnalysis/AssociationBuilder/AssociationUtils/test/DeltaROverlapFilter_CppUnit.cxx b/PhysicsAnalysis/AssociationBuilder/AssociationUtils/test/DeltaROverlapFilter_CppUnit.cxx deleted file mode 100755 index ef65e7821e126285874c97195b6dfb67d2eecd67..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/AssociationBuilder/AssociationUtils/test/DeltaROverlapFilter_CppUnit.cxx +++ /dev/null @@ -1,436 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -/// Class to test the DeltaROverlapFilter class -/// Author : S.Binet<binet@cern.ch> - -// CppUnit includes -#include<cppunit/extensions/HelperMacros.h> -#include<cppunit/Exception.h> - -// STL includes -#include <list> -#include <vector> -#include <iostream> -#include <stdexcept> -#include <cmath> -#include <cfloat> -#include <algorithm> -#include <numeric> - -// to ease tests -#include <boost/bind.hpp> - -// DataModel includes -#include "AthContainers/DataVector.h" -#include "AthLinks/ElementLink.h" -#include "CLIDSvc/CLASS_DEF.h" - -// EventKernel includes -#include "EventKernel/INavigable4Momentum.h" - -// FourMom includes -#include "FourMom/P4PxPyPzE.h" -#include "Navigation/NavigableTerminalNode.h" - -// FourMomUtils includes -#include "FourMomUtils/P4Helpers.h" - -// AssociationUtils includes -#include "AssociationUtils/DeltaROverlapFilter.h" - -class MyNav4Mom : virtual public INavigable4Momentum, - public P4PxPyPzE, - public NavigableTerminalNode -{ -public: - MyNav4Mom(): - INavigable4Momentum(), - P4PxPyPzE(), - NavigableTerminalNode() - {} - - MyNav4Mom( double px, double py, double pz, double ene ): - INavigable4Momentum(), - P4PxPyPzE(px, py, pz, ene), - NavigableTerminalNode() - {} -}; - -CLASS_DEF( DataVector<MyNav4Mom> , 77574488 , 1 ) - -class DeltaROverlapFilterTest : public CppUnit::TestFixture -{ - /// Definition of the unit test suite - CPPUNIT_TEST_SUITE( DeltaROverlapFilterTest ); - - CPPUNIT_TEST( testConstructor ); - CPPUNIT_TEST( testSettersAndGetters ); - CPPUNIT_TEST( testPredicate ); - - CPPUNIT_TEST( testCountIf ); - CPPUNIT_TEST( testFindIf ); - CPPUNIT_TEST( testAccumulate ); - - /// end the definition test suite - CPPUNIT_TEST_SUITE_END(); - -private: - - unsigned int m_nmax; - DataVector<MyNav4Mom> m_dvMoms; - std::vector<MyNav4Mom*> m_stlMoms; - -public: - - /// Set up the data members - void setUp() - { - m_nmax = 11; - const double x = 10.; - - m_dvMoms.resize(m_nmax); - m_stlMoms.resize(m_nmax); - for ( unsigned int i = 0; i != m_nmax; ++i ) { - m_dvMoms[i] = new MyNav4Mom( (i+1)*x, (i+2)*x, (i+3)*x, (i+4)*x ); - m_stlMoms[i] = new MyNav4Mom( (i+1)*x, (i+2)*x, (i+3)*x, (i+4)*x ); - } - } - - /// destroy any on-the-heap-created data member - void tearDown() - { - m_dvMoms.clear(); - for ( unsigned int i = 0; i != m_nmax; ++i ) { - delete m_stlMoms[i]; - m_stlMoms[i] = 0; - } - } - - /// Test the McVtxFilter constructors - void testConstructor() - { - { - DeltaROverlapFilter filter; - CPPUNIT_ASSERT( filter.minDeltaR() == 0. ); - CPPUNIT_ASSERT( filter.maxDeltaR() == DBL_MAX ); - } - - { - DeltaROverlapFilter filter( 0.7 ); - CPPUNIT_ASSERT( filter.minDeltaR() == 0. ); - CPPUNIT_ASSERT( filter.maxDeltaR() == 0.7 ); - } - - { - DeltaROverlapFilter filter( 0.4, 0.7 ); - CPPUNIT_ASSERT( filter.minDeltaR() == 0.4 ); - CPPUNIT_ASSERT( filter.maxDeltaR() == 0.7 ); - } - - { - DeltaROverlapFilter filter( 0.4, 0.7 ); - CPPUNIT_ASSERT( filter.minDeltaR() == 0.4 ); - CPPUNIT_ASSERT( filter.maxDeltaR() == 0.7 ); - - DeltaROverlapFilter g(filter); - CPPUNIT_ASSERT( g.minDeltaR() == 0.4 ); - CPPUNIT_ASSERT( g.maxDeltaR() == 0.7 ); - - DeltaROverlapFilter h; - CPPUNIT_ASSERT( h.minDeltaR() == 0. ); - CPPUNIT_ASSERT( h.maxDeltaR() == DBL_MAX ); - - h = filter; - CPPUNIT_ASSERT( h.minDeltaR() == 0.4 ); - CPPUNIT_ASSERT( h.maxDeltaR() == 0.7 ); - } - } - - void testSettersAndGetters() - { - DeltaROverlapFilter filter( 0.4, 0.7 ); - CPPUNIT_ASSERT( filter.minDeltaR() == 0.4 ); - CPPUNIT_ASSERT( filter.maxDeltaR() == 0.7 ); - - filter.setMinDeltaR( 0.3 ); - CPPUNIT_ASSERT( filter.minDeltaR() == 0.3 ); - CPPUNIT_ASSERT( filter.maxDeltaR() == 0.7 ); - - filter.setMaxDeltaR( 0.8 ); - CPPUNIT_ASSERT( filter.minDeltaR() == 0.3 ); - CPPUNIT_ASSERT( filter.maxDeltaR() == 0.8 ); - - filter.setDeltaR( 0.4, 0.7 ); - CPPUNIT_ASSERT( filter.minDeltaR() == 0.4 ); - CPPUNIT_ASSERT( filter.maxDeltaR() == 0.7 ); - } - - void testPredicate() - { - { - DeltaROverlapFilter filter; - MyNav4Mom mom1( 10., 10., 10., 20. ); - MyNav4Mom mom2( 10., 10., 10., 20. ); - CPPUNIT_ASSERT( P4Helpers::deltaR(mom1, mom2) == 0. ); - CPPUNIT_ASSERT( filter.hasOverlap(mom1, mom2) ); - CPPUNIT_ASSERT( filter(mom1, mom2) ); - } - { - DeltaROverlapFilter filter( 0.1, 0.2 ); - MyNav4Mom mom1( 10., 10., 10., 20. ); - MyNav4Mom mom2( 10., 10., 10., 20. ); - CPPUNIT_ASSERT( P4Helpers::deltaR(mom1, mom2) == 0. ); - CPPUNIT_ASSERT( !filter.hasOverlap(mom1, mom2) ); - CPPUNIT_ASSERT( !filter(mom1, mom2) ); - } - { - typedef ElementLink<DataVector<MyNav4Mom> > Link_t; - std::vector<Link_t> moms; - moms.push_back( Link_t( m_dvMoms, 0 ) ); - DeltaROverlapFilter filter( 0.1, 0.2 ); - CPPUNIT_ASSERT( P4Helpers::deltaR( *moms[0], *moms[0] ) == 0. ); - CPPUNIT_ASSERT( !filter.hasOverlap(**moms[0],**moms[0]) ); - CPPUNIT_ASSERT( !filter.hasOverlap(*moms[0],*moms[0]) ); - CPPUNIT_ASSERT( !filter( *moms[0], *moms[0] ) ); - } - { - MyNav4Mom mom1( -10., -10., -10., 20. ); - MyNav4Mom mom2( 10., 10., 10., 20. ); - const double minDeltaR = 3.40646; - const double maxDeltaR = 3.40647; - CPPUNIT_ASSERT( P4Helpers::deltaR(mom1, mom2) < maxDeltaR ); - CPPUNIT_ASSERT( P4Helpers::deltaR(mom1, mom2) >= minDeltaR ); - - DeltaROverlapFilter filter; - - CPPUNIT_ASSERT( filter.hasOverlap(mom1, mom2) ); - CPPUNIT_ASSERT( filter(mom1, mom2) ); - - filter.setDeltaR( 0., minDeltaR ); - CPPUNIT_ASSERT( !filter.hasOverlap(mom1, mom2) ); - CPPUNIT_ASSERT( !filter(mom1, mom2) ); - - filter.setDeltaR( minDeltaR, maxDeltaR ); - CPPUNIT_ASSERT( filter.hasOverlap(mom1, mom2) ); - CPPUNIT_ASSERT( filter(mom1, mom2) ); - - filter.setDeltaR( maxDeltaR, DBL_MAX ); - CPPUNIT_ASSERT( !filter.hasOverlap(mom1, mom2) ); - CPPUNIT_ASSERT( !filter(mom1, mom2) ); - } - } - - template <class CONT> - void testCountIf_t( const CONT& cont, const DeltaROverlapFilter& filter, - const int INRANGE ) - { - const int OUTRANGE = static_cast<int>(cont.size()) - INRANGE; - { - const int n = std::count_if( cont.begin(), cont.end(), - std::bind2nd( filter, cont[0] ) ); - CPPUNIT_ASSERT( n == (INRANGE+1) ); - } - - { - const int n = std::count_if( cont.begin(), cont.end(), - boost::bind( filter, _1, cont[0] ) ); - CPPUNIT_ASSERT( n == (INRANGE+1) ); - } - - { - const int n = std::count_if( cont.begin(), cont.end(), - boost::bind( filter, cont[0], _1 ) ); - CPPUNIT_ASSERT( n == (INRANGE+1) ); - } - - { - const int n = std::count_if( cont.begin(), cont.end(), - boost::bind( std::logical_not<bool>(), - boost::bind( filter, - cont[0], _1 ) ) ); - CPPUNIT_ASSERT( n == (OUTRANGE-1) ); - } - } - - void testCountIf() - { - const int INRANGE = 6; - DeltaROverlapFilter filter( 0., P4Helpers::deltaR( m_stlMoms[0], - m_stlMoms[INRANGE] ) ); - -// std::cout << std::endl; -// for ( unsigned int i = 0; i != m_nmax; ++i ) { -// std::cout << i << " => " << P4Helpers::deltaR(m_stlMoms[0], m_stlMoms[i]) -// << std::endl; -// } - - testCountIf_t( m_dvMoms, filter, INRANGE ); - testCountIf_t( m_stlMoms, filter, INRANGE ); - } - - template <class CONT> - void testFindIf_t( const CONT& cont, const DeltaROverlapFilter& filter, - const int INRANGE ) - { - const int OUTRANGE = static_cast<int>(cont.size()) - INRANGE; - { - typename CONT::const_iterator itr; - itr = std::find_if( cont.begin(), cont.end(), - std::bind2nd( filter, cont[0] ) ); - CPPUNIT_ASSERT( itr == cont.begin() ); - } - - { - typename CONT::const_iterator itr; - itr = std::find_if( cont.begin(), cont.end(), - boost::bind( filter, _1, cont[0] ) ); - CPPUNIT_ASSERT( itr == cont.begin() ); - } - - { - typename CONT::const_iterator itr; - itr = std::find_if( cont.begin(), cont.end(), - boost::bind( filter, cont[0], _1 ) ); - CPPUNIT_ASSERT( itr == cont.begin() ); - } - - { - typename CONT::const_iterator itr; - itr = std::find_if( cont.begin(), cont.end(), - boost::bind( std::logical_not<bool>(), - boost::bind( filter, - cont[0], _1 ) ) ); - CPPUNIT_ASSERT( itr == (cont.begin()+INRANGE+1) ); - } - - { - typename CONT::const_reverse_iterator ritr; - ritr = std::find_if( cont.rbegin(), cont.rend(), - boost::bind( filter, cont[0], _1 ) ); - CPPUNIT_ASSERT( ritr == (cont.rbegin()+OUTRANGE-1) ); - } - - { - typename CONT::const_reverse_iterator ritr; - ritr = std::find_if( cont.rbegin(), cont.rend(), - boost::bind( std::logical_not<bool>(), - boost::bind( filter, - cont[0], _1 ) ) ); - CPPUNIT_ASSERT( ritr == cont.rbegin() ); - } - } - - void testFindIf() - { - const int INRANGE = 6; - DeltaROverlapFilter filter( 0., P4Helpers::deltaR( m_stlMoms[0], - m_stlMoms[INRANGE] ) ); - testFindIf_t( m_dvMoms, filter, INRANGE ); - testFindIf_t( m_stlMoms, filter, INRANGE ); - } - - template <class CONT> - void testAccumulate_t( const CONT& cont, const DeltaROverlapFilter& filter, - const int INRANGE ) - { - { - bool allOk = true; - allOk = std::accumulate( cont.begin(), - cont.begin()+INRANGE, - allOk, - boost::bind( std::logical_and<bool>(), - _1, - boost::bind( filter, - cont[0], _2 ) ) ); - - CPPUNIT_ASSERT( allOk ); - } - - { - bool allOk = true; - allOk = std::accumulate( cont.rbegin()+INRANGE, - cont.rend(), - allOk, - boost::bind( std::logical_and<bool>(), - _1, - boost::bind( filter, - cont[0], _2 ) ) ); - - CPPUNIT_ASSERT( allOk ); - } - - { - bool allOk = true; - allOk = std::accumulate( cont.begin(), - cont.begin()+INRANGE+1, - allOk, - boost::bind( std::logical_and<bool>(), - _1, // allOk_sum - boost::bind( filter, - cont[0], _2 ) ) ); - - CPPUNIT_ASSERT( allOk ); - } - - { - bool allOk = false; - allOk = std::accumulate( cont.begin(), - cont.end(), - allOk, - boost::bind( std::logical_or<bool>(), - _1, // allOk_sum - boost::bind( filter, - cont[0], _2 ) ) ); - - CPPUNIT_ASSERT( allOk ); - } - - { - bool allOk = false; - allOk = std::accumulate( cont.begin()+INRANGE, - cont.end(), - allOk, - boost::bind( std::logical_or<bool>(), - _1, // allOk_sum - boost::bind( filter, - cont[0], _2 ) ) ); - - CPPUNIT_ASSERT( allOk ); - } - - { - bool allOk = false; - allOk = std::accumulate( cont.rbegin(), - cont.rend()-INRANGE, - allOk, - boost::bind( std::logical_or<bool>(), - _1, // allOk_sum - boost::bind( filter, - cont[0], _2 ) ) ); - - CPPUNIT_ASSERT( allOk ); - } - - } - - void testAccumulate() - { - const int INRANGE = 6; - DeltaROverlapFilter filter( 0., P4Helpers::deltaR( m_stlMoms[0], - m_stlMoms[INRANGE] ) ); - - testAccumulate_t( m_dvMoms, filter, INRANGE ); - testAccumulate_t( m_stlMoms, filter, INRANGE ); - } - -}; - -/// Registration of the test suite "DeltaROverlapFilterTest" so it will be -/// recognized by the main test program which drives the different tests -CPPUNIT_TEST_SUITE_REGISTRATION( DeltaROverlapFilterTest ); - -/// CppUnit test-driver common for all the cppunit test classes. -/// In ATLAS sw release it is located in TestPolicy package -#include <TestPolicy/CppUnit_SGtestdriver.cxx>