Changeset 466 in Sophya for trunk/SophyaPI/PIext/piafitting.cc
- Timestamp:
- Oct 14, 1999, 7:01:58 PM (26 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/SophyaPI/PIext/piafitting.cc
r392 r466 54 54 55 55 //////////////////////////////////////////////////////////////////////// 56 // --- Generation automatique du "usage" pour helpfit: 57 // 1-/ copier le texte ci-dessous de piafitting.cc dans toto 58 // 2-/ cat toto | sed 's?^//?usage+="\\n?' | sed 's?$? ";?' 59 // NE PAS EFFACER LA SUITE: c'est elle qui doit etre modifiee, 60 // le usage du helpfit sera regenere a l'aide des commandes ci-dessus. 61 //////////////////////////////////////////////////////////////////////// 56 62 //| --------------- Fit Lineaire a 1 et 2 dimensions --------------- 57 63 //| Syntaxe: 58 64 //| fitlin nom pnn [o:.aa,bb,cc, o;dd,ee,ff o:gg,hh,jj,kk etc...] 59 65 //| avec: 60 //| nom : cf commentaire ordre "fit"66 //| nom : cf commentaire ordre ''fit'' 61 67 //| pnn : fit polynome degre nn avec classe Poly (lineaire) 1D ou 2D 62 //| o:aa,...,bb : cf commentaires ordre "fit"68 //| o:aa,...,bb : cf commentaires ordre ''fit'' 63 69 //| 64 70 //////////////////////////////////////////////////////////////////////// … … 69 75 //| [p:p1,p2,...,pn s:s1,s2,...,sn m:m1,m2,...,mn M:M1,mM2,...,Mn f:f1,...,fn] 70 76 //| [o:.aa,bb,cc, o;dd,ee,ff o:gg,hh,jj,kk etc...] 71 //| cf commentaire ordre "fit"77 //| cf commentaire ordre ''fit'' 72 78 //| 73 79 //////////////////////////////////////////////////////////////////////// … … 109 115 //| 110 116 //|----- OPTIONS ----- 111 //| o : options "o:Eaa.b,eaa.b,f,r,caa.b,Xaa.b"117 //| o : options ''o:Eaa.b,eaa.b,f,r,caa.b,Xaa.b'' 112 118 //| F : initialisation a partir des resultats et de l'etat du fit precedent 113 119 //| (option non prioritaire sur les definitions p:,s:,m:,M:,f:o:) 114 120 //| a : initialisation automatique des parametres du fit (si disponible) 115 121 //| (option non prioritaire sur les definitions p:,s:,m:,M:,f:o: 116 //| et sur l'initialisation pa l'option "F")122 //| et sur l'initialisation pa l'option ''F'') 117 123 //| f : generation d'un Objet identique contenant la fonction fittee 118 124 //| r : generation d'un Objet identique contenant les residus 119 125 //| Xaa.b : aa.b valeur du DXi2 d'arret (def=1.e-3) 120 126 //| Naa : aa nombre maximum d'iterations (def=100) 121 //| la : niveau "a"de print: a=niveau de print Fit1/2D122 //| da : niveau "a"de debug: a=niveau de GeneralFit127 //| la : niveau ''a'' de print: a=niveau de print Fit1/2D 128 //| da : niveau ''a'' de debug: a=niveau de GeneralFit 123 129 //| Ii1/i2 : numeros des bins X de l'histos utilises pour le fit [i1,i2] 124 130 //|2D Jj1/j2 : numeros des bins Y de l'histos utilises pour le fit [j1,j2] … … 137 143 //| Actif pour exp+poly 1D, poly 1D 138 144 //| Pour gauss+poly 1D, xc est le centre de la gaussienne. 139 //|2D yaa.b et y : idem "xaa.b et x"mais pour y145 //|2D yaa.b et y : idem ''xaa.b et x'' mais pour y 140 146 //| 141 147 //////////////////////////////////////////////////////////////////////// … … 156 162 //| double gauss2_der(double const* x,double const* p,double* dp) 157 163 //| ou dp[i] = dF(x[];p[])/dp[i] 158 //| Par convention, cette fonction a le meme nom suivi de "_der"164 //| Par convention, cette fonction a le meme nom suivi de ''_der'' 159 165 //| > crfitfun nom_fichier nom_fonction nvar npar 160 //| Permet de compiler le fichier "nom_fichier"et de linker161 //| la fonction "nom_fonction"166 //| Permet de compiler le fichier ''nom_fichier'' et de linker 167 //| la fonction ''nom_fonction'' 162 168 //| - Un meme fichier peut contenir plusieurs fonctions a fitter 163 169 //| … … 184 190 185 191 // enregistrement des ordres de fit 186 string kw, usage; 192 string kw, usage, grp = "Fitting"; 193 194 kw = "helpfit"; 195 usage=""; 196 usage+="\n////////////////////////////////////////////////////////////////////// "; 197 usage+="\n| --------------- Fit Lineaire a 1 et 2 dimensions --------------- "; 198 usage+="\n| Syntaxe: "; 199 usage+="\n| fitlin nom pnn [o:.aa,bb,cc, o;dd,ee,ff o:gg,hh,jj,kk etc...] "; 200 usage+="\n| avec: "; 201 usage+="\n| nom : cf commentaire ordre ''fit'' "; 202 usage+="\n| pnn : fit polynome degre nn avec classe Poly (lineaire) 1D ou 2D "; 203 usage+="\n| o:aa,...,bb : cf commentaires ordre ''fit'' "; 204 usage+="\n| "; 205 usage+="\n////////////////////////////////////////////////////////////////////// "; 206 usage+="\n| --------------- Fit d'objets a 1 et 2 dimensions --------------- "; 207 usage+="\n| avec interface d'aide graphique "; 208 usage+="\n| Syntaxe: "; 209 usage+="\n| fitw nom func "; 210 usage+="\n| [p:p1,p2,...,pn s:s1,s2,...,sn m:m1,m2,...,mn M:M1,mM2,...,Mn f:f1,...,fn] "; 211 usage+="\n| [o:.aa,bb,cc, o;dd,ee,ff o:gg,hh,jj,kk etc...] "; 212 usage+="\n| cf commentaire ordre ''fit'' "; 213 usage+="\n| "; 214 usage+="\n////////////////////////////////////////////////////////////////////// "; 215 usage+="\n| --------------- Fit d'objets a 1 et 2 dimensions --------------- "; 216 usage+="\n| Syntaxe: "; 217 usage+="\n| fit nom func "; 218 usage+="\n| [p:p1,p2,...,pn s:s1,s2,...,sn m:m1,m2,...,mn M:M1,mM2,...,Mn f:f1,...,fn] "; 219 usage+="\n| [o:.aa,bb,cc, o;dd,ee,ff o:gg,hh,jj,kk etc...] "; 220 usage+="\n|----- OBJET ----- "; 221 usage+="\n| nom : nom de l'objet qui peut etre: "; 222 usage+="\n| fit-1D: Vector,Histo1D,HProf ou GeneraFitData(1D) "; 223 usage+="\n| fit-2D: Matrix,Histo2D,Image<T> ou GeneraFitData(2D) "; 224 usage+="\n| "; 225 usage+="\n|----- FUNCTION ----- "; 226 usage+="\n| func : pnn : fit polynome degre nn avec GeneralFit (non-lineaire) 1D ou 2D "; 227 usage+="\n| : gnn : fit gaussienne (hauteur) + polynome de degre nn 1D "; 228 usage+="\n| : g : fit gaussienne (hauteur) 1D "; 229 usage+="\n| : enn : fit exponentielle + polynome de degre nn 1D "; 230 usage+="\n| : e : fit exponentielle 1D "; 231 usage+="\n| : Gnn : fit gaussienne (volume) + polynome de degre nn 1D "; 232 usage+="\n| : G : fit gaussienne (volume) 1D "; 233 usage+="\n| : : fit gaussienne+fond (volume) 2D "; 234 usage+="\n| : Gi : fit gaussienne+fond integree (volume) 2D "; 235 usage+="\n| : d : fit DL de gaussienne+fond (volume) 2D "; 236 usage+="\n| : di : fit DL de gaussienne+fond integree (volume) 2D "; 237 usage+="\n| : D : fit DL de gaussienne+fond avec coeff variable p6 (volume) 2D "; 238 usage+="\n| : Di : fit DL de gaussienne+fond integree avec coeff variable p6 (volume) 2D "; 239 usage+="\n| : M : fit Moffat+fond (expos=p6) (volume) 2D "; 240 usage+="\n| : Mi : fit Moffat+fond integree (expos=p6) (volume) 2D "; 241 usage+="\n| : Autre : fonction definie par l'utilisateur (cf commentaires ci apres) "; 242 usage+="\n| "; 243 usage+="\n|----- INIT PARAMETRES ET ETAT DU FIT ----- "; 244 usage+="\n| p : p1,...,pn : valeur d'initialisation des parametres (def=0) "; 245 usage+="\n| s : s1,...,sn : valeur des steps de depart (def=1) "; 246 usage+="\n| m : m1,...,mn : valeur des minima (def=1) "; 247 usage+="\n| M : M1,...,Mn : valeur des maxima (def=-1) (max<=min : pas de limite) "; 248 usage+="\n| f : f1,...,fn : si >=1 parametre fixe sinon libre (def=0) "; 249 usage+="\n| - Remarque: si pi,si,mi ou Mi = '!' la valeur correspondante n'est pas changee "; 250 usage+="\n| "; 251 usage+="\n|----- OPTIONS ----- "; 252 usage+="\n| o : options ''o:Eaa.b,eaa.b,f,r,caa.b,Xaa.b'' "; 253 usage+="\n| F : initialisation a partir des resultats et de l'etat du fit precedent "; 254 usage+="\n| (option non prioritaire sur les definitions p:,s:,m:,M:,f:o:) "; 255 usage+="\n| a : initialisation automatique des parametres du fit (si disponible) "; 256 usage+="\n| (option non prioritaire sur les definitions p:,s:,m:,M:,f:o: "; 257 usage+="\n| et sur l'initialisation pa l'option ''F'') "; 258 usage+="\n| f : generation d'un Objet identique contenant la fonction fittee "; 259 usage+="\n| r : generation d'un Objet identique contenant les residus "; 260 usage+="\n| Xaa.b : aa.b valeur du DXi2 d'arret (def=1.e-3) "; 261 usage+="\n| Naa : aa nombre maximum d'iterations (def=100) "; 262 usage+="\n| la : niveau ''a'' de print: a=niveau de print Fit1/2D "; 263 usage+="\n| da : niveau ''a'' de debug: a=niveau de GeneralFit "; 264 usage+="\n| Ii1/i2 : numeros des bins X de l'histos utilises pour le fit [i1,i2] "; 265 usage+="\n|2D Jj1/j2 : numeros des bins Y de l'histos utilises pour le fit [j1,j2] "; 266 usage+="\n| - L'erreur est celle associee a l'objet (si elle existe), "; 267 usage+="\n| elle est mise a 1 sinon, sauf si E... ou e... est precise: "; 268 usage+="\n| Eaa.b : si |val|>=1 erreur = aa.b*sqrt(|val|) "; 269 usage+="\n| si |val|<1 erreur = aa.b "; 270 usage+="\n| si aa.b <=0 alors aa.b=1.0 "; 271 usage+="\n| E seul est equivalent a E1.0 "; 272 usage+="\n| eaa.b : erreur = aa.b "; 273 usage+="\n| si aa.b <=0 alors aa.b=1.0 "; 274 usage+="\n| e seul est equivalent a e1.0 "; 275 usage+="\n| xaa.b : demande de centrage: on fit x-aa.b au lieu de x) "; 276 usage+="\n| x : demande de centrage: on fit x-xc au lieu de x "; 277 usage+="\n| avec xc=abscisse du milieu de l'histogramme "; 278 usage+="\n| Actif pour exp+poly 1D, poly 1D "; 279 usage+="\n| Pour gauss+poly 1D, xc est le centre de la gaussienne. "; 280 usage+="\n|2D yaa.b et y : idem ''xaa.b et x'' mais pour y "; 281 usage+="\n| "; 282 usage+="\n////////////////////////////////////////////////////////////////////// "; 283 usage+="\n| --------------- Def des fcts de fit par l'utilisateur --------------- "; 284 usage+="\n| Pour definir une fonction parametree utilisateur: "; 285 usage+="\n| Un exemple de fichier contenant des fonctions a fitter: PIext/userfitfunex.c "; 286 usage+="\n| > crfitfil nom_fichier nom_fonction nvar npar "; 287 usage+="\n| pour creer un squelette de fichier C contenant la fonction a fitter "; 288 usage+="\n| nom_fichier : nom du fichier ou est le code de la fonction "; 289 usage+="\n| c'est un fichier C de nom blabla.c "; 290 usage+="\n| nom_fonction : nom de la fonction ex: gauss2 "; 291 usage+="\n| nvar : nombre de variables x[] (1D=1, 2D=2, etc...) "; 292 usage+="\n| npar : nombre de parametre p[] "; 293 usage+="\n| - La fonction est donc F(x[];p[]), soit par ex: "; 294 usage+="\n| double gauss2(double const* x,double const* p) "; 295 usage+="\n| - L'utilisateur a la possibilite de donner egalement la fonction "; 296 usage+="\n| retournant les derivees de la fonction par rapport aux parametres "; 297 usage+="\n| double gauss2_der(double const* x,double const* p,double* dp) "; 298 usage+="\n| ou dp[i] = dF(x[];p[])/dp[i] "; 299 usage+="\n| Par convention, cette fonction a le meme nom suivi de ''_der'' "; 300 usage+="\n| > crfitfun nom_fichier nom_fonction nvar npar "; 301 usage+="\n| Permet de compiler le fichier ''nom_fichier'' et de linker "; 302 usage+="\n| la fonction ''nom_fonction'' "; 303 usage+="\n| - Un meme fichier peut contenir plusieurs fonctions a fitter "; 304 usage+="\n| "; 305 usage+="\n////////////////////////////////////////////////////////////////////// "; 306 piac->RegisterHelp(kw,usage,grp); 187 307 188 308 kw = "fit"; … … 190 310 usage += "\n Usage: fit nomobj func [Options]"; 191 311 usage += "\n [p:p1,...,pn s:s1,...,sn m:m1,...,mn M:M1,...,Mn o:... o:...]"; 192 piac->RegisterCommand(kw,usage,this,"Fitting"); 312 usage += "\n Related commands: fitw fitlin crfitfun crfitfil"; 313 piac->RegisterCommand(kw,usage,this,grp); 193 314 194 315 kw = "fitw"; … … 196 317 usage += "\n Usage: fitw nomobj func [Options]"; 197 318 usage += "\n [p:p1,...,pn s:s1,...,sn m:m1,...,mn M:M1,...,Mn o:... o:...]"; 198 piac->RegisterCommand(kw,usage,this,"Fitting"); 319 usage += "\n Related commands: fit fitlin crfitfun crfitfil"; 320 piac->RegisterCommand(kw,usage,this,grp); 199 321 200 322 kw = "fitlin"; 201 323 usage = "Linear Fitting of Polynoms to DataObjects"; 202 324 usage += "\n Usage: fitlin nomobj func [o:... o:...]"; 203 piac->RegisterCommand(kw,usage,this,"Fitting"); 325 usage += "\n Related commands: fit fitw crfitfun crfitfil"; 326 piac->RegisterCommand(kw,usage,this,grp); 204 327 205 328 kw = "crfitfun"; 206 329 usage = "Creation et link de function utilisateur pour le fit"; 207 330 usage += "\n Usage: crfitfun file func nvar npar"; 208 piac->RegisterCommand(kw,usage,this,"Fitting"); 331 usage += "\n Related commands: fit fitw fitlin crfitfil"; 332 piac->RegisterCommand(kw,usage,this,grp); 209 333 210 334 kw = "crfitfil"; 211 335 usage = "Creation de fichier C pour function utilisateur du fit"; 212 336 usage += "\n Usage: crfitfil file func nvar npar"; 213 piac->RegisterCommand(kw,usage,this,"Fitting"); 337 usage += "\n Related commands: fit fitw fitlin crfitfun"; 338 piac->RegisterCommand(kw,usage,this,grp); 214 339 } 215 340
Note:
See TracChangeset
for help on using the changeset viewer.