#ifndef _CES_COMP_HH_ #define _CES_COMP_HH_ /****************************************************************************** * Ces Comparisons classes header file * * * * Author: Bob Wagner, Argonne CDF Group * * Phone 630-252-6321 (Argonne) 630-840-8436 (Fermilab) * * * * Description: Algorithmic function objects that do comparisons of CES * * quantities. These are meant to be used with STL algorithms. * * * * Revision History: * * 07-Nov-2000 Bob Wagner Initial creation * * 15-Nov-2000 Bob Wagner Change file name to ces_comp and add * * namespace ces_comp usage. Change class names* * to give consistency with track_sort and * * cpr_comp * * 20-Nov-2000 Bob Wagner Add comparators to find WIRE and STRIP * * closest to a local space point * * 21-Nov-2000 Bob Wagner Add comparators to find WIRE and STRIP * * closest to a supplied CdfTrack * * * *****************************************************************************/ //--------------- // C++ Headers -- //--------------- //------------------------------- // Collaborating Class Headers -- //------------------------------- #include "CalorObjects/CesCluster.hh" #include "CalorObjects/CesClusterColl.hh" #include "ElectronObjects/CdfEmObject.hh" #include "ElectronObjects/SimpleExtrapolatedTrack.hh" #include "StorableContainers/ValueVectorLink.hh" namespace ces_comp { class DecrWireEnergy; class IncrWireEnergy; class DecrStripEnergy; class IncrStripEnergy; class DecrWirePointDistance; class IncrWirePointDistance; class DecrStripPointDistance; class IncrStripPointDistance; class IncrWireTrackDistance; class IncrStripTrackDistance; } //***************************************************************************** // Class Declaration //***************************************************************************** class ces_comp::DecrWireEnergy { public: DecrWireEnergy() {} DecrWireEnergy(const DecrWireEnergy& right) {} ~DecrWireEnergy() {} bool operator ()( const CesCluster& t1, const CesCluster& t2 ) const; bool operator ()( const ValueVectorLink& t1, const ValueVectorLink& t2 ) const; private: }; class ces_comp::IncrWireEnergy { public: IncrWireEnergy() {} IncrWireEnergy(const IncrWireEnergy& right) {} ~IncrWireEnergy() {} bool operator ()( const CesCluster& t1, const CesCluster& t2 ) const; bool operator ()( const ValueVectorLink& t1, const ValueVectorLink& t2 ) const; private: }; class ces_comp::DecrStripEnergy { public: DecrStripEnergy() {} DecrStripEnergy(const DecrStripEnergy& right) {} ~DecrStripEnergy() {} bool operator ()( const CesCluster& t1, const CesCluster& t2 ) const; bool operator ()( const ValueVectorLink& t1, const ValueVectorLink& t2 ) const; private: }; class ces_comp::IncrStripEnergy { public: IncrStripEnergy() {} IncrStripEnergy(const IncrStripEnergy& right) {} ~IncrStripEnergy() {} bool operator ()( const CesCluster& t1, const CesCluster& t2 ) const; bool operator ()( const ValueVectorLink& t1, const ValueVectorLink& t2 ) const; private: }; class ces_comp::DecrWirePointDistance { public: DecrWirePointDistance( double localX ) : _localX(localX) {} // Use default copy constructor ~DecrWirePointDistance() {} bool operator ()( const CesCluster& t1, const CesCluster& t2 ) const; bool operator ()( const ValueVectorLink& t1, const ValueVectorLink& t2 ) const; private: // Default constructor is private to force user to supply a coordinate DecrWirePointDistance(); double _localX; }; class ces_comp::IncrWirePointDistance { public: IncrWirePointDistance( double localX ) : _localX(localX) {} // Use default copy constructor ~IncrWirePointDistance() {} bool operator ()( const CesCluster& t1, const CesCluster& t2 ) const; bool operator ()( const ValueVectorLink& t1, const ValueVectorLink& t2 ) const; private: // Default constructor is private to force user to supply a coordinate IncrWirePointDistance(); double _localX; }; class ces_comp::DecrStripPointDistance { public: DecrStripPointDistance( double localZ ) : _localZ(localZ) {} // Use default copy constructor ~DecrStripPointDistance() {} bool operator ()( const CesCluster& t1, const CesCluster& t2 ) const; bool operator ()( const ValueVectorLink& t1, const ValueVectorLink& t2 ) const; private: // Default constructor is private to force user to supply a coordinate DecrStripPointDistance(); double _localZ; }; class ces_comp::IncrStripPointDistance { public: IncrStripPointDistance( double localZ ) : _localZ(localZ) {} // Use default copy constructor ~IncrStripPointDistance() {} bool operator ()( const CesCluster& t1, const CesCluster& t2 ) const; bool operator ()( const ValueVectorLink& t1, const ValueVectorLink& t2 ) const; private: // Default constructor is private to force user to supply a coordinate IncrStripPointDistance(); double _localZ; }; class ces_comp::IncrWireTrackDistance { public: IncrWireTrackDistance( CdfEmObject::Track_link ); // Use default copy constructor ~IncrWireTrackDistance() {} bool operator ()( const CesCluster& t1, const CesCluster& t2 ); bool operator ()( const ValueVectorLink& t1, const ValueVectorLink& t2 ); private: // Default constructor is private to force user to supply a CdfTrack IncrWireTrackDistance(); double trackWireDiff( const CesCluster& ); static const double _yToleranceCEM; static const double _yFirstExtrapolationMin; SimpleExtrapolatedTrack _track; }; class ces_comp::IncrStripTrackDistance { public: IncrStripTrackDistance( CdfEmObject::Track_link ); // Use default copy constructor ~IncrStripTrackDistance() {} bool operator ()( const CesCluster& t1, const CesCluster& t2 ); bool operator ()( const ValueVectorLink& t1, const ValueVectorLink& t2 ); private: // Default constructor is private to force user to supply a CdfTrack IncrStripTrackDistance(); double trackStripDiff( const CesCluster& ); static const double _yToleranceCEM; static const double _yFirstExtrapolationMin; SimpleExtrapolatedTrack _track; }; /*===========================================================================*\ * Inline functions * \*===========================================================================*/ #include "Calor/ces_comp.icc" /****************************************************************************** * ALL DONE * *****************************************************************************/ #endif // _CES_COMP_HH_