00001 #include "FitObjectStreamer_v1.h"
00002 #include "../FitObject.h"
00003 #include "../AllFitObject.h"
00004 #include <is/isinfo.h>
00005
00006 using namespace Sct;
00007 using namespace boost;
00008
00009 namespace SctData {
00010 namespace IO {
00011
00012 unsigned FitObjectStreamer_v1::s_version=1;
00013 unsigned ErfFitObjectStreamer_v1::s_version=1;
00014 unsigned ErfcFitObjectStreamer_v1::s_version=1;
00015 unsigned GausFitObjectStreamer_v1::s_version=1;
00016 unsigned TopHatFitObjectStreamer_v1::s_version=1;
00017
00018
00019
00020
00021 bool FitObjectStreamer_v1::inMap = IOManager::addToMap("SctData::FitObject", std::auto_ptr<Streamer>(new FitObjectStreamer_v1()));
00022
00023 shared_ptr<Streamable> FitObjectStreamer_v1::read(IStream&, IOManager const&) const throw(LogicError, IoError) {
00024 throw LogicError("Cannot make a FitObject - abstract class",__FILE__,__LINE__);
00025 }
00026
00027 void FitObjectStreamer_v1::write(OStream& out, const Streamable& ob, const IOManager& manager) const throw(LogicError, IoError) {
00028
00029 const FitObject& fo = dynamic_cast<const FitObject&>(ob);
00030
00031
00032 out << fo.getChiSquared() << fo.getNDF();
00033 for (int i=0; i<fo.getNPar(); ++i) {
00034 out << fo.getParameter(i) << fo.getParError(i) << fo.isFixed(i);
00035 }
00036
00037 for (int i=0; i<fo.getNDim(); ++i) {
00038 out << fo.getVarMin(i) << fo.getVarMax(i);
00039 }
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061 }
00062
00063 void FitObjectStreamer_v1::read(IStream& in, Streamable& ob, const IOManager& manager) const throw(LogicError, IoError) {
00064
00065
00066 FitObject& fo = dynamic_cast<FitObject&>(ob);
00067 read(in, fo, manager);
00068 }
00069
00070 void FitObjectStreamer_v1::read(IStream& in, FitObject& fo, const IOManager& manager) const throw(LogicError, IoError) {
00071
00072 int ndf;
00073 double chi2;
00074 bool fixed;
00075 int ndim = fo.getNDim();
00076 int npar = fo.getNPar();
00077 in >> chi2 >> ndf;
00078 fo.setChiSquared(chi2);
00079 fo.setNDF(ndf);
00080
00081 for (int i=0; i<npar; i++) {
00082 double param, paramError;
00083 in >> param >> paramError >> fixed;
00084 fo.setParameter(i, param);
00085 fo.setParError(i, paramError);
00086 fo.fixParameter(i, fixed);
00087 }
00088
00089
00090 for (int i=0; i<ndim; i++) {
00091 double varMin, varMax;
00092 in >> varMin >> varMax;
00093 fo.setVarMin(i, varMin);
00094 fo.setVarMax(i, varMax);
00095 }
00096
00097
00098
00099
00100
00101
00102
00103
00104
00105
00106
00107
00108
00109
00110
00111
00112
00113
00114
00115
00116
00117 }
00118
00119 bool ErfcFitObjectStreamer_v1::inMap = IOManager::addToMap("SctData::ErfcFitObject", auto_ptr<Streamer>(new ErfcFitObjectStreamer_v1()));
00120
00121 shared_ptr<Streamable> ErfcFitObjectStreamer_v1::read(IStream& in, const IOManager& manager) const throw(LogicError, IoError) {
00122 shared_ptr<ErfcFitObject> f = ErfcFitObject::create();
00123 FitObjectStreamer_v1::read(in, *f, manager);
00124 return f;
00125 }
00126
00127 void ErfcFitObjectStreamer_v1::read(IStream& in, Streamable& ob, const IOManager& manager) const throw(LogicError, IoError) {
00128 FitObjectStreamer_v1::read(in, ob, manager);
00129 }
00130
00131
00132 bool ErfFitObjectStreamer_v1::inMap = IOManager::addToMap("SctData::ErfFitObject", auto_ptr<Streamer>(new ErfFitObjectStreamer_v1()));
00133
00134 shared_ptr<Streamable> ErfFitObjectStreamer_v1::read(IStream& in, const IOManager& manager) const throw(LogicError, IoError) {
00135 shared_ptr<Streamable> f (new ErfFitObject());
00136 FitObjectStreamer_v1::read(in, *f, manager);
00137 return f;
00138 }
00139
00140 void ErfFitObjectStreamer_v1::read(IStream& in, Streamable& ob, const IOManager& manager) const throw(LogicError, IoError) {
00141 FitObjectStreamer_v1::read(in, ob, manager);
00142 }
00143
00144
00145
00146 bool GausFitObjectStreamer_v1::inMap = IOManager::addToMap("SctData::GausFitObject", auto_ptr<Streamer>(new GausFitObjectStreamer_v1()));
00147
00148 shared_ptr<Streamable> GausFitObjectStreamer_v1::read(IStream& in, const IOManager& manager) const throw(LogicError, IoError) {
00149 shared_ptr<Streamable> f (new GausFitObject());
00150 FitObjectStreamer_v1::read(in, *f, manager);
00151 return f;
00152 }
00153
00154 void GausFitObjectStreamer_v1::read(IStream& in, Streamable& ob, const IOManager& manager) const throw(LogicError, IoError) {
00155 FitObjectStreamer_v1::read(in, ob, manager);
00156 }
00157
00158
00159
00160 bool TopHatFitObjectStreamer_v1::inMap = IOManager::addToMap("SctData::TopHatFitObject", auto_ptr<Streamer>(new TopHatFitObjectStreamer_v1()));
00161
00162 shared_ptr<Streamable> TopHatFitObjectStreamer_v1::read(IStream& in, const IOManager& manager) const throw(LogicError, IoError) {
00163 shared_ptr<Streamable> f (new TopHatFitObject());
00164 FitObjectStreamer_v1::read(in, *f, manager);
00165 return f;
00166 }
00167
00168 void TopHatFitObjectStreamer_v1::read(IStream& in, Streamable& ob, const IOManager& manager) const throw(LogicError, IoError) {
00169 FitObjectStreamer_v1::read(in, ob, manager);
00170 }
00171
00172 }
00173 }