From: mtadel Date: Tue, 11 Jul 2006 12:49:37 +0000 (+0000) Subject: Added method Event::GotoEvent(Int_t) and shortcuts Next/PrevEvent(). X-Git-Url: http://git.uio.no/git/?a=commitdiff_plain;h=1eaa5849fc28aa38d2dcfb99d55a1c67fd01c05d;p=u%2Fmrichter%2FAliRoot.git Added method Event::GotoEvent(Int_t) and shortcuts Next/PrevEvent(). --- diff --git a/EVE/Alieve/EventAlieve.cxx b/EVE/Alieve/EventAlieve.cxx index fd3ff95a281..3d1b17f41b5 100644 --- a/EVE/Alieve/EventAlieve.cxx +++ b/EVE/Alieve/EventAlieve.cxx @@ -95,13 +95,11 @@ void Event::Open() TString alice_path = fPath + "/"; fRunLoader->SetDirName(alice_path); } - if(fRunLoader->LoadgAlice() != 0) { + if(fRunLoader->LoadgAlice() != 0) throw(eH + "failed loading gAlice."); - } - if(fRunLoader->GetEvent(fEventId) != 0) { + if(fRunLoader->GetEvent(fEventId) != 0) throw(eH + "failed getting required event."); - } } if(fgUseESDTree) { @@ -141,10 +139,53 @@ void Event::Open() } } - SetName(Form("Event%d", fEventId)); + SetName(Form("Event %d", fEventId)); SetTitle(fPath); } +void Event::GotoEvent(Int_t event) +{ + static const Exc_t eH("Event::GotoEvent "); + + if(fgUseRunLoader && fRunLoader == 0) + throw(eH + "RunLoader not initialized."); + + if(fgUseESDTree && fESDTree == 0) + throw(eH + "ESDTree not initialized."); + + Int_t maxEvent = 0; + if(fgUseRunLoader) + maxEvent = fRunLoader->GetNumberOfEvents() - 1; + else if(fgUseESDTree) + maxEvent = fESDTree->GetEntries() - 1; + + if(event < 0 || event > maxEvent) + throw(eH + Form("event %d not present, available range [%d, %d].", + event, 0, maxEvent)); + + DestroyElements(); + fEventId = event; + SetName(Form("Event %d", fEventId)); + UpdateItems(); + + if(fgUseRunLoader) { + if(fRunLoader->GetEvent(fEventId) != 0) + throw(eH + "failed getting required event."); + } + + if(fgUseESDTree) { + if(fESDTree->GetEntry(fEventId) <= 0) + throw(eH + "failed getting required event from ESD."); + + if(fESDfriendTree != 0) { + if(fESDfriendTree->GetEntry(fEventId) <= 0) + throw(eH + "failed getting required event from ESDfriend."); + + fESD->SetESDfriend(fESDfriend); + } + } +} + void Event::Close() { diff --git a/EVE/Alieve/EventAlieve.h b/EVE/Alieve/EventAlieve.h index 636a50e585d..0508af03381 100644 --- a/EVE/Alieve/EventAlieve.h +++ b/EVE/Alieve/EventAlieve.h @@ -42,6 +42,9 @@ public: Event(TString path, Int_t ev=0); void Open(); + void GotoEvent(Int_t event); + void NextEvent() { GotoEvent(fEventId + 1); } + void PrevEvent() { GotoEvent(fEventId - 1); } void Close(); Int_t GetEventId() const { return fEventId; }