#ifndef CANDDATAQUALITYHANDLE_H
#define CANDDATAQUALITYHANDLE_H

#include "Candidate/CandHandle.h"
#include "Navigation/XxxItr.h"
#include "CandDataQuality.h"
#include "CandDeadChip.h"

class CandDataQualityHandle : public CandHandle
{

public:
  CandDataQualityHandle();
  CandDataQualityHandle(const CandDataQualityHandle& rhs);
  CandDataQualityHandle(CandDataQuality* candidate);
  virtual ~CandDataQualityHandle();
  virtual CandDataQualityHandle* DupHandle() const;

  Int_t GetTime() const;
  Int_t GetRunType() const;
  Int_t GetRun() const;
  Int_t GetSubRun() const;
  Int_t GetTimeFrame() const;
  Int_t GetSnarl() const;
  Int_t GetTriggerSource() const;
  Int_t GetTriggerTime() const;
  Int_t GetErrorCode() const;
  Int_t GetCrateMask() const;
  Int_t GetPreTriggerDigits() const;
  Int_t GetPostTriggerDigits() const;
  Int_t GetSnarlMultiplicity() const;
  Int_t GetSpillStatus() const;
  Int_t GetSpillType() const;
  Int_t GetSpillTimeError() const;
  Int_t GetLiTrigger() const;
  Int_t GetLiTime() const;
  Int_t GetLiSubtractedTime() const;
  Int_t GetLiRelativeTime() const;
  Int_t GetLiCalibPoint() const;
  Int_t GetLiCalibType() const;
  Int_t GetLiPulserBox() const;
  Int_t GetLiPulserLed() const;
  Int_t GetLiPulseHeight() const;
  Int_t GetLiPulseWidth() const;
  CandDataQuality::DataQuality_t GetDataQuality() const;

  void SetTime(Int_t time);
  void SetRunType(Int_t runtype);
  void SetRun(Int_t run);
  void SetSubRun(Int_t subrun);
  void SetTimeFrame(Int_t timeframe);
  void SetSnarl(Int_t snarl);
  void SetTriggerSource(Int_t trigsource);
  void SetTriggerTime(Int_t trigtime);
  void SetErrorCode(Int_t errorcode);
  void SetCrateMask(Int_t cratemask);
  void SetPreTriggerDigits(Int_t predigits);
  void SetPostTriggerDigits(Int_t postdigits);
  void SetSnarlMultiplicity(Int_t snarldigits);
  void SetSpillStatus(Int_t spillstatus);
  void SetSpillType(Int_t spilltype);
  void SetSpillTimeError(Int_t gpserror);
  void SetLiTrigger(Int_t litrigger);
  void SetLiTime(Int_t litime);
  void SetLiSubtractedTime(Int_t lisubtime);
  void SetLiRelativeTime(Int_t lireltime);
  void SetLiCalibPoint(Int_t calibpoint);
  void SetLiCalibType(Int_t calibtype);
  void SetLiPulserBox(Int_t box);
  void SetLiPulserLed(Int_t led);
  void SetLiPulseHeight(Int_t pulseheight);
  void SetLiPulseWidth(Int_t pulsewidth);
  void SetDataQuality(CandDataQuality::DataQuality_t dataquality);

  // Other methods
  // =============
  Int_t GetColdChips() const;
  Int_t GetHotChips() const;
  Int_t GetBusyChips() const;
  Int_t GetReadoutErrors() const;
  CandDeadChip::ChipStatus_t GetChipStatus(RawChannelId rawch) const;

  ClassDef(CandDataQualityHandle,1);
};

XXXITRDEF(CandDataQualityHandle)

#endif 

