////////////////////////////////////////////////////////////////////////
// Package: CandTrackCam
//
// CandTrackCamList
//
// marshall@hep.phy.cam.ac.uk
////////////////////////////////////////////////////////////////////////
#include "CandTrackCam/CandTrackCamList.h"
#include "CandTrackCam/CandTrackCamListHandle.h"
#include "Algorithm/AlgHandle.h"
#include "MessageService/MsgService.h"

CVSID("$Id: CandTrackCamList.cxx,v 1.1 2006/04/10 17:02:17 marshall Exp $");


////////////////////////////////////////////////////////////////////////
CandTrackCamList::CandTrackCamList () :
  fCPUTime(0)
{
}
////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////
CandTrackCamList::CandTrackCamList(AlgHandle& ah)
  : CandTrackList(ah), fCPUTime(0)
{
}
////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////
CandTrackCamList::CandTrackCamList(AlgHandle& ah, CandHandle& ch, CandContext& cx)
  : CandTrackList(ah), fCPUTime(0)
{
    this->CreateLocalHandle();
    {
        CandTrackCamListHandle a_handle(this);
        ch = a_handle;
    }
    ah.RunAlg(ch,cx);
}
////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////
CandTrackCamList::CandTrackCamList(const CandTrackCamList& rhs)
  : CandTrackList(rhs), fCPUTime(0)
{
}
////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////
CandTrackCamList::~CandTrackCamList()
{
}
////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////
void CandTrackCamList::CreateLocalHandle()
{
    this->SetLocalHandle(new CandTrackCamListHandle(this));
}
////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////
CandTrackCamList* CandTrackCamList::Dup() const
{
  CandTrackCamList* newone = new CandTrackCamList(*this);
  newone->CreateLocalHandle();
  TIter iter = this->GetDaughterIterator();
  CandHandle* ch;
  while ((ch=(CandHandle*)iter())) newone->AddDaughterLink(*ch);
  return newone;
}
////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////
CandTrackCamListHandle CandTrackCamList::MakeCandidate(AlgHandle& ah, CandContext& cx)
{
    CandTrackCamListHandle a_handle;
    new CandTrackCamList(ah,a_handle,cx);
    return a_handle;
}
////////////////////////////////////////////////////////////////////////


ClassImp(CandTrackCamList)

