00001 #include "otsdaq-core/DataDecoders/FSSRData.h"
00002
00003 #include <iostream>
00004
00005 using namespace ots;
00006
00007
00008
00009 FSSRData::FSSRData(void)
00010 {
00011 }
00012
00013
00014 FSSRData::~FSSRData(void)
00015 {
00016 }
00017
00018
00019 bool FSSRData::isFSSR(uint32_t data)
00020 {
00021 return data & 0x1;
00022 }
00023
00024
00025 FSSRData& FSSRData::decode(uint32_t data)
00026 {
00027 stibId_ = (data >> 30) & 0x03;
00028 channelNumber_ = (data >> 27) & 0x07;
00029 chipId_ = (data >> 24) & 0x07;
00030 set_ = (data >> 12) & 0x1f;
00031 stripNumber_ = (data >> 17) & 0x0f;
00032 bco_ = (data >> 4) & 0xff;
00033 adc_ = (data >> 1) & 0x7;
00034
00035
00036
00037 return *this;
00038 }
00039
00040
00041 unsigned int FSSRData::getStibId(void)
00042 {
00043 return (unsigned int)stibId_;
00044 }
00045
00046
00047 unsigned int FSSRData::getChannelNumber(void)
00048 {
00049 return (unsigned int)channelNumber_;
00050 }
00051
00052
00053 unsigned int FSSRData::getChipId(void)
00054 {
00055 return (unsigned int)chipId_;
00056 }
00057
00058
00059 unsigned int FSSRData::getStripNumber(void)
00060 {
00061 return (unsigned int)stripNumber_;
00062 }
00063
00064
00065 unsigned int FSSRData::getBco(void)
00066 {
00067 return (unsigned int)bco_;
00068 }
00069
00070
00071 unsigned int FSSRData::getAdc(void)
00072 {
00073 return (unsigned int)adc_;
00074 }
00075
00076
00077 unsigned int FSSRData::getSensorStrip()
00078 {
00079 static unsigned char set_number[] = { 255, 255, 255, 255, 255, 255, 255, 255,
00080 255, 255, 0, 1, 4, 5, 3, 2,
00081 255, 255, 12, 13, 8, 9, 11, 10,
00082 255, 255, 15, 14, 7, 6, 255, 255 };
00083 static unsigned char strip_number[] = { 255, 255, 255, 255,
00084 255, 0, 2, 1,
00085 255, 6, 4, 5,
00086 255, 7, 3, 255 };
00087
00088 return 128*((int)chipId_-1)+set_number[(int)set_]*8+strip_number[(int)stripNumber_];
00089 }
00090