#ifndef _CALOR_COMPARISONS_HH_ #define _CALOR_COMPARISONS_HH_ #ifdef USE_CDFEDM2 //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // // Component: CalorComparisons.hh // // Purpose: This class contains some comparisons classes to be used in the sorting of calorimeter objects. // // Created: 19/06/1999 Pierre Savard // // History: // 20/10/1999 Pierre Savard - Add templates. // 07/07/2000 Bob Wagner - Fix syntax errors in inline templated function definitions. // 29/08/2000 Matthias Toennesmann - Add template class for rapidity comparisons. // 21/02/2002 Bob Wagner - Add EmEnergy comparator // //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// #include #include // #include "CalorGeometry/TowerKey.hh" // #include "Calor/PhysicsTower.hh" // namespace calor { // Need to add neighbor predicates templateclass EmEnergy{ public: EmEnergy() {} EmEnergy(const EmEnergy & right) {} ~EmEnergy() {} bool operator ()( const T * t1, const T * t2 ) const; bool operator ()( const T & t1, const T & t2 ) const; private: }; templateclass EmEt{ public: EmEt() {} EmEt(const EmEt & right) {} ~EmEt() {} bool operator ()( const T * t1, const T * t2 ) const; bool operator ()( const T & t1, const T & t2 ) const; private: }; template class TotEt{ public: TotEt() {} TotEt(const TotEt & right) {} ~TotEt() {} bool operator ()( const T * t1, const T * t2 ) const; bool operator ()( const T & t1, const T & t2 ) const; private: }; template class Rapidity{ public: Rapidity(){} Rapidity(const Rapidity& right){} ~Rapidity(){} bool operator()(const T* t1, const T* t2) const; bool operator()(const T& t1, const T& t2) const; private: }; template inline bool EmEnergy::operator ()( const T * t1, const T * t2 ) const { return this->operator()( *t1, *t2 ); } template inline bool EmEnergy::operator ()( const T & t1, const T & t2 ) const { return (t1.emEnergy() > t2.emEnergy()); } template inline bool EmEt::operator ()( const T * t1, const T * t2 ) const { return this->operator()( *t1, *t2 ); } template inline bool EmEt::operator ()( const T & t1, const T & t2 ) const { return (t1.emEt() > t2.emEt()); } template inline bool TotEt::operator ()( const T * t1, const T * t2 ) const { return this->operator()( *t1, *t2 ); } template inline bool TotEt::operator ()( const T & t1, const T & t2 ) const { return (t1.totEt() > t2.totEt()); } template inline bool Rapidity::operator ()(const T* t1, const T* t2) const{ return this->operator()(*t1,*t2); } template inline bool Rapidity::operator ()(const T& t1, const T& t2) const{ return (t1.fourMomentum().rapidity() < t2.fourMomentum().rapidity()); } // } // namespace calor #endif // USE_CDFEDM2 #endif // _CALOR_COMPARISONS_HH_