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