DoubleTriggerNoiseTestResultStreamer_v2.cpp

00001 #include "../DoubleTriggerNoiseTestResult.h"
00002 #include "DoubleTriggerNoiseTestResultStreamer_v2.h"
00003 #include <vector>
00004 
00005 using namespace Sct;
00006 
00007 namespace SctData {
00008 namespace IO {
00009 
00010 /* READ NOTES ON STREAMERS AND VERSIONS BEFORE EDITING THIS FILE! */
00011 unsigned DoubleTriggerNoiseTestResultStreamer_v2::s_version=2;
00012     
00013 DoubleTriggerNoiseTestResultStreamer_v2::DoubleTriggerNoiseTestResultStreamer_v2() throw() {
00014 }
00015 
00016 bool DoubleTriggerNoiseTestResultStreamer_v2::inMap = IOManager::addToMap("SctData::DoubleTriggerNoiseTestResult",  auto_ptr<Streamer>(new DoubleTriggerNoiseTestResultStreamer_v2()));
00017 
00018 shared_ptr<Streamable> DoubleTriggerNoiseTestResultStreamer_v2::read(IStream& in, const IOManager& manager) const throw(LogicError, IoError) {
00019     shared_ptr<Streamable> ad (new DoubleTriggerNoiseTestResult());
00020     read(in, *ad, manager);
00021     return ad;
00022 }
00023 
00024 void DoubleTriggerNoiseTestResultStreamer_v2::write(OStream& out, const Streamable& ob, const IOManager& manager) const throw(LogicError, IoError) {
00025     //Let superclass do its work
00026     manager.writeImpl(out, ob, "SctData::TestResult");
00027     const DoubleTriggerNoiseTestResult& result=dynamic_cast<const DoubleTriggerNoiseTestResult&>(ob);
00028     
00029     float* vals=new float[nChipModule];
00030     for (unsigned ichip=0; ichip<nChipModule; ++ichip){
00031       vals[ichip]=result.getPedestalOccupancy(ichip);
00032     }
00033     out.put(vals,nChipModule);
00034     
00035     for (unsigned ichip=0; ichip<nChipModule; ++ichip){
00036       vals[ichip]=result.getPeakOccupancy(ichip);
00037     }
00038     out.put(vals,nChipModule);
00039     delete[] vals;
00040 }
00041 
00042 void DoubleTriggerNoiseTestResultStreamer_v2::read(IStream& in, Streamable& ob, const IOManager& manager) const throw(LogicError, IoError) {
00043     manager.readImpl(in, ob, "SctData::TestResult");
00044     DoubleTriggerNoiseTestResult& result=dynamic_cast<DoubleTriggerNoiseTestResult&>(ob);
00045 
00046     float* peaks;
00047     float* peds;
00048 
00049     unsigned length;
00050     in.get(&peds, length);
00051     if (length!=nChipModule) throw StreamCorruptedException("Wrong size of data",__FILE__, __LINE__);
00052     for (unsigned ichip=0; ichip<nChipModule; ++ichip){
00053       result.setPedestalOccupancy(ichip, peds[ichip]);
00054     }
00055     
00056     in.get(&peaks, length);
00057     if (length!=nChipModule) throw StreamCorruptedException("Wrong size of data",__FILE__, __LINE__);
00058     for (unsigned ichip=0; ichip<nChipModule; ++ichip){
00059       result.setPeakOccupancy(ichip, peaks[ichip]);
00060     }
00061     delete[] peds;
00062     delete[] peaks;
00063 }
00064 
00065 }
00066 }

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