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

In This Package:

FileTraits.h

Go to the documentation of this file.
00001 #ifndef FILEREADOUTFORMAT_FILETRAITS_H
00002 #define FILEREADOUTFORMAT_FILETRAITS_H
00003 
00004 /*
00005  *  FileTraits.h
00006  *  FileReadoutFormat
00007  *
00008  *  Created by Simon Patton on 7/19/10.
00009  *  Copyright 2010 DayaBay Collaboration. All rights reserved.
00010  *
00011  */
00012 #include <ctime>
00013 
00014 #include <vector>
00015 
00016 #include "DaqReadoutFormat/DaqTraits.h"
00017 
00018 namespace DybDaq {
00019     
00020     class FileTraits : public DaqTraits {
00021         
00022     public:
00023         
00024         typedef std::vector<const char*> DetectorList;
00025         
00026         typedef struct tm FileDateTime;
00027         
00031         static const unsigned int kIllegalRecord;
00032         
00033         // Record constants.
00034         
00038         static const unsigned int kFileStartRecord;
00039         
00043         static const unsigned int kFileNameStrings;
00044         
00048         static const unsigned int kMetadataStrings;
00049         
00053         static const unsigned int kRunParametersRecord;
00054         
00058         static const unsigned int kCalibrationParametersRecord;
00059         
00063         static const unsigned int kDataSeparatorRecord;
00064         
00068         static const unsigned int kFileEndRecord;
00069         
00073         static const unsigned int kFileEndMarker;
00074         
00075         // For fields in all Records.
00076         
00080         static const unsigned int kIllegalField;
00081         
00085         static const unsigned int kMarker;
00086         
00090         static const unsigned int kRecordSize;
00091         
00092         // For data_separator_record
00093         
00094         // For file_start_record.
00095         
00099         static const unsigned int kMajorVersion;
00100         
00104         static const unsigned int kMinorVersion;
00105         
00109         static const unsigned int kFileNumber;
00110         
00114         static const unsigned int kFileOpenDate;
00115         
00119         static const unsigned int kFileOpenTime;
00120         
00124         static const unsigned int kDataBlockLimit;
00125         
00129         static const unsigned int kMegabyteLimit;
00130         
00131         // For file_name_strings.
00132         
00136         static const unsigned int kFirstNameLength;
00137         
00138         // For metadata_strings
00139         
00143         static const unsigned int kMetadataCount;
00144         
00148         static const unsigned int kFirstMetadataLength;
00149         
00150         // For run_parameters_record.
00151         
00155         static const unsigned int kFileRunNumber;
00156         
00160         static const unsigned int kRecordEnabled;
00161         
00165         static const unsigned int kRunTriggerType;
00166         
00170         static const unsigned int kRunDetectorMask;
00171         
00172         // For calibration_parameters_record
00173         
00177         static const unsigned int kCalibrationDetectorId;
00178         
00182         static const unsigned int kCalibrationAxis;
00183         
00187         static const unsigned int kCalibrationSourceId;
00188         
00192         static const unsigned int kCalibrationZPosition;
00193         
00197         static const unsigned int kCalibrationDuration;
00198         
00202         static const unsigned int kCalibrationLedFrequency;
00203         
00207         static const unsigned int kCalibrationLtbMode;
00208         
00209         // For data_separator_record
00210         
00214         static const unsigned int kBlockNumber;
00215         
00219         static const unsigned int kBlockLength;
00220         
00221         // For file_end_record
00222         
00226         static const unsigned int kFileCloseDate;
00227         
00231         static const unsigned int kFileCloseTime;
00232         
00236         static const unsigned int kFileEventCount;
00237         
00241         static const unsigned int kFilePayloadSize;
00242         
00246         static const unsigned int kRunEventCount;
00247         
00251         static const unsigned int kRunPayloadSize;
00252         
00256         static const unsigned int kFileEndStatus;
00257         
00261         static const unsigned int kEndFileMarker;
00262         
00263         // New in v0.7
00264         
00265         // For calibration_parameters_record
00266         
00270         static const unsigned int kCalibrationAdNumber;
00271         
00275         static const unsigned int kCalibrationLedNumber1;
00276         
00280         static const unsigned int kCalibrationLedNumber2;
00281         
00285         static const unsigned int kCalibrationLedVoltage1;
00286         
00290         static const unsigned int kCalibrationLedVoltage2;
00291         
00295         static const unsigned int kCalibrationLedPulseSeparation;
00296         
00297         // New in v0.8
00298         
00299         // For calibration_parameters_record
00300         
00304         static const unsigned int kCalibrationSourceIdA;
00305         
00309         static const unsigned int kCalibrationZPositionA;
00310         
00314         static const unsigned int kCalibrationSourceIdB;
00315         
00319         static const unsigned int kCalibrationZPositionB;
00320         
00324         static const unsigned int kCalibrationSourceIdC;
00325         
00329         static const unsigned int kCalibrationZPositionC;
00330         
00334         static const unsigned int kCalibrationMotorPower;
00335         
00339         static const unsigned int kCalibrationCameraPower;
00340         
00344         static const unsigned int kCalibrationLedFlashing;
00345         
00346         // New in v0.9
00347         
00348         // For calibration_parameters_record
00349         
00353         static const unsigned int kCalibrationHomeA;
00354         
00358         static const unsigned int kCalibrationHomeB;
00359         
00363         static const unsigned int kCalibrationHomeC;
00364         
00365         //
00366         
00370         static const FileTraits& defaultTraits();
00371         
00375         static const FileTraits* readTraits(const char*& buffer);
00376         
00380         virtual ~FileTraits();
00381         
00385         virtual unsigned int illegalMarker() const;
00386         
00390         virtual unsigned int illegalField() const;
00391         
00395         virtual unsigned int recordSize(unsigned int marker) const;
00396         
00400         virtual const DetectorList* detectorList(const unsigned int mask) const;
00401         
00405         virtual const char* detectorAsString(unsigned int line) const;
00406         
00410         virtual const std::string dateTimeAsString(const FileDateTime& time) const;
00411         
00415         const FileDateTime* makeDateTime(const time_t& time) const;
00416         
00420         unsigned int firstNameLengthOffset() const;
00421         
00425         unsigned int firstMetadataLengthOffset() const;
00426         
00427     protected:
00428         
00432         FileTraits();
00433         
00437         virtual const unsigned int* recordSizes() const = 0;
00438         
00442         virtual unsigned int detectorListEnd() const = 0;
00443         
00447         virtual const char** detectorStrings() const = 0;
00448         
00449     private:
00450         
00454         FileTraits(FileTraits& rhs);
00455         
00459         FileTraits& operator=(FileTraits& rhs);
00460         
00461     };
00462     
00463 }
00464 
00465 #endif // FILEREADOUTFORMAT_FILETRAITS_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