Main Page   Modules   Namespace List   Class Hierarchy   Data Structures   File List   Namespace Members   Data Fields   Globals   Related Pages  

NPtGainTestResultStreamer.cpp

Go to the documentation of this file.
00001 #include "../NPtGainTestResult.h"
00002 #include "../RootStreamableAdapter.h"
00003 #include "../ResponseCurve.h"
00004 #include "NPtGainTestResultStreamer.h"
00005 
00006 #include <TF1.h>
00007 #include <vector>
00008 
00009 using namespace Sct;
00010 
00011 namespace SctData {
00012 namespace IO {
00013 
00014 
00015 NPtGainTestResultStreamer::NPtGainTestResultStreamer() throw() {}
00016 
00017 bool NPtGainTestResultStreamer::inMap = IOManager::addToMap("SctData::NPtGainTestResult", auto_ptr<Streamer>(new NPtGainTestResultStreamer()));
00018 
00019 
00020 shared_ptr<Streamable> NPtGainTestResultStreamer::read(IStream& in, const IOManager& manager) const throw(LogicError, IoError) {
00021     shared_ptr<Streamable> ad (new NPtGainTestResult());
00022     read(in, *ad, manager);
00023     return ad;
00024 }
00025 
00026 void NPtGainTestResultStreamer::write(OStream& out, const Streamable& ob, const IOManager& manager) const throw(LogicError, IoError) {
00027     //cout << "NPtGainTestResultIS::publishGuts" << endl;
00028     //Let superclass do its work
00029     TestResultStreamer::write(out, ob, manager);
00030 
00031     const NPtGainTestResult& mytest = dynamic_cast <const NPtGainTestResult&>(ob);
00032 
00033     out << mytest.getNChipData();
00034     for (unsigned int i = 0; i < mytest.getNChipData(); ++i) {
00035         writeData(out, mytest.getChipData(i), manager);
00036     }
00037 
00038     out << mytest.getNChannelData();
00039     for (unsigned int i = 0; i < mytest.getNChannelData(); ++i) {
00040         writeData(out, mytest.getChannelData(i), manager);
00041     }
00042 }
00043 
00044 void NPtGainTestResultStreamer::writeData(OStream& out, const NPtGainTestResultData& ob, const IOManager& manager) const throw(LogicError, IoError) {
00045     manager.writeImpl(out, *ob.rc, false);
00046     manager.writeImpl(out, RootStreamableAdapter(*ob.graph), false);
00047     out << ob.gain << ob.noise << ob.offset;
00048 }
00049 
00050 void NPtGainTestResultStreamer::read(IStream& in, Streamable& ob, const IOManager& manager) const throw(LogicError, IoError) {
00051     TestResultStreamer::read(in, ob, manager);
00052 
00053     NPtGainTestResult& mytest = dynamic_cast < NPtGainTestResult & >(ob);
00054 
00055     unsigned int n = 0;
00056     in >> n;
00057     mytest.setChipDataSize(n);
00058 
00059     for (unsigned int i = 0; i<n; ++i) {
00060         readData(in, mytest, mytest.getChipData(i), manager);
00061     }
00062 
00063     in >> n;
00064     mytest.setChannelDataSize(n);
00065     for (unsigned int i = 0; i<n; ++i) {
00066         readData(in, mytest, mytest.getChannelData(i), manager);
00067     }
00068 }
00069 
00070 void NPtGainTestResultStreamer::readData(IStream& in, NPtGainTestResult& mytest, NPtGainTestResultData& ob, const IOManager& manager) const throw(LogicError, IoError) {
00071     //Response Curve
00072     shared_ptr<Streamable> str = manager.readImpl(in, "SctData::ResponseCurve");
00073     shared_ptr<ResponseCurve> rc = boost::dynamic_pointer_cast<ResponseCurve>(str) ;
00074     ob.rc = rc;
00075 
00076     //TGraph
00077     ob.graph = shared_ptr<TGraph>(new TGraph());
00078     RootStreamableAdapter ad2(*ob.graph);
00079     manager.readImpl(in, ad2, false);
00080 
00081     //Rest
00082     in >> ob.gain >> ob.noise >> ob.offset;
00083 }
00084 }
00085 
00086 
00087 } 
00088 

Generated on Mon Dec 15 19:36:09 2003 for SCT DAQ/DCS Software by doxygen1.3-rc3