remove obsolate macro
[u/mrichter/AliRoot.git] / EVE / EveHLT / AliEveEventBuffer.h
CommitLineData
30e7579c 1//-*- Mode: C++ -*-
2
3// $Id$
4
5#ifndef ALIEVEEVENTBUFFER_H
6#define ALIEVEEVENTBUFFER_H
7
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
11 */
12
13/** @file AliEveEventBuffer.h
14 @author Svein Lindal
15 @date
16 @brief Manager for HOMER in aliroot
17*/
18
19
20class TObjArray;
21class TObject;
22class TTimer;
23class TThread;
765675f2 24#include "TMutex.h"
30e7579c 25#include "TTimer.h"
26
27class AliEveEventBuffer : public TObject{
28
29public:
30
31 /** default constructor */
32 AliEveEventBuffer();
33
34 /** destructor */
35 virtual ~AliEveEventBuffer();
36
37 void SetBufferSize(Int_t bs) { fBufferSize = bs;}
38 void SetBusy(Bool_t busy) { fBusy = busy;}
239fdf4e 39 Bool_t GetBusy() { return fBusy;}
40
30e7579c 41 //Navigate the event buffer
42 // TObject * NavigateFwd();
43 // TObject * NavigateBack();
44 TObject * NextEvent();
45 TObject * Back();
46 TObject * Fwd();
47
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
53 void MonitorBuffer();
54
55 static void * BufferThread(void * buffer);
cc87822c 56 virtual void WriteToFile(Int_t runnumber) = 0;
30e7579c 57
239fdf4e 58 void CreateBufferThread();
59
8676f4b1 60 ULong64_t GetEventId() const { return fEventId[fBIndex[kCurrent]]; }
cc87822c 61 void SetEventId(ULong64_t eventId) { fEventId[fBIndex[kCurrent]] = eventId;}
239fdf4e 62
765675f2 63 Int_t LockMutex() { return fMutex->TryLock();}
64 Int_t UnLockMutex() { return fMutex->UnLock();}
65
66
30e7579c 67protected:
68
69 enum fBufferIndex {
70 kCurrent,
71 kLast,
72 kTop,
73 kSize
74 };
75
76
77 Int_t fBufferSize;
78 Int_t fPreBuffer;
79 Bool_t fBusy;
80
81 //TClonesArray containing the stored events
82 TObjArray * fEventBuffer;
83
84 //Pointer to current event
85 TObject * fCurrentEvent;
86
87 //Event buffer indexes
88 Int_t fBIndex[kSize];
89
90
91 //Add event to buffer
92 virtual void AddToBuffer(TObject * event);
30e7579c 93 virtual TObject * GetEventFromSource() = 0;
8676f4b1 94 virtual ULong64_t GetEventIdFromSource() { return 0;}
95
30e7579c 96
97 void FetchEvent();
98
99
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);
104
30e7579c 105
b088c0a1 106 void SetBufferMonStarted(Bool_t started) {fBufferMonStarted = started;}
107 Bool_t GetBufferMonStarted () const { return fBufferMonStarted;}
30e7579c 108
109private:
110
111 /** copy constructor prohibited */
112 AliEveEventBuffer(const AliEveEventBuffer&);
113
114 /** assignment operator prohibited */
115 AliEveEventBuffer& operator=(const AliEveEventBuffer&);
116
239fdf4e 117
30e7579c 118
119 TObject * GetNextUnSeen();
120
121 void PrintIndeces();
122 void PrintBuffer();
123
124 TTimer * fTimer;
125
30e7579c 126 //Current event id
8676f4b1 127 ULong64_t * fEventId;
30e7579c 128
b088c0a1 129 Bool_t fBufferMonStarted;
130
1c2d08b8 131 TThread * fThread;
765675f2 132 TMutex * fMutex;
30e7579c 133
134 ClassDef(AliEveEventBuffer, 0); // Manage connections to HLT data-sources.
135};
136
137#endif