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

In This Package:

DaqReadoutSvc.cc

Go to the documentation of this file.
00001 /*
00002  *  DaqReadoutSvc.cc
00003  *  DaqFormatModules
00004  *
00005  *  Created by Simon Patton on 9/2/10.
00006  *  Copyright 2010 DayaBay Collaboration. All rights reserved.
00007  *
00008  */
00009 #include "DaqFormatModules/DaqReadoutSvc.h"
00010 
00011 #include <string>
00012 
00013 #include "FileReadoutFormat/CalibrationParametersRecord.h"
00014 #include "FileReadoutFormat/FileEndRecord.h"
00015 #include "FileReadoutFormat/FileNameStrings.h"
00016 #include "FileReadoutFormat/FileStartRecord.h"
00017 #include "FileReadoutFormat/FileTraits.h"
00018 #include "FileReadoutFormat/MetadataStrings.h"
00019 #include "FileReadoutFormat/RunParametersRecord.h"
00020 
00021 using DybDaq::CalibrationParametersRecord;
00022 using DybDaq::FileBuffer;
00023 using DybDaq::FileEndRecord;
00024 using DybDaq::FileNameStrings;
00025 using DybDaq::FileStartRecord;
00026 using DybDaq::FileTraits;
00027 using DybDaq::MetadataStrings;
00028 using DybDaq::RunParametersRecord;
00029 
00030 
00031 
00032 DaqReadoutSvc::DaqReadoutSvc(const std::string& name,
00033                              ISvcLocator *svc) :
00034     Service(name,
00035             svc),
00036     m_fileStartRecord(0),
00037     m_fileNameStrings(0),
00038     m_metadataStrings(0),
00039     m_runParametersRecord(0),
00040     m_calibrationParametersRecord(0),
00041     m_fileEndRecord(0) 
00042 {
00043   declareProperty("RunNumber",m_runNumber=0,
00044                   "The run number to be stamped in generated DAQ format data for the supplied detector");
00045   declareProperty("FirstEventNumber",m_nextEventNumber=1,
00046                   "The event number to be stamped into the next DAQ format event for the supplied detector");
00047   declareProperty("Generating",m_generating=false,
00048                   "True if DAQ formated data  should be generated");
00049 }
00050 
00051 DaqReadoutSvc::~DaqReadoutSvc() {
00052     if (0 != m_fileEndRecord) {
00053         delete m_fileEndRecord;
00054     }
00055     if (0 != m_calibrationParametersRecord) {
00056         delete m_calibrationParametersRecord;
00057     }
00058     if (0 != m_runParametersRecord) {
00059         delete m_runParametersRecord;
00060     }
00061     if (0 != m_metadataStrings) {
00062         delete m_metadataStrings;
00063     }
00064     if (0 != m_fileNameStrings) {
00065         delete m_fileNameStrings;
00066     }
00067     if (0 != m_fileStartRecord) {
00068         delete m_fileStartRecord;
00069     }
00070 }
00071 
00072 StatusCode DaqReadoutSvc::queryInterface(const InterfaceID& id, 
00073                                       void** interface) {
00074     if (IDaqReadoutSvc::interfaceID().versionMatch(id)) {
00075         // Good enough. Return this object
00076         *interface = dynamic_cast<IDaqReadoutSvc*>(this);
00077         addRef();
00078         return StatusCode::SUCCESS;
00079     }
00080     // Try base class
00081     return Service::queryInterface(id,
00082                                    interface);
00083 }
00084 
00085 bool DaqReadoutSvc::isGenerating() const {
00086     return m_generating;
00087 }
00088 
00089 unsigned int DaqReadoutSvc::ltbSlot(const DayaBay::Detector& /* detector */) const {
00090     return 3;
00091 }
00092 
00093 unsigned int DaqReadoutSvc::runNumber(const DayaBay::Detector& /* detector */) const {
00094     return m_runNumber;
00095 }
00096 
00097 unsigned int DaqReadoutSvc::nextEventNumber(const DayaBay::Detector& /* detector */) {
00098     return m_nextEventNumber++;
00099 }
00100 
00101 bool DaqReadoutSvc::hasFileStartRecord() const {
00102     return 0 != m_fileStartRecord;
00103 }
00104 
00105 const FileStartRecord& DaqReadoutSvc::fileStartRecord() const {
00106     return *m_fileStartRecord;
00107 }
00108 
00109 bool DaqReadoutSvc::hasFileNameStrings() const {
00110     return 0 != m_fileNameStrings;
00111 }
00112 
00113 const FileNameStrings& DaqReadoutSvc::fileNameStrings() const {
00114     return *m_fileNameStrings;
00115 }
00116 
00117 bool DaqReadoutSvc::hasMetadataStrings() const {
00118     return 0 != m_metadataStrings;
00119 }
00120 
00121 const MetadataStrings& DaqReadoutSvc::metadataStrings() const {
00122     return *m_metadataStrings;
00123 }
00124 
00125 bool DaqReadoutSvc::hasRunParametersRecord() const {
00126     return 0 != m_runParametersRecord;
00127 }
00128 
00129 const RunParametersRecord& DaqReadoutSvc::runParametersRecord() const {
00130     return *m_runParametersRecord;
00131 }
00132 
00133 bool DaqReadoutSvc::hasCalibrationParametersRecord() const {
00134     return 0 != m_calibrationParametersRecord;
00135 }
00136 
00137 const CalibrationParametersRecord& DaqReadoutSvc::calibrationParametersRecord() const {
00138     return *m_calibrationParametersRecord;
00139 }
00140 
00141 bool DaqReadoutSvc::hasFileEndRecord() const {
00142     return 0 != m_fileEndRecord;
00143 }
00144 
00145 const FileEndRecord& DaqReadoutSvc::fileEndRecord() const {
00146     return *m_fileEndRecord;
00147 }
00148 
00149 void DaqReadoutSvc::setFileRecord(const FileBuffer* record) {
00150     if (record->isMarked(FileTraits::kFileStartRecord)) {
00151         const FileStartRecord* fileRecord = dynamic_cast<const FileStartRecord*>(record);
00152         setFileRecord(fileRecord);
00153     } else if (record->isMarked(FileTraits::kFileNameStrings)) {
00154         const FileNameStrings* fileRecord = dynamic_cast<const FileNameStrings*>(record);
00155         setFileRecord(fileRecord);
00156     } else if (record->isMarked(FileTraits::kMetadataStrings)) {
00157         const MetadataStrings* fileRecord = dynamic_cast<const MetadataStrings*>(record);
00158         setFileRecord(fileRecord);
00159     } else if (record->isMarked(FileTraits::kRunParametersRecord)) {
00160         const RunParametersRecord* fileRecord = dynamic_cast<const RunParametersRecord*>(record);
00161         setFileRecord(fileRecord);
00162     } else if (record->isMarked(FileTraits::kCalibrationParametersRecord)) {
00163         const CalibrationParametersRecord* fileRecord = dynamic_cast<const CalibrationParametersRecord*>(record);
00164         setFileRecord(fileRecord);
00165     } else if (record->isMarked(FileTraits::kFileEndRecord)) {
00166         const FileEndRecord* fileRecord = dynamic_cast<const FileEndRecord*>(record);
00167         setFileRecord(fileRecord);
00168     }
00169 }
00170 
00171 void DaqReadoutSvc::setFileRecord(const FileStartRecord* record) {
00172     if (0 != m_fileStartRecord) {
00173         delete m_fileStartRecord;
00174     }
00175     m_fileStartRecord = record;
00176 }
00177 
00178 void DaqReadoutSvc::setFileRecord(const FileNameStrings* record) {
00179     if (0 != m_fileNameStrings) {
00180         delete m_fileNameStrings;
00181     }
00182     m_fileNameStrings = record;
00183 }
00184 
00185 void DaqReadoutSvc::setFileRecord(const MetadataStrings* record) {
00186     if (0 != m_metadataStrings) {
00187         delete m_metadataStrings;
00188     }
00189     m_metadataStrings = record;
00190 }
00191 
00192 void DaqReadoutSvc::setFileRecord(const RunParametersRecord* record) {
00193     if (0 != m_runParametersRecord) {
00194         delete m_runParametersRecord;
00195     }
00196     m_runParametersRecord = record;
00197 }
00198 
00199 void DaqReadoutSvc::setFileRecord(const CalibrationParametersRecord* record) {
00200     if (0 != m_calibrationParametersRecord) {
00201         delete m_calibrationParametersRecord;
00202     }
00203     m_calibrationParametersRecord = record;
00204 }
00205 
00206 void DaqReadoutSvc::setFileRecord(const FileEndRecord* record) {
00207     if (0 != m_fileEndRecord) {
00208         delete m_fileEndRecord;
00209     }
00210     m_fileEndRecord = record;
00211 }
| Classes | Job Modules | Data Objects | Services | Algorithms | Tools | Packages | Directories | Tracs |

Generated on Mon Apr 11 20:46:28 2011 for DaqFormatModules by doxygen 1.4.7