00001
00002
00003
00004
00005
00006 #ifndef RAWDATA_H
00007 #define RAWDATA_H
00008
00009 #include "RawData/RawBuffer.h"
00010 #include <iostream>
00011
00012 namespace DayaBay {
00013
00014
00015 class RawData : public RawBuffer {
00016 public:
00017 RawData(unsigned int* buffer=0, unsigned int majorVersion=0,
00018 unsigned int minorVersion=0, bool isOwner=false);
00019 ~RawData();
00020 unsigned int type() const;
00021 unsigned int majorVersion() const;
00022 unsigned int minorVersion() const;
00023 bool isEventType() const;
00024 bool isModuleType() const;
00025 virtual std::ostream& dump(std::ostream& str);
00026
00027 static DayaBay::RawData* makeNewData(unsigned int* buffer=0,
00028 unsigned int majorVersion=0,
00029 unsigned int minorVersion=0,
00030 bool isOwner=false);
00031 protected:
00032 unsigned int m_majorVersion;
00033 unsigned int m_minorVersion;
00034 };
00035
00036
00037
00038 class RawFragment: public RawData {
00039 public:
00040 RawFragment(unsigned int* buffer=0, unsigned int majorVersion=0,
00041 unsigned int minorVersion=0, bool isOwner=false);
00042 ~RawFragment();
00043 unsigned int type() const;
00044 virtual unsigned int size() const;
00045 virtual std::ostream& dump(std::ostream& str);
00046 };
00047
00048
00049 class HeadFragment: public RawFragment {
00050 public:
00051 HeadFragment(unsigned int* buffer=0, unsigned int majorVersion=0,
00052 unsigned int minorVersion=0, bool isOwner=false);
00053 ~HeadFragment();
00054 virtual unsigned int size() const;
00055 unsigned int status() const;
00056 unsigned int triggerNumber() const;
00057 virtual unsigned int headType() const;
00058 virtual std::ostream& dump(std::ostream& str);
00059 };
00060
00061
00062 class TailFragment: public RawFragment {
00063 public:
00064 TailFragment(unsigned int* buffer=0, unsigned int majorVersion=0,
00065 unsigned int minorVersion=0, bool isOwner=false);
00066 ~TailFragment();
00067 virtual unsigned int size() const;
00068 unsigned int dataSize() const;
00069 virtual unsigned int tailType() const;
00070 virtual std::ostream& dump(std::ostream& str);
00071 };
00072
00073
00074 class LtbHeadFragment: public HeadFragment {
00075 public:
00076 LtbHeadFragment(unsigned int* buffer=0, unsigned int majorVersion=0,
00077 unsigned int minorVersion=0, bool isOwner=false);
00078 ~LtbHeadFragment();
00079 virtual unsigned int headType() const;
00080 unsigned int clockError() const;
00081 unsigned int ltbDataVersion() const;
00082 unsigned int numberInternalLocalTrigger() const;
00083 unsigned int numberSavedInternalLocalTrigger() const;
00084 virtual std::ostream& dump(std::ostream& str);
00085 };
00086
00087
00088 class LtbTailFragment: public TailFragment {
00089 public:
00090 LtbTailFragment(unsigned int* buffer=0, unsigned int majorVersion=0,
00091 unsigned int minorVersion=0, bool isOwner=false);
00092 ~LtbTailFragment();
00093 virtual unsigned int tailType() const;
00094 virtual std::ostream& dump(std::ostream& str);
00095 };
00096
00097
00098 class FeeHeadFragment: public HeadFragment {
00099 public:
00100 FeeHeadFragment(unsigned int* buffer=0, unsigned int majorVersion=0,
00101 unsigned int minorVersion=0, bool isOwner=false);
00102 ~FeeHeadFragment();
00103 virtual unsigned int headType() const;
00104 unsigned int feeDataVersion() const;
00105 virtual std::ostream& dump(std::ostream& str);
00106 };
00107
00108
00109 class FeeTailFragment: public TailFragment {
00110 public:
00111 FeeTailFragment(unsigned int* buffer=0, unsigned int majorVersion=0,
00112 unsigned int minorVersion=0, bool isOwner=false);
00113 ~FeeTailFragment();
00114 virtual unsigned int tailType() const;
00115 virtual std::ostream& dump(std::ostream& str);
00116 };
00117
00118
00119 class DataFragment: public RawFragment {
00120 public:
00121 DataFragment(unsigned int* buffer=0, unsigned int majorVersion=0,
00122 unsigned int minorVersion=0, bool isOwner=false);
00123 ~DataFragment();
00124 virtual unsigned int size() const;
00125 virtual unsigned int dataType() const;
00126 bool isLocalTriggerData() const;
00127 bool isFeePeakData() const;
00128 virtual std::ostream& dump(std::ostream& str);
00129 };
00130
00131
00132 class LocalTriggerData: public DataFragment {
00133 public:
00134 LocalTriggerData(unsigned int* buffer=0, unsigned int majorVersion=0,
00135 unsigned int minorVersion=0,
00136 unsigned int ltbDataVersion=0,
00137 bool isOwner=false);
00138 ~LocalTriggerData();
00139 virtual unsigned int size() const;
00140 virtual unsigned int dataType() const;
00141 unsigned int ltbDataVersion() const;
00142 unsigned int sequenceNumber() const;
00143 unsigned int readOutType() const;
00144 unsigned int triggerType() const;
00145 unsigned int hour() const;
00146 unsigned int minute() const;
00147 unsigned int second() const;
00148 unsigned int hsum() const;
00149 unsigned int esumComp() const;
00150 unsigned int esum() const;
00151 unsigned int crossTriggerSource() const;
00152
00153 unsigned int year() const;
00154 unsigned int month() const;
00155 unsigned int day() const;
00156 unsigned int clock() const;
00157
00158 unsigned int accumulationStatus() const;
00159 unsigned int gpsValid() const;
00160 unsigned int timestampType() const;
00161 unsigned int clockValid() const;
00162 unsigned int unixtimeHigh() const;
00163 unsigned int unixtimeLow() const;
00164 unsigned int unixtime() const;
00165 unsigned int days() const;
00166 unsigned int accumulationHigh() const;
00167 unsigned int nanosecondHigh() const;
00168 unsigned int accumulationLow() const;
00169 unsigned int nanosecondLow() const;
00170 int accumulation() const;
00171 unsigned int nanosecond() const;
00172 unsigned int feeBufferStatus() const;
00173 unsigned int ltbBufferStatus() const;
00174 unsigned int blockedTrigger() const;
00175 bool isUtcTime() const;
00176 bool isUnixTime() const;
00177
00178 bool isManualTrigger() const;
00179 bool isCrossTrigger() const;
00180 bool isPeriodicTrigger() const;
00181 bool isMultiplicityTrigger() const;
00182 bool isEsumAdcTrigger() const;
00183 bool isEsumCompHighTrigger() const;
00184 bool isEsumCompLowTrigger() const;
00185 bool isEsumCompAllTrigger() const;
00186 virtual std::ostream& dump(std::ostream& str);
00187 protected:
00188 unsigned int m_ltbDataVersion;
00189 };
00190
00191
00192 class FeePeakData: public DataFragment {
00193 public:
00194 FeePeakData(unsigned int* buffer=0, unsigned int majorVersion=0,
00195 unsigned int minorVersion=0, unsigned int feeDataVersion=0,
00196 bool isOwner=false);
00197 ~FeePeakData();
00198 virtual unsigned int size() const;
00199 virtual unsigned int dataType() const;
00200 unsigned int feeDataVersion() const;
00201 unsigned int channel() const;
00202 unsigned int tdcChannel() const;
00203 unsigned int adcChannel() const;
00204 unsigned int tdc() const;
00205 unsigned int tdcHitCount() const;
00206 unsigned int adc() const;
00207 unsigned int peakCycle() const;
00208 unsigned int adcRange() const;
00209 bool hasAdcPedestal() const;
00210
00211 unsigned int adcPedestal() const;
00212 virtual std::ostream& dump(std::ostream& str);
00213 protected:
00214 unsigned int m_feeDataVersion;
00215 };
00216
00217
00218 class RawModule: public RawData {
00219 public:
00220 RawModule(unsigned int* buffer=0, unsigned int majorVersion=0,
00221 unsigned int minorVersion=0, bool isOwner=false);
00222 ~RawModule();
00223 unsigned int size() const;
00224 unsigned int headerSize() const;
00225 unsigned int siteId() const;
00226 unsigned int detectorId() const;
00227 unsigned int moduleType() const;
00228 unsigned int slot() const;
00229 bool isLocalTriggerModule() const;
00230 bool isPmtFeeModule() const;
00231 bool isFlashAdcModule() const;
00232 bool isRpcRomModule() const;
00233 bool isRpcRtmModule() const;
00234 DayaBay::HeadFragment* headFragment();
00235 DayaBay::DataFragment* nextDataFragment();
00236 void resetDataFragment();
00237 virtual std::ostream& dump(std::ostream& str);
00238
00239 DayaBay::RawFragment* makeNewFragment(unsigned int* buffer=0,
00240 unsigned int majorVersion=0,
00241 unsigned int minorVersion=0,
00242 bool isOwner=false);
00243
00244 DayaBay::HeadFragment* makeNewHeadFragment(unsigned int* buffer=0,
00245 unsigned int majorVersion=0,
00246 unsigned int minorVersion=0,
00247 bool isOwner=false);
00248
00249 DayaBay::TailFragment* makeNewTailFragment(unsigned int* buffer=0,
00250 unsigned int majorVersion=0,
00251 unsigned int minorVersion=0,
00252 bool isOwner=false);
00253
00254 DayaBay::DataFragment* makeNewDataFragment(unsigned int* buffer=0,
00255 unsigned int majorVersion=0,
00256 unsigned int minorVersion=0,
00257 bool isOwner=false);
00258 private:
00259 unsigned int m_currentFragmentLine;
00260 };
00261
00262
00263 class RawEvent: public RawData {
00264 public:
00265 RawEvent(unsigned int* buffer=0, unsigned int majorVersion=0,
00266 unsigned int minorVersion=0, bool isOwner=false);
00267 ~RawEvent();
00268 unsigned int size() const;
00269 unsigned int headerSize() const;
00270 unsigned int eventMajorVersion() const;
00271 unsigned int eventMinorVersion() const;
00272 unsigned int siteId() const;
00273 unsigned int detectorId() const;
00274 unsigned int runNumber() const;
00275 unsigned int eventId() const;
00276 unsigned int eventType() const;
00277 unsigned int eventTypeValue() const;
00278 unsigned int formatFlag() const;
00279 unsigned int statusFlag() const;
00280 DayaBay::RawModule* nextModule();
00281 void resetModule();
00282 DayaBay::RawEvent* clone() const;
00283 virtual std::ostream& dump(std::ostream& str);
00284 private:
00285 unsigned int m_currentModuleLine;
00286 };
00287
00288
00289
00290
00291
00292
00293
00294
00295
00296
00297
00298
00299
00300
00301
00302
00303
00304
00305
00306
00307
00308
00309 }
00310
00311 #endif // RAWDATA_H