| Classes | Job Modules | Data Objects | Services | Algorithms | Tools | Packages | Directories | Tracs |

In This Package:

FeeTraits.cc

Go to the documentation of this file.
00001 /*
00002  *  FeeTraits.cc
00003  *  FeeReadoutFormat
00004  *
00005  *  Created by Simon Patton on 7/21/10.
00006  *  Copyright 2010 DayaBay Collaboration. All rights reserved.
00007  *
00008  */
00009 #include <map>
00010 
00011 #include "FeeReadoutFormat/FeeTraits_v0_0.h"
00012 #include "FeeReadoutFormat/FeeTraits_v0_1.h"
00013 #include "FeeReadoutFormat/FeeTraits_v0_2.h"
00014 
00015 #include "FeeReadoutFormat/FeeTraits.h"
00016 
00017 using DybDaq::FeeTraits;
00018 
00019 // Components in this format
00020 const unsigned int FeeTraits::kHead = 0;
00021 const unsigned int FeeTraits::kHit = FeeTraits::kHead + 1;
00022 const unsigned int FeeTraits::kFoot = FeeTraits::kHit + 1;
00023 
00024 const unsigned int FeeTraits::kHeadTriggerNumber = 0;
00025 const unsigned int FeeTraits::kTriggerType = FeeTraits::kHeadTriggerNumber + 1;
00026 const unsigned int FeeTraits::kChecked = FeeTraits::kTriggerType + 1;
00027 const unsigned int FeeTraits::kError = FeeTraits::kChecked + 1;
00028 //
00029 const unsigned int FeeTraits::kChargeChannelId = FeeTraits::kError + 1;
00030 const unsigned int FeeTraits::kPeakCycle = FeeTraits::kChargeChannelId + 1;
00031 const unsigned int FeeTraits::kHighRangeAdc = FeeTraits::kPeakCycle + 1;
00032 const unsigned int FeeTraits::kAdc = FeeTraits::kHighRangeAdc + 1;
00033 const unsigned int FeeTraits::kTimeChannelId = FeeTraits::kAdc + 1;
00034 const unsigned int FeeTraits::kHitNumber = FeeTraits::kTimeChannelId + 1;
00035 const unsigned int FeeTraits::kTdc = FeeTraits::kHitNumber + 1;
00036 //
00037 const unsigned int FeeTraits::kFootTriggerNumber = FeeTraits::kTdc + 1;
00038 const unsigned int FeeTraits::kFootDataLength = FeeTraits::kFootTriggerNumber + 1;
00039 
00040 // Added in version 0.1
00041 const unsigned int FeeTraits::kMajorVersion = FeeTraits::kFootDataLength + 1;
00042 const unsigned int FeeTraits::kMinorVersion = FeeTraits::kMajorVersion + 1;
00043 //
00044 const unsigned int FeeTraits::kPreAdc = FeeTraits::kMinorVersion + 1;
00045 
00046 // Added in version 0.1 (as improvement)
00047 const unsigned int FeeTraits::kHeadMarker = FeeTraits::kPreAdc + 1;
00048 const unsigned int FeeTraits::kAdcDataMarker = FeeTraits::kHeadMarker + 1;
00049 const unsigned int FeeTraits::kTdcDataMarker = FeeTraits::kAdcDataMarker + 1;
00050 const unsigned int FeeTraits::kFootMarker = FeeTraits::kTdcDataMarker + 1;
00051 
00052 
00053 static std::map<const char*, FeeTraits*> m_allTraits;
00054 
00055 FeeTraits::FeeTraits() {
00056 }
00057 
00058 FeeTraits::~FeeTraits() {
00059 }
00060 
00061 const FeeTraits& FeeTraits::defaultTraits() {
00062     if (0 == m_allTraits.size()) {
00063         m_allTraits.insert(std::pair<const char*, FeeTraits*>(FeeTraits_v0_0::key(),new FeeTraits_v0_0()));
00064         m_allTraits.insert(std::pair<const char*, FeeTraits*>(FeeTraits_v0_1::key(),new FeeTraits_v0_1()));
00065         m_allTraits.insert(std::pair<const char*, FeeTraits*>(FeeTraits_v0_2::key(),new FeeTraits_v0_2()));
00066     }
00067     return *m_allTraits[FeeTraits_v0_2::key()];
00068 }
00069 
00070 const FeeTraits* FeeTraits::readTraits(const char*& buffer) {
00071     unsigned int major = 0;
00072     const unsigned int minor = readUnsignedInt(buffer,
00073                                              defaultTraits(),
00074                                              FeeTraits::kMinorVersion);
00075     
00076     const FeeTraits* result = 0;
00077     if (0U == major && 0U == minor) {
00078         result = m_allTraits[FeeTraits_v0_0::key()];
00079     } else if (0U == major && 1U == minor) {
00080         result = m_allTraits[FeeTraits_v0_1::key()];
00081     } else if (0U == major && 2U == minor) {
00082         result = m_allTraits[FeeTraits_v0_2::key()];
00083     }
00084     return result;
00085 }
00086 
00087 unsigned int FeeTraits::illegalMarker() const {
00088     return 0xffffffffU;
00089 }
00090 
00091 unsigned int FeeTraits::illegalField() const {
00092     return 0xffffffffU;
00093 }
00094 
00095 const char* FeeTraits::triggerTypeAsString(unsigned int triggerType) const {
00096         if (triggerType >= triggerTypeEnd()) {
00097                 return "Unknown";
00098         }
00099     return triggerTypeStrings()[triggerType];
00100 }
| Classes | Job Modules | Data Objects | Services | Algorithms | Tools | Packages | Directories | Tracs |

Generated on Mon Apr 11 20:08:02 2011 for FeeReadoutFormat by doxygen 1.4.7