
#include "MessageService/MsgService.h"  
#include "JobControl/JobCModuleRegistry.h"
#include "Algorithm/AlgHandle.h"
#include "CandDeadChip.h"
#include "CandDeadChipHandle.h"

ClassImp(CandDeadChip)

CandDeadChip::CandDeadChip() :
  fEntries(0),
  fAdc(0),
  fTdc(-1),
  fTdc0(-1),
  fErrorCode(0), 
  fTriggerRate(-1),
  fStatus(CandDeadChip::kOkay)
{

}

CandDeadChip::CandDeadChip(AlgHandle& ah) : 
  CandBase(ah),
  fEntries(0),
  fAdc(0),
  fTdc(-1),
  fTdc0(-1),
  fErrorCode(0),
  fTriggerRate(-1),
  fStatus(CandDeadChip::kOkay)
{

}

CandDeadChip::CandDeadChip(AlgHandle& ah, CandHandle& ch, CandContext& cx) :
  CandBase(ah),
  fEntries(0),
  fAdc(0),
  fTdc(-1),
  fTdc0(-1),
  fErrorCode(0),
  fTriggerRate(-1),
  fStatus(CandDeadChip::kOkay)
{
  SetLocalHandle(new CandDeadChipHandle(this));
  { CandDeadChipHandle cth(this); ch = cth; }
  ah.RunAlg(ch, cx);
}

CandDeadChip::CandDeadChip(const CandDeadChip& rhs) : 
  CandBase(rhs),
  fEntries(rhs.fEntries),
  fRawChannelId(rhs.fRawChannelId),
  fAdc(rhs.fAdc),
  fTdc(rhs.fTdc),
  fTdc0(rhs.fTdc0),
  fErrorCode(rhs.fErrorCode),
  fTriggerRate(rhs.fTriggerRate),
  fStatus(rhs.fStatus)
{

}

CandDeadChip::~CandDeadChip()
{

}

CandDeadChip* CandDeadChip::Dup() const
{
  CandDeadChip *cb = new CandDeadChip(*this);
  cb->CreateLocalHandle();
  TIter iterdau = GetDaughterIterator();
  CandHandle *dau;
  while ((dau=(CandHandle *) iterdau())) cb->AddDaughterLink(*dau);
  return cb;
}

void CandDeadChip::CreateLocalHandle()
{
  this->SetLocalHandle(new CandDeadChipHandle(this));
}

CandDeadChipHandle CandDeadChip::MakeCandidate(AlgHandle& ah, CandContext& cx)
{
  CandDeadChipHandle cdh;
  new CandDeadChip(ah,cdh,cx);
  return cdh;
}



