5 #ifndef ALIEVEEVENTBUFFER_H
6 #define ALIEVEEVENTBUFFER_H
8 /* This file is property of and copyright by the ALICE HLT Project *
9 * ALICE Experiment at CERN, All rights reserved. *
10 * See cxx source for full Copyright notice
13 /** @file AliEveEventBuffer.h
16 @brief Manager for HOMER in aliroot
27 class AliEveEventBuffer : public TObject{
31 /** default constructor */
35 virtual ~AliEveEventBuffer();
37 void SetBufferSize(Int_t bs) { fBufferSize = bs;}
38 void SetBusy(Bool_t busy) { fBusy = busy;}
39 Bool_t GetBusy() { return fBusy;}
41 //Navigate the event buffer
42 // TObject * NavigateFwd();
43 // TObject * NavigateBack();
44 TObject * NextEvent();
48 void StartBufferMonitor();
49 void StopBufferMonitor();
50 //Needed for Homer buffer
51 virtual void ConnectToSource() = 0;
52 //Check if more events are needed in buffer
55 static void * BufferThread(void * buffer);
56 virtual void WriteToFile(Int_t runnumber) = 0;
58 void CreateBufferThread();
60 ULong64_t GetEventId() const { return fEventId[fBIndex[kCurrent]]; }
61 void SetEventId(ULong64_t eventId) { fEventId[fBIndex[kCurrent]] = eventId;}
63 Int_t LockMutex() { return fMutex->TryLock();}
64 Int_t UnLockMutex() { return fMutex->UnLock();}
81 //TClonesArray containing the stored events
82 TObjArray * fEventBuffer;
84 //Pointer to current event
85 TObject * fCurrentEvent;
87 //Event buffer indexes
92 virtual void AddToBuffer(TObject * event);
93 virtual TObject * GetEventFromSource() = 0;
94 virtual ULong64_t GetEventIdFromSource() { return 0;}
100 //Calculate buffer index stuff
101 Int_t CalculateDifference(Int_t top, Int_t low);
102 Int_t CalculatePrevious(Int_t current);
103 Int_t CalculateNext(Int_t current);
106 void SetBufferMonStarted(Bool_t started) {fBufferMonStarted = started;}
107 Bool_t GetBufferMonStarted () const { return fBufferMonStarted;}
111 /** copy constructor prohibited */
112 AliEveEventBuffer(const AliEveEventBuffer&);
114 /** assignment operator prohibited */
115 AliEveEventBuffer& operator=(const AliEveEventBuffer&);
119 TObject * GetNextUnSeen();
127 ULong64_t * fEventId;
129 Bool_t fBufferMonStarted;
134 ClassDef(AliEveEventBuffer, 0); // Manage connections to HLT data-sources.