00001 #include "FecReadoutFormat/FecData.h" 00002 #include "FecReadoutFormat/FecTraits.h" 00003 00004 #include "DaqReadoutFormat/ByteBuffer.h" 00005 00006 using DybDaq::FecData; 00007 00008 FecData::FecData(const unsigned int rpcCFId, 00009 const unsigned int rpcFecId, 00010 const bool transErr1, 00011 const bool transErr2, 00012 const unsigned int trigType, 00013 const bool fullFlag, 00014 const bool validGPS, 00015 const bool validCLK, 00016 const bool usingUTC, 00017 const unsigned int second, 00018 const unsigned int nanoSecond, 00019 const unsigned int hitMap, 00020 const FecTraits& traits) 00021 : FecBuffer(new char[ traits.fecSize() * kBytesInInt ], traits) 00022 { 00023 traits.initializeFec( buffer() ); 00024 setRpcCFId(rpcCFId); 00025 setRpcFecId(rpcFecId); 00026 setTransErr1(transErr1); 00027 setTransErr2(transErr2); 00028 setTrigType(trigType); 00029 setFullFlag(fullFlag); 00030 setValidGPS(validGPS); 00031 setValidCLK(validCLK); 00032 setUsingUTC(usingUTC); 00033 setSecond(second); 00034 setNanoSecond(nanoSecond); 00035 setHitMap(hitMap); 00036 } 00037 00038 FecData::FecData(const ByteBuffer& byteBuffer, const FecTraits& traits) 00039 : FecBuffer(byteBuffer, traits) 00040 { 00041 byteBuffer.position( byteBuffer.position() + fecTraits().fecSize() * kBytesInInt ); 00042 } 00043 00044 FecData::~FecData() 00045 { 00046 } 00047 00048 unsigned int FecData::formatComponent() const { 00049 return FecTraits::kData; 00050 } 00051 00052 unsigned int FecData::rpcCFId() const { 00053 return readUnsignedInt(FecTraits::kRpcCFId); 00054 } 00055 00056 unsigned int FecData::rpcFecId() const { 00057 return readUnsignedInt(FecTraits::kRpcFecId); 00058 } 00059 00060 bool FecData::transErr1() const { 00061 return readBool(FecTraits::kTransErr1); 00062 } 00063 00064 bool FecData::transErr2() const { 00065 return readBool(FecTraits::kTransErr2); 00066 } 00067 00068 unsigned int FecData::trigType() const { 00069 return readUnsignedInt(FecTraits::kTrigType); 00070 } 00071 00072 bool FecData::fullFlag() const { 00073 return readBool(FecTraits::kFullFlag); 00074 } 00075 00076 bool FecData::validGPS() const { 00077 return readBool(FecTraits::kValidGPS); 00078 } 00079 00080 bool FecData::validCLK() const { 00081 return readBool(FecTraits::kValidCLK); 00082 } 00083 00084 bool FecData::usingUTC() const { 00085 return readBool(FecTraits::kUsingUTC); 00086 } 00087 00088 unsigned int FecData::second() const { 00089 return readUnsignedInt(FecTraits::kSecond); 00090 } 00091 00092 unsigned int FecData::nanoSecond() const { 00093 return readUnsignedInt(FecTraits::kNanoSecond); 00094 } 00095 00096 unsigned int FecData::hitMap() const { 00097 return readUnsignedInt(FecTraits::kFecHitMap); 00098 } 00099 00100 unsigned int FecData::bufferSize() const { 00101 return fecTraits().fecSize(); 00102 } 00103 00104 void FecData::setRpcCFId(const unsigned int rpcCFId) { 00105 writeField( rpcCFId, FecTraits::kRpcCFId ); 00106 } 00107 00108 void FecData::setRpcFecId(const unsigned int rpcFecId) { 00109 writeField( rpcFecId, FecTraits::kRpcFecId ); 00110 } 00111 00112 void FecData::setTransErr1(const bool transErr1) { 00113 writeField( transErr1, FecTraits::kTransErr1); 00114 } 00115 00116 void FecData::setTransErr2(const bool transErr2) { 00117 writeField( transErr2, FecTraits::kTransErr2); 00118 } 00119 00120 void FecData::setTrigType(const unsigned int trigType) { 00121 writeField( trigType, FecTraits::kTrigType); 00122 } 00123 00124 void FecData::setFullFlag(const bool fullFlag) { 00125 writeField( fullFlag, FecTraits::kFullFlag); 00126 } 00127 00128 void FecData::setValidGPS(const bool validGPS) { 00129 writeField( validGPS, FecTraits::kValidGPS); 00130 } 00131 00132 void FecData::setValidCLK(const bool validCLK) { 00133 writeField( validCLK, FecTraits::kValidCLK); 00134 } 00135 00136 void FecData::setUsingUTC(const bool usingUTC) { 00137 writeField( usingUTC, FecTraits::kUsingUTC); 00138 } 00139 00140 void FecData::setSecond(const unsigned int second) { 00141 writeField( second, FecTraits::kSecond); 00142 } 00143 00144 void FecData::setNanoSecond(const unsigned int nanoSecond) { 00145 writeField( nanoSecond, FecTraits::kNanoSecond); 00146 } 00147 00148 void FecData::setHitMap(const unsigned int hitMap) { 00149 writeField( hitMap, FecTraits::kFecHitMap); 00150 }