3 // Main authors: Matevz Tadel & Alja Mrak-Tadel: 2006, 2007 *
4 // Author: 2010 Svein Lindal <slindal@fys.uio.no> *
5 // for The ALICE HLT Project. *
11 #include "AliEveEventBufferHomer.h"
12 #include "AliEveHOMERManager.h"
19 ClassImp(AliEveEventBufferHomer);
21 ///_______________________________________________________________________
22 AliEveEventBufferHomer::AliEveEventBufferHomer() :
27 // see header file for class documentation
28 fHomer = new AliEveHOMERManager();
34 ///____________________________________________________________________
35 AliEveEventBufferHomer::~AliEveEventBufferHomer() {
44 ///____________________________________________________________
45 ULong64_t AliEveEventBufferHomer::GetEventIdFromSource() {
46 ///see header file for documentation
47 return fHomer->GetEventID();
50 ///______________________________________________________________________
51 TObject * AliEveEventBufferHomer::GetEventFromSource() {
52 //see header file for documentation
54 cout << "calling nexthomerevent"<<endl;
55 TList * blockList = fHomer->NextHOMEREvent();
56 cout << "getting async block list"<<endl;
57 TList * aList = fHomer->GetAsyncBlockList();
59 if(blockList) return dynamic_cast<TObject*>(blockList);
63 cout << "AliEveEventBufferHomer::GetEventFromSource() : fHomer is null pointer!!"<<endl;
67 ///___________________________________________________________________________
68 void AliEveEventBufferHomer::AddToBuffer(TObject * event) {
69 //Add object to buffer
71 cout << "AliEveEventBufferHomer::Add to buffer"<<endl;
73 cout << "event is NULL pointer, return" << endl;
78 TList * listIn = dynamic_cast<TList*>(event);
79 if(!listIn || !(listIn->GetSize() > 0)) {
80 cout << "AliEveEventBufferHomer::AddToBuffer(): List Is empty, not added to buffer!"<<endl;
84 fBIndex[kTop] = CalculateNext(fBIndex[kTop]);
85 TList * list = dynamic_cast<TList*>(fEventBuffer->At(fBIndex[kTop]));
88 list->AddAll(dynamic_cast<TList*>(event));
94 ///______________________________________________________________________
95 void AliEveEventBufferHomer::Initialize() {
96 //Add TList pointers to the buffer array
98 //Create TLists in all of buffer
99 for(Int_t i = 0; i < fBufferSize; i++) {
100 TList * list = new TList();
101 list->SetOwner(kTRUE);
102 fEventBuffer->AddAt(list, i);
105 //Create the async list
106 fAsyncList = new TList();
107 fAsyncList->SetOwner(kTRUE);
109 Int_t iResult = fHomer->Initialize();
111 cout << "Error Initializing HOMER!!!"<<endl;
116 fHomer->SetRetryCount(1,15);
117 fHomer->SetBlockOwner(kFALSE);
118 //fHomer->StartEveSourceListLoop();
122 ///______________________________________________________________________
123 void AliEveEventBufferHomer::ConnectToSource () {
125 fHomer->SetRetryCount(200, 15);
126 fHomer->ReConnectHOMER();
129 ///_____________________________________________________________________
130 void AliEveEventBufferHomer::WriteToFile(Int_t runnumber){
132 TFile * file = TFile::Open(Form("Run_%d_0x%016llu_ESD.root", runnumber, GetEventId()), "RECREATE");
133 fEventBuffer->At(fBIndex[kCurrent])->Write("blockList", TObject::kSingleKey);
137 TFile * afile = TFile::Open(Form("Run_%d_0x%016llu_Async.root", runnumber, GetEventId()), "RECREATE");
138 fAsyncList->Write("blockList", TObject::kSingleKey);