//-------------------------------------------------------------------------
#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])
fBufferSize(size),
fNBuffered(0),
fIndex(0),
+ fCurrentBin(0),
fTree(0),
fEventPool(0),
fEventBuffer(new AliAODEvent*[size])
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);
}
//-------------------------------------------------------------------------
#include "AliInputEventHandler.h"
-class TObject;
+class AliVEventPool;
class AliAODEvent;
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);}
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);
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);
};