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 /**************************************************************************/
55 fPath (), fEventId (0),
57 fESDFile (0), fESDTree (0), fESD (0),
58 fESDfriendFile (0), fESDfriendTree (0), fESDfriend (0)
61 Event::Event(TString path, Int_t ev) :
62 EventBase("AliEVE Event"),
64 fPath (path), fEventId(ev),
66 fESDFile (0), fESDTree (0), fESD (0),
67 fESDfriendFile (0), fESDfriendTree (0), fESDfriend (0)
72 /**************************************************************************/
76 static const Exc_t eH("Event::Open ");
78 gSystem->ExpandPathName(fPath);
80 fPath = Form("%s/%s", gSystem->WorkingDirectory(), fPath.Data());
83 TString ga_path(Form("%s/galice.root", fPath.Data()));
84 if(gSystem->AccessPathName(ga_path, kReadPermission))
85 throw(eH + "can not read '" + ga_path + "'.");
86 fRunLoader = AliRunLoader::Open(ga_path);
88 throw(eH + "failed opening ALICE run loader from '" + ga_path + "'.");
90 TString alice_path = fPath + "/";
91 fRunLoader->SetDirName(alice_path);
93 if(fRunLoader->LoadgAlice() != 0)
94 throw(eH + "failed loading gAlice.");
96 if(fRunLoader->GetEvent(fEventId) != 0)
97 throw(eH + "failed getting required event.");
101 TString p(Form("%s/AliESDs.root", fPath.Data()));
102 if(gSystem->AccessPathName(p, kReadPermission))
103 throw(eH + "can not read '" + p + "'.");
104 fESDFile = new TFile(p);
105 if(fESDFile->IsZombie()) {
106 delete fESDFile; fESDFile = 0;
107 throw(eH + "failed opening ALICE ESD from '" + p + "'.");
110 fESDTree = (TTree*) fESDFile->Get("esdTree");
112 throw(eH + "failed getting the esdTree.");
113 fESDTree->SetBranchAddress("ESD", &fESD);
114 if(fESDTree->GetEntry(fEventId) <= 0)
115 throw(eH + "failed getting required event from ESD.");
117 // Check if ESDfriends exists and load it
118 p = Form("%s/AliESDfriends.root", fPath.Data());
119 if(gSystem->AccessPathName(p, kReadPermission) == kFALSE) {
120 fESDfriendFile = new TFile(p);
121 if(fESDfriendFile->IsZombie()) {
122 delete fESDfriendFile; fESDfriendFile = 0;
123 throw(eH + "failed opening ALICE ESDfriend from '" + p + "'.");
126 fESDfriendTree = (TTree*) fESDfriendFile->Get("esdFriendTree");
127 if(fESDfriendTree == 0)
128 throw(eH + "failed getting the esdFriendTree.");
129 fESDfriendTree->SetBranchAddress("ESDfriend", &fESDfriend);
130 if(fESDfriendTree->GetEntry(fEventId) <= 0)
131 throw(eH + "failed getting required event from ESDfriend.");
133 fESD->SetESDfriend(fESDfriend);
137 SetName(Form("Event %d", fEventId));
141 void Event::GotoEvent(Int_t event)
143 static const Exc_t eH("Event::GotoEvent ");
145 if(fgUseRunLoader && fRunLoader == 0)
146 throw(eH + "RunLoader not initialized.");
148 if(fgUseESDTree && fESDTree == 0)
149 throw(eH + "ESDTree not initialized.");
153 maxEvent = fRunLoader->GetNumberOfEvents() - 1;
154 else if(fgUseESDTree)
155 maxEvent = fESDTree->GetEntries() - 1;
157 if(event < 0 || event > maxEvent)
158 throw(eH + Form("event %d not present, available range [%d, %d].",
159 event, 0, maxEvent));
163 SetName(Form("Event %d", fEventId));
167 if(fRunLoader->GetEvent(fEventId) != 0)
168 throw(eH + "failed getting required event.");
172 if(fESDTree->GetEntry(fEventId) <= 0)
173 throw(eH + "failed getting required event from ESD.");
175 if(fESDfriendTree != 0) {
176 if(fESDfriendTree->GetEntry(fEventId) <= 0)
177 throw(eH + "failed getting required event from ESDfriend.");
179 fESD->SetESDfriend(fESDfriend);
189 /**************************************************************************/
190 /**************************************************************************/
192 // Static convenience functions.
194 AliRunLoader* Event::AssertRunLoader()
196 static const Exc_t eH("Event::AssertRunLoader ");
199 throw(eH + "ALICE event not ready.");
200 if(gEvent->fRunLoader == 0)
201 throw(eH + "AliRunLoader not initialised.");
202 return gEvent->fRunLoader;
205 AliESD* Event::AssertESD()
207 static const Exc_t eH("Event::AssertESD ");
210 throw(eH + "ALICE event not ready.");
211 if(gEvent->fESD == 0)
212 throw(eH + "AliESD not initialised.");
216 AliESDfriend* Event::AssertESDfriend()
218 static const Exc_t eH("Event::AssertESDfriend ");
221 throw(eH + "ALICE event not ready.");
222 if(gEvent->fESDfriend == 0)
223 throw(eH + "AliESDfriend not initialised.");
224 return gEvent->fESDfriend;