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