////////////////////////////////////////////////////////////////////////
// Package: CandFitTrackCam
//
// CandFitTrackCamList
//
// marshall@hep.phy.cam.ac.uk
////////////////////////////////////////////////////////////////////////
#include "CandFitTrackCam/CandFitTrackCamList.h"
#include "CandFitTrackCam/CandFitTrackCamListHandle.h"
#include "Algorithm/AlgHandle.h"
#include "MessageService/MsgService.h"

CVSID("$Id: CandFitTrackCamList.cxx,v 1.2 2005/10/31 11:35:27 marshall Exp $");

CandFitTrackCamList::CandFitTrackCamList ()
{
}

CandFitTrackCamList::CandFitTrackCamList(AlgHandle& ah)
    : CandFitTrackList(ah)
{
}

CandFitTrackCamList::CandFitTrackCamList(AlgHandle& ah, CandHandle& ch, CandContext& cx)
    : CandFitTrackList(ah)
{
    this->CreateLocalHandle();
    {
        CandFitTrackCamListHandle a_handle(this);
        ch = a_handle;
    }
    ah.RunAlg(ch,cx);
}

CandFitTrackCamList::CandFitTrackCamList(const CandFitTrackCamList& rhs)
    : CandFitTrackList(rhs)
{
}

CandFitTrackCamList::~CandFitTrackCamList()
{
}

void CandFitTrackCamList::CreateLocalHandle()
{
    this->SetLocalHandle(new CandFitTrackCamListHandle(this));
}

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

CandFitTrackCamListHandle CandFitTrackCamList::MakeCandidate(AlgHandle& ah, CandContext& cx)
{
    CandFitTrackCamListHandle a_handle;
    new CandFitTrackCamList(ah,a_handle,cx);
    return a_handle;
}

ClassImp(CandFitTrackCamList)

