CRing.h
//-----------------------------------------------------------------------------
// $Header: /tmp_mnt/asis/offline/ceres/cool/project/RCS/CRing.h,v 3.1 1996/12/13 16:13:30 messer Exp $
//
// COOL Program Library
// Copyright (C) CERES collaboration, 1996
//
// Declaration of base class CRing
//
//-----------------------------------------------------------------------------
#ifndef CRING_H
#define CRING_H
#include "cool.h"
#include <float.h>
#include "CCoordinate.h"
class CRing {
public:
enum CRingType { Unknown, Electron, Pion, Fake };
public:
CRing();
CRing(const CRichPadCoord, const double, const CRingType = Unknown);
virtual ~CRing();
CRichPadCoord getCenter() const { return center; }
double getRadius() const { return radius; }
CRingType getType() const { return type; }
int getHitDensity() const { return hitDensity; }
virtual void setCenter(CRichPadCoord cen) { center = cen; }
void setType(CRingType typ) { type = typ; }
void setRadius(double rad) { radius = rad; }
void setHitDensity(int val) { hitDensity = val; }
CBoolean operator== (const CRing& cand) const;
protected:
CRichPadCoord center;
double radius;
CRingType type;
int hitDensity;
};
inline CRing::CRing()
{
center.setX(0);
center.setY(0);
radius = 0;
type = Unknown;
}
inline CRing::CRing(const CRichPadCoord coord, const double rad, const CRingType typ)
{
center = coord;
radius = rad;
type = typ;
}
inline CRing::~CRing() { /* nop */ }
inline CBoolean CRing::operator== (const CRing& ring) const
{
return ( ring.type == type &&
ring.center == center &&
fabs(ring.radius-radius) < FLT_EPSILON );
}
#endif /* CRING_H */