]> git.uio.no Git - u/mrichter/AliRoot.git/blob - STEER/AliMultiAODInputHandler.h
recMC.C submitMC.sh
[u/mrichter/AliRoot.git] / STEER / AliMultiAODInputHandler.h
1 #ifndef ALIMULTIAODINPUTHANDLER_H
2 #define ALIMULTIAODINPUTHANDLER_H
3 /* Copyright(c) 1998-2007, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice                               */
5
6 /* $Id$ */
7
8 //-------------------------------------------------------------------------
9 //     AOD Input Handler realisation of the AliVEventHandler interface.
10 //     This class handles multiple events for mixing.
11 //     Author: Andreas Morsch, CERN
12 //-------------------------------------------------------------------------
13
14 #include "AliInputEventHandler.h"
15 class AliVEventPool;
16 class AliAODEvent;
17
18 class AliMultiAODInputHandler : public AliInputEventHandler {
19
20  public:
21     AliMultiAODInputHandler();
22     AliMultiAODInputHandler(Int_t size);
23     AliMultiAODInputHandler(const char* name, const char* title, Int_t size);
24     virtual ~AliMultiAODInputHandler();
25     void   SetBufferSize(Int_t size) {fBufferSize = size;}
26     void   SetEventPool(AliVEventPool* pool) {fEventPool = pool;}
27     Int_t  GetBufferSize()           const {return fBufferSize;}
28     Int_t  GetNBuffered()            const {return fNBuffered;}
29     Bool_t IsBufferReady()           const {return (fNBuffered >= (fBufferSize -1));}
30     Bool_t IsFreshBuffer()           const {return (fIndex == (fBufferSize - 1));}
31     AliVEventPool        *GetEventPool()      const {return fEventPool;}
32     virtual AliVEvent    *GetEvent()          const {return 0;}
33     virtual AliAODEvent  *GetEvent(Int_t iev) const;
34     AliAODEvent          *GetLatestEvent()    const {return fEventBuffer[fIndex];}
35     // From the interface
36     virtual Bool_t Init(Option_t* /*opt*/)    {return kTRUE;}
37     virtual Bool_t Init(TTree* tree, Option_t* /*opt*/);
38     virtual Bool_t FinishEvent();
39     virtual Bool_t BeginEvent(Long64_t /*entry*/);
40     
41  private:
42     AliMultiAODInputHandler(const AliMultiAODInputHandler& handler);             
43     AliMultiAODInputHandler& operator=(const AliMultiAODInputHandler& handler);  
44  private:
45     Int_t          fBufferSize;   // Size of the buffer
46     Int_t          fNBuffered;    // Number of events actually buffered
47     Int_t          fIndex;        // Pointer to most recent event
48     Int_t          fCurrentBin;   // Current bin from the pool
49     TTree*         fTree;         // Pointer to the tree
50     AliVEventPool* fEventPool;    // Pointer to the pool
51     AliAODEvent**  fEventBuffer;  // The event buffer
52     ClassDef(AliMultiAODInputHandler, 1);
53 };
54
55 #endif