00001
00002
00003
00004
00005
00006
00007
00008
00009 #include "FeeReadoutFormat/FeeHit.h"
00010
00011 #include "DaqReadoutFormat/ByteBuffer.h"
00012 #include "FeeReadoutFormat/FeeTraits.h"
00013
00014 using DybDaq::FeeHit;
00015
00016 FeeHit::FeeHit(const unsigned int channelId,
00017 const unsigned int peakCycle,
00018 const bool highRangeAdc,
00019 const unsigned int preAdc,
00020 const unsigned int adc,
00021 const unsigned int hitNumber,
00022 const unsigned int tdc,
00023 const FeeTraits& traits) :
00024 FeeBuffer(new char[traits.hitSize() * kBytesInInt],
00025 traits) {
00026 traits.initializeHit(buffer());
00027 setChannelId(channelId);
00028 setPeakCycle(peakCycle);
00029 setHighRangeAdc(highRangeAdc);
00030 setPreAdc(preAdc);
00031 setAdc(adc);
00032 setHitNumber(hitNumber);
00033 setTdc(tdc);
00034 }
00035
00036 FeeHit::FeeHit(const ByteBuffer& byteBuffer,
00037 const FeeTraits& traits) :
00038 FeeBuffer(byteBuffer,
00039 traits) {
00040 byteBuffer.position(byteBuffer.position() + (feeTraits().hitSize() * kBytesInInt));
00041 }
00042
00043 FeeHit::~FeeHit() {
00044 }
00045
00046 unsigned int FeeHit::formatComponent() const {
00047 return FeeTraits::kHit;
00048 }
00049
00050 unsigned int FeeHit::channelId() const {
00051 return readUnsignedInt(FeeTraits::kChargeChannelId);
00052 }
00053
00054 unsigned int FeeHit::adcChannelId() const {
00055 return readUnsignedInt(FeeTraits::kChargeChannelId);
00056 }
00057
00058 unsigned int FeeHit::peakCycle() const {
00059 return readUnsignedInt(FeeTraits::kPeakCycle);
00060 }
00061
00062 bool FeeHit::isHighRangeAdc() const {
00063 return readBool(FeeTraits::kHighRangeAdc);
00064 }
00065
00066 unsigned int FeeHit::preAdc() const {
00067 return readUnsignedInt(FeeTraits::kPreAdc);
00068 }
00069
00070 unsigned int FeeHit::adc() const {
00071 return readUnsignedInt(FeeTraits::kAdc);
00072 }
00073
00074 unsigned int FeeHit::tdcChannelId() const {
00075 return readUnsignedInt(FeeTraits::kTimeChannelId);
00076 }
00077
00078 unsigned int FeeHit::hitNumber() const {
00079 return readUnsignedInt(FeeTraits::kHitNumber);
00080 }
00081
00082 unsigned int FeeHit::tdc() const {
00083 return readUnsignedInt(FeeTraits::kTdc);
00084 }
00085
00086 unsigned int FeeHit::bufferSize() const {
00087 return feeTraits().hitSize();
00088 }
00089
00090 void FeeHit::setChannelId(const unsigned int channelId) {
00091 writeField(channelId,
00092 FeeTraits::kChargeChannelId);
00093 writeField(channelId,
00094 FeeTraits::kTimeChannelId);
00095 }
00096
00097 void FeeHit::setPeakCycle(const unsigned int peakCycle) {
00098 writeField(peakCycle,
00099 FeeTraits::kPeakCycle);
00100 }
00101
00102 void FeeHit::setHighRangeAdc(const bool highRangeAdc) {
00103 writeField(highRangeAdc,
00104 FeeTraits::kHighRangeAdc);
00105 }
00106
00107 void FeeHit::setPreAdc(const unsigned int value) {
00108 writeField(value,
00109 FeeTraits::kPreAdc);
00110 }
00111
00112 void FeeHit::setAdc(const unsigned int value) {
00113 writeField(value,
00114 FeeTraits::kAdc);
00115 }
00116
00117 void FeeHit::setHitNumber(const unsigned int hitNumber) {
00118 writeField(hitNumber,
00119 FeeTraits::kHitNumber);
00120 }
00121
00122 void FeeHit::setTdc(const unsigned int value) {
00123 writeField(value,
00124 FeeTraits::kTdc);
00125 }