////////////////////////////////////////////////////////////////////////
// $Id: TrkClsSlpSR.cxx,v 1.11 2004/04/10 00:49:14 gmieg Exp $
//
// TrkClsSlpSR
//
// Author:  R. Lee 2001.04.04
////////////////////////////////////////////////////////////////////////

#include <iostream>
#include <string>

#include "CandTrackSR/TrackClusterSR.h"
#include "CandTrackSR/TrkClsSlpSR.h"
#include "MessageService/MsgService.h"
#include "Navigation/XxxItr.h"

ClassImp(TrkClsSlpSR)

//______________________________________________________________________
CVSID("$Id: TrkClsSlpSR.cxx,v 1.11 2004/04/10 00:49:14 gmieg Exp $");

//______________________________________________________________________
TrkClsSlpSR::TrkClsSlpSR() :
  fTrackCluster(0)
, fForwardSlope(0.)
, fBackwardSlope(0.)
, fIndex(0)
{
}

//______________________________________________________________________
TrkClsSlpSR::TrkClsSlpSR(TrackClusterSR *tc) :
  fTrackCluster(0)
, fForwardSlope(0.)
, fBackwardSlope(0.)
, fIndex(0)
{

// copy trackcluster
  if (tc) fTrackCluster = new TrackClusterSR(*tc);
}

//______________________________________________________________________
TrkClsSlpSR::TrkClsSlpSR(const TrkClsSlpSR &rhs) :   // Copy Constructor
  TObject(rhs)
, fTrackCluster(0)
, fForwardSlope(rhs.fForwardSlope)
, fBackwardSlope(rhs.fBackwardSlope)
, fIndex(rhs.fIndex)
{
  if (rhs.fTrackCluster)
    fTrackCluster = new TrackClusterSR(*rhs.fTrackCluster);
}

//______________________________________________________________________
TrkClsSlpSR::~TrkClsSlpSR()
{
  delete fTrackCluster;
}

//______________________________________________________________________
Bool_t TrkClsSlpSR::IsEquivalent(const TrkClsSlpSR *rhs) const
{
  if (!(this->fForwardSlope  == rhs->fForwardSlope   &&
        this->fBackwardSlope == rhs->fBackwardSlope  &&
        this->fIndex         == rhs->fIndex          )) {
    MSG("VCand", Msg::kDebug)
                          << "TrkClsSlpSR primitive members [not ok]\n";
    return false;
  }

  if (this->fTrackCluster == rhs->fTrackCluster) {
    MSG("VCand", Msg::kDebug)
                     << "TrkClsSlpSR::fTrackCluster \t[shallow copy]\n";
    return false;
  }

  if (!((this->fTrackCluster)->IsEquivalent(rhs->fTrackCluster))) {
    MSG("VCand", Msg::kDebug) << "TrkClsSlpSR fTrackCluster [not ok]\n";
    return false;
  }

  return true;
}

XXXITRIMP(TrkClsSlpSR)
