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

FitObjectStreamer_v1.cpp

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 /* READ NOTES ON STREAMERS AND VERSIONS BEFORE EDITING THIS FILE! */
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     //Dynamic cast should always be safe
00029     const FitObject& fo = dynamic_cast<const FitObject&>(ob);
00030 
00031 //   Version 1:
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     /* Version 2:
00041     //We do our own buffering here:
00042     unsigned int doubleSize = fo.getNPar() * 2 + fo.getNDim() * 2 + 1;
00043     unsigned int dimStart = fo.getNPar() * 2 + 1;
00044     double doubleArray[doubleSize];
00045     unsigned int boolSize = fo.getNPar();
00046     bool boolArray[boolSize];
00047     
00048     doubleArray[0] = fo.getChiSquared();
00049     for (int i=0; i<fo.getNPar(); ++i) {
00050     doubleArray[2*i+1] = fo.getParameter(i);
00051     doubleArray[2*i+2] = fo.getParError(i);
00052     boolArray[i] = fo.isFixed(i);
00053     }
00054     for (int i=0; i<fo.getNDim(); ++i) {
00055     doubleArray[dimStart + i*2] = fo.getVarMin(i);
00056     doubleArray[dimStart + i*2 + 1] = fo.getVarMax(i);
00057     }
00058     
00059     out.put(doubleArray, doubleSize);
00060     out.put(boolArray, boolSize);*/
00061 }
00062 
00063 void FitObjectStreamer_v1::read(IStream& in, Streamable& ob, const IOManager& manager) const throw(LogicError, IoError) {
00064     //Dynamic cast should always be safe
00065     //cout << "Dynamic_cast read called" << endl;
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 //Version 1
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 /* Version 2    
00097     unsigned int doubleSize = fo.getNPar() * 2 + fo.getNDim() * 2 + 1;
00098     unsigned int dimStart = fo.getNPar() * 2 + 1;
00099     double doubleArray[doubleSize];
00100     unsigned int boolSize = fo.getNPar();
00101     bool boolArray[boolSize];    
00102     
00103     in.get(doubleArray, doubleSize);
00104     in.get(boolArray, boolSize);
00105     
00106     fo.setChiSquared(doubleArray[0]);
00107     for (int i=0; i<fo.getNPar(); ++i) {
00108     fo.setParameter(i, doubleArray[2*i+1]);
00109     fo.setParError(i, doubleArray[2*i+2]);
00110     fo.fixParameter(i, boolArray[i]);
00111     }
00112     for (int i=0; i<fo.getNDim(); ++i) {
00113     fo.setVarMin(i, doubleArray[dimStart + i*2]);
00114     fo.setVarMax(i, doubleArray[dimStart + i*2 + 1]);
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 }

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