00001 /* 00002 * FadcFoot.cc 00003 * FadcReadoutFormat 00004 * 00005 * Created by Simon Patton on 9/2/10. 00006 * Copyright 2010 DayaBay Collaboration. All rights reserved. 00007 * 00008 */ 00009 00010 #include "FadcReadoutFormat/FadcFoot.h" 00011 00012 #include "DaqReadoutFormat/ByteBuffer.h" 00013 #include "FadcReadoutFormat/FadcHead.h" 00014 #include "FadcReadoutFormat/FadcTraits.h" 00015 00016 using DybDaq::FadcFoot; 00017 using DybDaq::FadcHead; 00018 using DybDaq::FadcTraits; 00019 00020 FadcFoot::FadcFoot(const FadcHead& head) : 00021 FadcBuffer(new char[head.fadcTraits().footSize() * kBytesInInt], 00022 head.fadcTraits()) { 00023 const FadcTraits& traits = fadcTraits(); 00024 traits.initializeFoot(buffer()); 00025 setTriggerNumber(head.triggerNumber()); 00026 setDataLength((traits.headSize() + traits.footSize()) * kBytesInInt); 00027 } 00028 00029 FadcFoot::FadcFoot(const ByteBuffer& byteBuffer, 00030 const FadcTraits& traits) : 00031 FadcBuffer(byteBuffer, 00032 traits) { 00033 byteBuffer.position(byteBuffer.position() + kBytesInInt); 00034 } 00035 00036 FadcFoot::~FadcFoot() { 00037 } 00038 00039 unsigned int FadcFoot::formatComponent() const { 00040 return FadcTraits::kFoot; 00041 } 00042 00043 unsigned int FadcFoot::triggerNumber() const { 00044 return readUnsignedInt(FadcTraits::kFootTriggerNumber); 00045 } 00046 00047 unsigned int FadcFoot::dataLength() const { 00048 return readUnsignedInt(FadcTraits::kFootDataLength); 00049 } 00050 00051 unsigned int FadcFoot::bufferSize() const { 00052 return fadcTraits().footSize(); 00053 } 00054 00055 void FadcFoot::setTriggerNumber(const unsigned int triggerNumber) { 00056 writeField(triggerNumber, 00057 FadcTraits::kFootTriggerNumber); 00058 } 00059 00060 void FadcFoot::setDataLength(const unsigned int dataLength) { 00061 writeField(dataLength, 00062 FadcTraits::kFootDataLength); 00063 }