CCyclicCollection.h
//-----------------------------------------------------------------------------
// $Header: /tmp_mnt/asis/offline/ceres/cool/project/RCS/CCyclicCollection.h,v 2.1 1996/10/04 08:43:20 voigt Exp $
//
// COOL Program Library
// Copyright (C) CERES collaboration, 1996
//
// Declaration of CCyclicCollection<T> class.
//
// CCyclicCollection: template class to handle one- and two-dimensional access to
// CERES raw data in a way, that the first argument of the
// two-dim access is cyclic (i.e. 0==360). Used for anodes
// of SiDCs.
//
// ATTENTION: to use RWTPtrOrderedVector<T> below, the class T MUST have :
// ========== - a well defined equality semantics (T::operator==(const T&))
// - functions getX() and getY() to get coordinates for the array
//
//-----------------------------------------------------------------------------
#ifndef CCYCLICCOLLECTION_H
#define CCYCLICCOLLECTION_H
#include "cool.h"
#include "rw/tpordvec.h"
#include "CCollection.h"
template<class T> class CCyclicCollection : public CCollection<T> {
protected:
virtual long where (int x, int y) const; // calculates index from x/y according to maxX/Y
virtual CBoolean boundCheck(int x, int y) const;
};
#ifdef RW_COMPILE_INSTANTIATE
#include "CCyclicCollection.C"
#endif
#endif /* CCYCLICCOLLECTION_H */