9 #include <AugerEvent.h>
10 #include <io/FDasEventFile.h>
11 #include <io/VROOTFile.h>
12 #include <io/FDasToOfflineEventConverter.h>
13 #include <EyeEvent.hh>
14 #include <EyeEventFile.hh>
15 #include <evt/Event.h>
16 #include <fevt/FEvent.h>
18 #include <fevt/EyeHeader.h>
20 #include <utl/ErrorLogger.h>
31 FDasEventFile::~FDasEventFile()
33 for (
const auto& f : fEyeEventFile)
41 fCurEyeEvent(new TEyeEvent)
43 Open(filename, mode, b);
55 TEyeEventFile*
const tmpFile =
56 new TEyeEventFile(filename.c_str(),
59 if (tmpFile->IsZombie()) {
60 std::ostringstream mess;
61 mess <<
"Unable to open file " <<
filename;
65 if (!tmpFile->GetNEvents()) {
66 std::ostringstream mess;
67 mess <<
"File is empty " <<
filename;
71 TEyeEvent* tmpEvent =
new TEyeEvent();
72 tmpFile->ReadEvent(&tmpEvent);
73 const unsigned int eyeId = tmpEvent->GetEventHeader()->GetEyeNo();
91 fEyeEventFile.clear();
117 const unsigned int eyeId =
fCurEyeEvent->GetEventHeader()->GetEyeNo();
122 AugerEvent&
raw =
event.GetRawEvent();
124 AugerEvent::EyeIterator eyeIter;
125 for (eyeIter = raw.EyesBegin(); eyeIter != raw.EyesEnd(); ++eyeIter)
126 if (eyeIter->GetEventHeader()->GetEyeNo() == eyeId)
129 if (eyeIter == raw.EyesEnd())
152 ERROR(
"File is ReadOnly");
162 INFO(
"No raw FD event to write");
168 for (AugerEvent::EyeIterator eyeIter = raw.EyesBegin();
169 eyeIter != raw.EyesEnd(); ++eyeIter) {
171 unsigned int eyeId = eyeIter->GetEventHeader()->GetEyeNo();
175 ostringstream eyeFileName;
177 <<
".eye" << eyeId <<
".root";
180 new TEyeEventFile(eyeFileName.str().c_str(),
198 const int n = f.second->GetNEvents();
202 }
else if (n < nEvents)
213 f.second->Seek(position);
222 auto&
file = *f.second;
224 unsigned int posInTree = 0;
225 TEyeEventHeader* header =
nullptr;
226 while (
file.ReadEventHeader(&header)) {
227 if (eventid == header->GetEventNo()) {
228 file.Seek(posInTree);
static std::string GetRootMode(const Mode mode)
Status Read(evt::Event &event) override
clear /par event read current event advance cursor by 1
void Open(const std::string &filename, const Mode mode, utl::Branch *const b) override
std::map< unsigned int, TEyeEventFile * > fEyeEventFile
Mode
Available open modes.
#define INFO(message)
Macro for logging informational messages.
AugerEvent & GetRawEvent()
Base class to report exceptions in IO.
Class representing a document branch.
int GetNEvents() override
Status
Return code for seek operation.
void Write(const evt::Event &event) override
Status FindEvent(const unsigned int eventid) override
seek Event id set cursor there
Status GotoPosition(const unsigned int position) override
goto by position in the file
#define ERROR(message)
Macro for logging error messages.