AliTOFHitDataBuffer: implementation changed. now using TClonesArray of AliTOFHitData...
authorrpreghen <rpreghen@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 29 Sep 2009 14:52:46 +0000 (14:52 +0000)
committerrpreghen <rpreghen@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 29 Sep 2009 14:52:46 +0000 (14:52 +0000)
TOF/AliTOFHitDataBuffer.cxx
TOF/AliTOFHitDataBuffer.h

index 39d23f2..2fe97c3 100644 (file)
@@ -32,58 +32,37 @@ container for TOF raw data
 ////////////////////////////////////////////////////////////////////////
 
 #include "AliLog.h"
-
-//#include "AliTOFHitData.h"
 #include "AliTOFHitDataBuffer.h"
 
 ClassImp(AliTOFHitDataBuffer)
 
-AliTOFHitDataBuffer::AliTOFHitDataBuffer(Int_t bufferSize) :
+AliTOFHitDataBuffer::AliTOFHitDataBuffer() :
   TObject(),
-  fBufferSize(bufferSize),
-  fBuffer(new AliTOFHitData[bufferSize]),
-  fEntries(0)
+  fBuffer("AliTOFHitData")
 {
+  fBuffer.SetOwner(kTRUE);
 }
 
 //-----------------------------------------------------------------------------
-AliTOFHitDataBuffer::AliTOFHitDataBuffer(const AliTOFHitDataBuffer &source):
-  TObject(source),
-  fBufferSize(source.fBufferSize),
-  fBuffer(new AliTOFHitData[fBufferSize]),
-  fEntries(source.fEntries)
+
+AliTOFHitDataBuffer::AliTOFHitDataBuffer(Int_t size) :
+  TObject(),
+  fBuffer("AliTOFHitData", size)
 {
-  // copy ctr
-  for (Int_t i = 0; i < fEntries; ++i)
-    fBuffer[i] = source.fBuffer[i];
+  fBuffer.SetOwner(kTRUE);
 }
 
 //-----------------------------------------------------------------------------
-AliTOFHitDataBuffer& AliTOFHitDataBuffer::operator=(const AliTOFHitDataBuffer & source) 
-{ 
-  // ass operator
-  if(this!=&source) {
-    TObject::operator=(source);
-    fEntries = source.fEntries < fBufferSize ? source.fEntries : fBufferSize;
-    for (Int_t i = 0; i < fEntries; ++i) fBuffer[i]=source.fBuffer[i];
-  }
-  return *this;
-}
 
-//-----------------------------------------------------------------------------
 AliTOFHitDataBuffer::~AliTOFHitDataBuffer()
 {
-  delete [] fBuffer;
 }
 
 //-----------------------------------------------------------------------------
 Bool_t AliTOFHitDataBuffer::Add(AliTOFHitData &HitData) {
   // adding a new entry 
-  if (fEntries >= fBufferSize){
-    AliError("The buffer is completely full. ");
-    return kTRUE;
-  }
-  fBuffer[fEntries++] = HitData;
+
+  new (fBuffer[GetEntries()]) AliTOFHitData(HitData);
   return kFALSE;
 }
 
index 19721aa..76a9443 100644 (file)
 
 #include "TObject.h"
 #include "AliTOFHitData.h"
+#include "TClonesArray.h"
 
-//class AliTOFHitData;
-
-//data buffer size
-#define DATA_BUFFER_SIZE 10000
-
-class AliTOFHitDataBuffer : public TObject{
+class AliTOFHitDataBuffer : 
+public TObject
+{
   
  public:
 
-  AliTOFHitDataBuffer(Int_t BufferSize = DATA_BUFFER_SIZE);
-  ~AliTOFHitDataBuffer();  
-  AliTOFHitDataBuffer(const AliTOFHitDataBuffer &source);
-  AliTOFHitDataBuffer& operator=(const AliTOFHitDataBuffer & source); 
-  void           Reset() {fEntries = 0;};
-  Bool_t         Add(AliTOFHitData &HitData);
+  AliTOFHitDataBuffer(); // default constructor 
+  AliTOFHitDataBuffer(Int_t size); // overloaded constructor
+  ~AliTOFHitDataBuffer();   // default destructor
+  AliTOFHitDataBuffer(const AliTOFHitDataBuffer &source) : TObject(source), fBuffer(source.fBuffer) {}; // copy constructor 
+  AliTOFHitDataBuffer& operator=(const AliTOFHitDataBuffer & source) {
+    if (&source != this) {
+      TObject::operator=(source);
+      fBuffer = source.fBuffer;
+    }
+    return *this;
+  }; // operator =
+
+  void Reset() {fBuffer.Clear();}; // reset
+  Bool_t Add(AliTOFHitData &HitData); // add
   
-  AliTOFHitData *GetBuffer() {return fBuffer;};
-  AliTOFHitData *GetHit(Int_t Hit) const {return (Hit < fBufferSize ? &fBuffer[Hit] : 0x0);};
-  Int_t          GetEntries() const {return fEntries;};
+  TClonesArray *GetBuffer() {return &fBuffer;}; // get buffer
+  AliTOFHitData *GetHit(Int_t Hit) const {return (Hit < GetEntries() ? (AliTOFHitData *)fBuffer.At(Hit) : 0x0);}; // get hit
+  Int_t GetEntries() const {return fBuffer.GetEntries();}; // get entries
   
  private:
-  Int_t          fBufferSize; // buffer size
-  AliTOFHitData *fBuffer;     // buffer
-  Int_t          fEntries;    // entries
+
+  TClonesArray fBuffer; // buffer
 
   ClassDef(AliTOFHitDataBuffer, 1);
 };