00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #include "FeeReadoutFormat/FeeTraits_v0_0.h"
00011
00012 #include "DaqReadoutFormat/BitsDefinition.h"
00013
00014 using DybDaq::DaqTraits;
00015 using DybDaq::FeeTraits_v0_0;
00016 using std::string;
00017
00018 static const unsigned int m_indices[] = {
00019 0U,
00020 0U,
00021 0U,
00022 0U,
00023 0U,
00024 0U,
00025 0U,
00026 0U,
00027 1U,
00028 1U,
00029 1U,
00030 0U,
00031 0U
00032 };
00033
00034 static const unsigned int m_shifts[] = {
00035 0U,
00036 16U,
00037 9U,
00038 8U,
00039 24U,
00040 16U,
00041 12U,
00042 0U,
00043 24U,
00044 17U,
00045 0U,
00046 16U,
00047 0U
00048 };
00049
00050 static const unsigned int m_masks[] = {
00051 0x000000ffU,
00052 0x0000000fU,
00053 0x00000001U,
00054 0x00000001U,
00055 0x0000000fU,
00056 0x0000001fU,
00057 0x00000001U,
00058 0x00000fffU,
00059 0x0000000fU,
00060 0x0000007fU,
00061 0x0001ffffU,
00062 0x000000ffU,
00063 0x000003ffU
00064 };
00065
00066 static const std::string m_description[] = {
00067 "FEE Trigger Number",
00068 "FEE Trigger Type",
00069 "FEE Check",
00070 "FEE ADC Channel Id",
00071 "FEE ADC Peak Cycle",
00072 "FEE ADC is High Range",
00073 "FEE ADC Charge",
00074 "FEE TDC Channel Id",
00075 "FEE TDC Hit Number",
00076 "FEE TDC Time",
00077 "FEE Trigger Number",
00078 "FEE Data Length",
00079 "FEE Additional Format Version",
00080 "FEE Format Stamp",
00081 "FEE ADC 'Pedestal'"
00082 };
00083
00084 static const unsigned int kFeeHeadElements[] = {
00085 1U,
00086 2U,
00087 3U,
00088 0U
00089 };
00090
00091 static const unsigned int kFeeHitElements[] = {
00092 4U,
00093 5U,
00094 6U,
00095 7U,
00096 8U,
00097 9U,
00098 10U
00099 };
00100
00101 static const unsigned int kFeeFootElements[] = {
00102 11U,
00103 12U
00104 };
00105
00106 static const unsigned int* m_componentFields[] = {
00107 kFeeHeadElements,
00108 kFeeHitElements,
00109 kFeeFootElements
00110 };
00111
00112 static const unsigned int m_componentFieldsEnd[] = {
00113 4U,
00114 7U,
00115 2U
00116 };
00117
00118 static DaqTraits::Definitions* m_definitions[] = {
00119 0,
00120 0,
00121 0
00122 };
00123
00124 static const char* m_triggerTypes[] = {
00125 "local",
00126 "cross",
00127 };
00128
00129 const char* FeeTraits_v0_0::key() {
00130 return "FEE Format 0.0";
00131 }
00132
00133 FeeTraits_v0_0::FeeTraits_v0_0() {
00134 }
00135
00136 FeeTraits_v0_0::~FeeTraits_v0_0() {
00137 }
00138
00139 unsigned int FeeTraits_v0_0::majorVersion() const {
00140 return 0U;
00141 }
00142
00143 unsigned int FeeTraits_v0_0::minorVersion() const {
00144 return 0U;
00145 }
00146
00147 const string FeeTraits_v0_0::versionString() const {
00148 return key();
00149 }
00150
00151 unsigned int FeeTraits_v0_0::headSize() const {
00152 return 1U;
00153 }
00154
00155 unsigned int FeeTraits_v0_0::hitSize() const {
00156 return 2U;
00157 }
00158
00159 unsigned int FeeTraits_v0_0::footSize() const {
00160 return 1U;
00161 }
00162
00163 void FeeTraits_v0_0::initializeHead(char* buffer) const {
00164 *((unsigned int*)buffer) = 0x40000000U;
00165 }
00166
00167 void FeeTraits_v0_0::initializeHit(char* buffer) const {
00168 *((unsigned int*)buffer) = 0x60000000U;
00169 *((unsigned int*)(buffer + 4)) = 0x80000000U;
00170 }
00171
00172 void FeeTraits_v0_0::initializeFoot(char* buffer) const {
00173 *((unsigned int*)buffer) = 0xa0000000U;
00174 }
00175
00176 unsigned int FeeTraits_v0_0::markersEnd() const {
00177 return 0U;
00178 }
00179
00180 const unsigned int* FeeTraits_v0_0::markers() const {
00181 return 0;
00182 }
00183
00184 unsigned int FeeTraits_v0_0::fieldsEnd() const {
00185 return kFootDataLength + 1;
00186 }
00187
00188 const unsigned int* FeeTraits_v0_0::indices() const {
00189 return m_indices;
00190 }
00191
00192 const unsigned int* FeeTraits_v0_0::shifts() const {
00193 return m_shifts;
00194 }
00195
00196 const unsigned int* FeeTraits_v0_0::masks() const {
00197 return m_masks;
00198 }
00199
00200 const std::string* FeeTraits_v0_0::descriptions() const {
00201 return m_description;
00202 }
00203
00204 DaqTraits::Definitions* FeeTraits_v0_0::definitions(unsigned int component) const {
00205 return m_definitions[component];
00206 }
00207
00208 void FeeTraits_v0_0::setDefinitions(DaqTraits::Definitions* definitions,
00209 unsigned int component) {
00210 m_definitions[component] = definitions;
00211 }
00212
00213 const unsigned int* FeeTraits_v0_0::componentFields(unsigned int component) const {
00214 return m_componentFields[component];
00215 }
00216
00217 const unsigned int FeeTraits_v0_0::componentFieldsEnd(unsigned int component) const {
00218 return m_componentFieldsEnd[component];
00219 }
00220
00221 unsigned int FeeTraits_v0_0::triggerTypeEnd() const {
00222 return 2U;
00223 }
00224
00225 const char** FeeTraits_v0_0::triggerTypeStrings() const {
00226 return m_triggerTypes;
00227 }