#ifndef __TUsrHitBuffer_h__
#define __TUsrHitBuffer_h__
#include "TObject.h"
#include "TString.h"
#include "TClonesArray.h"
#include "TUsrHit.h"
class TUsrHitBuffer : public TObject {
public:
TUsrHitBuffer(Int_t NofEntries = 2500) {
fNofEntries = NofEntries;
fNofHits = 0;
fHits = NULL;
};
virtual ~TUsrHitBuffer() {
if (fHits) delete fHits;
};
inline void SetName(const Char_t * BufferName) { fBufName = BufferName; };
inline const Char_t * GetName() const { return fBufName.Data(); };
Int_t AllocClonesArray(const Char_t * HitObj, Int_t NofEntries, Int_t HighWater = 0);
inline Int_t AllocClonesArray(Int_t NofEntries, Int_t HighWater = 0) { return(this->AllocClonesArray("TUsrHit", NofEntries, HighWater)); };
void Reset();
TUsrHit * AddHit(Int_t EventNumber, Int_t ModuleNumber, Int_t Channel,
UShort_t BufferTimeHi, UShort_t EventTimeHi, UShort_t FastTrigTime,
UShort_t * Data, Int_t NofData);
TUsrHit * AddHit(Int_t EventNumber, Int_t ModuleNumber, Int_t Channel,
UShort_t * ChannelTime,
UShort_t * Data, Int_t NofData);
Bool_t AddHit(const TUsrHit * Hit);
TUsrHit * GetHitAt(Int_t Index);
Bool_t RemoveHit(TUsrHit * Hit);
Bool_t RemoveHit(Int_t Index);
inline Int_t GetNofEntries() const { return(fNofEntries); };
inline Int_t GetNofHits() const { return(fNofHits); };
inline void SetHighWater(Int_t HighWater) { fHighWater = (HighWater >= fNofEntries) ? 0 : HighWater; };
inline Int_t GetHighWater() const { return(fHighWater); };
Bool_t IsHighWater(Bool_t Verbose = kFALSE) const;
inline void Sort(Int_t UpTo = kMaxInt) { fHits->Sort(UpTo); };
inline TClonesArray * GetCA() const { return(fHits); };
void Print(Option_t * Option) const { TObject::Print(Option); };
void Print(ostream & Out, Int_t Begin = 0, Int_t End = -1, Bool_t EnergyLongFlag = kFALSE) const;
inline void Print(Int_t Begin = 0, Int_t End = -1, Bool_t EnergyLongFlag = kFALSE) const { Print(cout, Begin, End, EnergyLongFlag); };
protected:
TString fBufName;
Int_t fNofEntries;
Int_t fNofHits;
Int_t fOffset;
Int_t fHighWater;
TClonesArray * fHits;
ClassDef(TUsrHitBuffer, 1)
};
#endif