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

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


////////////////////////////////////////////////////////////////////////
CandTrackCam::CandTrackCam ()
{
}
////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////
CandTrackCam::CandTrackCam(AlgHandle& ah)
    : CandTrack(ah)
{
}
////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////
CandTrackCam::CandTrackCam(AlgHandle& ah, CandHandle& ch, CandContext& cx)
    : CandTrack(ah)
{
    this->CreateLocalHandle();
    {
        CandTrackCamHandle a_handle(this);
        ch = a_handle;
    }
    ah.RunAlg(ch,cx);
}
////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////
CandTrackCam::CandTrackCam(const CandTrackCam& rhs)
    : CandTrack(rhs)
{
}
////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////
CandTrackCam::~CandTrackCam()
{
}
////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////
void CandTrackCam::CreateLocalHandle()
{
  this->SetLocalHandle(new CandTrackCamHandle(this));
}
////////////////////////////////////////////////////////////////////////


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


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


ClassImp(CandTrackCam)

