From: morsch Date: Fri, 15 Aug 2008 15:11:43 +0000 (+0000) Subject: Checks for bin change and resets the buffer status. X-Git-Url: http://git.uio.no/git/?a=commitdiff_plain;h=7de026d8cd1be47e0bddc7c1a53610e309eae506;p=u%2Fmrichter%2FAliRoot.git Checks for bin change and resets the buffer status. --- diff --git a/STEER/AliMultiAODInputHandler.cxx b/STEER/AliMultiAODInputHandler.cxx index 10b7e17b99e..654825e660c 100644 --- a/STEER/AliMultiAODInputHandler.cxx +++ b/STEER/AliMultiAODInputHandler.cxx @@ -22,8 +22,8 @@ //------------------------------------------------------------------------- #include "AliMultiAODInputHandler.h" -//#include "AliEventPool.h" #include "AliAODEvent.h" +#include "AliVEventPool.h" #include "AliLog.h" #include #include @@ -31,12 +31,26 @@ 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); } diff --git a/STEER/AliMultiAODInputHandler.h b/STEER/AliMultiAODInputHandler.h index d01798aebc4..3b922879d92 100644 --- a/STEER/AliMultiAODInputHandler.h +++ b/STEER/AliMultiAODInputHandler.h @@ -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); };