/search.css" rel="stylesheet" type="text/css"/> /search.js">
00001 /* 00002 * EventTraits_v0_7.cc 00003 * RawFileReading 00004 * 00005 * Created by Simon Patton on 4/14/11. 00006 * Copyright 2011 DayaBay Collaboration. All rights reserved. 00007 * 00008 */ 00009 00010 #include "EventReadoutFormat/EventTraits_v0_7.h" 00011 00012 #include "DaqReadoutFormat/BitsDefinition.h" 00013 #include "DaqReadoutFormat/DaqBuffer.h" 00014 00015 using DybDaq::DaqTraits; 00016 using DybDaq::EventTraits_v0_7; 00017 using std::string; 00018 00019 static const unsigned int m_markers[] = { 00020 0xaa1234aaU, // Event Header 00021 0xbb1234bbU // ROM fragment Header 00022 }; 00023 00024 static const unsigned int m_headerLengths[] = { 00025 8U, // Event Header 00026 3U // ROM fragment Header 00027 }; 00028 00029 static const unsigned int m_indices[] = { 00030 0U, // kMarker 00031 1U, // kMajorVersion 00032 1U, // kMinorVersion 00033 2U, // kEventHeaderSize 00034 2U, // kEventTotalSize 00035 3U, // kEventSite 00036 3U, // kEventDetector 00037 4U, // kEventRun 00038 5U, // kEventNumber 00039 6U, // kEventDataType 00040 7U, // kCbltWrapping 00041 7U, // kRawCblt 00042 7U, // kLtbMismatch 00043 7U, // kInvalidData 00044 1U, // kRomHeaderSize 00045 1U, // kRomTotalSize 00046 2U, // kRomSite 00047 2U, // kRomDetector 00048 2U, // kRomModuleType 00049 2U, // kRomSlot 00050 7U, // kRpcSortDisabled 00051 7U // kDataSortTimeout 00052 }; 00053 00054 static const unsigned int m_shifts[] = { 00055 0U, // kMarker 00056 24U, // kMajorVersion 00057 16U, // kMinorVersion 00058 24U, // kEventHeaderSize 00059 0U, // kEventTotalSize 00060 20U, // kEventSite 00061 16U, // kEventDetector 00062 0U, // kEventRun 00063 0U, // kEventNumber 00064 28U, // kEventDataType 00065 17U, // kCbltWrapping 00066 16U, // kRawCblt 00067 1U, // kLtbMismatch 00068 0U, // kInvalidData 00069 24U, // kRomHeaderSize 00070 0U, // kRomTotalSize 00071 20U, // kRomSite 00072 16U, // kRomDetector 00073 8U, // kRomModuleType 00074 0U, // kRomSlot 00075 18U, // kRpcSortDisabled 00076 15U // kDataSortTimeout 00077 }; 00078 00079 static const unsigned int m_masks[] = { 00080 0xffffffffU, // kMarker 00081 0x000000ffU, // kMajorVersion 00082 0x000000ffU, // kMinorVersion 00083 0x000000ffU, // kEventHeaderSize 00084 0x00ffffffU, // kEventTotalSize 00085 0x0000000fU, // kEventSite 00086 0x0000000fU, // kEventDetector 00087 0xffffffffU, // kEventRun 00088 0xffffffffU, // kEventNumber 00089 0x0000000fU, // kEventDataType 00090 0x00000001U, // kCbltWrapping 00091 0x00000001U, // kRawCblt 00092 0x00000001U, // kLtbMismatch 00093 0x00000001U, // kInvalidData 00094 0x000000ffU, // kRomHeaderSize 00095 0x00ffffffU, // kRomTotalSize 00096 0x0000000fU, // kRomSite 00097 0x0000000fU, // kRomDetector 00098 0x000000ffU, // kRomModuleType 00099 0x000000ffU, // kRomSlot 00100 0x00000001U, // kRpcSortDisabled 00101 0x00000001U // kDataSortTimeout 00102 }; 00103 00104 static const std::string m_description[] = { 00105 "Event Record Type", 00106 "Major Event Format Version", 00107 "Minor Event Format Version", 00108 "Event Header Size", 00109 "Total Event Size", 00110 "Event Site", 00111 "Event Detector", 00112 "Event Run", 00113 "Event Number", 00114 "Event Data Type", 00115 "CBLT Wrapping", 00116 "Raw CBLT Data", 00117 "LTB Mismatch", 00118 "Invalid Data", 00119 "ROM Header Size", 00120 "ROM Event Size", 00121 "ROM Site", 00122 "ROM Detector", 00123 "ROM Module Type", 00124 "ROM Slot", 00125 "RPC Event Assemble Sort Disabled", 00126 "SFO Data Stream Sort Timeout" 00127 }; 00128 00129 static const unsigned int kEventHeaderElements[] = { 00130 0U, // kMarker 00131 1U, // kMajorVersion 00132 2U, // kMinorVersion 00133 3U, // kEventHeaderSize 00134 4U, // kEventTotalSize 00135 5U, // kEventSite 00136 6U, // kEventDetector 00137 7U, // kEventRun 00138 8U, // kEventNumber 00139 9U, // kEventDataType 00140 20U, // kRpcSortDisable 00141 10U, // kCbltWrapping 00142 11U, // kRawCblt 00143 21U, // kDataSortTimeout 00144 12U, // kLtbMismatch 00145 13U // kInvalidData 00146 }; 00147 00148 static const unsigned int kRomHeaderElements[] = { 00149 0U, // kMarker 00150 14U, // kRomHeaderSize 00151 15U, // kRomTotalSize 00152 16U, // kRomSite 00153 17U, // kRomDetector 00154 18U, // kRomModuleType 00155 19U // kRomSlot 00156 }; 00157 00158 static const unsigned int* m_componentFields[] = { 00159 kEventHeaderElements, // Event Header 00160 kRomHeaderElements // ROM fragment Header 00161 }; 00162 00163 static const unsigned int m_componentFieldsEnd[] = { 00164 16U, // Event Header 00165 7U // ROM fragment Header 00166 }; 00167 00168 static DaqTraits::Definitions* m_definitions[] = { 00169 0, // Event Header 00170 0 // ROM fragment Header 00171 }; 00172 00173 static const char* m_sites[] = { 00174 "TST", 00175 "EH1", 00176 "EH2", 00177 "EH3", 00178 "MID", 00179 "FIL", 00180 "SAB", 00181 "UNK" 00182 }; 00183 00184 static const char* m_detectors[] = { 00185 "TST", 00186 "AD1", 00187 "AD2", 00188 "AD3", 00189 "AD4", 00190 "WPI", 00191 "WPO", 00192 "RPC" 00193 }; 00194 00195 static const char* m_dataTypes[] = { 00196 "NORMAL", 00197 "CALIBRATION", 00198 "ELECTRONICS_CALIBRATION", 00199 "PEDESTAL" 00200 }; 00201 00202 static const unsigned int m_moduleTypes[] = { 00203 1U, // kFeeModule 00204 2U, // kFadcModule 00205 3U, // kLtbModule 00206 4U, // kRpcRomModule 00207 5U, // kRpcRtmModule 00208 6U // kMtbModule 00209 }; 00210 00211 static const char* m_moduleTypeStrings[] = { 00212 "UNK", 00213 "PMT_FEE", 00214 "Flash_ADC", 00215 "Local_Trigger", 00216 "RPC_ROM", 00217 "RPC_RTM", 00218 "Master_Trigger" 00219 }; 00220 00221 const char* EventTraits_v0_7::key() { 00222 return "Event Format 0.7"; 00223 } 00224 00225 EventTraits_v0_7::EventTraits_v0_7() { 00226 } 00227 00228 EventTraits_v0_7::~EventTraits_v0_7() { 00229 } 00230 00231 unsigned int EventTraits_v0_7::majorVersion() const { 00232 return 0U; 00233 } 00234 00235 unsigned int EventTraits_v0_7::minorVersion() const { 00236 return 7U; 00237 } 00238 00239 const string EventTraits_v0_7::versionString() const { 00240 return key(); 00241 } 00242 00243 unsigned int EventTraits_v0_7::headerSize(const unsigned int marker) const { 00244 if (marker >= markersEnd()) { 00245 return illegalMarker(); 00246 } 00247 return m_headerLengths[marker]; 00248 } 00249 00250 void EventTraits_v0_7::initializeHeader(const unsigned int markerToInit, 00251 char* buffer) const { 00252 for (unsigned int count = 0; 00253 count != headerSize(markerToInit); 00254 ++count) { 00255 *((unsigned int*)(buffer + (count * DaqBuffer::kBytesInInt))) = 0x00000000U; // Header four bytes 00256 } 00257 *((unsigned int*)buffer) = marker(markerToInit); 00258 if (markerToInit == kEventHeader) { 00259 *(((unsigned int*)buffer) + index(EventTraits::kEventDetector)) = 0xC0000000U; 00260 } 00261 } 00262 00263 unsigned int EventTraits_v0_7::markersEnd() const { 00264 return kRomHeader + 1; 00265 } 00266 00267 const unsigned int* EventTraits_v0_7::markers() const { 00268 return m_markers; 00269 } 00270 00271 unsigned int EventTraits_v0_7::fieldsEnd() const { 00272 return kDataSortTimeout + 1; 00273 } 00274 00275 const unsigned int* EventTraits_v0_7::indices() const { 00276 return m_indices; 00277 } 00278 00279 const unsigned int* EventTraits_v0_7::shifts() const { 00280 return m_shifts; 00281 } 00282 00283 const unsigned int* EventTraits_v0_7::masks() const { 00284 return m_masks; 00285 } 00286 00287 const std::string* EventTraits_v0_7::descriptions() const { 00288 return m_description; 00289 } 00290 00291 DaqTraits::Definitions* EventTraits_v0_7::definitions(unsigned int component) const { 00292 return m_definitions[component]; 00293 } 00294 00295 void EventTraits_v0_7::setDefinitions(DaqTraits::Definitions* definitions, 00296 unsigned int component) { 00297 m_definitions[component] = definitions; 00298 } 00299 00300 const unsigned int* EventTraits_v0_7::componentFields(unsigned int component) const { 00301 return m_componentFields[component]; 00302 } 00303 00304 const unsigned int EventTraits_v0_7::componentFieldsEnd(unsigned int component) const { 00305 return m_componentFieldsEnd[component]; 00306 } 00307 00308 unsigned int EventTraits_v0_7::maxSite() const { 00309 return 7U; 00310 } 00311 00312 const char** EventTraits_v0_7::siteStrings() const { 00313 return m_sites; 00314 } 00315 00316 unsigned int EventTraits_v0_7::maxDetector() const { 00317 return 7U; 00318 } 00319 00320 const char** EventTraits_v0_7::detectorStrings() const { 00321 return m_detectors; 00322 } 00323 00324 unsigned int EventTraits_v0_7::maxDataType() const { 00325 return 3U; 00326 } 00327 00328 const char** EventTraits_v0_7::dataTypeStrings() const { 00329 return m_dataTypes; 00330 } 00331 00332 unsigned int EventTraits_v0_7::maxModuleType() const { 00333 return kMtbModule; 00334 } 00335 00336 const unsigned int* EventTraits_v0_7::moduleTypes() const { 00337 return m_moduleTypes; 00338 } 00339 00340 const char** EventTraits_v0_7::moduleTypeStrings() const { 00341 return m_moduleTypeStrings; 00342 }