00001 #include "FitObjectStreamer.h"
00002 #include "../FitObject.h"
00003 #include "../AllFitObject.h"
00004 #include <is/isinfo.h>
00005
00006 using namespace Sct;
00007
00008 namespace SctData {
00009 namespace IO {
00010
00011 void FitObjectStreamer::write(OStream& out, const Streamable& ob, const IOManager& manager) const throw(LogicError, IoError) {
00012
00013 const FitObject& fo = dynamic_cast<const FitObject&>(ob);
00014
00015
00016 out << fo.getChiSquared() << fo.getNDF();
00017
00018 for (int i=0; i<fo.getNPar(); ++i) {
00019 out << fo.getParameter(i) << fo.getParError(i) << fo.isFixed(i);
00020
00021 }
00022
00023 for (int i=0; i<fo.getNDim(); ++i) {
00024 out << fo.getVarMin(i) << fo.getVarMax(i);
00025 }
00026 }
00027
00029 void FitObjectStreamer::read(IStream& in, Streamable& ob, const IOManager& manager) const throw(LogicError, IoError) {
00030
00031 FitObject& fo = dynamic_cast<FitObject&>(ob);
00032 helper.set(fo);
00033
00034 int npar, ndim;
00035 int ndf;
00036 double chi2;
00037 bool fixed;
00038
00039
00040 ndim = fo.getNDim();
00041 npar = fo.getNPar();
00042 in >> chi2 >> ndf;
00043
00044
00045
00046 helper.setChiSquared(chi2);
00047 helper.setNDF(ndf);
00048
00049
00050 for (int i=0; i<npar; i++) {
00051 double param, paramError;
00052
00053 in >> param >> paramError >> fixed;
00054
00055 fo.setParameter(i, param);
00056 fo.setParError(i, paramError);
00057 fo.fixParameter(i, fixed);
00058
00059 }
00060
00061
00062 for (int i=0; i<ndim; i++) {
00063 double varMin, varMax;
00064 in >> varMin >> varMax;
00065 fo.setVarMin(i, varMin);
00066 fo.setVarMax(i, varMax);
00067 }
00068 }
00069
00070 bool ErfcFitObjectStreamer::inMap = IOManager::addToMap("SctData::ErfcFitObject", auto_ptr<Streamer>(new ErfcFitObjectStreamer()));
00071
00072 shared_ptr<Streamable> ErfcFitObjectStreamer::read(IStream& in, const IOManager& manager) const throw(LogicError, IoError) {
00073 shared_ptr<Streamable> f (new ErfcFitObject());
00074 read(in, *f, manager);
00075 return f;
00076 }
00077
00078 void ErfcFitObjectStreamer::read(IStream& in, Streamable& ob, const IOManager& manager) const throw(LogicError, IoError) {
00079 FitObjectStreamer::read(in, ob, manager);
00080 }
00081
00082
00083 bool ErfFitObjectStreamer::inMap = IOManager::addToMap("SctData::ErfFitObject", auto_ptr<Streamer>(new ErfFitObjectStreamer()));
00084
00085 shared_ptr<Streamable> ErfFitObjectStreamer::read(IStream& in, const IOManager& manager) const throw(LogicError, IoError) {
00086 shared_ptr<Streamable> f (new ErfFitObject());
00087 read(in, *f, manager);
00088 return f;
00089 }
00090
00091 void ErfFitObjectStreamer::read(IStream& in, Streamable& ob, const IOManager& manager) const throw(LogicError, IoError) {
00092 FitObjectStreamer::read(in, ob, manager);
00093 }
00094
00095
00096
00097 bool GausFitObjectStreamer::inMap = IOManager::addToMap("SctData::GausFitObject", auto_ptr<Streamer>(new GausFitObjectStreamer()));
00098
00099 shared_ptr<Streamable> GausFitObjectStreamer::read(IStream& in, const IOManager& manager) const throw(LogicError, IoError) {
00100 shared_ptr<Streamable> f (new GausFitObject());
00101 read(in, *f, manager);
00102 return f;
00103 }
00104
00105 void GausFitObjectStreamer::read(IStream& in, Streamable& ob, const IOManager& manager) const throw(LogicError, IoError) {
00106 FitObjectStreamer::read(in, ob, manager);
00107 }
00108
00109
00110
00111 bool TopHatFitObjectStreamer::inMap = IOManager::addToMap("SctData::TopHatFitObject", auto_ptr<Streamer>(new TopHatFitObjectStreamer()));
00112
00113 shared_ptr<Streamable> TopHatFitObjectStreamer::read(IStream& in, const IOManager& manager) const throw(LogicError, IoError) {
00114 shared_ptr<Streamable> f (new TopHatFitObject());
00115 read(in, *f, manager);
00116 return f;
00117 }
00118
00119 void TopHatFitObjectStreamer::read(IStream& in, Streamable& ob, const IOManager& manager) const throw(LogicError, IoError) {
00120 FitObjectStreamer::read(in, ob, manager);
00121 }
00122
00123 }
00124 }