00001 #ifndef FADCREADOUTFORMAT_FADCREADOUT_H 00002 #define FADCREADOUTFORMAT_FADCREADOUT_H 00003 00004 /* 00005 * FadcReadout.h 00006 * FadcReadoutFormat 00007 * 00008 * Created by Simon Patton on 9/2/10. 00009 * Copyright 2010 DayaBay Collaboration. All rights reserved. 00010 * 00011 */ 00012 #include <vector> 00013 00014 #include "DaqReadoutFormat/RomData.h" 00015 #include "FadcReadoutFormat/FadcBuffer.h" 00016 00017 namespace DybDaq { 00018 class FadcFoot; 00019 class FadcHead; 00020 class FadcData; 00021 } 00022 00023 #include "DaqReadoutFormat/DaqContainer.h" 00024 00025 namespace DybDaq { 00026 00027 class FadcReadout : public DaqContainer, public RomData { 00028 00029 public: 00030 00031 typedef std::vector<const FadcData*> FadcDataPtrList; 00032 00033 FadcReadout(const unsigned int triggerNumber, 00034 const unsigned int triggerType, 00035 const bool noData, 00036 const FadcTraits& traits); 00037 00041 FadcReadout(const ByteBuffer& byteBuffer, 00042 const unsigned int length); 00043 00047 virtual ~FadcReadout(); 00048 00052 virtual const DaqTraits& daqTraits() const; 00053 00054 /* 00055 * Returns the FadcHead for this readout. 00056 */ 00057 const FadcHead& head() const; 00058 00059 /* 00060 * Returns the list of FadcDataPtrList for this readout. 00061 */ 00062 const FadcDataPtrList& fadcData() const; 00063 00064 /* 00065 * Returns the FadcFoot for this readout. 00066 */ 00067 const FadcFoot& foot() const; 00068 00072 virtual unsigned int romSize() const; 00073 00078 virtual unsigned int gatherRom(DaqBuffer::OutputBufferList& outputBuffers) const; 00079 00084 virtual unsigned int inspectRom(DaqBuffer::Bytes& inspectors) const; 00085 00089 virtual unsigned int bufferSize() const; 00090 00094 const FadcData& addData(const unsigned int channel, 00095 const unsigned int highDataByte, 00096 const unsigned int middleDataByte, 00097 const unsigned int lowDataByte); 00098 00099 protected: 00100 00104 virtual unsigned int gatherComponents(OutputBufferList& outputBuffers) const; 00105 00109 virtual unsigned int inspectComponents(DaqBuffer::Bytes& inspectors) const; 00110 00114 virtual void expanded(const unsigned int size); 00115 00120 virtual bool setRomExpandable(DaqExpandable& expandable); 00121 00122 private: 00123 00127 FadcReadout(); 00128 00132 FadcReadout(FadcReadout& rhs); 00133 00137 FadcReadout& operator=(FadcReadout& rhs); 00138 00142 const FadcData& add(const FadcData* data); 00143 00144 /* 00145 * Returns the FadcFoot for this readout. 00146 */ 00147 FadcFoot& foot(); 00148 00152 mutable FadcHead* m_head; 00153 00157 mutable FadcDataPtrList* m_data; 00158 00162 mutable FadcFoot* m_foot; 00163 }; 00164 00165 } 00166 00167 #endif // FADCREADOUTFORMAT_FADCREADOUT_H