#ifndef HMDCCALTABLE_H
#define HMDCCALTABLE_H
#include "TCollection.h"
#include "TObject.h"
#include "hmdccal3.h"
class HMdcCalLink;
class HMdcCalLinkListIter;
class HMdcCell{
private:
HMdcCalLink** fHits;
Int_t fNHits;
public:
HMdcCell(void) : fNHits(0) {fHits = new HMdcCalLink*[10];}
HMdcCell(Int_t maxHits) : fNHits(0){fHits = new HMdcCalLink*[maxHits];}
~HMdcCell(void){delete [] fHits;}
HMdcCalLink* getHit(Int_t idx);
void setHit(HMdcCalLink* link, Int_t idx);
void removeHit(HMdcCalLink* link);
void removeHits(void);
Int_t getNHits(void){return fNHits;}
};
class HMdcCalLinkList : public TObject {
friend class HMdcCalLinkListIter;
private:
HMdcCell* fCells;
HMdcCalLink *fFirst;
HMdcCalLink *fLast;
Int_t fMaxHitsPerCell;
Int_t fCapacity;
HMdcCalLink* newLink(HMdcCal3* hit, HMdcCalLink* prev=0);
void add(HMdcCal3 *hit);
public:
HMdcCalLinkList():fMaxHitsPerCell(10), fCapacity(208) { fFirst = fLast = 0; fCells = new HMdcCell[fCapacity];}
HMdcCalLinkList(Int_t maxHits, Int_t cap) :fMaxHitsPerCell(maxHits),fCapacity(cap) { fFirst = fLast = 0; fCells = new HMdcCell[fCapacity];}
~HMdcCalLinkList();
void clear(Option_t* option = "");
void deleteList();
HMdcCalLinkListIter *MakeIterator(Bool_t dir = kIterForward) const;
void addHits(HMdcCal3 *hit1, HMdcCal3* hit2);
void swap(HMdcCalLink* link1, HMdcCalLink* link2);
void remove(HMdcCal3 *hit);
void remove(HMdcCalLink* lnk);
void deleteLink(HMdcCalLink *lnk);
HMdcCalLink *getFirst() const { return fFirst; }
HMdcCalLink *getLast() const { return fLast; }
Int_t getCapacity(void) {return fCapacity;}
HMdcCell* getCell(Int_t idx){
if(idx<fCapacity) return (fCells + idx);
return NULL;
}
ClassDef(HMdcCalLinkList,0)
};
class HMdcCalLink {
friend class HMdcCalLinkList;
private:
HMdcCalLink *fNext;
HMdcCalLink *fPrev;
HMdcCalLink *fPartner;
HMdcCal3 *fData;
protected:
HMdcCalLink() { fNext = fPrev = this; fData = 0; fPartner = 0;}
public:
HMdcCalLink(HMdcCal3 *hit) : fNext(0), fPrev(0), fPartner(0), fData(hit) {hit->setLink(this);}
HMdcCalLink(HMdcCal3 *hit, HMdcCalLink *lnk);
virtual ~HMdcCalLink() {;}
HMdcCal3* getData() const { return fData; }
void setData(HMdcCal3 *hit) { fData = hit; }
HMdcCalLink *getNext() { return fNext; }
HMdcCalLink *getPrevious() { return fPrev; }
HMdcCalLink *getPartner(){ return fPartner;}
void setNext(HMdcCalLink * link){fNext = link;}
void setPrevious(HMdcCalLink* link){fPrev = link;}
void setPartner(HMdcCalLink* link){fPartner = link;}
ClassDef(HMdcCalLink,0)
};
class HMdcCalLinkListIter {
private:
const HMdcCalLinkList *fList;
HMdcCalLink *fCurCursor;
HMdcCalLink *fCursor;
Bool_t fDirection;
Bool_t fStarted;
public:
HMdcCalLinkListIter() : fList(0), fCursor(0), fStarted(kFALSE) { }
HMdcCalLinkListIter(const HMdcCalLinkList *l, Bool_t dir = kIterForward);
virtual ~HMdcCalLinkListIter() { }
HMdcCal3* Next();
void Reset() { fStarted = kFALSE; }
ClassDef(HMdcCalLinkListIter,0)
};
#endif
Last change: Sat May 22 12:59:59 2010
Last generated: 2010-05-22 12:59
This page has been automatically generated. If you have any comments or suggestions about the page layout send a mail to ROOT support, or contact the developers with any questions or problems regarding ROOT.