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
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
00031
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
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
00080 ob.graph = shared_ptr<TGraph>(new TGraph());
00081 RootStreamableAdapter ad2(*ob.graph);
00082 manager.readImpl(in, ad2, false);
00083
00084
00085 in >> ob.gain >> ob.noise >> ob.offset;
00086 }
00087 }
00088
00089
00090 }
00091