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

In This Package:

CbltBody.cc

Go to the documentation of this file.
00001 /*
00002  *  CbltBody.cc
00003  *  CbltReadoutFormat
00004  *
00005  *  Created by Simon Patton on 7/22/10.
00006  *  Copyright 2010 DayaBay Collaboration. All rights reserved.
00007  *
00008  */
00009 #include "CbltReadoutFormat/CbltBody.h"
00010 
00011 #include "CbltReadoutFormat/CbltTraits.h"
00012 #include "DaqReadoutFormat/ByteBuffer.h"
00013 #include "DaqReadoutFormat/RomData.h"
00014 #include "FadcReadoutFormat/FadcReadout.h"
00015 #include "FeeReadoutFormat/FeeReadout.h"
00016 #include "LtbReadoutFormat/LtbReadout.h"
00017 #include "FecReadoutFormat/FecReadout.h"
00018 #include "RtmReadoutFormat/RtmReadout.h"
00019 
00020 using DybDaq::ByteBuffer;
00021 using DybDaq::CbltBody;
00022 using DybDaq::CbltBuffer;
00023 using DybDaq::DaqBuffer;
00024 using DybDaq::FadcReadout;
00025 using DybDaq::FeeReadout;
00026 using DybDaq::LtbReadout;
00027 using DybDaq::FecReadout;
00028 using DybDaq::RtmReadout;
00029 using DybDaq::RomData;
00030 
00031 CbltBody::CbltBody(const RomData* data,
00032                    const unsigned int moduleType,
00033                    DaqExpandable& expandable) :
00034 DaqContainer(expandable),
00035 m_data(data),
00036 m_moduleType(moduleType) {
00037     expandedByRomData(data);
00038 }
00039 
00040 CbltBody::CbltBody(const ByteBuffer& byteBuffer,
00041                    const unsigned int moduleType,
00042                    const unsigned int bufferSize,
00043                    const CbltTraits& traits) :
00044 DaqContainer(byteBuffer,
00045              traits,
00046              bufferSize),
00047 m_data(0),
00048 m_moduleType(moduleType) {
00049     byteBuffer.position(byteBuffer.position() + (bufferSize * kBytesInInt));
00050 }
00051 
00052 CbltBody::~CbltBody() {
00053     if (0 != m_data) {
00054         delete m_data;
00055     }
00056 }
00057 
00058 const RomData& CbltBody::data() const {
00059     if (0 == m_data && hasByteBuffer()) {
00060         const CbltTraits& traits = dynamic_cast<const CbltTraits&>(daqTraits());
00061         const ByteBuffer& buffer = byteBuffer();
00062 
00063         const unsigned int originalPosition = buffer.position();
00064         buffer.position(begin());
00065         if (m_moduleType == traits.moduleType(CbltTraits::kFadcModule)) {
00066             m_data = new FadcReadout(buffer,
00067                                      containerSize());
00068         } else if (m_moduleType == traits.moduleType(CbltTraits::kFeeModule)) {
00069             m_data = new FeeReadout(buffer,
00070                                     containerSize());
00071         } else if (m_moduleType == traits.moduleType(CbltTraits::kLtbModule)) {
00072             m_data = new LtbReadout(buffer,
00073                                     containerSize());
00074         }
00075         else if ( m_moduleType == traits.moduleType(CbltTraits::kRpcRomModule)) {
00076            const unsigned int version = (traits.majorVersion() << 4) | traits.minorVersion();
00077            m_data = new FecReadout(buffer, containerSize(), version);
00078         }
00079         else if ( m_moduleType == traits.moduleType(CbltTraits::kRpcRtmModule)) {
00080            const unsigned int version = (traits.majorVersion() << 4) | traits.minorVersion();
00081            m_data = new RtmReadout(buffer, containerSize(), version);
00082         }
00083         buffer.position(originalPosition);
00084     }
00085     return *m_data;
00086 }
00087 
00088 unsigned int CbltBody::bufferSize() const {
00089     return data().romSize();
00090 }
00091 
00092 unsigned int CbltBody::gatherComponents(OutputBufferList& outputBuffers) const {
00093     return data().gatherRom(outputBuffers);
00094 }
00095 
00096 unsigned int CbltBody::inspectComponents(DaqBuffer::Bytes& inspectors) const {
00097  //   return 0;
00098     return data().inspectRom(inspectors);
00099 }
00100 
00101 void CbltBody::expanded(const unsigned int size) {
00102     notifyExpandable(size);
00103 }
| Classes | Job Modules | Data Objects | Services | Algorithms | Tools | Packages | Directories | Tracs |

Generated on Mon Apr 11 20:08:16 2011 for CbltReadoutFormat by doxygen 1.4.7