]> git.uio.no Git - u/mrichter/AliRoot.git/blame - EVE/EveHLT/AliEveEventBufferHomer.cxx
Updated event id displayin, and async blocklist processing
[u/mrichter/AliRoot.git] / EVE / EveHLT / AliEveEventBufferHomer.cxx
CommitLineData
30e7579c 1#if __GNUC__>= 3
2 using namespace std;
3#endif
4
5#include "AliEveEventBufferHomer.h"
6#include "AliEveHOMERManager.h"
7
8#include "TList.h"
9#include "TFile.h"
10
11#include <iostream>
12
13ClassImp(AliEveEventBufferHomer);
14
15///_______________________________________________________________________
16AliEveEventBufferHomer::AliEveEventBufferHomer() :
17 fHomer(NULL),
18 fEventNo(0),
19 fAsyncList(NULL)
20{
21 // see header file for class documentation
22 fHomer = new AliEveHOMERManager();
23 Initialize();
24
25}
26
27
28///____________________________________________________________________
29AliEveEventBufferHomer::~AliEveEventBufferHomer() {
30
31 if(fHomer)
32 delete fHomer;
33 fHomer = NULL;
34
35}
36
37
38
8676f4b1 39ULong64_t AliEveEventBufferHomer::GetEventIdFromSource() {
40 ///
41 return fHomer->GetEventID();
42}
30e7579c 43
44///______________________________________________________________________
45TObject * AliEveEventBufferHomer::GetEventFromSource() {
46 //see header file for documentation
47 if(fHomer) {
48 cout << "calling nexthomerevent"<<endl;
49 TList * blockList = fHomer->NextHOMEREvent();
cc87822c 50 TList * aList = fHomer->GetAsyncBlockList();
51 fAsyncList = aList;
30e7579c 52 if(blockList) return dynamic_cast<TObject*>(blockList);
53 else return NULL;
54 }
55
56 cout << "AliEveEventBufferHomer::GetEventFromSource() : fHomer is null pointer!!"<<endl;
57 return NULL;
58}
8676f4b1 59
30e7579c 60///___________________________________________________________________________
61void AliEveEventBufferHomer::AddToBuffer(TObject * event) {
62 cout << "Add to buffer"<<endl;
63 if(!event) return;
64 fBIndex[kTop] = CalculateNext(fBIndex[kTop]);
65 TList * list = dynamic_cast<TList*>(fEventBuffer->At(fBIndex[kTop]));
66 if(list) {
67 list->Clear();
68 list->AddAll(dynamic_cast<TList*>(event));
69 }
70}
71
8676f4b1 72
30e7579c 73
74///______________________________________________________________________
75void AliEveEventBufferHomer::Initialize() {
76 //Add TList pointers to the buffer array
b088c0a1 77
78 //Create TLists in all of buffer
30e7579c 79 for(Int_t i = 0; i < fBufferSize; i++) {
80 TList * list = new TList();
81 list->SetOwner(kTRUE);
82 fEventBuffer->AddAt(list, i);
83 }
84
b088c0a1 85 //Create the async list
86 fAsyncList = new TList();
87 fAsyncList->SetOwner(kTRUE);
30e7579c 88
89 Int_t iResult = fHomer->Initialize();
90 if(iResult) {
91 cout << "Error Initializing HOMER!!!"<<endl;
92 return;
93 }
94
95
96 fHomer->SetRetryCount(1,15);
97 fHomer->SetBlockOwner(kFALSE);
98 fHomer->StartEveSourceListLoop();
99}
100
101
102///______________________________________________________________________
103void AliEveEventBufferHomer::ConnectToSource () {
104
105 fHomer->SetRetryCount(200, 15);
106 fHomer->ReConnectHOMER();
107}
108
109///_____________________________________________________________________
cc87822c 110void AliEveEventBufferHomer::WriteToFile(Int_t runnumber){
30e7579c 111
cc87822c 112 TFile * file = TFile::Open(Form("%d_0x%016X_ESD.root", runnumber, GetEventId()), "RECREATE");
113 fEventBuffer->At(fBIndex[kCurrent])->Write("blockList", TObject::kSingleKey);
30e7579c 114 file->Close();
115
116 if(fAsyncList) {
cc87822c 117 TFile * afile = TFile::Open(Form("%d_0x%016X_Async.root", runnumber, GetEventId()), "RECREATE");
30e7579c 118 fAsyncList->Write("blockList", TObject::kSingleKey);
119 afile->Close();
120 }
121}