// This may look like C code, but it is really -*- C++ -*- // C.Magneville 04/99 #ifndef GENERALDATA_SEEN #define GENERALDATA_SEEN #include "objfio.h" #include #include "pexceptions.h" #include "ppersist.h" #include "ntupintf.h" #include "poly.h" namespace SOPHYA { class GeneralFit; //================================================================ // GENERALFITDATA //================================================================ //! Classe de stoquage de donnees a plusieurs variables avec erreur class GeneralFitData : public AnyDataObj , public NTupleInterface { friend class GeneralFit; friend class ObjFileIO; public: //! Valeurs par defaut pour l'utilisation des erreurs enum { Def_ErrF = 1, //!< erreurs sur F par defaut Def_ErrX = 0 //!< pas d'erreurs sur les variables X,Y,... par defaut }; GeneralFitData(unsigned int nVar, unsigned int nDataAlloc, uint_2 errx=0); GeneralFitData(const GeneralFitData& data, bool clean=false); GeneralFitData(); virtual ~GeneralFitData(); void Alloc(unsigned int nVar, unsigned int nDataAlloc, int_2 errx=-1); void SetDataPtr(int ptr = 0); void KillData(int i); void KillData(int i1,int i2); void ValidData(int i); void ValidData(int i1,int i2); void ValidData(); void RedefineData1(int i,double x,double f,double err=Def_ErrF,double errx=Def_ErrX); void RedefineData2(int i,double x,double y,double f,double err=Def_ErrF ,double errx=Def_ErrX,double erry=Def_ErrX); void RedefineData(int i,double* xp,double f,double err=Def_ErrF,double* errxp=NULL); void AddData1(double x, double f, double err=Def_ErrF,double errx=Def_ErrX); void AddData2(double x, double y, double f, double err=Def_ErrF ,double errx=Def_ErrX,double erry=Def_ErrX); void AddData(double* xp, double f, double err=Def_ErrF,double* errxp=NULL); void AddData(float* xp, float f, float err=Def_ErrF,float* errxp=NULL); void SetData1(int nData,double* x,double* f,double *err=NULL,double *errx=NULL); void SetData1(int nData,float* x,float* f,float* err=NULL,float *errx=NULL); void SetData2(int nData,double* x,double* y,double* f,double *err=NULL ,double *errx=NULL,double *erry=NULL); void SetData2(int nData,float* x,float* y,float* f,float* err=NULL ,float *errx=NULL,float *erry=NULL); void SetData(int nData,double** xp,double *f,double *err=NULL,double** errxp=NULL); void SetData(int nData,float** xp,float* f,float* err=NULL,float** errxp=NULL); void PrintStatus() const; void PrintData(int i) const; void PrintData(int i1,int i2) const; void PrintData() const; void Show(ostream& os) const; inline void Show() const {Show(cout);} //! Retourne la place restante dans la structure (nombre de donnees que l'on peut encore stoquer). inline int GetSpaceFree() const { return mNDataAlloc - mNData; } //! Retourne le nombre de variables Xi inline int NVar() const {return mNVar;} //! Retourne le nombre de donnees inline int NData() const {return mNData;} //! Retourne le nombre de bonnes donnees (utilisees pour le fit) inline int NDataGood() const {return mNDataGood;} //! Retourne la place maximale allouee pour les donnees inline int NDataAlloc() const {return mNDataAlloc;} //! Retourne 1 si point valide, sinon 0 inline unsigned short int IsValid(int i) const {if(i>=0 && i=0 && i=0 && i=0 && i=0 && i=0 && i=0 && i=0 && i=0 && i=0 && i=0 && i=0 && i=0 && i fio(&obj); fio.Write(os); return(os); } //! For persistance management inline PInPersist& operator >> (PInPersist& is, GeneralFitData & obj) { ObjFileIO fio(&obj); is.SkipToNextObject(); fio.Read(is); return(is); } // Classe pour la gestion de persistance // ObjFileIO } // Fin du namespace #endif