00001 #ifndef FADCREADOUTFORMAT_FADCTRAITS_H 00002 #define FADCREADOUTFORMAT_FADCTRAITS_H 00003 00004 /* 00005 * FadcTraits.h 00006 * FadcReadoutFormat 00007 * 00008 * Created by Simon Patton on 9/2/10. 00009 * Copyright 2010 DayaBay Collaboration. All rights reserved. 00010 * 00011 */ 00012 00013 #include "DaqReadoutFormat/DaqTraits.h" 00014 00015 namespace DybDaq { 00016 00017 class FadcTraits : public DaqTraits { 00018 00019 public: 00020 00024 static const unsigned int kHead; 00025 00029 static const unsigned int kData; 00030 00034 static const unsigned int kFoot; 00035 00039 static const unsigned int kHeadTriggerNumber; 00040 00041 // FadcHead 00042 00046 static const unsigned int kMajorVersion; 00047 00051 static const unsigned int kMinorVersion; 00052 00056 static const unsigned int kTriggerType; 00057 00061 static const unsigned int kNoData; 00062 00063 // Improvements to 1.2 00064 00068 static const unsigned int kHeadMarker; 00069 00073 static const unsigned int kAdcDataMarker; 00074 00078 static const unsigned int kFootMarker; 00079 00080 // Added in 1.5 00081 00085 static const unsigned int kProtectionStatus; 00086 00090 static const unsigned int kScaleEnabled; 00091 00095 static const unsigned int kDuringPrevious; 00096 00097 // For FadcData 00098 00102 static const unsigned int kChannelId; 00103 00107 static const unsigned int kHighDataByte; 00108 00112 static const unsigned int kMiddleDataByte; 00113 00117 static const unsigned int kLowDataByte; 00118 00119 // FadcFoot 00120 00124 static const unsigned int kFootTriggerNumber; 00125 00129 static const unsigned int kFootDataLength; 00130 00134 static const FadcTraits& defaultTraits(); 00135 00139 static const FadcTraits* readTraits(const char*& buffer); 00140 00144 virtual ~FadcTraits(); 00145 00149 virtual unsigned int illegalMarker() const; 00150 00154 virtual unsigned int illegalField() const; 00155 00159 virtual unsigned int triggerTypeEnd() const = 0; 00160 00164 virtual const char* triggerTypeAsString(unsigned int triggerType) const; 00165 00169 virtual unsigned int headSize() const = 0; 00170 00174 virtual unsigned int dataSize() const = 0; 00175 00179 virtual unsigned int footSize() const = 0; 00180 00184 virtual void initializeHead(char* buffer) const = 0; 00185 00189 virtual void initializeData(char* buffer) const = 0; 00190 00194 virtual void initializeFoot(char* buffer) const = 0; 00195 00196 protected: 00197 00201 FadcTraits(); 00202 00206 virtual const char** triggerTypeStrings() const = 0; 00207 00208 private: 00209 00213 FadcTraits(FadcTraits& rhs); 00214 00218 FadcTraits& operator=(FadcTraits& rhs); 00219 00220 }; 00221 00222 } 00223 00224 #endif // FADCREADOUTFORMAT_FADCTRAITS_H