]> git.uio.no Git - u/mrichter/AliRoot.git/blob - MUON/mapping/AliMpIntPair.h
Compatibility with ROOT trunk
[u/mrichter/AliRoot.git] / MUON / mapping / AliMpIntPair.h
1 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
2  * See cxx source for full Copyright notice                               */
3
4 // $Id$
5 // $MpId: AliMpIntPair.h,v 1.6 2006/05/24 13:58:07 ivana Exp $
6
7 /// \ingroup core
8 /// \class AliMpIntPair
9 /// \brief A pair of integers.
10 ///
11 /// The pair created by the default constructor is in invalide state,
12 /// setting one of values changes the state to valid.
13 ///
14 /// \author David Guez, Ivana Hrivnacova; IPN Orsay
15
16 #ifndef ALI_MP_INT_PAIR_H
17 #define ALI_MP_INT_PAIR_H
18
19 #include <TObject.h>
20
21 using std::ostream;
22
23 class AliMpIntPair : public TObject
24 {
25  public:
26   AliMpIntPair(Int_t ix,Int_t iy);
27   AliMpIntPair(Int_t ix,Int_t iy, Bool_t validity);
28   AliMpIntPair(const AliMpIntPair& right);
29   AliMpIntPair();
30   virtual ~AliMpIntPair();
31
32   // operators  
33   Bool_t operator <  (const AliMpIntPair& pos2) const;
34   Bool_t operator == (const AliMpIntPair& pos2) const;
35   Bool_t operator != (const AliMpIntPair& pos2) const;
36   AliMpIntPair& operator = (const AliMpIntPair& src) ;
37   void operator += (const AliMpIntPair& op);
38   void operator -= (const AliMpIntPair& op);
39
40   //
41   // static get methods
42   //
43          /// Return invalid pair
44   static AliMpIntPair Invalid() {return AliMpIntPair();}
45
46   //
47   // get methods
48   //
49          /// Return first value
50   Int_t  GetFirst() const  {return fFirst;}
51          /// Return second value
52   Int_t  GetSecond() const {return fSecond;}
53          /// Return validity
54   Bool_t IsValid() const   {return fValidity;}
55
56   //
57   // set methods
58   //
59          /// Set first value 
60   void SetFirst(Int_t ix)  {fFirst=ix; fValidity=true; }
61          /// Set second value 
62   void SetSecond(Int_t iy) {fSecond=iy; fValidity=true;}
63          /// Set both first and second value
64   void Set(Int_t ix, Int_t iy) { fFirst=ix; fSecond=iy; fValidity=true; }
65   
66   //
67   // TObject functions used for sorting in Root collections
68   //
69          /// Return true as Compare() function is implemented 
70   virtual Bool_t  IsSortable() const {return kTRUE;}
71   virtual Int_t   Compare(const TObject* obj) const;
72
73  private:
74   // data members
75   Int_t   fFirst;    ///< the first value
76   Int_t   fSecond;   ///< the second value
77   Bool_t  fValidity; ///< validity
78
79   ClassDef(AliMpIntPair,1) // utility class for the motif type
80 };
81
82 AliMpIntPair operator + (const AliMpIntPair& op1,const AliMpIntPair& op2);
83 AliMpIntPair operator - (const AliMpIntPair& op1,const AliMpIntPair& op2);
84 AliMpIntPair operator * (const AliMpIntPair& op1,const AliMpIntPair& op2);
85 ostream& operator << (ostream &stream,const AliMpIntPair& op);
86
87 #endif //ALI_MP_INT_PAIR_H