00001
00002
00003
00004
00005
00006
00007
00008 #ifndef EVDB_IOMODULE_H
00009 #define EVDB_IOMODULE_H
00010 #include "TQObject.h"
00011 #include "RQ_OBJECT.h"
00012 namespace io { class ReadWriteModule; }
00013 namespace edm {
00014 class Event;
00015 class EventHandle;
00016 }
00017
00018
00019
00020 namespace evdb {
00022 class IoModule {
00023 RQ_OBJECT("evdb::IoModule");
00024
00025 public:
00026 static IoModule* Instance();
00027 ~IoModule();
00028
00029 io::ReadWriteModule& IoMod();
00030
00031
00032 int AddFile(const char* file_regexp);
00033 int RemoveFile(const char* file_regexp);
00034 int GoToFile(const char* file);
00035 int AdvanceFile(int n=1);
00036 int RewindFile(int n=1);
00037 int GoTo(int run, int event);
00038 int Advance(int n=1);
00039 int Rewind(int n=1);
00040 int Reload();
00041
00042 void SetOutputFileName(const char* n);
00043 edm::EventHandle& GetEvent();
00044 int WriteEvent();
00045
00046 const char* CurrentFile() const;
00047 const char* FileName(int i) const;
00048
00049 void StartAutoAdvance();
00050 void StopAutoAdvance();
00051
00052
00053 void NewEvent();
00054 private:
00055 IoModule();
00056 void Warn(const char* w);
00057
00058 private:
00059 edm::Event* fEvent;
00060 io::ReadWriteModule* fIoMod;
00061 bool fAutoAdvanceOption;
00062 };
00063 }
00064
00065 #endif
00066