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

In This Package:

LtbFrame.cc

Go to the documentation of this file.
00001 /*
00002  *  LtbFrame.cc
00003  *  LtbReadoutFormat
00004  *
00005  *  Created by Simon Patton on 7/21/10.
00006  *  Copyright 2010 DayaBay Collaboration. All rights reserved.
00007  *
00008  */
00009 #include <cstring>
00010 #include "LtbReadoutFormat/LtbFrame.h"
00011 
00012 #include "DaqReadoutFormat/ByteBuffer.h"
00013 #include "LtbReadoutFormat/LtbTime.h"
00014 #include "LtbReadoutFormat/LtbTraits.h"
00015 
00016 using DybDaq::ByteBuffer;
00017 using DybDaq::LtbBuffer;
00018 using DybDaq::LtbFrame;
00019 using DybDaq::LtbTime;
00020 using DybDaq::LtbTraits;
00021 
00022 LtbFrame::LtbFrame(const unsigned int readoutType,
00023                    const unsigned int triggerMask,
00024                    const LtbTraits::LtbDateTime& dateTime,
00025                    const unsigned int halfNanoseconds,
00026                    const int accumulation,
00027                    const unsigned int hitSum,
00028                    const bool totalEsum,
00029                    const bool highEsum,
00030                    const bool lowEsum,
00031                    const unsigned int energySum,
00032                    const unsigned int crossTriggerSource,
00033                    const bool accumulationStatus,
00034                    const bool validGps,
00035                    const bool usingUtc,
00036                    const bool validClockSystem,
00037                    const bool feeBufferFull,
00038                    const bool ltbBufferFull,
00039                    const unsigned int blockedTriggerCount,
00040                    const LtbTraits& traits) :
00041 LtbBuffer(new char[traits.frameSize() * kBytesInInt],
00042           traits),
00043 m_time(0) {
00044     traits.initializeFrame(buffer());
00045     setFrameNumber(0);
00046     setReadoutType(readoutType);
00047     setTriggerMask(triggerMask);
00048     m_time = new LtbTime(dateTime,
00049                          halfNanoseconds,
00050                          accumulation,
00051                          traits);
00052     setHitSum(hitSum);
00053     setTotalEsum(totalEsum);
00054     setHighEsum(highEsum);
00055     setLowEsum(lowEsum);
00056     setEnergySum(energySum);
00057     setCrossTriggerSource(crossTriggerSource);
00058     setAccumulationStatus(accumulationStatus);
00059     setValidGps(validGps);
00060     setUsingUtc(usingUtc);
00061     setValidClockSystem(validClockSystem);
00062     setFeeBufferFull(feeBufferFull);
00063     setLtbBufferFull(ltbBufferFull);
00064     setBlockedTriggerCount(blockedTriggerCount);
00065 }
00066 
00067 
00068 LtbFrame::LtbFrame(const ByteBuffer& byteBuffer,
00069                    const LtbTraits& traits) :
00070 LtbBuffer(byteBuffer,
00071           traits),
00072 m_time(0) {
00073     const unsigned int position = byteBuffer.position();
00074         byteBuffer.position(position + (ltbTraits().timeOffset() * kBytesInInt));
00075     m_time = new LtbTime(byteBuffer,
00076                          traits);
00077         byteBuffer.position(position + (ltbTraits().frameSize() * kBytesInInt));
00078 }
00079 
00080 LtbFrame::~LtbFrame() {
00081     if (0 != m_time) {
00082         delete m_time;
00083     }
00084 }
00085 
00086 unsigned int LtbFrame::frameNumber() const {
00087         return readUnsignedInt(LtbTraits::kFrameNumber);
00088 }
00089 
00090 unsigned int LtbFrame::readoutType() const {
00091         return readUnsignedInt(LtbTraits::kReadoutType);
00092 }
00093 
00094 unsigned int LtbFrame::triggerMask() const {
00095         return readUnsignedInt(LtbTraits::kTriggerMask);
00096 }
00097 
00098 bool LtbFrame::isTriggerLineSet(const unsigned int line) const {
00099     return 0 != (triggerMask() & ltbTraits().triggerLineBit(line));
00100 }
00101 
00102 const LtbTraits::LtbDateTime& LtbFrame::dateTime() const {
00103     return *m_time;
00104 }
00105 
00106 unsigned int LtbFrame::ticks() const {
00107     return m_time->ticks();
00108 }
00109 
00110 unsigned int LtbFrame::halfNanoseconds() const {
00111     return m_time->halfNanoseconds();
00112 }
00113 
00114 int LtbFrame::accumulation() const {
00115     return m_time->accumulation();
00116 }
00117 
00118 unsigned int LtbFrame::hitSum() const {
00119         return readUnsignedInt(LtbTraits::kHitSum);
00120 }
00121 
00122 bool LtbFrame::totalEsum() const {
00123         return readBool(LtbTraits::kTotalEsum);
00124 }
00125 
00126 bool LtbFrame::highEsum() const {
00127         return readBool(LtbTraits::kHighEsum);
00128 }
00129 
00130 bool LtbFrame::lowEsum() const {
00131         return readBool(LtbTraits::kLowEsum);
00132 }
00133 
00134 unsigned int LtbFrame::energySum() const {
00135         return readUnsignedInt(LtbTraits::kEnergySum);
00136 }
00137 
00138 unsigned int LtbFrame::crossTriggerSource() const {
00139         return readUnsignedInt(LtbTraits::kCrossTriggerSource);
00140 }
00141 
00142 bool LtbFrame::accumulationStatus() const {
00143         return readBool(LtbTraits::kAccumulationStatus);
00144 }
00145 
00146 bool LtbFrame::validGps() const {
00147         return readBool(LtbTraits::kValidGps);
00148 }
00149 
00150 bool LtbFrame::usingUtc() const {
00151         return readBool(LtbTraits::kUsingUtc);
00152 }
00153 
00154 bool LtbFrame::validClockSystem() const {
00155         return readBool(LtbTraits::kValidClockSystem);
00156 }
00157 
00158 bool LtbFrame::feeBufferFull() const {
00159         return readBool(LtbTraits::kFeeBufferFull);
00160 }
00161 
00162 bool LtbFrame::ltbBufferFull() const {
00163         return readBool(LtbTraits::kLtbBufferFull);
00164 }
00165 
00166 unsigned int LtbFrame::blockedTriggerCount() const {
00167         return readUnsignedInt(LtbTraits::kBlockedTriggerCount);
00168 }
00169 
00170 unsigned int LtbFrame::gather(OutputBufferList& outputBuffers) const {
00171     if (!hasByteBuffer()) {
00172         const LtbTraits& traits = ltbTraits();
00173         memcpy(const_cast<char*>(buffer()) + (traits.timeOffset() * kBytesInInt),
00174                m_time->buffer(),
00175                traits.timeSize() * kBytesInInt);
00176     }
00177     return LtbBuffer::gather(outputBuffers);
00178 }
00179 
00180 
00181 unsigned int LtbFrame::inspect(DaqBuffer::Bytes& inspectors) const {
00182     unsigned int cursor = fillInspectors(inspectors,
00183                                          LtbTraits::kFrameFront,
00184                                          0);
00185     cursor += m_time->inspect(inspectors);
00186     cursor = fillInspectors(inspectors,
00187                           LtbTraits::kFrameBack,
00188                           cursor + 1);
00189     return cursor + 1;
00190 }
00191 
00192 
00193 unsigned int LtbFrame::bufferSize() const {
00194     return ltbTraits().frameSize();
00195 }
00196 
00197 void LtbFrame::setFrameNumber(const unsigned int frameNumber) {
00198     writeField(frameNumber,
00199                LtbTraits::kFrameNumber);
00200 }
00201 
00202 void LtbFrame::setReadoutType(const unsigned int readoutType) {
00203     writeField(readoutType,
00204                LtbTraits::kReadoutType);
00205 }
00206 
00207 void LtbFrame::setTriggerMask(const unsigned int triggerMask) {
00208     writeField(triggerMask,
00209                LtbTraits::kTriggerMask);
00210 }
00211 
00212 void LtbFrame::setTriggerLine(const unsigned int line) {
00213     writeField((triggerMask() | ltbTraits().triggerLineBit(line)),
00214                LtbTraits::kTriggerMask);
00215 }
00216 
00217 void LtbFrame::setDateTime(const LtbTraits::LtbDateTime& dateTime) {
00218     m_time->setDateTime(dateTime);
00219 }
00220 
00221 void LtbFrame::setHalfNanoseconds(const unsigned int halfNanoseconds) {
00222     m_time->setHalfNanoseconds(halfNanoseconds);
00223 }
00224 
00225 void LtbFrame::setAccumulation(const int accumulation) {
00226     m_time->setAccumulation(accumulation);
00227 }
00228 
00229 void LtbFrame::setHitSum(const unsigned int hitSum) {
00230     writeField(hitSum,
00231                LtbTraits::kHitSum);
00232 }
00233 
00234 void LtbFrame::setTotalEsum(const bool totalEsum) {
00235     writeField(totalEsum,
00236                LtbTraits::kTotalEsum);
00237 }
00238 
00239 void LtbFrame::setHighEsum(const bool highEsum) {
00240     writeField(highEsum,
00241                LtbTraits::kHighEsum);
00242 }
00243 
00244 void LtbFrame::setLowEsum(const bool lowEsum) {
00245     writeField(lowEsum,
00246                LtbTraits::kLowEsum);
00247 }
00248 
00249 void LtbFrame::setEnergySum(const unsigned int energySum) {
00250     writeField(energySum,
00251                LtbTraits::kEnergySum);
00252 }
00253 
00254 void LtbFrame::setCrossTriggerSource(const unsigned int crossTriggerSource) {
00255     writeField(crossTriggerSource,
00256                LtbTraits::kCrossTriggerSource);
00257 }
00258 
00259 void LtbFrame::setAccumulationStatus(const bool accumulationStatus) {
00260     writeField(accumulationStatus,
00261                LtbTraits::kAccumulationStatus);
00262 }
00263 
00264 void LtbFrame::setValidGps(const bool validGps) {
00265     writeField(validGps,
00266                LtbTraits::kValidGps);
00267 }
00268 
00269 void LtbFrame::setUsingUtc(const bool usingUtc) {
00270     writeField(usingUtc,
00271                LtbTraits::kUsingUtc);
00272 }
00273 
00274 void LtbFrame::setValidClockSystem(const bool validClockSystem) {
00275     writeField(validClockSystem,
00276                LtbTraits::kValidClockSystem);
00277 }
00278 
00279 void LtbFrame::setFeeBufferFull(const bool feeBufferFull) {
00280     writeField(feeBufferFull,
00281                LtbTraits::kFeeBufferFull);
00282 }
00283 
00284 void LtbFrame::setLtbBufferFull(const bool ltbBufferFull) {
00285     writeField(ltbBufferFull,
00286                LtbTraits::kLtbBufferFull);
00287 }
00288 
00289 void LtbFrame::setBlockedTriggerCount(const unsigned int blockedTriggerCount) {
00290     writeField(blockedTriggerCount,
00291                LtbTraits::kBlockedTriggerCount);
00292 }
00293 
| Classes | Job Modules | Data Objects | Services | Algorithms | Tools | Packages | Directories | Tracs |

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