00001 #include "RtmReadoutFormat/RtmTraits.h" 00002 #include "RtmReadoutFormat/RtmTraits_v1_3.h" 00003 00004 #include <map> 00005 00006 00007 using DybDaq::RtmTraits; 00008 using DybDaq::RtmTraits_v1_3; 00009 00010 // Components in this format 00011 const unsigned int RtmTraits::kData = 0; 00012 00013 const unsigned int RtmTraits::kRtmMarkerValue = 0xa5a5; 00014 00015 const unsigned int RtmTraits::kRtmMarker = 0; 00016 const unsigned int RtmTraits::kRpcCFId = RtmTraits::kRtmMarker + 1; 00017 const unsigned int RtmTraits::kTransErr = RtmTraits::kRpcCFId + 1; 00018 const unsigned int RtmTraits::kRomAlmostFull = RtmTraits::kTransErr + 1; 00019 const unsigned int RtmTraits::kRtmAlmostFull = RtmTraits::kRomAlmostFull + 1; 00020 const unsigned int RtmTraits::kFullFlag = RtmTraits::kRtmAlmostFull + 1; 00021 const unsigned int RtmTraits::kValidGPS = RtmTraits::kFullFlag + 1; 00022 const unsigned int RtmTraits::kValidCLK = RtmTraits::kValidGPS + 1; 00023 const unsigned int RtmTraits::kUsingUTC = RtmTraits::kValidCLK + 1; 00024 const unsigned int RtmTraits::kSecond = RtmTraits::kUsingUTC + 1; 00025 const unsigned int RtmTraits::kNanoSecond = RtmTraits::kSecond + 1; 00026 const unsigned int RtmTraits::kAccumulation = RtmTraits::kNanoSecond + 1; 00027 const unsigned int RtmTraits::kTriggerRot = RtmTraits::kAccumulation + 1; 00028 const unsigned int RtmTraits::kTriggerMap = RtmTraits::kTriggerRot + 1; 00029 00030 static std::map<const char*, RtmTraits*> m_allTraits; 00031 00032 00033 RtmTraits::RtmTraits() { 00034 } 00035 00036 RtmTraits::~RtmTraits() { 00037 } 00038 00039 const RtmTraits& RtmTraits::defaultTraits() { 00040 if ( m_allTraits.size() == 0 ) { 00041 m_allTraits.insert(std::pair<const char*, RtmTraits*>(RtmTraits_v1_3::key(), new RtmTraits_v1_3())); 00042 } 00043 return *m_allTraits[ RtmTraits_v1_3::key() ]; 00044 } 00045 00046 const RtmTraits* RtmTraits::readTraits(const char*& ) { 00047 defaultTraits(); 00048 return m_allTraits[ RtmTraits_v1_3::key() ]; 00049 } 00050 00051 const RtmTraits* RtmTraits::getTraits(const unsigned int version) { 00052 defaultTraits(); 00053 if ( version == 0x13 ) { 00054 return m_allTraits[ RtmTraits_v1_3::key() ]; 00055 } 00056 return m_allTraits[ RtmTraits_v1_3::key() ]; 00057 } 00058 00059 unsigned int RtmTraits::illegalMarker() const { 00060 return 0xffffffffU; 00061 } 00062 00063 unsigned int RtmTraits::illegalField() const { 00064 return 0xffffffffU; 00065 }