#ifndef HENRIK_CLUSTER_LISTNODE_H
#define HENRIK_CLUSTER_LISTNODE_H

////////////////////////////////////////////////////////////////////////
// Author: Henrik Tydesjo                                             //
// Class for the nodes to put in the cluster list (HenrikClusterList) //
//                                                                    //
////////////////////////////////////////////////////////////////////////  

#include <Rtypes.h>

class HenrikClusterListNode {

 public:
  HenrikClusterListNode();
  HenrikClusterListNode(Float_t col, Float_t row, UShort_t size, UShort_t widthZ, UShort_t widthPhi, UShort_t type, HenrikClusterListNode* next);
  HenrikClusterListNode(const HenrikClusterListNode& obj);
  virtual ~HenrikClusterListNode();
  HenrikClusterListNode& operator=(const HenrikClusterListNode& obj);

  Float_t  Col() const {return fCol;}
  Float_t  Row() const {return fRow;}
  UShort_t Size() const {return fSize;}
  UShort_t WidthZ() const {return fWidthZ;}
  UShort_t WidthPhi() const {return fWidthPhi;}
  UShort_t Type() const {return fType;}
  HenrikClusterListNode*& Next() {return fNext;}

  void       SetCol(Float_t val) {fCol=val;}
  void       SetRow(Float_t val) {fRow=val;}
  void       SetSize(UShort_t val) {fSize=val;}
  void       SetWidthZ(UShort_t val) {fWidthZ=val;}
  void       SetWidthPhi(UShort_t val) {fWidthPhi=val;}
  void       SetType(UShort_t val) {fType=val;}
  void       SetNext(HenrikClusterListNode* obj) {fNext = obj;}

 private:
  Float_t  fCol;
  Float_t  fRow;
  UShort_t fSize;
  UShort_t fWidthZ;
  UShort_t fWidthPhi;
  UShort_t fType;
  HenrikClusterListNode* fNext;

};

#endif
