00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #include "FadcReadoutFormat/FadcTraits_v1_5.h"
00011
00012 #include "DaqReadoutFormat/BitsDefinition.h"
00013
00014 using DybDaq::DaqTraits;
00015 using DybDaq::FadcTraits_v1_5;
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 0U,
00028 0U,
00029 0U,
00030 0U,
00031 0U,
00032 0U,
00033 0U,
00034 0U,
00035 0U
00036 };
00037
00038 static const unsigned int m_shifts[] = {
00039 0U,
00040 0U,
00041 24U,
00042 16U,
00043 15U,
00044 24U,
00045 16U,
00046 8U,
00047 0U,
00048 16U,
00049 0U,
00050 28U,
00051 29U,
00052 28U,
00053 10U,
00054 9U,
00055 8U
00056 };
00057
00058 static const unsigned int m_masks[] = {
00059 0x000000ffU,
00060 0x00000000U,
00061 0x0000000fU,
00062 0x0000000fU,
00063 0x00000000U,
00064 0x0000000fU,
00065 0x000000ffU,
00066 0x000000ffU,
00067 0x000000ffU,
00068 0x000000ffU,
00069 0x0000ffffU,
00070 0x0000000fU,
00071 0x00000007U,
00072 0x0000000fU,
00073 0x00000001U,
00074 0x00000001U,
00075 0x00000001U
00076 };
00077
00078 static const std::string m_description[] = {
00079 "FADC Trigger Number",
00080 "FADC Major Format Version",
00081 "FADC Minor Format Version",
00082 "FADC Trigger Type",
00083 "FADC Has No Data",
00084 "FADC Channel Id",
00085 "FADC High Data Byte",
00086 "FADC Middle Data Byte",
00087 "FADC Low Data Byte",
00088 "FADC Trigger Number",
00089 "FADC Data Length",
00090 "FADC Head Marker (0x4)",
00091 "FADC ADC Data Marker (0x3)",
00092 "FADC Foot Marker (0xa)"
00093 "FADC Protection Status",
00094 "FADC Scale Enabled",
00095 "FADC During Previous"
00096 };
00097
00098 static const unsigned int kFdcHeadElements[] = {
00099 11U,
00100 4U,
00101 3U,
00102 14U,
00103 15U,
00104 16U,
00105 0U
00106 };
00107
00108 static const unsigned int kFdcDataElements[] = {
00109 12U,
00110 5U,
00111 6U,
00112 7U,
00113 8U
00114 };
00115
00116 static const unsigned int kFdcFootElements[] = {
00117 13U,
00118 9U,
00119 10U
00120 };
00121
00122 static const unsigned int* m_componentFields[] = {
00123 kFdcHeadElements,
00124 kFdcDataElements,
00125 kFdcFootElements
00126 };
00127
00128 static const unsigned int m_componentFieldsEnd[] = {
00129 7U,
00130 5U,
00131 3U
00132 };
00133
00134 static DaqTraits::Definitions* m_definitions[] = {
00135 0,
00136 0,
00137 0
00138 };
00139
00140 static const char* m_triggerTypes[] = {
00141 "self",
00142 "external",
00143 };
00144
00145 const char* FadcTraits_v1_5::key() {
00146 return "FADC Format 1.5";
00147 }
00148
00149 FadcTraits_v1_5::FadcTraits_v1_5() {
00150 }
00151
00152 FadcTraits_v1_5::~FadcTraits_v1_5() {
00153 }
00154
00155 unsigned int FadcTraits_v1_5::majorVersion() const {
00156 return 1U;
00157 }
00158
00159 unsigned int FadcTraits_v1_5::minorVersion() const {
00160 return 5U;
00161 }
00162
00163 const string FadcTraits_v1_5::versionString() const {
00164 return key();
00165 }
00166
00167 unsigned int FadcTraits_v1_5::headSize() const {
00168 return 1U;
00169 }
00170
00171 unsigned int FadcTraits_v1_5::dataSize() const {
00172 return 1U;
00173 }
00174
00175 unsigned int FadcTraits_v1_5::footSize() const {
00176 return 1U;
00177 }
00178
00179 void FadcTraits_v1_5::initializeHead(char* buffer) const {
00180 *((unsigned int*)buffer) = 0x40000000U;
00181 }
00182
00183 void FadcTraits_v1_5::initializeData(char* buffer) const {
00184 *((unsigned int*)buffer) = 0x60000000U;
00185 }
00186
00187 void FadcTraits_v1_5::initializeFoot(char* buffer) const {
00188 *((unsigned int*)buffer) = 0xa0000000U;
00189 }
00190
00191 unsigned int FadcTraits_v1_5::markersEnd() const {
00192 return 0U;
00193 }
00194
00195 const unsigned int* FadcTraits_v1_5::markers() const {
00196 return 0;
00197 }
00198
00199 unsigned int FadcTraits_v1_5::fieldsEnd() const {
00200 return kDuringPrevious + 1;
00201 }
00202
00203 const unsigned int* FadcTraits_v1_5::indices() const {
00204 return m_indices;
00205 }
00206
00207 const unsigned int* FadcTraits_v1_5::shifts() const {
00208 return m_shifts;
00209 }
00210
00211 const unsigned int* FadcTraits_v1_5::masks() const {
00212 return m_masks;
00213 }
00214
00215 const std::string* FadcTraits_v1_5::descriptions() const {
00216 return m_description;
00217 }
00218
00219 DaqTraits::Definitions* FadcTraits_v1_5::definitions(unsigned int component) const {
00220 return m_definitions[component];
00221 }
00222
00223 void FadcTraits_v1_5::setDefinitions(DaqTraits::Definitions* definitions,
00224 unsigned int component) {
00225 m_definitions[component] = definitions;
00226 }
00227
00228 const unsigned int* FadcTraits_v1_5::componentFields(unsigned int component) const {
00229 return m_componentFields[component];
00230 }
00231
00232 const unsigned int FadcTraits_v1_5::componentFieldsEnd(unsigned int component) const {
00233 return m_componentFieldsEnd[component];
00234 }
00235
00236 unsigned int FadcTraits_v1_5::triggerTypeEnd() const {
00237 return 2U;
00238 }
00239
00240 const char** FadcTraits_v1_5::triggerTypeStrings() const {
00241 return m_triggerTypes;
00242 }