| Classes | Job Modules | Data Objects | Services | Algorithms | Tools | Packages | Directories | Tracs |

In This Package:

FeeTraits_v0_1.cc

Go to the documentation of this file.
00001 /*
00002  *  FeeTraits_v0_1.cc
00003  *  CbltReadoutFormat
00004  *
00005  *  Created by Simon Patton on 7/21/10.
00006  *  Copyright 2010 DayaBay Collaboration. All rights reserved.
00007  *
00008  */
00009 
00010 #include "FeeReadoutFormat/FeeTraits_v0_1.h"
00011 
00012 #include "DaqReadoutFormat/BitsDefinition.h"
00013 
00014 using DybDaq::DaqTraits;
00015 using DybDaq::FeeTraits_v0_1;
00016 using std::string;
00017 
00018 static const unsigned int m_indices[] = {
00019     0U, // kHeadTriggerNumber
00020     0U, // kTriggerType
00021     0U, // kChecked
00022     0U, // kError
00023     0U, // kChargeChannelId
00024     1U, // kPeakCycle
00025     0U, // kHighRangeAdc
00026     0U, // kAdc
00027     1U, // kTimeChannelId
00028     1U, // kHitNumber
00029     1U, // kTdc
00030     0U, // kFootTriggerNumber
00031     0U, // kFootDataLength
00032     0U, // kMajorVersion
00033     0U, // kMinorVersion
00034     0U, // kPreAdc
00035     0U, // kHeadMarker
00036     0U, // kAdcDataMarker
00037     1U, // kTdcDataMarker
00038     0U  // kFootMarker
00039 };
00040 
00041 static const unsigned int m_shifts[] = {
00042     0U,  // kHeadTriggerNumber
00043     16U, // kTriggerType
00044     9U,  // kChecked
00045     8U,  // kError
00046     25U, // kChargeChannelId
00047     21U, // kPeakCycle
00048     24U, // kHighRangeAdc
00049     0U,  // kAdc
00050     25U, // kTimeChannelId
00051     17U, // kHitNumber
00052     0U,  // kTdc
00053     16U, // kFootTriggerNumber
00054     0U,  // kFootDataLength
00055     0U,  // kMajorVersion
00056     24U, // kMinorVersion
00057     12U, // kPreAdc
00058     28U, // kHeadMarker
00059     29U, // kAdcDataMarker
00060     29U, // kTdcDataMarker
00061     28U  // kFootMarker
00062 };
00063 
00064 static const unsigned int m_masks[] = {
00065     0x000000ffU, // kHeadTriggerNumber
00066     0x0000000fU, // kTriggerType
00067     0x00000001U, // kChecked
00068     0x00000001U, // kError
00069     0x0000000fU, // kChargeChannelId
00070     0x0000000fU, // kPeakCycle
00071     0x00000001U, // kHighRangeAdc
00072     0x00000fffU, // kAdc
00073     0x0000000fU, // kTimeChannelId
00074     0x0000000fU, // kHitNumber
00075     0x0001ffffU, // kTdc
00076     0x000000ffU, // kFootTriggerNumber
00077     0x000003ffU, // kFootDataLength
00078     0x00000000U, // kMajorVersion
00079     0x0000000fU, // kMinorVersion
00080     0x00000fffU, // kPreAdc
00081     0x0000000fU, // kHeadMarker
00082     0x00000007U, // kAdcDataMarker
00083     0x00000007U, // kTdcDataMarker
00084     0x0000000fU  // kFootMarker
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'",
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, // kHeadMarker
00112     14U, // kMinorVersion
00113     1U,  // kTriggerType
00114     2U,  // kChecked
00115     3U,  // kError
00116     0U   // kHeadTriggerNumber
00117 };
00118 
00119 static const unsigned int kFeeHitElements[] = {
00120     17U, // kAdcDataMarker
00121     4U,  // kChargeChannelId
00122     6U,  // kHighRangeAdc
00123     15U, // kPreAdc
00124     7U,  // kAdc
00125     18U, // kTdcDataMarker
00126     8U,  // kTimeChannelId
00127     5U,  // kPeakCycle
00128     9U,  // kHitNumber
00129     10U  // kTdc
00130 };
00131 
00132 static const unsigned int kFeeFootElements[] = {
00133     19U, // kFootMarker
00134     11U, // kFootTriggerNumber
00135     12U  // kFootDataLength
00136 };
00137 
00138 static const unsigned int* m_componentFields[] = {
00139     kFeeHeadElements, // FEE Head
00140     kFeeHitElements,  // FEE Hit
00141     kFeeFootElements  // FEE Foot
00142 };
00143 
00144 static const unsigned int m_componentFieldsEnd[] = {
00145     6U,  // FEE Head
00146     10U, // FEE Hit
00147     3U   // FEE Foot
00148 };
00149 
00150 static DaqTraits::Definitions* m_definitions[] = {
00151     0, // FEE Head
00152     0, // FEE Body
00153     0  // FEE Foot
00154 };
00155 
00156 static const char* m_triggerTypes[] = {
00157     "local",
00158     "cross",
00159 };
00160 
00161 const char* FeeTraits_v0_1::key() {
00162         return "FEE Format 0.1";
00163 }
00164 
00165 FeeTraits_v0_1::FeeTraits_v0_1() {
00166 }
00167 
00168 FeeTraits_v0_1::~FeeTraits_v0_1() {
00169 }
00170 
00171 unsigned int FeeTraits_v0_1::majorVersion() const {
00172         return 0U;
00173 }
00174 
00175 unsigned int FeeTraits_v0_1::minorVersion() const {
00176         return 1U;
00177 }
00178 
00179 const string FeeTraits_v0_1::versionString() const {
00180         return key();
00181 }
00182 
00183 unsigned int FeeTraits_v0_1::headSize() const {
00184     return 1U;
00185 }
00186 
00187 unsigned int FeeTraits_v0_1::hitSize() const {
00188     return 2U;
00189 }
00190 
00191 unsigned int FeeTraits_v0_1::footSize() const {
00192     return 1U;
00193 }
00194 
00195 void FeeTraits_v0_1::initializeHead(char* buffer) const {
00196     *((unsigned int*)buffer)       = 0x41000000U; // Head four bytes
00197 }
00198 
00199 void FeeTraits_v0_1::initializeHit(char* buffer) const {
00200     *((unsigned int*)buffer)       = 0x60000000U; // ADC four bytes
00201     *((unsigned int*)(buffer + 4)) = 0x80000000U; // TDC four bytes
00202 }
00203 
00204 void FeeTraits_v0_1::initializeFoot(char* buffer) const {
00205     *((unsigned int*)buffer)       = 0xa0000000U; // Foot four bytes
00206 }
00207 
00208 unsigned int FeeTraits_v0_1::markersEnd() const {
00209     return 0U;
00210 }
00211 
00212 const unsigned int* FeeTraits_v0_1::markers() const {
00213     return 0;
00214 }
00215 
00216 unsigned int FeeTraits_v0_1::fieldsEnd() const {
00217         return kFootMarker + 1;
00218 }
00219 
00220 const unsigned int* FeeTraits_v0_1::indices() const {
00221         return m_indices;
00222 }
00223 
00224 const unsigned int* FeeTraits_v0_1::shifts() const {
00225         return m_shifts;
00226 }
00227 
00228 const unsigned int* FeeTraits_v0_1::masks() const {
00229         return m_masks;
00230 }
00231 
00232 const std::string* FeeTraits_v0_1::descriptions() const {
00233     return m_description;
00234 }
00235 
00236 DaqTraits::Definitions* FeeTraits_v0_1::definitions(unsigned int component) const {
00237     return m_definitions[component];
00238 }
00239 
00240 void FeeTraits_v0_1::setDefinitions(DaqTraits::Definitions* definitions,
00241                                     unsigned int component) {
00242     m_definitions[component] = definitions;
00243 }
00244 
00245 const unsigned int* FeeTraits_v0_1::componentFields(unsigned int component) const {
00246     return m_componentFields[component];
00247 }
00248 
00249 const unsigned int FeeTraits_v0_1::componentFieldsEnd(unsigned int component) const {
00250     return m_componentFieldsEnd[component];
00251 }
00252 
00253 unsigned int FeeTraits_v0_1::triggerTypeEnd() const {
00254     return 2U;
00255 }
00256 
00257 const char** FeeTraits_v0_1::triggerTypeStrings() const {
00258     return m_triggerTypes;
00259 }
| Classes | Job Modules | Data Objects | Services | Algorithms | Tools | Packages | Directories | Tracs |

Generated on Mon Apr 11 20:08:02 2011 for FeeReadoutFormat by doxygen 1.4.7