ROOT logo
//-*- Mode: C++ -*-
// $Id$
//
// 2010 Svein Lindal <slindal@fys.uio.no>                        *
//         for The ALICE HLT Project.                                    *
// Offline Buffer
#if __GNUC__>= 3
   using namespace std;
#endif

#include "AliEveEventBufferOffline.h"

#include "AliESDEvent.h"
#include "AliEveEventBufferOffline.h"
#include "AliEveEventBuffer.h"

#include "TTimer.h"
#include "TFile.h"
#include "TTree.h"
#include <iostream>

ClassImp(AliEveEventBufferOffline);

///_______________________________________________________________________
AliEveEventBufferOffline::AliEveEventBufferOffline() :
  fFile(NULL),
  fNEntries(0),
  fEventNo(0),
  fEvent(NULL),
  fTree(NULL)
{
  // see header file for class documentation
  //Not Allowed
}

///_______________________________________________________________________
AliEveEventBufferOffline::AliEveEventBufferOffline(TString filename)  : 
  fFile(NULL),
  fNEntries(0),
  fEventNo(0),
  fEvent(NULL),
  fTree(NULL)
{
  
  fEvent = new AliESDEvent();

  cout <<"opening file " << filename << " what?" <<endl;
  fFile = TFile::Open(filename, "READ");
  if(!fFile) {
    cout << "Couldn't open file, crashing hard! Soon?"<<endl;
    return;
  }

  fTree = dynamic_cast<TTree *>(fFile->Get("HLTesdTree"));
  if(fTree) {
    fNEntries = fTree->GetEntries();
    cout << "File has " << fNEntries << "events" << endl;
    fEvent->ReadFromTree(fTree);
  }
}




///____________________________________________________________________
AliEveEventBufferOffline::~AliEveEventBufferOffline() {
  
  if(fFile)
    delete fFile;
  fFile = NULL;

  if(fTree)
    delete fTree;
  fTree = NULL;
  
  if(fEvent)
    delete fEvent;
  fEvent = NULL;

}


///______________________________________________________________________
TObject * AliEveEventBufferOffline::GetEventFromSource() {
  //see header file for documentation
  if(fTree) {
    fTree->GetEntry(fEventNo++);
    if(fEventNo == fNEntries)
      fEventNo = 0;
  }  else {
    cout << "Tree not found, probably bad file!!"<<endl;
    return NULL;
  }

  //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;

  if (fEvent) {
    return dynamic_cast<TObject*>(fEvent);
  } else {
    cout << "error getting event" << endl;
    return NULL;
  }
}

///___________________________________________________________________
void AliEveEventBufferOffline::ConnectToSource() {
  //Needed for homer version
  // see header file for class documentation
  return;
}


