3 #include "EventAlieve.h"
6 #include <AliRunLoader.h>
8 #include <AliESDfriend.h>
17 using namespace Alieve;
19 //______________________________________________________________________
25 Event* Alieve::gEvent = 0;
27 Bool_t Alieve::Event::fgUseRunLoader = true;
28 Bool_t Alieve::Event::fgUseESDTree = true;
30 void Event::Initialize(Bool_t use_runloader, Bool_t use_esd)
32 static const Exc_t eH("Event::Initialize ");
34 fgUseRunLoader = use_runloader;
35 fgUseESDTree = use_esd;
38 if(fgUseRunLoader == false && fgUseESDTree == false)
39 throw(eH + "should use at least one data source.");
42 AssertMacro("loadlibs.C");
44 else if(fgUseESDTree) {
45 gSystem->Load("libESD.so");
50 /**************************************************************************/
63 Event::Event() : TNamed(), fEventId(0)
68 Event::Event(TString path, Int_t ev) : fPath(path), fEventId(ev)
74 /**************************************************************************/
78 static const Exc_t eH("Event::Open ");
80 gSystem->ExpandPathName(fPath);
82 fPath = Form("%s/%s", gSystem->WorkingDirectory(), fPath.Data());
85 TString ga_path(Form("%s/galice.root", fPath.Data()));
86 if(gSystem->AccessPathName(ga_path, kReadPermission))
87 throw(eH + "can not read '" + ga_path + "'.");
88 fRunLoader = AliRunLoader::Open(ga_path);
90 throw(eH + "failed opening ALICE run loader from '" + ga_path + "'.");
92 TString alice_path = fPath + "/";
93 fRunLoader->SetDirName(alice_path);
95 if(fRunLoader->LoadgAlice() != 0) {
96 throw(eH + "failed loading gAlice.");
99 if(fRunLoader->GetEvent(fEventId) != 0) {
100 throw(eH + "failed getting required event.");
105 TString p(Form("%s/AliESDs.root", fPath.Data()));
106 if(gSystem->AccessPathName(p, kReadPermission))
107 throw(eH + "can not read '" + p + "'.");
108 fESDFile = new TFile(p);
109 if(fESDFile->IsZombie()) {
110 delete fESDFile; fESDFile = 0;
111 throw(eH + "failed opening ALICE ESD from '" + p + "'.");
114 fESDTree = (TTree*) fESDFile->Get("esdTree");
116 throw(eH + "failed getting the esdTree.");
117 fESDTree->SetBranchAddress("ESD", &fESD);
118 if(fESDTree->GetEntry(fEventId) <= 0)
119 throw(eH + "failed getting required event from ESD.");
121 // Check if ESDfriends exists and load it
122 p = Form("%s/AliESDfriends.root", fPath.Data());
123 if(gSystem->AccessPathName(p, kReadPermission) == kFALSE) {
124 fESDfriendFile = new TFile(p);
125 if(fESDfriendFile->IsZombie()) {
126 delete fESDfriendFile; fESDfriendFile = 0;
127 throw(eH + "failed opening ALICE ESDfriend from '" + p + "'.");
130 fESDfriendTree = (TTree*) fESDfriendFile->Get("esdFriendTree");
131 if(fESDfriendTree == 0)
132 throw(eH + "failed getting the esdFriendTree.");
133 fESDfriendTree->SetBranchAddress("ESDfriend", &fESDfriend);
134 if(fESDfriendTree->GetEntry(fEventId) <= 0)
135 throw(eH + "failed getting required event from ESDfriend.");
137 fESD->SetESDfriend(fESDfriend);
141 SetName(Form("Event%d", fEventId));
150 /**************************************************************************/
151 /**************************************************************************/
153 // Static convenience functions.
155 AliRunLoader* Event::AssertRunLoader()
157 static const Exc_t eH("Event::AssertRunLoader ");
160 throw(eH + "ALICE event not ready.");
161 if(gEvent->fRunLoader == 0)
162 throw(eH + "AliRunLoader not initialised.");
163 return gEvent->fRunLoader;
166 AliESD* Event::AssertESD()
168 static const Exc_t eH("Event::AssertESD ");
171 throw(eH + "ALICE event not ready.");
172 if(gEvent->fESD == 0)
173 throw(eH + "AliESD not initialised.");
177 AliESDfriend* Event::AssertESDfriend()
179 static const Exc_t eH("Event::AssertESDfriend ");
182 throw(eH + "ALICE event not ready.");
183 if(gEvent->fESDfriend == 0)
184 throw(eH + "AliESDfriend not initialised.");
185 return gEvent->fESDfriend;