]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
Checks for bin change and resets the buffer status.
authormorsch <morsch@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 15 Aug 2008 15:11:43 +0000 (15:11 +0000)
committermorsch <morsch@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 15 Aug 2008 15:11:43 +0000 (15:11 +0000)
STEER/AliMultiAODInputHandler.cxx
STEER/AliMultiAODInputHandler.h

index 10b7e17b99efd95a5df343d25cd5a1e7e66c1671..654825e660c23d35ebdc5c9928d0338488493d7d 100644 (file)
@@ -22,8 +22,8 @@
 //-------------------------------------------------------------------------
 
 #include "AliMultiAODInputHandler.h"
-//#include "AliEventPool.h"
 #include "AliAODEvent.h"
+#include "AliVEventPool.h"
 #include "AliLog.h"
 #include <TObjArray.h>
 #include <TTree.h>
 
 ClassImp(AliMultiAODInputHandler)
 
+AliMultiAODInputHandler::AliMultiAODInputHandler() :
+    AliInputEventHandler(),
+    fBufferSize(0),
+    fNBuffered(0),
+    fIndex(0),
+    fCurrentBin(0),
+    fTree(0),
+    fEventPool(0),
+    fEventBuffer(0)
+{
+  // Default constructor
+}
+
 //______________________________________________________________________________
 AliMultiAODInputHandler::AliMultiAODInputHandler(Int_t size) :
     AliInputEventHandler(),
     fBufferSize(size),
     fNBuffered(0),
     fIndex(0),
+    fCurrentBin(0),
     fTree(0),
     fEventPool(0),
     fEventBuffer(new AliAODEvent*[size])
@@ -52,6 +66,7 @@ AliMultiAODInputHandler::AliMultiAODInputHandler(const char* name, const char* t
     fBufferSize(size),
     fNBuffered(0),
     fIndex(0),
+    fCurrentBin(0),
     fTree(0),
     fEventPool(0),
     fEventBuffer(new AliAODEvent*[size])
@@ -74,23 +89,37 @@ Bool_t AliMultiAODInputHandler::Init(TTree* tree, Option_t* /*opt*/)
     if (!fTree) return kFALSE;
     // Get pointer to AOD event
     fEventBuffer[0]->ReadFromTree(fTree);
-    fIndex = 0;
+    fIndex     = 0;
     fNBuffered = 1;
     return kTRUE;
 }
 
+Bool_t AliMultiAODInputHandler::BeginEvent(Long64_t /*entry*/)
+{
+    // Actions before analysis of each event 
+    //
+    // Reset the number of events buffered for this bin to 0
+    if (fCurrentBin != (fEventPool->BinNumber())) {
+       fCurrentBin = fEventPool->BinNumber();
+       fNBuffered = 0;
+    }
+    return kTRUE;
+}
+
 Bool_t AliMultiAODInputHandler::FinishEvent()
 {
     // 
     // Connect the next event in the buffer to the tree
     fIndex++;
-    fNBuffered++;
-    if (fNBuffered > fBufferSize) fNBuffered = fBufferSize;
     
     fIndex %= fBufferSize;
     AliInfo(Form("Connecting buffer entry %5d", fIndex));
-    fEventBuffer[fIndex]->Clear();
+
     fEventBuffer[fIndex]->ReadFromTree(fTree, "reconnect");
+
+    fNBuffered++;
+    if (fNBuffered > fBufferSize) fNBuffered = fBufferSize;
+
     return (kTRUE);
 }
 
index d01798aebc4502f28f44f55f4c947a42e3147561..3b922879d92df9498a5ee3de5ad6e3cba34fb317 100644 (file)
@@ -12,7 +12,7 @@
 //-------------------------------------------------------------------------
 
 #include "AliInputEventHandler.h"
-class TObject;
+class AliVEventPool;
 class AliAODEvent;
 
 class AliMultiAODInputHandler : public AliInputEventHandler {
@@ -23,12 +23,12 @@ class AliMultiAODInputHandler : public AliInputEventHandler {
     AliMultiAODInputHandler(const char* name, const char* title, Int_t size);
     virtual ~AliMultiAODInputHandler();
     void   SetBufferSize(Int_t size) {fBufferSize = size;}
-    void   SetEventPool(TObject* pool) {fEventPool = pool;}
+    void   SetEventPool(AliVEventPool* pool) {fEventPool = pool;}
     Int_t  GetBufferSize()           const {return fBufferSize;}
     Int_t  GetNBuffered()            const {return fNBuffered;}
     Bool_t IsBufferReady()           const {return (fNBuffered >= fBufferSize);}
     Bool_t IsFreshBuffer()           const {return (fIndex == (fBufferSize - 1));}
-    TObject              *GetEventPool()      const {return fEventPool;}
+    AliVEventPool        *GetEventPool()      const {return fEventPool;}
     virtual AliVEvent    *GetEvent()          const {return 0;}
     virtual AliAODEvent  *GetEvent(Int_t iev) const;
     AliAODEvent          *GetLatestEvent()    const {return GetEvent(fIndex);}
@@ -36,6 +36,8 @@ class AliMultiAODInputHandler : public AliInputEventHandler {
     virtual Bool_t Init(Option_t* /*opt*/)    {return kTRUE;}
     virtual Bool_t Init(TTree* tree, Option_t* /*opt*/);
     virtual Bool_t FinishEvent();
+    virtual Bool_t BeginEvent(Long64_t /*entry*/);
+    
  private:
     AliMultiAODInputHandler(const AliMultiAODInputHandler& handler);             
     AliMultiAODInputHandler& operator=(const AliMultiAODInputHandler& handler);  
@@ -43,8 +45,9 @@ class AliMultiAODInputHandler : public AliInputEventHandler {
     Int_t          fBufferSize;   // Size of the buffer
     Int_t          fNBuffered;    // Number of events actually buffered
     Int_t          fIndex;        // Pointer to most recent event
+    Int_t          fCurrentBin;   // Current bin from the pool
     TTree*         fTree;         // Pointer to the tree
-    TObject*       fEventPool;    // Pointer to the pool
+    AliVEventPool* fEventPool;    // Pointer to the pool
     AliAODEvent**  fEventBuffer;  // The event buffer
     ClassDef(AliMultiAODInputHandler, 1);
 };