///_____________________________________________________________________
void AliEveEventBufferOffline::WriteToFile(Int_t runnumber){
  //Inherited from AliEveEventBuffer
  TFile * file = TFile::Open(Form("%d_0x%016llu_ESD.root", runnumber, GetEventId()), "RECREATE"); 
  fEventBuffer->At(fBIndex[kCurrent])->Write("blockList", TObject::kSingleKey);
  file->Close();
}	     
 AliEveEventBufferOffline.cxx:1
 AliEveEventBufferOffline.cxx:2
 AliEveEventBufferOffline.cxx:3
 AliEveEventBufferOffline.cxx:4
 AliEveEventBufferOffline.cxx:5
 AliEveEventBufferOffline.cxx:6
 AliEveEventBufferOffline.cxx:7
 AliEveEventBufferOffline.cxx:8
 AliEveEventBufferOffline.cxx:9
 AliEveEventBufferOffline.cxx:10
 AliEveEventBufferOffline.cxx:11
 AliEveEventBufferOffline.cxx:12
 AliEveEventBufferOffline.cxx:13
 AliEveEventBufferOffline.cxx:14
 AliEveEventBufferOffline.cxx:15
 AliEveEventBufferOffline.cxx:16
 AliEveEventBufferOffline.cxx:17
 AliEveEventBufferOffline.cxx:18
 AliEveEventBufferOffline.cxx:19
 AliEveEventBufferOffline.cxx:20
 AliEveEventBufferOffline.cxx:21
 AliEveEventBufferOffline.cxx:22
 AliEveEventBufferOffline.cxx:23
 AliEveEventBufferOffline.cxx:24
 AliEveEventBufferOffline.cxx:25
 AliEveEventBufferOffline.cxx:26
 AliEveEventBufferOffline.cxx:27
 AliEveEventBufferOffline.cxx:28
 AliEveEventBufferOffline.cxx:29
 AliEveEventBufferOffline.cxx:30
 AliEveEventBufferOffline.cxx:31
 AliEveEventBufferOffline.cxx:32
 AliEveEventBufferOffline.cxx:33
 AliEveEventBufferOffline.cxx:34
 AliEveEventBufferOffline.cxx:35
 AliEveEventBufferOffline.cxx:36
 AliEveEventBufferOffline.cxx:37
 AliEveEventBufferOffline.cxx:38
 AliEveEventBufferOffline.cxx:39
 AliEveEventBufferOffline.cxx:40
 AliEveEventBufferOffline.cxx:41
 AliEveEventBufferOffline.cxx:42
 AliEveEventBufferOffline.cxx:43
 AliEveEventBufferOffline.cxx:44
 AliEveEventBufferOffline.cxx:45
 AliEveEventBufferOffline.cxx:46
 AliEveEventBufferOffline.cxx:47
 AliEveEventBufferOffline.cxx:48
 AliEveEventBufferOffline.cxx:49
 AliEveEventBufferOffline.cxx:50
 AliEveEventBufferOffline.cxx:51
 AliEveEventBufferOffline.cxx:52
 AliEveEventBufferOffline.cxx:53
 AliEveEventBufferOffline.cxx:54
 AliEveEventBufferOffline.cxx:55
 AliEveEventBufferOffline.cxx:56
 AliEveEventBufferOffline.cxx:57
 AliEveEventBufferOffline.cxx:58
 AliEveEventBufferOffline.cxx:59
 AliEveEventBufferOffline.cxx:60
 AliEveEventBufferOffline.cxx:61
 AliEveEventBufferOffline.cxx:62
 AliEveEventBufferOffline.cxx:63
 AliEveEventBufferOffline.cxx:64
 AliEveEventBufferOffline.cxx:65
 AliEveEventBufferOffline.cxx:66
 AliEveEventBufferOffline.cxx:67
 AliEveEventBufferOffline.cxx:68
 AliEveEventBufferOffline.cxx:69
 AliEveEventBufferOffline.cxx:70
 AliEveEventBufferOffline.cxx:71
 AliEveEventBufferOffline.cxx:72
 AliEveEventBufferOffline.cxx:73
 AliEveEventBufferOffline.cxx:74
 AliEveEventBufferOffline.cxx:75
 AliEveEventBufferOffline.cxx:76
 AliEveEventBufferOffline.cxx:77
 AliEveEventBufferOffline.cxx:78
 AliEveEventBufferOffline.cxx:79
 AliEveEventBufferOffline.cxx:80
 AliEveEventBufferOffline.cxx:81
 AliEveEventBufferOffline.cxx:82
 AliEveEventBufferOffline.cxx:83
 AliEveEventBufferOffline.cxx:84
 AliEveEventBufferOffline.cxx:85
 AliEveEventBufferOffline.cxx:86
 AliEveEventBufferOffline.cxx:87
 AliEveEventBufferOffline.cxx:88
 AliEveEventBufferOffline.cxx:89
 AliEveEventBufferOffline.cxx:90
 AliEveEventBufferOffline.cxx:91
 AliEveEventBufferOffline.cxx:92
 AliEveEventBufferOffline.cxx:93
 AliEveEventBufferOffline.cxx:94
 AliEveEventBufferOffline.cxx:95
 AliEveEventBufferOffline.cxx:96
 AliEveEventBufferOffline.cxx:97
 AliEveEventBufferOffline.cxx:98
 AliEveEventBufferOffline.cxx:99
 AliEveEventBufferOffline.cxx:100
 AliEveEventBufferOffline.cxx:101
 AliEveEventBufferOffline.cxx:102
 AliEveEventBufferOffline.cxx:103
 AliEveEventBufferOffline.cxx:104
 AliEveEventBufferOffline.cxx:105
 AliEveEventBufferOffline.cxx:106
 AliEveEventBufferOffline.cxx:107
 AliEveEventBufferOffline.cxx:108
 AliEveEventBufferOffline.cxx:109
 AliEveEventBufferOffline.cxx:110
 AliEveEventBufferOffline.cxx:111
 AliEveEventBufferOffline.cxx:112
 AliEveEventBufferOffline.cxx:113
 AliEveEventBufferOffline.cxx:114
 AliEveEventBufferOffline.cxx:115
 AliEveEventBufferOffline.cxx:116
 AliEveEventBufferOffline.cxx:117
 AliEveEventBufferOffline.cxx:118
 AliEveEventBufferOffline.cxx:119
 AliEveEventBufferOffline.cxx:120
 AliEveEventBufferOffline.cxx:121
 AliEveEventBufferOffline.cxx:122