////////////////////////////////////////////////////////////////////////
// $Id: CandUid.h,v 1.3 2006/06/21 00:47:01 rhatcher Exp $
//
// CandUid.h
//
// CandUid is the unique ID object for CandBase derived objects.
//
// Author:  G. Irwin 3/2000
////////////////////////////////////////////////////////////////////////

#ifndef CANDUID_H
#define CANDUID_H

// not inheriting from TObject so we need an explicit Rtypes
#ifndef ROOT_Rtypes
#if !defined(__CINT__) || defined(__MAKECINT__)
#include "Rtypes.h"
#endif
#endif

class CandBase;

class CandUid
{

friend class CandBase;

public:
   CandUid();
   CandUid(const CandUid &cu);
   CandUid(const CandBase &cb);
   CandUid(const CandBase &cb, const CandBase &cba);
   virtual ~CandUid();
   CandUid &operator=(const CandUid &cuid);
   Bool_t operator==(const CandUid &cuid) const;
   Bool_t operator!=(const CandUid &cuid) const;
   UInt_t GetArchUidInt() const {return fArchUidInt;}
   UInt_t GetUidInt() const {return fUidInt;}
   Bool_t IsCloneOf(const CandUid &cuid) const;

private:
   UInt_t fArchUidInt;             // Unique ID UInt_t of first ancestor
   UInt_t fUidInt;                                   // Unique ID UInt_t
   void SetUidInt(UInt_t ui) {fUidInt = ui;}

ClassDef(CandUid,0)            // Unique ID object for Candidate objects

};

#endif                                                      // CANDUID_H
