| Classes | Job Modules | Data Objects | Services | Algorithms | Tools | Packages | Directories | Tracs |

In This Package:

RawDataInputSvc.h

Go to the documentation of this file.
00001 #ifndef RAWDATAINPUTSVC_H
00002 #define RAWDATAINPUTSVC_H
00003 
00004 // STL includes
00005 #include <vector>
00006 
00007 // Gaudi includes
00008 #include "GaudiKernel/Service.h"
00009 
00010 // local includes
00011 #include "RawDataEvent.h"
00012 #include "RawDataIO/IRawDataInputSvc.h"
00013 
00014 // InputStream to work with .data and .rraw
00015 #include "RawData/IInputStream.h"
00016 #include "RawData/RawDataReader.h"
00017 #include "RawData/RawData.h"
00018 
00019 class RawDataInputSvc: public Service,
00020          virtual public IRawDataInputSvc
00021 {
00022 public:
00023    RawDataInputSvc(const std::string& name, ISvcLocator* svcloc);
00024    ~RawDataInputSvc();
00025 
00026    //Service interface
00027    virtual StatusCode queryInterface(const InterfaceID& riid, void** ppRaw);
00028    virtual StatusCode initialize();
00029    virtual StatusCode finalize();
00030 
00032    virtual RawDataEvent*  currentEvent();
00033    virtual StatusCode     nextEvent();
00034 
00035 private:
00037    StatusCode nextInputFile();
00038 
00040    uint32_t nextRecord();
00041 
00043    void setBuffer(uint32_t size) {
00044       if (m_buffer != 0) delete[] m_buffer;
00045       m_buffer = new char[size];
00046       m_bufferSize = size;
00047    }
00048 
00050    void readRawEventBuffer();
00051    int readRomData(RawDataEvent::RomFee* rom, int& offset, const int& romDataSize);
00052    int readRomData(RawDataEvent::RomFadc* rom, int& offset, const int& romDataSize);
00053    int readRomData(RawDataEvent::RomLtb* rom, int& offset, const int& romDataSize);
00054    int readRomDataUTC(RawDataEvent::RomLtb* rom, int& offset, const int& romDataSize);
00055    int readRomDataUnix(RawDataEvent::RomLtb* rom, int& offset, const int& romDataSize);
00056 
00058    void printEvent();
00059 
00061    int  queryRawFileFromDB();
00062 
00063    std::vector<std::string> m_inputFiles;
00064    IInputStream*            m_inputStream;
00065    RawDataEvent*            m_rawDataEvent;
00066 
00068    int m_bufferSize;
00069    char* m_buffer;
00070    int m_printFreq;
00071    bool m_isFileHeaderPrinted;
00072    bool m_includeRawEvent;
00073    bool m_ifRawEventHeader;
00074 
00076    int m_samplingInterval;  //average sampling interval
00077    int m_randomEvtNum;
00078   
00080    int   m_SeqNo;
00081    bool  m_IsDBI;
00082 
00083 
00085 public:
00086    DayaBay::RawEvent*  currentRawEvent();
00087    DayaBay::RawEvent*  currentRawEventClone();
00088 
00089 private:
00090    DayaBay::RawDataReader* m_reader;
00091    DayaBay::RawEvent*      m_rawEvent;
00092    DayaBay::RawEvent*      m_rawEventClone;
00093 
00094 };
00095 
00096 #endif
| Classes | Job Modules | Data Objects | Services | Algorithms | Tools | Packages | Directories | Tracs |

Generated on Mon Apr 11 20:27:03 2011 for RawDataIO by doxygen 1.4.7