// 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 { // Forward class declaration for Fits handler template class FitsHandler; 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; friend class FitsHandler; 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(uint_4 nVar, uint_4 nDataAlloc, uint_2 errx=0); GeneralFitData(const GeneralFitData& data, bool clean=false); GeneralFitData(); virtual ~GeneralFitData(); void SetDataPtr(int_4 ptr = 0); void KillData(int_4 i); void KillData(int_4 i1,int_4 i2); void ValidData(int_4 i); void ValidData(int_4 i1,int_4 i2); void ValidData(); void RedefineData1(int_4 i,double x,double f,double err=Def_ErrF,double errx=Def_ErrX); void RedefineData2(int_4 i,double x,double y,double f,double err=Def_ErrF ,double errx=Def_ErrX,double erry=Def_ErrX); void RedefineData(int_4 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_4 nData,double* x,double* f,double *err=NULL,double *errx=NULL); void SetData1(int_4 nData,float* x,float* f,float* err=NULL,float *errx=NULL); void SetData2(int_4 nData,double* x,double* y,double* f,double *err=NULL ,double *errx=NULL,double *erry=NULL); void SetData2(int_4 nData,float* x,float* y,float* f,float* err=NULL ,float *errx=NULL,float *erry=NULL); void SetData(int_4 nData,double** xp,double *f,double *err=NULL,double** errxp=NULL); void SetData(int_4 nData,float** xp,float* f,float* err=NULL,float** errxp=NULL); void PrintStatus() const; void PrintData(int_4 i) const; void PrintData(int_4 i1,int_4 i2) const; void PrintData() const; void Show(ostream& os) const; inline void Show() const {Show(cout);} //! Operator equal GeneralFitData& operator = (const GeneralFitData& g); //! Retourne la place restante dans la structure (nombre de donnees que l'on peut encore stoquer). inline int_4 GetSpaceFree() const { return mNDataAlloc - mNData; } //! Retourne le nombre de variables Xi inline int_4 NVar() const {return mNVar;} //! Retourne le nombre de donnees inline int_4 NData() const {return mNData;} //! Retourne le nombre de bonnes donnees (utilisees pour le fit) inline int_4 NDataGood() const {return mNDataGood;} //! Retourne la place maximale allouee pour les donnees inline int_4 NDataAlloc() const {return mNDataAlloc;} //! Retourne 1 si point valide, sinon 0 inline unsigned short IsValid(int_4 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