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

CVSID("$Id: CandFitTrackCam.cxx,v 1.4 2007/11/19 22:15:31 schubert Exp $");

CandFitTrackCam::CandFitTrackCam ()
: fQP_rangebiased(0.) {
}

CandFitTrackCam::CandFitTrackCam(AlgHandle& ah)
  : CandFitTrack(ah),
    fQP_rangebiased(0.)
{
}

CandFitTrackCam::CandFitTrackCam(AlgHandle& ah, CandHandle& ch, CandContext& cx)
  : CandFitTrack(ah),
    fQP_rangebiased(0.)
{
    this->CreateLocalHandle();
    {
        CandFitTrackCamHandle a_handle(this);
        ch = a_handle;
    }
    ah.RunAlg(ch,cx);
}

CandFitTrackCam::CandFitTrackCam(const CandFitTrackCam& rhs)
  : CandFitTrack(rhs),
    fQP_rangebiased(rhs.fQP_rangebiased)
{
}

CandFitTrackCam::~CandFitTrackCam()
{
}

void CandFitTrackCam::CreateLocalHandle()
{
  this->SetLocalHandle(new CandFitTrackCamHandle(this));
}

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

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

ClassImp(CandFitTrackCam)

 
