ROOT logo
/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 * See cxx source for full Copyright notice                               */

// $Id$
// $MpId: AliMpIntPair.h,v 1.6 2006/05/24 13:58:07 ivana Exp $

/// \ingroup core
/// \class AliMpIntPair
/// \brief A pair of integers.
///
/// The pair created by the default constructor is in invalide state,
/// setting one of values changes the state to valid.
///
/// \author David Guez, Ivana Hrivnacova; IPN Orsay

#ifndef ALI_MP_INT_PAIR_H
#define ALI_MP_INT_PAIR_H

#include <TObject.h>

using std::ostream;

class AliMpIntPair : public TObject
{
 public:
  AliMpIntPair(Int_t ix,Int_t iy);
  AliMpIntPair(Int_t ix,Int_t iy, Bool_t validity);
  AliMpIntPair(const AliMpIntPair& right);
  AliMpIntPair();
  virtual ~AliMpIntPair();

  // operators  
  Bool_t operator <  (const AliMpIntPair& pos2) const;
  Bool_t operator == (const AliMpIntPair& pos2) const;
  Bool_t operator != (const AliMpIntPair& pos2) const;
  AliMpIntPair& operator = (const AliMpIntPair& src) ;
  void operator += (const AliMpIntPair& op);
  void operator -= (const AliMpIntPair& op);

  //
  // static get methods
  //
         /// Return invalid pair
  static AliMpIntPair Invalid() {return AliMpIntPair();}

  //
  // get methods
  //
         /// Return first value
  Int_t  GetFirst() const  {return fFirst;}
         /// Return second value
  Int_t  GetSecond() const {return fSecond;}
         /// Return validity
  Bool_t IsValid() const   {return fValidity;}

  //
  // set methods
  //
         /// Set first value 
  void SetFirst(Int_t ix)  {fFirst=ix; fValidity=true; }
         /// Set second value 
  void SetSecond(Int_t iy) {fSecond=iy; fValidity=true;}
         /// Set both first and second value
  void Set(Int_t ix, Int_t iy) { fFirst=ix; fSecond=iy; fValidity=true; }
  
  //
  // TObject functions used for sorting in Root collections
  //
         /// Return true as Compare() function is implemented 
  virtual Bool_t  IsSortable() const {return kTRUE;}
  virtual Int_t   Compare(const TObject* obj) const;

 private:
  // data members
  Int_t   fFirst;    ///< the first value
  Int_t   fSecond;   ///< the second value
  Bool_t  fValidity; ///< validity

  ClassDef(AliMpIntPair,1) // utility class for the motif type
};

AliMpIntPair operator + (const AliMpIntPair& op1,const AliMpIntPair& op2);
AliMpIntPair operator - (const AliMpIntPair& op1,const AliMpIntPair& op2);
AliMpIntPair operator * (const AliMpIntPair& op1,const AliMpIntPair& op2);
ostream& operator << (ostream &stream,const AliMpIntPair& op);

#endif //ALI_MP_INT_PAIR_H
 AliMpIntPair.h:1
 AliMpIntPair.h:2
 AliMpIntPair.h:3
 AliMpIntPair.h:4
 AliMpIntPair.h:5
 AliMpIntPair.h:6
 AliMpIntPair.h:7
 AliMpIntPair.h:8
 AliMpIntPair.h:9
 AliMpIntPair.h:10
 AliMpIntPair.h:11
 AliMpIntPair.h:12
 AliMpIntPair.h:13
 AliMpIntPair.h:14
 AliMpIntPair.h:15
 AliMpIntPair.h:16
 AliMpIntPair.h:17
 AliMpIntPair.h:18
 AliMpIntPair.h:19
 AliMpIntPair.h:20
 AliMpIntPair.h:21
 AliMpIntPair.h:22
 AliMpIntPair.h:23
 AliMpIntPair.h:24
 AliMpIntPair.h:25
 AliMpIntPair.h:26
 AliMpIntPair.h:27
 AliMpIntPair.h:28
 AliMpIntPair.h:29
 AliMpIntPair.h:30
 AliMpIntPair.h:31
 AliMpIntPair.h:32
 AliMpIntPair.h:33
 AliMpIntPair.h:34
 AliMpIntPair.h:35
 AliMpIntPair.h:36
 AliMpIntPair.h:37
 AliMpIntPair.h:38
 AliMpIntPair.h:39
 AliMpIntPair.h:40
 AliMpIntPair.h:41
 AliMpIntPair.h:42
 AliMpIntPair.h:43
 AliMpIntPair.h:44
 AliMpIntPair.h:45
 AliMpIntPair.h:46
 AliMpIntPair.h:47
 AliMpIntPair.h:48
 AliMpIntPair.h:49
 AliMpIntPair.h:50
 AliMpIntPair.h:51
 AliMpIntPair.h:52
 AliMpIntPair.h:53
 AliMpIntPair.h:54
 AliMpIntPair.h:55
 AliMpIntPair.h:56
 AliMpIntPair.h:57
 AliMpIntPair.h:58
 AliMpIntPair.h:59
 AliMpIntPair.h:60
 AliMpIntPair.h:61
 AliMpIntPair.h:62
 AliMpIntPair.h:63
 AliMpIntPair.h:64
 AliMpIntPair.h:65
 AliMpIntPair.h:66
 AliMpIntPair.h:67
 AliMpIntPair.h:68
 AliMpIntPair.h:69
 AliMpIntPair.h:70
 AliMpIntPair.h:71
 AliMpIntPair.h:72
 AliMpIntPair.h:73
 AliMpIntPair.h:74
 AliMpIntPair.h:75
 AliMpIntPair.h:76
 AliMpIntPair.h:77
 AliMpIntPair.h:78
 AliMpIntPair.h:79
 AliMpIntPair.h:80
 AliMpIntPair.h:81
 AliMpIntPair.h:82
 AliMpIntPair.h:83
 AliMpIntPair.h:84
 AliMpIntPair.h:85
 AliMpIntPair.h:86
 AliMpIntPair.h:87