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

Last change on this file since 3786 was 3189, checked in by cmv, 19 years ago

ajout methode =cste pour class Image cmv 9/3/2007

File size: 7.3 KB
Line 
1#ifndef FCT2DFIT_SEEN
2#define FCT2DFIT_SEEN
3
4#include "generalfit.h"
5
6namespace SOPHYA {
7
8//================================================================
9// GeneralFunction 2D pour PSF pixel taille 1x1
10//================================================================
11
12//! Classe de definition d'une PSF 2D a nPar parametres
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
31//! Classe de definition d'un ensemble de PSF2D
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//////////////////////////////////////////////////////////////////
55//! gaussienne + fond 2D
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//////////////////////////////////////////////////////////////////
69//! gaussienne integree + fond 2D
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//////////////////////////////////////////////////////////////////
83//! gaussienne 2D de volume 1 approchee par dl au 3ieme ordre
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//////////////////////////////////////////////////////////////////
97//! gaussienne integree 2D de volume 1 approchee par dl au 3ieme ordre
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//////////////////////////////////////////////////////////////////
111//! gaussienne 2D de volume 1 approchee par dl au 2sd ordre
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//////////////////////////////////////////////////////////////////
125//! gaussienne integree 2D de volume 1 approchee par dl au 2sd ordre
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//////////////////////////////////////////////////////////////////
139//! gaussienne 2D de hauteur 1 approchee dl 3ieme
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//////////////////////////////////////////////////////////////////
152//! gaussienne integree 2D de hauteur 1 approchee dl 3ieme
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//////////////////////////////////////////////////////////////////
165//! Moffat 2D
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//////////////////////////////////////////////////////////////////
179//! Moffat integree 2D
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//////////////////////////////////////////////////////////////////
197//! Chi2 pour une Gaussienne+fond 2D
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
210} // Fin du namespace
211
212#endif
Note: See TracBrowser for help on using the repository browser.