
// DQHeader
// ========
// This class extracts information from the raw header blocks

#ifndef DQHEADER_H
#define DQHEADER_H
 
#include "RawData/RawDaqHeader.h"
#include "RawData/RawDaqSnarlHeader.h"
#include "RawData/RawDaqHeaderBlock.h"
#include "RawData/RawSnarlHeaderBlock.h"

#include "TObject.h"
 
class DQHeader : public TObject
{
 
 public:
  DQHeader();
  DQHeader(const DQHeader& rhs);
  ~DQHeader();

  void Process(RawDaqHeader* hdr);
  void Process(RawDaqSnarlHeader* hdr);
  void Process(RawDaqHeaderBlock* rdb);
  void Process(RawSnarlHeaderBlock* rdb);

  Int_t GetTime() const           { return fTime; }
  Int_t GetDetector() const       { return fDetector; }
  Int_t GetRunType() const        { return fRunType; }
  Int_t GetRun() const            { return fRun; }
  Int_t GetSubRun() const         { return fSubRun; }
  Int_t GetSnarl() const          { return fSnarl; }
  Int_t GetTriggerSource() const  { return fTriggerSource; }
  Int_t GetTimeFrame() const      { return fTimeFrame; }
  Int_t GetBaseNanosec() const    { return fBaseNanosec; }
  Int_t GetTriggerNanosec() const { return fTriggerNanosec; }
  Int_t GetErrorCode() const      { return fErrorCode; }

 private:

  Int_t fTime;
  Int_t fDetector;
  Int_t fRunType;
  Int_t fRun;
  Int_t fSubRun;
  Int_t fSnarl;
  Int_t fTriggerSource;
  Int_t fTimeFrame;
  Int_t fBaseNanosec;
  Int_t fTriggerNanosec;
  Int_t fErrorCode;
 
  ClassDef(DQHeader,1);
            
};   

#endif
