NoiseOccupancyTestResultStreamer_v1.cpp

00001 #include "../NoiseOccupancyTestResult.h"
00002 #include "../RootStreamableAdapter.h"
00003 #include "NoiseOccupancyTestResultStreamer_v1.h"
00004 
00005 #include <TGraph.h>
00006 #include <TF1.h>
00007 
00008 using namespace Sct;
00009 
00010 namespace SctData {
00011 namespace IO {
00012 
00013 /* READ NOTES ON STREAMERS AND VERSIONS BEFORE EDITING THIS FILE! */
00014 unsigned NoiseOccupancyTestResultStreamer_v1::s_version=1;
00015     
00016 NoiseOccupancyTestResultStreamer_v1::NoiseOccupancyTestResultStreamer_v1() throw() {}
00017 
00018 bool NoiseOccupancyTestResultStreamer_v1::inMap = IOManager::addToMap("SctData::NoiseOccupancyTestResult",  auto_ptr<Streamer>(new NoiseOccupancyTestResultStreamer_v1()));
00019 
00020 shared_ptr<Streamable> NoiseOccupancyTestResultStreamer_v1::read(IStream& in, const IOManager& manager) const throw(LogicError, IoError) {
00021     shared_ptr<Streamable> ad (new NoiseOccupancyTestResult());
00022     read(in, *ad, manager);
00023     return ad;
00024 }
00025 
00026 void NoiseOccupancyTestResultStreamer_v1::write(OStream& out, const Streamable& ob, const IOManager& manager) const throw(LogicError, IoError) {
00027     //Let superclass do its work
00028     manager.writeImpl(out, ob, "SctData::TestResult");
00029 
00030     const NoiseOccupancyTestResult& mytest = dynamic_cast<const NoiseOccupancyTestResult&>(ob);
00031     for (unsigned int ichip=0; ichip<nChipModule; ichip++) {
00032         writeChipResult(out, mytest.getChipResult(ichip), manager);
00033     }
00034 }
00035 
00036 void NoiseOccupancyTestResultStreamer_v1::read(IStream& in, Streamable& ob, const IOManager& manager) const throw(LogicError, IoError) {
00037     manager.readImpl(in, ob, "SctData::TestResult");
00038 
00039     NoiseOccupancyTestResult& mytest = dynamic_cast<NoiseOccupancyTestResult&>(ob);
00040     for (unsigned int ichip=0; ichip<nChipModule; ichip++) {
00041         readChipResult(in, mytest.getChipResult(ichip), manager);
00042     }
00043 }
00044 
00045 void NoiseOccupancyTestResultStreamer_v1::writeChipResult(OStream& out, const ChipNOResult& c, const IOManager& manager) const throw (LogicError, IoError) {
00046     manager.writeImpl(out, RootStreamableAdapter( *c.graph ), true);
00047     manager.writeImpl(out, RootStreamableAdapter( *c.fit ), false);
00048     out << c.mean << c.rms << c.offset;
00049 }
00050 
00051 void NoiseOccupancyTestResultStreamer_v1::readChipResult(IStream& in, ChipNOResult& c, const IOManager& manager) const throw(LogicError, IoError) {
00052     shared_ptr<Streamable> ob = manager.readImpl(in);
00053     shared_ptr<RootStreamableAdapter> ad  = boost::dynamic_pointer_cast<RootStreamableAdapter>(ob);
00054     c.graph = shared_ptr<TGraph> ( dynamic_cast<TGraph*>(ad->getObject()));
00055     
00056     auto_ptr<TF1> f = NoiseOccupancyTestResult::createFitFunction();
00057     RootStreamableAdapter ad2( *f.release() );
00058     manager.readImpl(in, ad2, false);
00059     c.fit = shared_ptr<TF1> ( dynamic_cast<TF1*>(ad2.getObject()) );
00060     in >> c.mean >> c.rms >> c.offset;
00061 }
00062 
00063 }
00064 }

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