// We use TFile::Open() instead of gSystem->AccessPathName
// as it seems to work better when attachine alieve to a
// running reconstruction process with auto-save on.
- // There was also a problem with TTree::Refresh() - it didn't
- // save the friend branch on a separate file, fixed in 5.22.2 -
- // so we might want to try the old way again soon.
TString p(Form("%s/AliESDfriends.root", fPath.Data()));
TFile *esdFriendFile = TFile::Open(p);
if (esdFriendFile)
TString gaPath(Form("%s/galice.root", fPath.Data()));
// If i use open directly, we get fatal.
// Is AccessPathName check ok for xrootd / alien? Yes, not for http.
- if (gSystem->AccessPathName(gaPath, kReadPermission) == kFALSE)
- {
+ // Seems not to work for alien anymore.
+ // Fixed in ROOT on 27.10.2009, rev 30888.
+ // To revert after we move to root-5.26.
+ TFile *gafile = TFile::Open(gaPath);
+ if (gafile)
+ {
+ gafile->Close();
+ delete gafile;
+ // if (gSystem->AccessPathName(gaPath, kReadPermission) == kFALSE)
+ // {
fRunLoader = AliRunLoader::Open(gaPath, GetName());
if (fRunLoader)
{
cdb->SetDefaultStorage(fgCdbUri);
} else
cdb->SetDefaultStorage(fgCdbUri);
+
+ cdb->SetRun(runNo);
+
if (cdb->IsDefaultStorageSet() == kFALSE)
- throw kEH + "CDB initialization failed.";
+ throw kEH + "CDB initialization failed for '" + fgCdbUri + "'.";
}
if (fgCdbUri.BeginsWith("local://"))
}
}
}
- cdb->SetRun(runNo);
}
fIsOpen = kTRUE;
if (fAutoLoad) StartAutoLoadTimer();
}
-Int_t AliEveEventManager::GetMaxEventId(Bool_t /*refreshESD*/) const
+Int_t AliEveEventManager::GetMaxEventId(Bool_t refreshESD) const
{
// Returns maximum available event id.
// If under external control or event is not opened -1 is returned.
if (fESDTree)
{
- // Refresh crashes with root-5.21.1-alice.
- // Fixed by Philippe 5.8.2008 r25053, can be reactivated
- // when we move to a newer root.
- // if (refreshESD)
- // fESDTree->Refresh();
+ if (refreshESD)
+ {
+ fESDTree->Refresh();
+ fPEventSelector->Update();
+ }
return fESDTree->GetEntries() - 1;
}
else if (fAODTree)
Int_t maxEvent = 0;
if (fESDTree)
{
- // Refresh crashes with root-5.21.1-alice.
- // Fixed by Philippe 5.8.2008 r25053, can be reactivated
- // when we move to a newer root.
- // fESDTree->Refresh();
+ if (event >= fESDTree->GetEntries())
+ fESDTree->Refresh();
maxEvent = fESDTree->GetEntries() - 1;
if (event < 0)
event = fESDTree->GetEntries() + event;
gSystem->ExitLoop();
}
- else
+ else if (fESDTree)
{
Int_t nextevent=0;
if (fPEventSelector->FindNext(nextevent))
GotoEvent(nextevent);
}
}
+ else if (fEventId < GetMaxEventId(kTRUE))
+ {
+ GotoEvent(fEventId + 1);
+ }
}
void AliEveEventManager::PrevEvent()
{
throw (kEH + "Event-loop is under external control.");
}
- Int_t nextevent=0;
- if (fPEventSelector->FindPrev(nextevent))
+
+ if (fESDTree)
{
- GotoEvent(nextevent);
+ Int_t nextevent=0;
+ if (fPEventSelector->FindPrev(nextevent))
+ {
+ GotoEvent(nextevent);
+ }
+ }
+ else if (fEventId > 0)
+ {
+ GotoEvent(fEventId - 1);
}
}
if (fESDTree) {
delete fESD; fESD = 0;
- delete fESDfriend; fESDfriend = 0;
+ // delete fESDfriend; // friend tree is deleted with the tree
+ fESDfriend = 0;
fESDfriendExists = kFALSE;
delete fESDTree; fESDTree = 0;
static const TEveException kEH("AliEveEventManager::AfterNewEventLoaded ");
+ NewEventDataLoaded();
+
if (fExecutor)
fExecutor->ExecMacros();
}
}
+void AliEveEventManager::NewEventDataLoaded()
+{
+ // Emit NewEventDataLoaded signal.
+
+ Emit("NewEventDataLoaded()");
+}
+
void AliEveEventManager::NewEventLoaded()
{
// Emit NewEventLoaded signal.