00001 /* Raw Data Format: Definitions for raw data format from DocDB-2841 00002 * 00003 * Created By: dandwyer@caltech.edu 2009/7/10 00004 */ 00005 00006 #ifndef RAWDATAFORMAT_H 00007 #define RAWDATAFORMAT_H 00008 00009 namespace DayaBay { 00010 00011 namespace RawData_v0_6 { 00012 00013 namespace DataFormat { 00014 00015 namespace Data { 00016 static const unsigned int typeLine = 0; 00017 } 00018 00019 namespace Event { 00020 static const unsigned int type = 0xaa1234aa; 00021 static const unsigned int totalSizeLine = 2; 00022 static const unsigned int totalSizeBitOffset = 0; 00023 static const unsigned int totalSizeBitLength = 24; 00024 static const unsigned int headerSizeLine = 2; 00025 static const unsigned int headerSizeBitOffset = 24; 00026 static const unsigned int headerSizeBitLength = 8; 00027 static const unsigned int majorVersionLine = 1; 00028 static const unsigned int majorVersionBitOffset = 24; 00029 static const unsigned int majorVersionBitLength = 8; 00030 static const unsigned int minorVersionLine = 1; 00031 static const unsigned int minorVersionBitOffset = 16; 00032 static const unsigned int minorVersionBitLength = 8; 00033 static const unsigned int siteIdLine = 3; 00034 static const unsigned int siteIdBitOffset = 20; 00035 static const unsigned int siteIdBitLength = 4; 00036 static const unsigned int detectorIdLine = 3; 00037 static const unsigned int detectorIdBitOffset = 16; 00038 static const unsigned int detectorIdBitLength = 4; 00039 static const unsigned int runNumberLine = 4; 00040 static const unsigned int eventIdLine = 5; 00041 static const unsigned int eventTypeLine = 6; 00042 static const unsigned int eventTypeBitOffset = 28; 00043 static const unsigned int eventTypeBitLength = 4; 00044 static const unsigned int eventTypeValueLine = 6; 00045 static const unsigned int eventTypeValueBitOffset = 0; 00046 static const unsigned int eventTypeValueBitLength = 16; 00047 static const unsigned int formatFlagLine = 7; 00048 static const unsigned int formatFlagBitOffset = 16; 00049 static const unsigned int formatFlagBitLength = 8; 00050 static const unsigned int statusFlagLine = 7; 00051 static const unsigned int statusFlagBitOffset = 0; 00052 static const unsigned int statusFlagBitLength = 16; 00053 static const unsigned int firstModuleLine = 8; 00054 } 00055 00056 namespace Module { 00057 static const unsigned int type = 0xbb1234bb; 00058 static const unsigned int totalSizeLine = 1; 00059 static const unsigned int totalSizeBitOffset = 0; 00060 static const unsigned int totalSizeBitLength = 24; 00061 static const unsigned int headerSizeLine = 1; 00062 static const unsigned int headerSizeBitOffset = 24; 00063 static const unsigned int headerSizeBitLength = 8; 00064 static const unsigned int siteIdLine = 2; 00065 static const unsigned int siteIdBitOffset = 20; 00066 static const unsigned int siteIdBitLength = 4; 00067 static const unsigned int detectorIdLine = 2; 00068 static const unsigned int detectorIdBitOffset = 16; 00069 static const unsigned int detectorIdBitLength = 4; 00070 static const unsigned int moduleTypeLine = 2; 00071 static const unsigned int moduleTypeBitOffset = 8; 00072 static const unsigned int moduleTypeBitLength = 8; 00073 static const unsigned int slotLine = 2; 00074 static const unsigned int slotBitOffset = 0; 00075 static const unsigned int slotBitLength = 8; 00076 static const unsigned int firstFragmentLine = 4; 00077 static const unsigned int PmtFee = 1; 00078 static const unsigned int FlashAdc = 2; 00079 static const unsigned int LocalTrigger = 3; 00080 static const unsigned int RpcRom = 4; 00081 static const unsigned int RpcRtm = 5; 00082 } 00083 00084 namespace RawFragment { 00085 static const unsigned int size = 1; 00086 static const unsigned int typeLine = 0; 00087 static const unsigned int typeBitOffset = 29; 00088 static const unsigned int typeBitLength = 3; 00089 } 00090 00091 namespace CbltHeadFragment { 00092 static const unsigned int type = 0x1; 00093 static const unsigned int size = 1; 00094 } 00095 00096 namespace CbltTailFragment { 00097 static const unsigned int type = 0x6; 00098 static const unsigned int size = 1; 00099 } 00100 00101 namespace HeadFragment { 00102 static const unsigned int type = 0x2; 00103 static const unsigned int headType = 0; 00104 static const unsigned int statusLine = 0; 00105 static const unsigned int statusBitOffset = 8; 00106 static const unsigned int statusBitLength = 8; 00107 static const unsigned int triggerNumberLine = 0; 00108 static const unsigned int triggerNumberBitOffset = 0; 00109 static const unsigned int triggerNumberBitLength = 8; 00110 static const unsigned int size = 1; 00111 } 00112 00113 namespace TailFragment { 00114 static const unsigned int type = 0x5; 00115 static const unsigned int tailType = 0; 00116 static const unsigned int dataSizeLine = 0; 00117 static const unsigned int dataSizeBitOffset = 0; 00118 static const unsigned int dataSizeBitLength = 16; 00119 static const unsigned int size = 1; 00120 } 00121 00122 namespace LtbHeadFragment { 00123 static const unsigned int headType = 2; 00124 static const unsigned int clockErrorLine = 0; 00125 static const unsigned int clockErrorBitOffset = 15; 00126 static const unsigned int clockErrorBitLength = 1; 00127 static const unsigned int ltbDataVersionLine = 0; 00128 static const unsigned int ltbDataVersionBitOffset = 8; 00129 static const unsigned int ltbDataVersionBitLength = 4; 00130 static const unsigned int numIltLine = 0; 00131 static const unsigned int numIltBitOffset = 16; 00132 static const unsigned int numIltBitLength = 6; 00133 static const unsigned int numSavedIltLine = 0; 00134 static const unsigned int numSavedIltBitOffset = 22; 00135 static const unsigned int numSavedIltBitLength = 6; 00136 } 00137 00138 namespace LtbTailFragment { 00139 static const unsigned int tailType = 2; 00140 } 00141 00142 namespace FeeHeadFragment { 00143 static const unsigned int headType = 1; 00144 static const unsigned int feeDataVersionLine = 0; 00145 static const unsigned int feeDataVersionBitOffset = 24; 00146 static const unsigned int feeDataVersionBitLength = 4; 00147 } 00148 00149 namespace FeeTailFragment { 00150 static const unsigned int tailType = 1; 00151 } 00152 00153 namespace DataFragment { 00154 static const unsigned int type = 0x0; 00155 static const unsigned int dataType = 0x0; 00156 static const unsigned int size = 1; 00157 } 00158 00159 namespace LocalTriggerData { 00160 static const unsigned int dataType = 0x2; //Unique Data ID 00161 static const unsigned int version = 0; 00162 static const unsigned int size = 6; 00163 static const unsigned int sequenceNumberLine = 0; 00164 static const unsigned int sequenceNumberBitOffset = 18; 00165 static const unsigned int sequenceNumberBitLength = 6; 00166 static const unsigned int readOutTypeLine = 0; 00167 static const unsigned int readOutTypeBitOffset = 16; 00168 static const unsigned int readOutTypeBitLength = 2; 00169 static const unsigned int triggerTypeLine = 0; 00170 static const unsigned int triggerTypeBitOffset = 0; 00171 static const unsigned int triggerTypeBitLength = 16; 00172 static const unsigned int yearLine = 1; 00173 static const unsigned int yearBitOffset = 16; 00174 static const unsigned int yearBitLength = 8; 00175 static const unsigned int monthLine = 1; 00176 static const unsigned int monthBitOffset = 8; 00177 static const unsigned int monthBitLength = 8; 00178 static const unsigned int dayLine = 1; 00179 static const unsigned int dayBitOffset = 0; 00180 static const unsigned int dayBitLength = 8; 00181 static const unsigned int hourLine = 2; 00182 static const unsigned int hourBitOffset = 16; 00183 static const unsigned int hourBitLength = 8; 00184 static const unsigned int minuteLine = 2; 00185 static const unsigned int minuteBitOffset = 8; 00186 static const unsigned int minuteBitLength = 8; 00187 static const unsigned int secondLine = 2; 00188 static const unsigned int secondBitOffset = 0; 00189 static const unsigned int secondBitLength = 8; 00190 static const unsigned int clockLine = 3; 00191 static const unsigned int clockBitOffset = 0; 00192 static const unsigned int clockBitLength = 27; 00193 static const unsigned int hsumLine = 4; 00194 static const unsigned int hsumBitOffset = 16; 00195 static const unsigned int hsumBitLength = 9; 00196 static const unsigned int esumCompLine = 4; 00197 static const unsigned int esumCompBitOffset = 12; 00198 static const unsigned int esumCompBitLength = 3; 00199 static const unsigned int esumLine = 4; 00200 static const unsigned int esumBitOffset = 0; 00201 static const unsigned int esumBitLength = 12; 00202 static const unsigned int crossTriggerSourceLine = 5; 00203 static const unsigned int crossTriggerSourceBitOffset = 0; 00204 static const unsigned int crossTriggerSourceBitLength = 6; 00205 namespace TriggerType { 00206 enum TriggerType_t { 00207 kManual = 0x0001, 00208 kCross = 0x0002, 00209 kPeriodic = 0x0004, 00210 kMultiplicity = 0x0100, 00211 kEsumAdc = 0x0200, 00212 kEsumCompHigh = 0x0400, 00213 kEsumCompLow = 0x0800, 00214 kEsumCompAll = 0x1000 00215 }; 00216 } 00217 } 00218 00219 namespace LocalTriggerData_v2 { 00220 static const unsigned int dataType = 0x2; //Unique Data ID 00221 static const unsigned int version = 2; 00222 static const unsigned int size = 7; 00223 static const unsigned int accumulationStatusLine = 0; 00224 static const unsigned int accumulationStatusBitOffset = 27; 00225 static const unsigned int accumulationStatusBitLength = 1; 00226 static const unsigned int gpsValidLine = 0; 00227 static const unsigned int gpsValidBitOffset = 26; 00228 static const unsigned int gpsValidBitLength = 1; 00229 static const unsigned int timestampTypeLine = 0; 00230 static const unsigned int timestampTypeBitOffset = 25; 00231 static const unsigned int timestampTypeBitLength = 1; 00232 static const unsigned int clockValidLine = 0; 00233 static const unsigned int clockValidBitOffset = 24; 00234 static const unsigned int clockValidBitLength = 1; 00235 static const unsigned int unixtimeHighLine = 1; 00236 static const unsigned int unixtimeHighBitOffset = 0; 00237 static const unsigned int unixtimeHighBitLength = 16; 00238 static const unsigned int unixtimeLowLine = 2; 00239 static const unsigned int unixtimeLowBitOffset = 0; 00240 static const unsigned int unixtimeLowBitLength = 16; 00241 static const unsigned int daysLine = 1; 00242 static const unsigned int daysBitOffset = 6; 00243 static const unsigned int daysBitLength = 10; 00244 static const unsigned int hourLine = 1; 00245 static const unsigned int hourBitOffset = 0; 00246 static const unsigned int hourBitLength = 6; 00247 static const unsigned int minuteLine = 2; 00248 static const unsigned int minuteBitOffset = 7; 00249 static const unsigned int minuteBitLength = 7; 00250 static const unsigned int secondLine = 2; 00251 static const unsigned int secondBitOffset = 0; 00252 static const unsigned int secondBitLength = 7; 00253 static const unsigned int accumulationLowLine = 2; 00254 static const unsigned int accumulationLowBitOffset = 20; 00255 static const unsigned int accumulationLowBitLength = 4; 00256 static const unsigned int nanosecondLowLine = 2; 00257 static const unsigned int nanosecondLowBitOffset = 16; 00258 static const unsigned int nanosecondLowBitLength = 4; 00259 static const unsigned int nanosecondHighLine = 3; 00260 static const unsigned int nanosecondHighBitOffset = 0; 00261 static const unsigned int nanosecondHighBitLength = 28; 00262 static const unsigned int accumulationHighLine = 4; 00263 static const unsigned int accumulationHighBitOffset = 0; 00264 static const unsigned int accumulationHighBitLength = 28; 00265 static const unsigned int hsumLine = 5; 00266 static const unsigned int hsumBitOffset = 16; 00267 static const unsigned int hsumBitLength = 9; 00268 static const unsigned int esumCompLine = 5; 00269 static const unsigned int esumCompBitOffset = 12; 00270 static const unsigned int esumCompBitLength = 3; 00271 static const unsigned int esumLine = 5; 00272 static const unsigned int esumBitOffset = 0; 00273 static const unsigned int esumBitLength = 12; 00274 static const unsigned int feeBufferStatusLine = 6; 00275 static const unsigned int feeBufferStatusBitOffset = 27; 00276 static const unsigned int feeBufferStatusBitLength = 1; 00277 static const unsigned int ltbBufferStatusLine = 6; 00278 static const unsigned int ltbBufferStatusBitOffset = 26; 00279 static const unsigned int ltbBufferStatusBitLength = 1; 00280 static const unsigned int blockedTriggerLine = 6; 00281 static const unsigned int blockedTriggerBitOffset = 16; 00282 static const unsigned int blockedTriggerBitLength = 10; 00283 static const unsigned int crossTriggerSourceLine = 6; 00284 static const unsigned int crossTriggerSourceBitOffset = 0; 00285 static const unsigned int crossTriggerSourceBitLength = 15; 00286 } 00287 00288 namespace FeePeakData { 00289 static const unsigned int dataType = 0x1; // Unique Data ID 00290 static const unsigned int version = 0; 00291 static const unsigned int size = 2; 00292 static const unsigned int adcChannelLine = 0; 00293 static const unsigned int adcChannelBitOffset = 24; 00294 static const unsigned int adcChannelBitLength = 4; 00295 static const unsigned int tdcChannelLine = 1; 00296 static const unsigned int tdcChannelBitOffset = 24; 00297 static const unsigned int tdcChannelBitLength = 4; 00298 static const unsigned int tdcLine = 1; 00299 static const unsigned int tdcBitOffset = 0; 00300 static const unsigned int tdcBitLength = 17; 00301 static const unsigned int tdcHitCountLine = 1; 00302 static const unsigned int tdcHitCountBitOffset = 17; 00303 static const unsigned int tdcHitCountBitLength = 7; 00304 static const unsigned int peakCycleLine = 0; 00305 static const unsigned int peakCycleBitOffset = 16; 00306 static const unsigned int peakCycleBitLength = 5; 00307 static const unsigned int adcRangeLine = 0; 00308 static const unsigned int adcRangeBitOffset = 12; 00309 static const unsigned int adcRangeBitLength = 1; 00310 static const unsigned int adcLine = 0; 00311 static const unsigned int adcBitOffset = 0; 00312 static const unsigned int adcBitLength = 12; 00313 } 00314 00315 namespace FeePeakData_v1 { 00316 static const unsigned int dataType = 0x1; // Unique Data ID 00317 static const unsigned int chargeLineType = 0x3; 00318 static const unsigned int timeLineType = 0x4; 00319 static const unsigned int version = 1; 00320 static const unsigned int size = 2; 00321 static const unsigned int adcChannelLine = 0; 00322 static const unsigned int adcChannelBitOffset = 25; 00323 static const unsigned int adcChannelBitLength = 4; 00324 static const unsigned int adcRangeLine = 0; 00325 static const unsigned int adcRangeBitOffset = 24; 00326 static const unsigned int adcRangeBitLength = 1; 00327 static const unsigned int adcPedestalLine = 0; 00328 static const unsigned int adcPedestalBitOffset = 12; 00329 static const unsigned int adcPedestalBitLength = 12; 00330 static const unsigned int tdcChannelLine = 1; 00331 static const unsigned int tdcChannelBitOffset = 25; 00332 static const unsigned int tdcChannelBitLength = 4; 00333 static const unsigned int peakCycleLine = 1; 00334 static const unsigned int peakCycleBitOffset = 21; 00335 static const unsigned int peakCycleBitLength = 4; 00336 static const unsigned int tdcHitCountLine = 1; 00337 static const unsigned int tdcHitCountBitOffset = 17; 00338 static const unsigned int tdcHitCountBitLength = 4; 00339 } 00340 00341 /* 00342 namespace FeeWaveformData { 00343 } 00344 */ 00345 00346 } 00347 00348 } 00349 00350 // Define changes to data format here 00351 /* 00352 namespace RawData_v0_7 { 00353 namespace DataFormat { 00354 // Only need to define the items that have changed in the data format 00355 00356 } 00357 } 00358 */ 00359 00360 } 00361 00362 #endif // RAWDATAFORMAT_H