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 = kTRUE;
28 Bool_t Alieve::Event::fgUseESDTree = kTRUE;
29 Bool_t Alieve::Event::fgAvoidExcOnOpen = kTRUE;
31 void Event::Initialize(Bool_t use_runloader, Bool_t use_esd,
32 Bool_t avoid_exc_on_open)
34 static const Exc_t eH("Event::Initialize ");
36 fgUseRunLoader = use_runloader;
37 fgUseESDTree = use_esd;
38 fgAvoidExcOnOpen = avoid_exc_on_open;
41 if(fgUseRunLoader == false && fgUseESDTree == false)
42 throw(eH + "should use at least one data source.");
45 AssertMacro("loadlibs.C");
47 else if(fgUseESDTree) {
48 gSystem->Load("libESD.so");
53 /**************************************************************************/
58 fPath (), fEventId (0),
60 fESDFile (0), fESDTree (0), fESD (0),
61 /* fESDfriendFile (0), fESDfriendTree (0), */
62 fESDfriend (0), fESDfriendExists(kFALSE)
65 Event::Event(TString path, Int_t ev) :
66 EventBase("AliEVE Event"),
68 fPath (path), fEventId(ev),
70 fESDFile (0), fESDTree (0), fESD (0),
71 /* fESDfriendFile (0), fESDfriendTree (0), */
72 fESDfriend (0), fESDfriendExists(kFALSE)
77 /**************************************************************************/
81 static const Exc_t eH("Event::Open ");
83 gSystem->ExpandPathName(fPath);
85 fPath = Form("%s/%s", gSystem->WorkingDirectory(), fPath.Data());
88 TString ga_path(Form("%s/galice.root", fPath.Data()));
89 if(gSystem->AccessPathName(ga_path, kReadPermission)) {
90 if (fgAvoidExcOnOpen) {
91 Warning(eH, "RunLoader not initialized.");
94 throw(eH + "can not read '" + ga_path + "'.");
97 fRunLoader = AliRunLoader::Open(ga_path);
99 throw(eH + "failed opening ALICE run loader from '" + ga_path + "'.");
101 TString alice_path = fPath + "/";
102 fRunLoader->SetDirName(alice_path);
104 if(fRunLoader->LoadgAlice() != 0)
105 throw(eH + "failed loading gAlice.");
106 if(fRunLoader->LoadHeader() != 0)
107 throw(eH + "failed loading header.");
109 if(fRunLoader->GetEvent(fEventId) != 0)
110 throw(eH + "failed getting required event.");
115 TString p(Form("%s/AliESDs.root", fPath.Data()));
116 if(gSystem->AccessPathName(p, kReadPermission)) {
117 if (fgAvoidExcOnOpen) {
118 Warning(eH, "ESD not initialized.");
121 throw(eH + "can not read '" + p + "'.");
124 fESDFile = new TFile(p);
125 if(fESDFile->IsZombie()) {
126 delete fESDFile; fESDFile = 0;
127 throw(eH + "failed opening ALICE ESD from '" + p + "'.");
130 fESDTree = (TTree*) fESDFile->Get("esdTree");
132 throw(eH + "failed getting the esdTree.");
133 fESDTree->SetBranchAddress("ESD", &fESD);
134 if(fESDTree->GetEntry(fEventId) <= 0)
135 throw(eH + "failed getting required event from ESD.");
137 // Check if ESDfriends exists and load it
138 p = Form("%s/AliESDfriends.root", fPath.Data());
139 if(gSystem->AccessPathName(p, kReadPermission) == kFALSE) {
140 //fESDfriendFile = new TFile(p);
141 //if(fESDfriendFile->IsZombie()) {
142 //delete fESDfriendFile; fESDfriendFile = 0;
143 //throw(eH + "failed opening ALICE ESDfriend from '" + p + "'.");
146 //fESDfriendTree = (TTree*) fESDfriendFile->Get("esdFriendTree");
147 //if(fESDfriendTree == 0)
148 // throw(eH + "failed getting the esdFriendTree.");
149 //fESDfriendTree->SetBranchAddress("ESDfriend", &fESDfriend);
150 //if(fESDfriendTree->GetEntry(fEventId) <= 0)
151 //throw(eH + "failed getting required event from ESDfriend.");
153 //fESD->SetESDfriend(fESDfriend);
155 fESDfriendExists = kTRUE;
156 fESDTree->SetBranchStatus ("ESDfriend*", 1);
157 fESDTree->SetBranchAddress("ESDfriend.", &fESDfriend);
162 SetName(Form("Event %d", fEventId));
166 void Event::GotoEvent(Int_t event)
168 static const Exc_t eH("Event::GotoEvent ");
172 maxEvent = fRunLoader->GetNumberOfEvents() - 1;
174 maxEvent = fESDTree->GetEntries() - 1;
176 throw(eH + "neither RunLoader nor ESD loaded.");
178 if(event < 0 || event > maxEvent)
179 throw(eH + Form("event %d not present, available range [%d, %d].",
180 event, 0, maxEvent));
184 SetName(Form("Event %d", fEventId));
188 if(fRunLoader->GetEvent(fEventId) != 0)
189 throw(eH + "failed getting required event.");
193 delete fESD; fESD = 0;
194 delete fESDfriend; fESDfriend = 0;
196 if(fESDTree->GetEntry(fEventId) <= 0)
197 throw(eH + "failed getting required event from ESD.");
199 //if(fESDfriendTree != 0) {
200 // if(fESDfriendTree->GetEntry(fEventId) <= 0)
201 // throw(eH + "failed getting required event from ESDfriend.");
203 if (fESDfriendExists)
204 fESD->SetESDfriend(fESDfriend);
211 delete fESD; fESD = 0;
212 delete fESDfriend; fESDfriend = 0;
214 delete fESDTree; fESDTree = 0;
215 delete fESDFile; fESDFile = 0;
219 /**************************************************************************/
220 /**************************************************************************/
222 // Static convenience functions.
224 AliRunLoader* Event::AssertRunLoader()
226 static const Exc_t eH("Event::AssertRunLoader ");
229 throw(eH + "ALICE event not ready.");
230 if(gEvent->fRunLoader == 0)
231 throw(eH + "AliRunLoader not initialised.");
232 return gEvent->fRunLoader;
235 AliESD* Event::AssertESD()
237 static const Exc_t eH("Event::AssertESD ");
240 throw(eH + "ALICE event not ready.");
241 if(gEvent->fESD == 0)
242 throw(eH + "AliESD not initialised.");
246 AliESDfriend* Event::AssertESDfriend()
248 static const Exc_t eH("Event::AssertESDfriend ");
251 throw(eH + "ALICE event not ready.");
252 if(gEvent->fESDfriend == 0)
253 throw(eH + "AliESDfriend not initialised.");
254 return gEvent->fESDfriend;