#include "DQHeader.h"
 
#include "MessageService/MsgService.h"

//
// $Log $
//

ClassImp(DQHeader)

CVSID("$Id: DQHeader.cxx,v 1.1 2006/03/19 17:24:34 blake Exp $");

DQHeader::DQHeader() :
  fTime(-1),
  fDetector(0), 
  fRunType(-1),
  fRun(-1), 
  fSubRun(-1), 
  fSnarl(-1), 
  fTriggerSource(-1),
  fTimeFrame(-1), 
  fBaseNanosec(0),
  fTriggerNanosec(-1),
  fErrorCode(-1)
{
 
}
 
DQHeader::DQHeader(const DQHeader& rhs) :
  TObject(rhs),
  fTime(rhs.fTime),
  fDetector(rhs.fDetector), 
  fRunType(rhs.fRunType), 
  fRun(rhs.fRun), 
  fSubRun(rhs.fSubRun), 
  fSnarl(rhs.fSnarl),
  fTriggerSource(rhs.fTriggerSource),
  fTimeFrame(rhs.fTimeFrame), 
  fBaseNanosec(rhs.fBaseNanosec),
  fTriggerNanosec(rhs.fTriggerNanosec),
  fErrorCode(rhs.fErrorCode)
{
 
}
   
DQHeader::~DQHeader()
{
 
}

void DQHeader::Process(RawDaqHeader*)
{
  MSG("DataQuality",Msg::kVerbose) << " DQHeader::Process(RawDaqHeader) " << endl;  

}

void DQHeader::Process(RawDaqSnarlHeader* hdr)
{
  MSG("DataQuality",Msg::kVerbose) << " DQHeader::Process(RawDaqSnarlHeader) " << endl;  

  fTime = hdr->GetVldContext().GetTimeStamp().GetSec();
  fDetector = hdr->GetVldContext().GetDetector();
  fRunType = hdr->GetRunType();
  fRun = hdr->GetRun();
  fSubRun = hdr->GetSubRun();
  fSnarl = hdr->GetSnarl();
  fTriggerSource = hdr->GetTrigSrc();
  fTimeFrame = hdr->GetTimeFrameNum();
  fTriggerNanosec = hdr->GetVldContext().GetTimeStamp().GetNanoSec();
  fErrorCode = hdr->GetErrorCode();

  MSG("DataQuality",Msg::kVerbose) << " DQHeader ["<< fRun << "|" << fSubRun << "|" << fSnarl << "|" << fTriggerSource << "|" << fErrorCode << "] [" << fTime << "|" << fTriggerNanosec << "|" << fBaseNanosec << "]" << endl;
}

void DQHeader::Process(RawDaqHeaderBlock* rdb)
{
  MSG("DataQuality",Msg::kVerbose) << " DQHeader::Process(RawDaqHeaderBlock) " << endl;  

  fTime = rdb->GetTimeStamp().GetSec();
  fDetector = rdb->GetVldContext().GetDetector();
  fRunType = rdb->GetRunType();
  fRun = rdb->GetRun();
  fSubRun = rdb->GetSubRun();
  fSnarl = -1;
  fTriggerSource = -1;
  fTimeFrame = rdb->GetTimeFrameNum();
  fBaseNanosec = rdb->GetTimeStamp().GetNanoSec();
  fTriggerNanosec = -1;
  fErrorCode = -1;

  MSG("DataQuality",Msg::kVerbose) << " DQHeader ["<< fRun << "|" << fSubRun << "|" << fSnarl << "|" << fTriggerSource << "|" << fErrorCode << "] [" << fTime << "|" << fTriggerNanosec << "|" << fBaseNanosec << "]" << endl;
}

void DQHeader::Process(RawSnarlHeaderBlock* rdb)
{
  MSG("DataQuality",Msg::kVerbose) << " DQHeader::Process(RawSnarlHeaderBlock) " << endl;  

  fTime = rdb->GetTriggerTime().GetSec();
  fDetector = rdb->GetVldContext().GetDetector();
  fRunType = rdb->GetRunType();
  fRun = rdb->GetRun();
  fSubRun = rdb->GetSubRun();
  fSnarl = rdb->GetSnarl();
  fTriggerSource = rdb->GetTriggerSource();
  fTimeFrame = rdb->GetTimeFrameNum();
  fTriggerNanosec = rdb->GetTriggerTime().GetNanoSec();
  fErrorCode = rdb->GetErrorCode();

  MSG("DataQuality",Msg::kVerbose) << " DQHeader ["<< fRun << "|" << fSubRun << "|" << fSnarl << "|" << fTriggerSource << "|" << fErrorCode << "] [" << fTime << "|" << fTriggerNanosec << "|" << fBaseNanosec << "]" << endl;
}

