TrimRangeTestResult_ChipTrimStreamer_v1.cpp

00001 #include "Sct/IoExceptions.h"
00002 
00003 #include "../TrimRangeTestResult.h"
00004 #include "TrimRangeTestResult_ChipTrimStreamer_v1.h"
00005 
00006 using std::ostringstream;
00007 using namespace Sct;
00008 
00009 namespace SctData {
00010 namespace IO {
00011 
00012 /* READ NOTES ON STREAMERS AND VERSIONS BEFORE EDITING THIS FILE! */
00013 unsigned TrimRangeTestResult_ChipTrimStreamer_v1::s_version=1;
00014 
00015 TrimRangeTestResult_ChipTrimStreamer_v1::TrimRangeTestResult_ChipTrimStreamer_v1() throw() {}
00016 
00017 bool TrimRangeTestResult_ChipTrimStreamer_v1::inMap = IOManager::addToMap("SctData::TrimRangeTestResult::ChipTrim",  auto_ptr<Streamer>(new TrimRangeTestResult_ChipTrimStreamer_v1()));
00018 
00019 
00020 shared_ptr<Streamable> TrimRangeTestResult_ChipTrimStreamer_v1::read(IStream& in, const IOManager& manager) const throw(LogicError, IoError) {
00021     shared_ptr<Streamable> ad (new TrimRangeTestResult::ChipTrim());
00022     read(in, *ad, manager);
00023     return ad;
00024 }
00025 
00026 void TrimRangeTestResult_ChipTrimStreamer_v1::write(OStream& out, const Streamable& ob, const IOManager& manager) const throw(LogicError, IoError) {
00027   const TrimRangeTestResult::ChipTrim& trim = dynamic_cast<const TrimRangeTestResult::ChipTrim&> (ob);
00028   out << trim.target << (int) trim.range;
00029   if (trim.channelTrim.size()!=nChannelChip){
00030     ostringstream os;
00031     os << "TrimRangeTestResult_ChipTrimStreamer_v1::writeTrim, bad size " << trim.channelTrim.size();
00032     throw StreamCorruptedException(os.str(), __FILE__, __LINE__ );
00033   }
00034   out << (int) trim.channelTrim.size();
00035   for (unsigned i=0; i<trim.channelTrim.size(); ++i){
00036     Stat<TrimRangeTestResult::Trim> t=trim.channelTrim.getAt(i);
00037     int trim_i = t.value.trim;
00038     out << t.valid << trim_i << t.value.vthr;
00039   }
00040 }
00041 
00042   void TrimRangeTestResult_ChipTrimStreamer_v1::read(IStream& in, Streamable& ob, const IOManager& manager) const throw(Sct::LogicError, Sct::IoError){
00043     TrimRangeTestResult::ChipTrim& trim = dynamic_cast<TrimRangeTestResult::ChipTrim&> (ob);
00044     in >> trim.target;
00045     int range; in >> range ; trim.range=range;
00046     int size; in >> size; trim.channelTrim.resize(size);
00047     if (size!=nChannelChip){
00048       ostringstream os;
00049       os << "TrimRangeTestResult_ChipTrimStreamer_v1::readTrim, bad size " << trim.channelTrim.size();
00050       throw StreamCorruptedException(os.str(), __FILE__, __LINE__ );
00051     }
00052     for (unsigned i=0; i<size; ++i){
00053       Stat<TrimRangeTestResult::Trim>& t=trim.channelTrim.modifyAt(i);
00054       int trim_i;
00055       in >> t.valid >> trim_i >> t.value.vthr;
00056       t.value.trim=trim_i;
00057     }
00058   }
00059 
00060 }
00061 }

Generated on Mon Feb 6 14:01:36 2006 for SCT DAQ/DCS Software - C++ by  doxygen 1.4.6