Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:28:56

0001 #ifndef TkTrackingRegionsMargin_H
0002 #define TkTrackingRegionsMargin_H
0003 
0004 /** Define two (left and right) margins */
0005 
0006 #include <utility>
0007 #include <iostream>
0008 
0009 template <class T>
0010 class TkTrackingRegionsMargin : public std::pair<T, T> {
0011 public:
0012   TkTrackingRegionsMargin() {}
0013 
0014   TkTrackingRegionsMargin(const T& aLeft, const T& aRight) : std::pair<T, T>(aLeft, aRight) {}
0015 
0016   TkTrackingRegionsMargin(const std::pair<T, T>& aPair) : std::pair<T, T>(aPair) {}
0017 
0018   const T& left() const { return this->first; }
0019   const T& right() const { return this->second; }
0020 
0021   void operator+=(const T& v) { add(v, v); }
0022   void add(const T& addLeft, const T& addRight) {
0023     this->first += addLeft;
0024     this->second += addRight;
0025   }
0026 };
0027 
0028 template <class T>
0029 std::ostream& operator<<(std::ostream& out, const TkTrackingRegionsMargin<T>& m) {
0030   return out << "(" << m.left() << "," << m.right() << ")";
0031 }
0032 #endif