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

NPtGainTestResultStreamer_v1.cpp

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

Generated on Thu Jul 15 09:50:49 2004 for SCT DAQ/DCS Software - C++ by doxygen 1.3.5