]> git.uio.no Git - u/mrichter/AliRoot.git/blob - EVE/EveHLT/AliEveEventBufferOffline.cxx
Bug in number of layers.
[u/mrichter/AliRoot.git] / EVE / EveHLT / AliEveEventBufferOffline.cxx
1 #if __GNUC__>= 3
2    using namespace std;
3 #endif
4
5 #include "AliEveEventBufferOffline.h"
6
7 #include "AliESDEvent.h"
8 #include "AliEveEventBufferOffline.h"
9 #include "AliEveEventBuffer.h"
10
11 #include "TTimer.h"
12 #include "TFile.h"
13 #include "TTree.h"
14 #include <iostream>
15
16 ClassImp(AliEveEventBufferOffline);
17
18 ///_______________________________________________________________________
19 AliEveEventBufferOffline::AliEveEventBufferOffline() :
20   fFile(NULL),
21   fNEntries(0),
22   fEventNo(0),
23   fEvent(NULL),
24   fTree(NULL)
25 {
26   // see header file for class documentation
27   //Not Allowed
28 }
29
30 ///_______________________________________________________________________
31 AliEveEventBufferOffline::AliEveEventBufferOffline(TString filename)  : 
32   fFile(NULL),
33   fNEntries(0),
34   fEventNo(0),
35   fEvent(NULL),
36   fTree(NULL)
37 {
38   
39   fEvent = new AliESDEvent();
40
41   cout <<"opening file " << filename << " what?" <<endl;
42   fFile = TFile::Open(filename, "READ");
43   if(!fFile) {
44     cout << "Couldn't open file, crashing hard! Soon?"<<endl;
45     return;
46   }
47
48   fTree = dynamic_cast<TTree *>(fFile->Get("HLTesdTree"));
49   if(fTree) {
50     fNEntries = fTree->GetEntries();
51     cout << "File has " << fNEntries << "events" << endl;
52     fEvent->ReadFromTree(fTree);
53   }
54 }
55
56
57
58
59 ///____________________________________________________________________
60 AliEveEventBufferOffline::~AliEveEventBufferOffline() {
61   
62   if(fFile)
63     delete fFile;
64   fFile = NULL;
65
66   if(fTree)
67     delete fTree;
68   fTree = NULL;
69   
70   if(fEvent)
71     delete fEvent;
72   fEvent = NULL;
73
74 }
75
76
77 ///______________________________________________________________________
78 TObject * AliEveEventBufferOffline::GetEventFromSource() {
79   //see header file for documentation
80   if(fTree) {
81     fTree->GetEntry(fEventNo++);
82     if(fEventNo == fNEntries)
83       fEventNo = 0;
84   }  else {
85     cout << "Tree not found, probably bad file!!"<<endl;
86     return NULL;
87   }
88
89   //Copy event into new event (must be deleted when no longer needed in list!!
90   //AliESDEvent * event = new AliESDEvent();
91   //fEvent->Copy(*event);
92   //cout << event->GetNumberOfCaloClusters() << endl;
93
94   if (fEvent) {
95     return dynamic_cast<TObject*>(fEvent);
96   } else {
97     cout << "error getting event" << endl;
98     return NULL;
99   }
100 }
101
102 ///___________________________________________________________________
103 void AliEveEventBufferOffline::ConnectToSource() {
104   //Needed for homer version
105   // see header file for class documentation
106   return;
107 }
108
109
110 ///_____________________________________________________________________
111 void AliEveEventBufferOffline::WriteToFile(Int_t runnumber){
112   //Inherited from AliEveEventBuffer
113   TFile * file = TFile::Open(Form("%d_0x%016LX_ESD.root", runnumber, GetEventId()), "RECREATE"); 
114   fEventBuffer->At(fBIndex[kCurrent])->Write("blockList", TObject::kSingleKey);
115   file->Close();
116 }