source: Sophya/trunk/SophyaLib/NTools/fct2dfit.h@ 2743

Last change on this file since 2743 was 926, checked in by ansari, 25 years ago

documentation cmv 13/4/00

File size: 7.3 KB
RevLine 
[220]1#ifndef FCT2DFIT_SEEN
2#define FCT2DFIT_SEEN
3
4#include "generalfit.h"
5
[552]6namespace SOPHYA {
[307]7
[220]8//================================================================
9// GeneralFunction 2D pour PSF pixel taille 1x1
10//================================================================
11
[926]12//! Classe de definition d'une PSF 2D a nPar parametres
[220]13class GeneralPSF2D : public GeneralFunction {
14public:
15 GeneralPSF2D(unsigned int nPar);
16 virtual ~GeneralPSF2D();
17
18 virtual double ValueH(double const xp[], double const* parm);
19 virtual double VolPSF(double const* parm);
20 virtual void DefaultParam(double *parm);
21
22 void SetVolEps(double const prec) ;
23protected:
24 double VolEps;
25};
26
27//================================================================
28// GeneralFunction 2D pour MULTI-PSF pixel taille 1x1
29//================================================================
30
[926]31//! Classe de definition d'un ensemble de PSF2D
[220]32class GenMultiPSF2D : public GeneralPSF2D {
33public:
34 GenMultiPSF2D(GeneralPSF2D* psf2d,unsigned int nstar);
35 virtual ~GenMultiPSF2D();
36
37 virtual double Value(double const xp[], double const* Par);
38 virtual double Val_Der(double const xp[],double const* Par,double* DgDpar);
39
40protected:
41 GeneralPSF2D* mPsf2D; // Type de PSF generique a fiter.
42 int mNStar; // Nombre d etoiles a fiter.
43 int mNParmTot; // Nombre total de parametres pour le fit.
44 int mNParm; // Nombre de parametre pour la PSF generique.
45 int mNForme; // Nombre de parametres de forme autres que Sx,Sy,Rho
46 double* mParm; // pour la PSF generique. Buffer pour PSF generique
47 double* mDer; // et pour le stoquage temporaire des derivees.
48};
49
50//==============================================================================
51// CLASSES DE FONCTIONS 2D type PSF AVEC PARAMETRES POUR LE FIT pixel taille 1x1
52//==============================================================================
53
54//////////////////////////////////////////////////////////////////
[926]55//! gaussienne + fond 2D
[220]56class GauRho2D : public GeneralPSF2D {
57public:
58 GauRho2D();
59 virtual ~GauRho2D();
60
61 virtual double Value(double const xp[], double const* Par);
62 virtual double Val_Der(double const xp[],double const* Par,double* DgDpar);
63 virtual double ValueH(double const xp[], double const* Par);
64 virtual double VolPSF(double const* Par);
65 virtual void DefaultParam(double *Par);
66};
67
68//////////////////////////////////////////////////////////////////
[926]69//! gaussienne integree + fond 2D
[220]70class GauRhInt2D : public GeneralPSF2D {
71public:
72 GauRhInt2D();
73 virtual ~GauRhInt2D();
74
75 virtual double Value(double const xp[], double const* Par);
76 virtual double Val_Der(double const xp[],double const* Par,double* DgDpar);
77 virtual double ValueH(double const xp[], double const* Par);
78 virtual double VolPSF(double const* Par);
79 virtual void DefaultParam(double *Par);
80};
81
82//////////////////////////////////////////////////////////////////
[926]83//! gaussienne 2D de volume 1 approchee par dl au 3ieme ordre
[220]84class GdlRho2D : public GeneralPSF2D {
85public:
86 GdlRho2D();
87 virtual ~GdlRho2D();
88
89 virtual double Value(double const xp[], double const* Par);
90 virtual double Val_Der(double const xp[],double const* Par,double* DgDpar);
91 virtual double ValueH(double const xp[], double const* Par);
92 virtual double VolPSF(double const* Par);
93 virtual void DefaultParam(double *Par);
94};
95
96//////////////////////////////////////////////////////////////////
[926]97//! gaussienne integree 2D de volume 1 approchee par dl au 3ieme ordre
[220]98class GdlRhInt2D : public GeneralPSF2D {
99public:
100 GdlRhInt2D();
101 virtual ~GdlRhInt2D();
102
103 virtual double Value(double const xp[], double const* Par);
104 virtual double Val_Der(double const xp[],double const* Par,double* DgDpar);
105 virtual double ValueH(double const xp[], double const* Par);
106 virtual double VolPSF(double const* Par);
107 virtual void DefaultParam(double *Par);
108};
109
110//////////////////////////////////////////////////////////////////
[926]111//! gaussienne 2D de volume 1 approchee par dl au 2sd ordre
[220]112class Gdl1Rho2D : public GeneralPSF2D {
113public:
114 Gdl1Rho2D();
115 virtual ~Gdl1Rho2D();
116
117 virtual double Value(double const xp[], double const* Par);
118 virtual double Val_Der(double const xp[],double const* Par,double* DgDpar);
119 virtual double ValueH(double const xp[], double const* Par);
120 virtual double VolPSF(double const* Par);
121 virtual void DefaultParam(double *Par);
122};
123
124//////////////////////////////////////////////////////////////////
[926]125//! gaussienne ontegree 2D de volume 1 approchee par dl au 2sd ordre
[220]126class Gdl1RhInt2D : public GeneralPSF2D {
127public:
128 Gdl1RhInt2D();
129 virtual ~Gdl1RhInt2D();
130
131 virtual double Value(double const xp[], double const* Par);
132 virtual double Val_Der(double const xp[],double const* Par,double* DgDpar);
133 virtual double ValueH(double const xp[], double const* Par);
134 virtual double VolPSF(double const* Par);
135 virtual void DefaultParam(double *Par);
136};
137
138//////////////////////////////////////////////////////////////////
[926]139//! gaussienne 2D de hauteur 1 approchee dl 3ieme
[220]140class Gdl2Rho2D : public GeneralPSF2D {
141public:
142 Gdl2Rho2D();
143 virtual ~Gdl2Rho2D();
144
145 virtual double Value(double const xp[], double const* Par);
146 virtual double Val_Der(double const xp[],double const* Par,double* DgDpar);
147 virtual double ValueH(double const xp[], double const* Par);
148 virtual void DefaultParam(double *Par);
149};
150
151//////////////////////////////////////////////////////////////////
[926]152//! gaussienne integree 2D de hauteur 1 approchee dl 3ieme
[220]153class Gdl2RhInt2D : public GeneralPSF2D {
154public:
155 Gdl2RhInt2D();
156 virtual ~Gdl2RhInt2D();
157
158 virtual double Value(double const xp[], double const* Par);
159 virtual double Val_Der(double const xp[],double const* Par,double* DgDpar);
160 virtual double ValueH(double const xp[], double const* Par);
161 virtual void DefaultParam(double *Par);
162};
163
164//////////////////////////////////////////////////////////////////
[926]165//! Moffat 2D
[220]166class MofRho2D : public GeneralPSF2D {
167public:
168 MofRho2D();
169 virtual ~MofRho2D();
170
171 virtual double Value(double const xp[], double const* Par);
172 virtual double Val_Der(double const xp[],double const* Par,double* DgDpar);
173 virtual double ValueH(double const xp[], double const* Par);
174 virtual double VolPSF(double const* Par);
175 virtual void DefaultParam(double *Par);
176};
177
178//////////////////////////////////////////////////////////////////
[926]179//! Moffat integree 2D
[220]180class MofRhInt2D : public GeneralPSF2D {
181public:
182 MofRhInt2D();
183 virtual ~MofRhInt2D();
184
185 virtual double Value(double const xp[], double const* Par);
186 virtual double Val_Der(double const xp[],double const* Par,double* DgDpar);
187 virtual double ValueH(double const xp[], double const* Par);
188 virtual double VolPSF(double const* Par);
189 virtual void DefaultParam(double *Par);
190};
191
192//==============================================================================
193// CLASSES DE FONCTIONS 2D type Xi2 AVEC PARAMETRES POUR LE FIT pixel taille 1x1
194//==============================================================================
195
196//////////////////////////////////////////////////////////////////
[926]197//! Chi2 pour une Gaussienne+fond 2D
[220]198class X2_GauRho2D : public GeneralXi2 {
199public:
200 X2_GauRho2D();
201 virtual ~X2_GauRho2D();
202
203 virtual double Value(GeneralFitData& data, double* parm, int& ndataused);
204 virtual double Derivee2(GeneralFitData& data, int i,int j, double* parm);
205
206protected:
207 GauRho2D* gaurho2d;
208};
209
[307]210} // Fin du namespace
211
[220]212#endif
Note: See TracBrowser for help on using the repository browser.