////////////////////////////////////////////////////////////////////////
// $Id: CandTrackSRListHandle.cxx,v 1.8 2004/04/23 01:18:24 gmieg Exp $
//
// CandTrackSRListHandle
//
// CandTrackSRListHandle is specialized access handle to CandTrackSRList
//
// Each concrete CandHandle must define a DupHandle function.
//
// Author:  R. Lee 2001.02.26
////////////////////////////////////////////////////////////////////////

#include <cassert>
#include <iostream>

#include "CandTrackSR/CandTrackSRListHandle.h"
#include "CandTrackSR/CandTrackSRList.h"
#include "CandTrackSR/TrackClusterSR.h"
#include "MessageService/MsgService.h"

ClassImp(CandTrackSRListHandle)

//______________________________________________________________________
CVSID("$Id: CandTrackSRListHandle.cxx,v 1.8 2004/04/23 01:18:24 gmieg Exp $");

//______________________________________________________________________
CandTrackSRListHandle::CandTrackSRListHandle()
{
}

//______________________________________________________________________
CandTrackSRListHandle::CandTrackSRListHandle(
                                     const CandTrackSRListHandle &cdh) :
  CandTrackListHandle(cdh)
{
}

//______________________________________________________________________
CandTrackSRListHandle::CandTrackSRListHandle(CandTrackSRList *cd) :
  CandTrackListHandle(cd)
{
}

//______________________________________________________________________
CandTrackSRListHandle::~CandTrackSRListHandle()
{
}

//______________________________________________________________________
CandTrackSRListHandle *CandTrackSRListHandle::DupHandle() const
{
  return (new CandTrackSRListHandle(*this));
}


//______________________________________________________________________
void CandTrackSRListHandle::Trace(const char *c) const
{
  MSG("Cand", Msg::kDebug)
      << "**********Begin CandTrackSRListHandle::Trace(\"" << c << "\")"
                                                                 << endl
     << "Information from CandTrackSRListHandle's CandHandle: " << endl;
  CandHandle::Trace(c);
  MSG("Cand", Msg::kDebug)
        << "**********End CandTrackSRListHandle::Trace(\"" << c << "\")"
                                                                << endl;
}

//______________________________________________________________________
void CandTrackSRListHandle::AddTrackCluster(TrackClusterSR *tc)
{
  TrackClusterSR *newtc = new TrackClusterSR(*tc);
  dynamic_cast<CandTrackSRList *>
                    (GetOwnedCandBase())->fTrackClusterList->Add(newtc);
}

//______________________________________________________________________
TObjArray *CandTrackSRListHandle::GetTrackClusterList() const
{
  return dynamic_cast<const CandTrackSRList *>
                                     (GetCandBase())->fTrackClusterList;
}

//______________________________________________________________________
void CandTrackSRListHandle::SetCPUTime(Double_t cputime)
{
  dynamic_cast<CandTrackSRList *>
                               (GetOwnedCandBase())->fCPUTime = cputime;
}

//______________________________________________________________________
Double_t CandTrackSRListHandle::GetCPUTime() const
{
  return dynamic_cast<const CandTrackSRList *>(GetCandBase())->fCPUTime;
}

XXXITRIMP(CandTrackSRListHandle)
