fCurrentEvent(NULL),
fBIndex(),
fTimer(NULL),
- fThread(NULL),
fEventId(),
fBufferMonStarted(kFALSE)
{
// see header file for class documentation
- fEventBuffer = new TObjArray(10, 0);
- fEventBuffer->SetOwner(kTRUE);
+ fEventBuffer = new TObjArray(fBufferSize, 0);
+ fEventBuffer->SetOwner(kFALSE);
for(int id = 0; id < kSize; id++) {
fBIndex[id] = -1;
}
fTimer = new TTimer();
- fTimer->Connect("Timeout()", "AliEveEventBuffer", this, "MonitorBuffer()");
+ fTimer->Connect("Timeout()", "AliEveEventBuffer", this, "CreateBufferThread()");
fEventId = new Int_t[fBufferSize];
}
+void AliEveEventBuffer::CreateBufferThread() {
+ cout << "hereherehere"<<endl;
+ TThread * fThread = new TThread(AliEveEventBuffer::BufferThread, (void*) this);
+ fThread->Run();
+
+}
+
///___________________________________________________________________________
void * AliEveEventBuffer::BufferThread(void * buffer) {
+ cout <<"BufferThread : " <<endl;
if(buffer) {
- if (!reinterpret_cast<AliEveEventBuffer*>(buffer)->GetBufferMonStarted()) {
- reinterpret_cast<AliEveEventBuffer*>(buffer)->StartBufferMonitor();
+ if (!reinterpret_cast<AliEveEventBuffer*>(buffer)->GetBusy()) {
+ reinterpret_cast<AliEveEventBuffer*>(buffer)->MonitorBuffer();
+ } else {
+ cout << "busy"<<endl;
}
+
+ } else {
+ cout << "no buffer"<<endl;
}
return (void*)0;
}
///_______________________________________________________________________________
TObject * AliEveEventBuffer::NextEvent() {
//See header file for documentation
- if(fBusy) {
- cout << "Event Buffer busy"<<endl;
- return NULL;
- }
- else SetBusy(kTRUE);
cout << "In enxtevent"<<endl;
+
+
+ // if(fBusy) {
+ // cout << "Event Buffer busy"<<endl;
+ // return NULL;
+ // }
+ // else SetBusy(kTRUE);
TObject * nextEvent = GetNextUnSeen();
- SetBusy(kFALSE);
+ //SetBusy(kFALSE);
return nextEvent;
}
///________________________________________________________________________________
TObject * AliEveEventBuffer::GetNextUnSeen() {
//See header file for documentation
- cout << "GetNextUnSeend"<<endl;
+ cout << "GetNextUnSeen"<<endl;
PrintIndeces();
if(CalculateDifference(fBIndex[kTop], fBIndex[kLast])) {
fBIndex[kLast] = CalculateNext(fBIndex[kLast]);
fBIndex[kTop] = CalculateNext(fBIndex[kTop]);
//Delete the event already there (ok to delete as object, not aliesdevent, TList?)
- TObject * object = fEventBuffer->At(fBIndex[kTop]);
- if (object) delete object;
+ //TObject * object = fEventBuffer->At(fBIndex[kTop]);
+ fEventBuffer->RemoveAt(fBIndex[kTop]);
+ //if (object) delete object;
fEventBuffer->AddAt(event, fBIndex[kTop]);
}
void AliEveEventBuffer::StartBufferMonitor() {
//cout << "NOT !!! starting buffer mon"<<endl;
cout << "starting buffer mon"<<endl;
+ SetBufferMonStarted(kTRUE);
fTimer->Start(5000);
}
///___________________________________________________________________________________
void AliEveEventBuffer::StopBufferMonitor() {
cout << "Stopping buffer mon"<<endl;
+ SetBufferMonStarted(kFALSE);
fTimer->Stop();
}
void SetBufferSize(Int_t bs) { fBufferSize = bs;}
void SetBusy(Bool_t busy) { fBusy = busy;}
-
+ Bool_t GetBusy() { return fBusy;}
+
//Navigate the event buffer
// TObject * NavigateFwd();
// TObject * NavigateBack();
Int_t GetEventId() const { return fEventId[fBIndex[kCurrent]];}
+ void CreateBufferThread();
+
+
protected:
enum fBufferIndex {
/** assignment operator prohibited */
AliEveEventBuffer& operator=(const AliEveEventBuffer&);
+
TObject * GetNextUnSeen();
TTimer * fTimer;
- TThread * fThread;
-
//Current event id
Int_t * fEventId;
}
//Copy event into new event (must be deleted when no longer needed in list!!
- AliESDEvent * event = new AliESDEvent();
- fEvent->Copy(*event);
- cout << event->GetNumberOfCaloClusters() << endl;
+ //AliESDEvent * event = new AliESDEvent();
+ //fEvent->Copy(*event);
+ //cout << event->GetNumberOfCaloClusters() << endl;
- if (event) {
- return dynamic_cast<TObject*>(event);
+ if (fEvent) {
+ return dynamic_cast<TObject*>(fEvent);
} else {
cout << "error getting event" << endl;
return NULL;
}
+
///_______________________________________________________________________________________
void AliEveHLTEventManager::ConnectEventBuffer() {
GetEventBuffer()->ConnectToSource();
///___________________________________________________________________________________________
void AliEveHLTEventManager::StartBufferMonitor() {
AliEveEventBuffer * buffer = GetEventBuffer();
- if(buffer) {
- TThread * fThread = new TThread(AliEveEventBuffer::BufferThread, (void*) buffer);
- fThread->Run();
- } else {
- cout << "Buffer does not exist " << endl;
- }
+ buffer->StartBufferMonitor();
}
+
//______________________________________________________________________________________________
Int_t AliEveHLTEventManager::ProcessEvent(AliESDEvent * event) {
return 0;
}
+///___________________________________________________________________________________________
void AliEveHLTEventManager::ProcessBlock(AliHLTHOMERBlockDesc * block) {
//See header file for documentation
AliEveHLTEventManagerOffline::AliEveHLTEventManagerOffline() :
AliEveHLTEventManager(),
- fEvent(NULL),
fEventBuffer(NULL)
{
// see header file for class documentation
AliEveHLTEventManagerOffline::AliEveHLTEventManagerOffline(TString filename) :
AliEveHLTEventManager(),
- fEvent(NULL),
fEventBuffer(NULL)
{
// see header file for class documentation
//DestroyElements();
//DestroyDetectorElements();
- if(fEvent)
- delete fEvent;
- fEvent = NULL;
-
if(fEventBuffer)
delete fEventBuffer;
fEventBuffer = NULL;
void AliEveHLTEventManagerOffline::NextEvent() {
//See header file for documentation
- fEvent = dynamic_cast<AliESDEvent*>(fEventBuffer->NextEvent());
- if(fEvent) {
- //Int_t eventId = fBuffer->GetEventId();
- ProcessEvent(fEvent);
- } else {
- cout << "couldn't get the event"<<endl;
+ AliESDEvent * event = dynamic_cast<AliESDEvent*>(fEventBuffer->NextEvent());
+
+ if(event) {
+ //Int_t eventId = fBuffer->GetEventId();
+ ProcessEvent(event);
+ } else {
+ cout << "couldn't get the event"<<endl;
+ }
}
}
void AliEveHLTEventManagerOffline::NavigateFwd() {
//See header file for documentation
- fEvent = dynamic_cast<AliESDEvent*>(fEventBuffer->Fwd());
- if(fEvent) {
- ProcessEvent(fEvent);
+ AliESDEvent * event = dynamic_cast<AliESDEvent*>(fEventBuffer->Fwd());
+ if(event) {
+ ProcessEvent(event);
} else {
cout << "couldn't get the fwd event"<<endl;
}
void AliEveHLTEventManagerOffline::NavigateBack() {
//See header file for documentation
- fEvent = dynamic_cast<AliESDEvent*>(fEventBuffer->Back());
- if(fEvent) {
- ProcessEvent(fEvent);
+ AliESDEvent * event = dynamic_cast<AliESDEvent*>(fEventBuffer->Back());
+ if(event) {
+ ProcessEvent(event);
} else {
cout << "couldn't get the back event"<<endl;
}
/** Process the event data */
//Int_t ProcessEvent(AliESDEvent * event);
-
- AliESDEvent * fEvent;
AliEveEventBufferOffline * fEventBuffer;
AliEveEventBuffer * GetEventBuffer() {return fEventBuffer;}
// -------------------------\r
\r
gEventManager = new AliEveHLTEventManagerOffline("/home/slindal/alice/data/PbPb/AliESDs.root");\r
- //gEventManager = new AliEveHLTEventManagerOffline("/home/slindal/alice/QAtasks/AliESDs.root");\r
+\r
gEventManager->SetEveManager(gEve);\r
gEventManager->SetGeoManager(gGeoManager);\r
gEventManager->SetRPhiManager(gRPhiMgr);\r