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

In This Package:

DaqToOStream.h

Go to the documentation of this file.
00001 #ifndef FILEREADOUTFORMAT_DAQTOOSTREAM_H
00002 #define FILEREADOUTFORMAT_DAQTOOSTREAM_H
00003 
00004 /*
00005  *  DaqToOStream.h
00006  *  FileReadoutFormat
00007  *
00008  *  Created by Simon Patton on 2/25/11.
00009  *  Copyright 2011 DayaBay Collaboration. All rights reserved.
00010  *
00011  */
00012 #include <ostream>
00013 #include <string>
00014 
00015 #include "DaqReadoutFormat/DaqBuffer.h"
00016 #include "FileReadoutFormat/FileTraits.h"
00017 #include "FileReadoutFormat/MetadataStrings.h"
00018 
00019 namespace DybDaq {
00020     class CalibrationParametersRecord;
00021     class DataSeparatorRecord;
00022     class EventReadout;
00023     class FileBuffer;
00024     class FileEndRecord;
00025     class FileNameStrings;
00026     class FileStartRecord;
00027     class MetadataStrings;
00028     class RunParametersRecord;
00029 }
00030 
00031 namespace DybDaq {
00032     
00033     class DaqToOStream {
00034         
00035     public:
00036         
00040         virtual ~DaqToOStream();
00041         
00045         bool openSequence(const std::string& fileBase,
00046                           const FileStartRecord& record);
00047         
00051         const FileStartRecord* openSequence(const std::string& fileBase,
00052                                             const FileTraits::FileDateTime& dateTime,
00053                                             const unsigned int dataBlockLimit,
00054                                             const unsigned int megabyteLimit);
00055         
00059         bool open(const FileStartRecord& record);
00060         
00064         const FileStartRecord* openNext(const FileTraits::FileDateTime& dateTime);
00065         
00069         bool saveFileNameStrings(const FileNameStrings& record);
00070         
00074         const FileNameStrings* saveFileNameStrings(const std::string& application,
00075                                                    const std::string& fileBase = "");
00076         
00080         bool saveMetadataStrings(const MetadataStrings& record);
00081         
00085         const MetadataStrings* saveMetadataStrings(const MetadataStrings::MetadataStringPtrList& metadataStrings);
00086         
00090         bool saveRunParametersRecord(const RunParametersRecord& record);
00091         
00095         const RunParametersRecord* saveRunParametersRecord(const unsigned int runNumber,
00096                                                            const bool recordEnabled,
00097                                                            const unsigned int triggerType,
00098                                                            const unsigned int detectorMask);
00099         
00103         bool saveCalibrationParametersRecord(const CalibrationParametersRecord& record);
00104         
00108         const CalibrationParametersRecord* saveCalibrationParametersRecord(const unsigned int detector,
00109                                                                            const unsigned int adNumber,
00110                                                                            const unsigned int sourceA,
00111                                                                            const unsigned int zPositionA,
00112                                                                            const unsigned int sourceB,
00113                                                                            const unsigned int zPositionB,
00114                                                                            const unsigned int sourceC,
00115                                                                            const unsigned int zPositionC,
00116                                                                            const unsigned int led1,
00117                                                                            const unsigned int led2,
00118                                                                            const unsigned int led1Voltage,
00119                                                                            const unsigned int led2Voltage,
00120                                                                            const unsigned int duration,
00121                                                                            const unsigned int ledFrequency,
00122                                                                            const unsigned int ledPulseSeparation,
00123                                                                            const unsigned int ltbMode,
00124                                                                            const unsigned int motorPower,
00125                                                                            const unsigned int cameraPower,
00126                                                                            const unsigned int ledFlashing);
00127         
00131         bool saveDataSeparatorRecord(const DataSeparatorRecord& record);
00132         
00136         const DataSeparatorRecord* saveEvent(const EventReadout& event);
00137         
00141         bool close(const FileEndRecord& record) ;
00142         
00146         const FileEndRecord* close(const FileTraits::FileDateTime& dateTime);
00147         
00151         const FileEndRecord* close(const FileTraits::FileDateTime& dateTime,
00152                                    const unsigned int blockCountBeforeFile,
00153                                    const unsigned long payloadLengthBeforeFile,
00154                                    const unsigned int status);
00155         
00156     protected:
00157         
00161         DaqToOStream(const FileTraits& traits);
00162         
00166         const FileStartRecord* openElement(const unsigned int fileNumber,
00167                                            const FileTraits::FileDateTime& dateTime,
00168                                            const unsigned int dataBlockLimit,
00169                                            const unsigned int megabyteLimit);
00170         
00174         virtual std::ostream* openStream() = 0;
00175 
00179         virtual void prepareNext() = 0;
00180         
00184         virtual void closeStream(std::ostream& stream) = 0;
00185         
00189         void splitStream();
00190 
00194         void eventSaved(unsigned int bytesSaved);
00195         
00199         const std::string& getFileBase() const;
00200         
00204         unsigned int getFileBlockCount() const;
00205 
00209         unsigned int getFileCount() const;
00210         
00214         unsigned int getLastRecord() const;
00215         
00219         bool hasFileBase() const;
00220         
00224         bool hasOStream() const;
00225         
00229         void saveBuffer(const FileBuffer& daqBuffer);
00230         
00231     private:
00232         
00236         DaqToOStream();
00237         
00241         DaqToOStream(DaqToOStream& rhs);
00242         
00246         DaqToOStream& operator=(DaqToOStream& rhs);
00247         
00251         void setFileBase(const std::string& fileBase);
00252         
00256         const FileTraits* m_traits;
00257         
00261         std::ostream* m_ostream;
00262         
00266         DaqBuffer::OutputBufferList* m_buffers;
00267         
00271         std::string* m_fileBase;
00272         
00276         unsigned long m_filePayloadLength;
00277         
00281         unsigned long m_payloadLengthTotal;
00282         
00286         unsigned int m_lastRecord;
00287         
00291         unsigned int m_dataBlockLimit;
00292         
00296         unsigned int m_megabyteLimit;
00297         
00301         unsigned int m_fileCount;
00302         
00306         unsigned int m_sequenceBlockCount;
00307         
00311         unsigned int m_fileBlockCount;
00312         
00316         unsigned int m_blockCountTotal;
00317     };
00318     
00319 }
00320 
00321 #endif // FILEREADOUTFORMAT_DAQTOOSTREAM_H
| Classes | Job Modules | Data Objects | Services | Algorithms | Tools | Packages | Directories | Tracs |

Generated on Mon Apr 11 20:08:33 2011 for FileReadoutFormat by doxygen 1.4.7