Changeset 914 in Sophya for trunk/SophyaLib/NTools/generaldata.cc
- Timestamp:
- Apr 13, 2000, 6:04:50 PM (25 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/SophyaLib/NTools/generaldata.cc
r514 r914 19 19 //================================================================ 20 20 21 //++ 22 // Class GeneralFitData 23 // Lib Outils++ 24 // include generaldata.h 25 // 26 // Classe de stoquage de donnees a plusieurs variables avec erreur 27 // sur l'ordonnee et sur les abscisses (options). 28 //| {x0(i),Ex0(i), x1(i),Ex1(i), x2(i),Ex2(i) ... ; Y(i),EY(i)} 29 //-- 30 31 // Pour memoire, structure du rangement (n=mNVar): 32 // - Valeur des abscisses mXP (idem pour mErrXP): 33 // x0,x1,x2,...,xn x0,x1,x2,...,xn .... x0,x1,x2,....,xn 34 // | 1er point | | 2sd point | .... | point mNData | 35 // Donc abscisse J=[0,mNVar[ du point numero I=[0,mNData[: mXP[I*mNVar+J] 36 // - Valeur de l'ordonnee mF (idem pour mErr et mOK): 37 // f f f 38 // | 1er point | | 2sd point | .... | point mNData | 39 // Donc point numero I [0,mNData[ : mF[i] 40 41 ////////////////////////////////////////////////////////////////////// 42 //++ 21 ////////////////////////////////////////////////////////////////////// 22 /*! 23 Constructeur. ``nVar'' represente la dimension de l'espace des abscisses, 24 ``ndatalloc'' le nombre maximum de points et ``errx'' si non nul 25 indique que l'on fournit des erreurs sur les ``nVar'' variables en abscisse. 26 */ 43 27 GeneralFitData::GeneralFitData(unsigned int nVar, unsigned int ndatalloc, uint_2 errx) 44 //45 // Constructeur. ``nVar'' represente la dimension de l'espace des abscisses,46 // ``ndatalloc'' le nombre maximum de points et ``errx'' si non nul47 // indique que l'on fournit des erreurs sur les ``nVar'' variables en abscisse.48 //--49 28 : mNVar(0), mNDataAlloc(0), mNData(0), mNDataGood(0), mOk_EXP(0) 50 29 , mXP(NULL), mErrXP(NULL), mF(NULL), mErr(NULL), mOK(NULL) … … 59 38 } 60 39 61 //++ 40 /*! 41 Constructeur par copie. Si ``clean'' est ``true'' 42 seules les donnees valides de ``data'' sont copiees. 43 Si ``clean'' est ``false'' (defaut) toutes les donnees 44 sont copiees et la taille totale de ``data'' est allouee 45 meme si elle est plus grande que la taille des donnees stoquees. 46 */ 62 47 GeneralFitData::GeneralFitData(const GeneralFitData& data, bool clean) 63 //64 // Constructeur par copie. Si ``clean'' est ``true''65 // seules les donnees valides de ``data'' sont copiees.66 // Si ``clean'' est ``false'' (defaut) toutes les donnees67 // sont copiees et la taille totale de ``data'' est allouee68 // meme si elle est plus grande que la taille des donnees stoquees.69 //--70 48 : mNVar(0), mNDataAlloc(0), mNData(0), mNDataGood(0), mOk_EXP(0) 71 49 , mXP(NULL), mErrXP(NULL), mF(NULL), mErr(NULL), mOK(NULL) … … 98 76 } 99 77 100 //++ 78 /*! 79 Constructeur par defaut. 80 */ 101 81 GeneralFitData::GeneralFitData() 102 //103 // Constructeur par defaut.104 //--105 82 : mNVar(0), mNDataAlloc(0), mNData(0), mNDataGood(0), mOk_EXP(0) 106 83 , mXP(NULL), mErrXP(NULL), mF(NULL), mErr(NULL), mOK(NULL) … … 110 87 } 111 88 112 //++ 89 /*! 90 Destructeur 91 */ 113 92 GeneralFitData::~GeneralFitData() 114 //115 // Destructeur116 //--117 93 { 118 94 Delete(); … … 120 96 121 97 ////////////////////////////////////////////////////////////////////// 122 //++ 98 /*! 99 Pour redefinir la structure de donnees (ou la creer si on a utilise 100 le createur par defaut). Voir les explications des arguments 101 dans les commentaires du constructeur. Si ``errx''\<0 alors 102 la valeur prise est celle definie auparavent. 103 */ 123 104 void GeneralFitData::Alloc(unsigned int nVar, unsigned int ndatalloc, int_2 errx) 124 //125 // Pour redefinir la structure de donnees (ou la creer si on a utilise126 // le createur par defaut). Voir les explications des arguments127 // dans les commentaires du constructeur. Si ``errx''<0 alors128 // la valeur prise est celle definie auparavent.129 //--130 105 { 131 106 ASSERT( nVar>0 && ndatalloc>0 ); … … 151 126 152 127 ////////////////////////////////////////////////////////////////////// 128 /*! 129 Gestion des des-allocations 130 */ 153 131 void GeneralFitData::Delete() 154 132 { … … 163 141 164 142 ////////////////////////////////////////////////////////////////////// 165 //++ 143 /*! 144 Remise a zero de la structure pour nouveau remplissage (pas d'arg) 145 ou remise a la position ``ptr'' (si arg). Les donnees apres ``ptr'' 146 sont sur-ecrites. 147 */ 166 148 void GeneralFitData::SetDataPtr(int ptr) 167 //168 // Remise a zero de la structure pour nouveau remplissage (pas d'arg)169 // ou remise a la position ``ptr'' (si arg). Les donnees apres ``ptr''170 // sont sur-ecrites.171 //--172 149 { 173 150 ASSERT(ptr >= 0 && ptr < mNDataAlloc); … … 179 156 180 157 ////////////////////////////////////////////////////////////////////// 181 //++ 158 /*! 159 Pour tuer un point 160 */ 182 161 void GeneralFitData::KillData(int i) 183 //184 // Pour tuer un point185 //--186 162 { 187 163 ASSERT(i >= 0 && i < mNData); … … 192 168 } 193 169 194 //++ 170 /*! 171 Pour tuer une serie de points 172 */ 195 173 void GeneralFitData::KillData(int i1,int i2) 196 //197 // Pour tuer une serie de points198 //--199 174 { 200 175 ASSERT(i1 >= 0 && i1 < mNData); … … 206 181 207 182 ////////////////////////////////////////////////////////////////////// 208 //++ 183 /*! 184 Pour re-valider le point numero i ([0,NData]). 185 */ 209 186 void GeneralFitData::ValidData(int i) 210 //211 // Pour re-valider le point numero i ([0,NData]).212 //--213 187 { 214 188 ASSERT(i >= 0 && i < mNData); … … 223 197 } 224 198 225 //++ 199 /*! 200 Pour re-valider les points numeros i1 a i2. 201 */ 226 202 void GeneralFitData::ValidData(int i1,int i2) 227 //228 // Pour re-valider les points numeros i1 a i2.229 //--230 203 { 231 204 ASSERT(i1 >= 0 && i1 < mNData); … … 236 209 } 237 210 238 //++ 211 /*! 212 Pour re-valider tous les points. 213 */ 239 214 void GeneralFitData::ValidData() 240 //241 // Pour re-valider tous les points.242 //--243 215 { 244 216 for(int i=0;i<mNData;i++) ValidData(i); … … 246 218 247 219 ////////////////////////////////////////////////////////////////////// 248 //++ 220 /*! 221 Pour redefinir un point a \f$ {x,[errx] ; f,err} \f$ 222 */ 249 223 void GeneralFitData::RedefineData1(int i,double x,double f,double err,double errx) 250 //251 // Pour redefinir un point a252 //| {x,[errx] ; f,err}253 //--254 224 { 255 225 RedefineData(i,&x,f,err,&errx); 256 226 } 257 227 258 //++ 228 /*! 229 Pour redefinir un point a \f$ {x,[errx], y,[erry] ; f,err} \f$ 230 */ 259 231 void GeneralFitData::RedefineData2(int i,double x,double y,double f 260 232 ,double err,double errx,double erry) 261 //262 // Pour redefinir un point a263 //| {x,[errx], y,[erry] ; f,err}264 //--265 233 { 266 234 double xp[2] = {x,y}; … … 269 237 } 270 238 271 //++ 239 /*! 240 Pour redefinir un point a 241 \f$ {xp[0],[errxp[0]], xp[1],[errxp[1]], xp[2],[errxp[2]],... ; f,err} \f$ 242 */ 272 243 void GeneralFitData::RedefineData(int i,double* xp,double f,double err,double* errxp) 273 //274 // Pour redefinir un point a275 //| {xp[0],[errxp[0]], xp[1],[errxp[1]], xp[2],[errxp[2]],... ; f,err}276 //--277 244 { 278 245 ASSERT(i>=0 && i<mNData); … … 300 267 301 268 ////////////////////////////////////////////////////////////////////// 302 //++ 269 /*! 270 Pour ajouter un point \f$ {x,[errx] ; f,err} \f$ 271 */ 303 272 void GeneralFitData::AddData1(double x, double f, double err, double errx) 304 //305 // Pour ajouter un point306 //| {x,[errx] ; f,err}307 //--308 273 { 309 274 AddData(&x,f,err,&errx); 310 275 } 311 276 312 //++ 277 /*! 278 Pour ajouter un point \f$ {x,[errx], y,[erry] ; f,err} \f$ 279 */ 313 280 void GeneralFitData::AddData2(double x, double y, double f 314 281 , double err, double errx, double erry) 315 //316 // Pour ajouter un point317 //| {x,[errx], y,[erry] ; f,err}318 //--319 282 { 320 283 double xp[2] = {x,y}; … … 323 286 } 324 287 325 //++ 288 /*! 289 Pour ajouter un point 290 \f$ {xp[0],[errxp[0]], xp[1],[errxp[1]], xp[2],[errxp[2]],... ; f,err} \f$ 291 */ 326 292 void GeneralFitData::AddData(double* xp, double f, double err,double* errxp) 327 //328 // Pour ajouter un point329 //| {xp[0],[errxp[0]], xp[1],[errxp[1]], xp[2],[errxp[2]],... ; f,err}330 //--331 293 { 332 294 ASSERT(mNData < mNDataAlloc); … … 351 313 } 352 314 353 //++ 315 /*! 316 Pour ajouter un point 317 \f$ {xp[0],[errxp[0]], xp[1],[errxp[1]], xp[2],[errxp[2]],... ; f,err} \f$ 318 */ 354 319 void GeneralFitData::AddData(float* xp, float f, float err, float* errxp) 355 //356 // Pour ajouter un point357 //| {xp[0],[errxp[0]], xp[1],[errxp[1]], xp[2],[errxp[2]],... ; f,err}358 //--359 320 { 360 321 {for(int i=0;i<mNVar;i++) BuffVar[i] = (double) xp[i];} … … 364 325 365 326 ////////////////////////////////////////////////////////////////////// 366 //++ 327 /*! 328 Pour remplir la structure de donnees d'un seul coup avec 329 \f$ {x(i),[errx(i)] ; f(i),err(i)} \f$ 330 */ 367 331 void GeneralFitData::SetData1(int nData 368 332 , double* x, double* f, double *err, double *errx) 369 //370 // Pour remplir la structure de donnees d'un seul coup avec371 //| {x(i),[errx(i)] ; f(i),err(i)}372 //--373 333 { 374 334 ASSERT(nData>0 && mNData+nData<=mNDataAlloc); … … 381 341 } 382 342 383 //++ 343 /*! 344 Pour remplir la structure de donnees d'un seul coup avec 345 \f$ {x(i),[errx(i)] ; f(i),err(i)} \f$ 346 */ 384 347 void GeneralFitData::SetData1(int nData 385 348 , float* x, float* f, float* err, float *errx) 386 //387 // Pour remplir la structure de donnees d'un seul coup avec388 //| {x(i),[errx(i)] ; f(i),err(i)}389 //--390 349 { 391 350 ASSERT(nData>0 && mNData+nData<=mNDataAlloc); … … 398 357 } 399 358 400 //++ 359 /*! 360 Pour remplir la structure de donnees d'un seul coup avec 361 \f$ {x(i),[errx(i)], y(i),[erry(i)], ; f(i),err(i)} \f$ 362 */ 401 363 void GeneralFitData::SetData2(int nData, double* x, double* y, double* f 402 364 ,double *err,double *errx,double *erry) 403 //404 // Pour remplir la structure de donnees d'un seul coup avec405 //| {x(i),[errx(i)], y(i),[erry(i)], ; f(i),err(i)}406 //--407 365 { 408 366 ASSERT(nData>0 && mNData+nData<=mNDataAlloc); … … 416 374 } 417 375 418 //++ 376 /*! 377 Pour remplir la structure de donnees d'un seul coup avec 378 \f$ {x(i),[errx(i)], y(i),[erry(i)], ; f(i),err(i)} \f$ 379 */ 419 380 void GeneralFitData::SetData2(int nData, float* x, float* y, float* f 420 381 ,float *err,float *errx,float *erry) 421 //422 // Pour remplir la structure de donnees d'un seul coup avec423 //| {x(i),[errx(i)], y(i),[erry(i)], ; f(i),err(i)}424 //--425 382 { 426 383 ASSERT(nData>0 && mNData+nData<=mNDataAlloc); … … 434 391 } 435 392 436 //++ 393 /*! 394 Pour remplir la structure de donnees d'un seul coup avec 395 \f$ {X0(i),[EX0(i)], X1(i),[EX1(i)], X2(i),[EX2(i)], ... ; F(i),Err(i)} \f$ 396 397 Attention: si la structure est n'est pas vide, les tableaux sont copies 398 apres les donnees pre-existantes (qui ne sont donc pas detruites). Pour 399 effacer les donnees pre-existantes utiliser SetDataPtr(0). 400 \verbatim 401 Ici **xp est un pointeur sur un tableau de pointeurs tq 402 xp[0] = &X0[0], xp[1] = &X1[0], xp[2] = &X2[0] ... 403 ou X0,X1,X2,... sont les tableaux X0[nData] X1[nData] X2[nData] ... 404 des variables (meme commentaire pour errxp). 405 \endverbatim 406 */ 437 407 void GeneralFitData::SetData(int nData,double** xp, double *f 438 408 , double *err, double** errxp) 439 //440 // Pour remplir la structure de donnees d'un seul coup avec441 //| {X0(i),[EX0(i)], X1(i),[EX1(i)], X2(i),[EX2(i)], ... ; F(i),Err(i)}442 // Attention: si la structure est n'est pas vide, les tableaux sont copies443 // apres les donnees pre-existantes (qui ne sont donc pas detruites). Pour444 // effacer les donnees pre-existantes utiliser SetDataPtr(0).445 //| Ici **xp est un pointeur sur un tableau de pointeurs tq446 //| xp[0] = &X0[0], xp[1] = &X1[0], xp[2] = &X2[0] ...447 //| ou X0,X1,X2,... sont les tableaux X0[nData] X1[nData] X2[nData] ...448 //| des variables (meme commentaire pour errxp).449 //--450 409 { 451 410 ASSERT(nData>0 && mNData+nData<=mNDataAlloc); … … 461 420 } 462 421 463 //++ 422 /*! 423 Voir commentaire ci-dessus. 424 */ 464 425 void GeneralFitData::SetData(int nData,float** xp, float *f 465 426 , float *err, float** errxp) 466 //467 // Voir commentaire ci-dessus.468 //--469 427 { 470 428 ASSERT(nData>0 && mNData+nData<=mNDataAlloc); … … 482 440 483 441 ////////////////////////////////////////////////////////////////////// 484 //++ 442 /*! 443 Impression de l'etat de la structure de donnees 444 */ 485 445 void GeneralFitData::PrintStatus() 486 //487 // Impression de l'etat de la structure de donnees488 //--489 446 { 490 447 cout<<"GeneralFitData:: "<<endl … … 495 452 } 496 453 497 //++ 454 /*! 455 Impression du point i 456 */ 498 457 void GeneralFitData::PrintData(int i) 499 //500 // Impression du point i501 //--502 458 { 503 459 ASSERT(i>=0 && i<mNData); … … 512 468 } 513 469 514 //++ 470 /*! 471 Impression des points i1 a i2 472 */ 515 473 void GeneralFitData::PrintData(int i1,int i2) 516 //517 // Impression des points i1 a i2518 //--519 474 { 520 475 if(i1<0) i1=0; … … 529 484 } 530 485 531 //++ 486 /*! 487 Impression de tous les points 488 */ 532 489 void GeneralFitData::PrintData() 533 //534 // Impression de tous les points535 //--536 490 { 537 491 ASSERT(mNData>0); … … 540 494 } 541 495 542 //++ 496 /*! 497 Impression de l'etat de la structure de donnees avec bornes sur "s" 498 */ 543 499 void GeneralFitData::Show(ostream& os) const 544 //545 // Impression de l'etat de la structure de donnees avec bornes sur "s"546 //--547 500 { 548 501 double min,max; … … 557 510 558 511 ////////////////////////////////////////////////////////////////////// 559 //++ 512 /*! 513 Retourne les numeros des points de valeurs minimum et maximum 514 de la variable ``var'': 515 \verbatim 516 La variable "var" est de la forme : var = AB avec 517 B = 0 : variable d'ordonnee Y (valeur de A indifferente) 518 B = 1 : erreur variable d'ordonnee EY (valeur de A indifferente) 519 B = 2 : variable d'abscisse X numero A #[0,NVar[ 520 B = 3 : erreur variable d'abscisse EX numero A #[0,NVar[ 521 - Return NData checked si ok, -1 si probleme. 522 \endverbatim 523 */ 560 524 int GeneralFitData::GetMnMx(int var,int& imin,int& imax) const 561 //562 // Retourne les numeros des points de valeurs minimum et maximum563 // de la variable ``var'':564 //| La variable "var" est de la forme : var = AB avec565 //| B = 0 : variable d'ordonnee Y (valeur de A indifferente)566 //| B = 1 : erreur variable d'ordonnee EY (valeur de A indifferente)567 //| B = 2 : variable d'abscisse X numero A #[0,NVar[568 //| B = 3 : erreur variable d'abscisse EX numero A #[0,NVar[569 //| - Return NData checked si ok, -1 si probleme.570 //--571 525 { 572 526 imin = imax = -1; … … 592 546 } 593 547 594 //++ 548 /*! 549 Retourne le minimum et le maximum de la variable ``var'' 550 (cf commentaires GetMnMx). 551 */ 595 552 int GeneralFitData::GetMnMx(int var,double& min,double& max) const 596 //597 // Retourne le minimum et le maximum de la variable ``var''598 // (cf commentaires GetMnMx).599 //--600 553 { 601 554 min = 1.; max = -1.; … … 622 575 623 576 ////////////////////////////////////////////////////////////////////// 624 //++ 577 /*! 578 // 579 Retourne la moyenne et le sigma de la variable ``var'' 580 (cf commentaires GetMnMx). 581 \verbatim 582 - Return : nombre de donnees utilisees, -1 si pb, -2 si sigma<0. 583 - Seuls les points valides de valeur entre min,max sont utilises. 584 Si min>=max pas de coupures sur les valeurs. 585 \endverbatim 586 */ 625 587 int GeneralFitData::GetMeanSigma(int var,double& mean,double& sigma,double min,double max) 626 //627 // Retourne la moyenne et le sigma de la variable ``var''628 // (cf commentaires GetMnMx).629 //| - Return : nombre de donnees utilisees, -1 si pb, -2 si sigma<0.630 //| - Seuls les points valides de valeur entre min,max sont utilises.631 //| Si min>=max pas de coupures sur les valeurs.632 //--633 588 { 634 589 mean = sigma = 0.; … … 661 616 } 662 617 663 //++ 618 /*! 619 Retourne le mode de la variable ``var'' 620 (cf commentaires GetMnMx). 621 \verbatim 622 - Return : nombre de donnees utilisees, -1 si pb. 623 - Seuls les points valides de valeur entre min,max sont utilises. 624 Si min>=max pas de coupures sur les valeurs. 625 - Le calcul du mode est approximee par la formule: 626 Mode = Median - coeff*(Mean-Median) (def: coeff=0.8) 627 - Kendall and Stuart donne coeff=2., mais coeff peut etre regle. 628 \endverbatim 629 */ 664 630 int GeneralFitData::GetMoMeMed(int var,double& mode,double& mean,double& median, 665 631 double min,double max,double coeff) 666 //667 // Retourne le mode de la variable ``var''668 // (cf commentaires GetMnMx).669 //| - Return : nombre de donnees utilisees, -1 si pb.670 //| - Seuls les points valides de valeur entre min,max sont utilises.671 //| Si min>=max pas de coupures sur les valeurs.672 //| - Le calcul du mode est approximee par la formule:673 //| Mode = Median - coeff*(Mean-Median) (def: coeff=0.8)674 //| - Kendall and Stuart donne coeff=2., mais coeff peut etre regle.675 //--676 632 { 677 633 mode = mean = median = 0.; … … 716 672 } 717 673 718 //++ 674 /*! 675 Cf description ci-dessus ``GetMoMeMed''. 676 */ 719 677 int GeneralFitData::GetMode(int var,double& mode,double min,double max,double coeff) 720 //721 // Cf description ci-dessus ``GetMoMeMed''.722 //--723 678 { 724 679 double mean,median; … … 727 682 728 683 ////////////////////////////////////////////////////////////////////// 729 //++ 684 /*! 685 Pour fiter un polynome de degre ``degre''. On fite 686 Y=f(X) ou Y=Val et X=Absc(varx). Si ``ey'' est ``true'' 687 le fit prend en compte les erreurs stoquees dans EVal, 688 sinon fit sans erreurs. Le resultat du fit est retourne 689 dans le polynome ``pol''. 690 \verbatim 691 Return: 692 - Res = le residu du fit 693 - -1 si degre<0 694 - -2 si probleme sur numero de variable X 695 - -4 si NDataGood<0 696 - -5 si nombre de data trouves different de NDataGood 697 \endverbatim 698 */ 730 699 double GeneralFitData::PolFit(int varx,Poly& pol,int degre,bool ey) 731 //732 // Pour fiter un polynome de degre ``degre''. On fite733 // Y=f(X) ou Y=Val et X=Absc(varx). Si ``ey'' est ``true''734 // le fit prend en compte les erreurs stoquees dans EVal,735 // sinon fit sans erreurs. Le resultat du fit est retourne736 // dans le polynome ``pol''.737 //| Return:738 //| - Res = le residu du fit739 //| - -1 si degre<0740 //| - -2 si probleme sur numero de variable X741 //| - -4 si NDataGood<0742 //| - -5 si nombre de data trouves different de NDataGood743 //--744 700 { 745 701 if(degre<0) return -1.; … … 769 725 } 770 726 771 //++ 727 /*! 728 Pour fiter un polynome de degre ``degre1''. On fite 729 Z=f(X,Y) ou Z=Val et X=Absc(varx) et Y=Absc(vary). 730 Si ``ey'' est ``true'' le fit prend en compte les erreurs 731 stoquees dans EVal, sinon fit sans erreurs. Si ``degre2'' 732 negatif, le fit determine un polynome en X,Y de degre 733 total ``degre`''. Si ``degre2'' positif ou nul, le fit 734 demande un fit de ``degre1'' pour la variable X et de degre 735 ``degre2'' sur la variable Y. Le resultat du fit est retourne 736 dans le polynome ``pol''. 737 \verbatim 738 Return: 739 - Res = le residu du fit 740 - -1 si degre<0 741 - -2 si probleme sur numero de variable X 742 - -3 si probleme sur numero de variable Y 743 - -4 si NDataGood<0 744 - -5 si nombre de data trouves different de NDataGood 745 \endverbatim 746 */ 772 747 double GeneralFitData::PolFit(int varx,int vary,Poly2& pol,int degre1,int degre2,bool ez) 773 //774 //775 // Pour fiter un polynome de degre ``degre1''. On fite776 // Z=f(X,Y) ou Z=Val et X=Absc(varx) et Y=Absc(vary).777 // Si ``ey'' est ``true'' le fit prend en compte les erreurs778 // stoquees dans EVal, sinon fit sans erreurs. Si ``degre2''779 // negatif, le fit determine un polynome en X,Y de degre780 // total ``degre`''. Si ``degre2'' positif ou nul, le fit781 // demande un fit de ``degre1'' pour la variable X et de degre782 // ``degre2'' sur la variable Y. Le resultat du fit est retourne783 // dans le polynome ``pol''.784 //| Return:785 //| - Res = le residu du fit786 //| - -1 si degre<0787 //| - -2 si probleme sur numero de variable X788 //| - -3 si probleme sur numero de variable Y789 //| - -4 si NDataGood<0790 //| - -5 si nombre de data trouves different de NDataGood791 //--792 748 { 793 749 if(degre1<0) return -1.; … … 823 779 824 780 ////////////////////////////////////////////////////////////////////// 825 //++ 781 /*! 782 Retourne une classe contenant les residus du fit ``gfit''. 783 */ 826 784 GeneralFitData GeneralFitData::FitResidus(GeneralFit& gfit) 827 //828 // Retourne une classe contenant les residus du fit ``gfit''.829 //--830 785 { 831 786 if(gfit.GetNVar()!=mNVar) … … 834 789 } 835 790 836 //++ 791 /*! 792 Retourne une classe contenant la function du fit ``gfit''. 793 */ 837 794 GeneralFitData GeneralFitData::FitFunction(GeneralFit& gfit) 838 //839 // Retourne une classe contenant la function du fit ``gfit''.840 //--841 795 { 842 796 if(gfit.GetNVar()!=mNVar) … … 846 800 847 801 ////////////////////////////////////////////////////////////////////// 848 //++ 802 /*! 803 // 804 Retourne la donnee `n' dans le vecteur de double `ret'. 805 \verbatim 806 Par defaut, ret=NULL et le buffer interne de la classe est retourne 807 - Les donnees sont rangees dans l'ordre: 808 x0,x1,x2,... ; ex0,ex1,ex2,... ; y ; ey ; ok(0/1) 809 |<- NVar ->| + |<- NVar ->| + 1 + 1 + 1 810 Le vecteur ret a la taille 2*NVar+2+1 811 \endverbatim 812 */ 849 813 r_8* GeneralFitData::GetVec(int n, r_8* ret) const 850 //851 // Retourne la donnee `n' dans le vecteur de double `ret'.852 //| Par defaut, ret=NULL et le buffer interne de la classe est retourne853 //| - Les donnees sont rangees dans l'ordre:854 //| x0,x1,x2,... ; ex0,ex1,ex2,... ; y ; ey ; ok(0/1)855 //| |<- NVar ->| + |<- NVar ->| + 1 + 1 + 1856 //| Le vecteur ret a la taille 2*NVar+2+1857 //--858 814 { 859 815 int i; … … 870 826 } 871 827 872 //++ 828 /*! 829 Retourne la donnee `n' dans le vecteur de float `ret' 830 (meme commentaires que pour GetVec). 831 */ 873 832 r_4* GeneralFitData::GetVecR4(int n, r_4* ret) const 874 //875 // Retourne la donnee `n' dans le vecteur de float `ret'876 // (meme commentaires que pour GetVec).877 //--878 833 { 879 834 if (ret == NULL) ret = BuffVarR4; … … 886 841 887 842 ////////////////////////////////////////////////////////////////////// 888 //++889 // int inline int GetSpaceFree() const890 // Retourne la place restante dans la structure (nombre de891 // donnees que l'on peut encore stoquer).892 //--893 //++894 // inline int NVar() const895 // Retourne le nombre de variables Xi896 //--897 //++898 // inline int NData()899 // Retourne le nombre de donnees900 //--901 //++902 // inline int NDataGood() const903 // Retourne le nombre de bonnes donnees (utilisees pour le fit)904 //--905 //++906 // inline int NDataAlloc() const907 // Retourne la place maximale allouee pour les donnees908 //--909 //++910 // inline unsigned short int IsValid(int i) const911 // Retourne 1 si point valide, sinon 0912 //--913 //++914 // inline bool HasXErrors()915 // Retourne ``true'' si il y a des erreurs sur les variables916 // d'abscisse, ``false'' sinon.917 //--918 //++919 // inline double X1(int i) const920 // Retourne l'abscisse pour 1 dimension (y=f(x)) donnee I921 //--922 //++923 // inline double X(int i) const924 // Retourne la 1er abscisse (X) pour (v=f(x,y,z,...)) donnee I925 //--926 //++927 // inline double Y(int i) const928 // Retourne la 2sd abscisse (Y) pour (v=f(x,y,z,...)) donnee I929 //--930 //++931 // inline double Z(int i) const932 // Retourne la 3ieme abscisse (Z) pour (v=f(x,y,z,...)) donnee I933 //--934 //++935 // inline double Absc(int j,int i) const936 // Retourne la Jieme abscisse (Xj) pour (v=f(x0,x1,x2,...)) donnee I937 //--938 //++939 // inline double Val(int i) const940 // Retourne la valeur de la Ieme donnee941 //--942 //++943 // inline double EX1(int i) const944 // Retourne l'erreur (dx) sur l'abscisse pour 1 dimension (y=f(x)) donnee I945 //--946 //++947 // inline double EX(int i) const948 // Retourne l'erreur (dx) sur la 1er abscisse (X) pour (v=f(x,y,z,...)) donnee I949 //--950 //++951 // inline double EY(int i) const952 // Retourne l'erreur (dy) sur la 2sd abscisse (Y) pour (v=f(x,y,z,...)) donnee I953 //--954 //++955 // inline double EZ(int i) const956 // Retourne l'erreur (dz) sur la 3ieme abscisse (Z) pour (v=f(x,y,z,...)) donnee I957 //--958 //++959 // inline double EAbsc(int j,int i) const960 // Retourne l'erreur (dxj) sur la Jieme abscisse (Xj) pour (v=f(x0,x1,x2,...)) donnee I961 //--962 //++963 // inline double EVal(int i) const {return mErr[i];}964 // Retourne l'erreur de la Ieme donnee965 //--966 967 968 //////////////////////////////////////////////////////////////////////969 843 // ------- Implementation de l interface NTuple --------- 970 844 845 /*! 846 Retourne le nombre de ligne = NData() (pour interface NTuple) 847 */ 971 848 uint_4 GeneralFitData::NbLines() const 972 849 { … … 974 851 } 975 852 976 //++ 853 /*! 854 Retourne le nombre de colonnes du ntuple equivalent: 855 \verbatim 856 Exemple: on a une fonction sur un espace a 4 dimensions: 857 "x0,x1,x2,x3 , ex0,ex1,ex2,ex3 , y, ey , ok" 858 0 1 2 3 4 5 6 7 8 9 10 859 | | | | | | | 860 0 nv-1 nv 2*nv-1 2*nv 2*nv+1 2*nv+2 861 soit 2*nvar+3 variables/colonnes. 862 \endverbatim 863 (pour interface NTuple) 864 */ 977 865 uint_4 GeneralFitData::NbColumns() const 978 //979 // Retourne le nombre de colonnes du ntuple equivalent:980 //| Exemple: on a une fonction sur un espace a 4 dimensions:981 //| "x0,x1,x2,x3 , ex0,ex1,ex2,ex3 , y, ey , ok"982 //| 0 1 2 3 4 5 6 7 8 9 10983 //| | | | | | | |984 //| 0 nv-1 nv 2*nv-1 2*nv 2*nv+1 2*nv+2985 //| soit 2*nvar+3 variables/colonnes.986 //--987 866 { 988 867 return(2*NVar()+3); 989 868 } 990 869 870 //! Pour interface NTuple 991 871 r_8 * GeneralFitData::GetLineD(int n) const 992 872 { … … 994 874 } 995 875 876 //! Pour interface NTuple 996 877 r_8 GeneralFitData::GetCell(int n, int k) const 997 878 { … … 1001 882 } 1002 883 884 //! Pour interface NTuple 1003 885 r_8 GeneralFitData::GetCell(int n, string const & nom) const 1004 886 { … … 1007 889 } 1008 890 1009 //++ 891 /*! 892 Retourne le minimum et le maximum de la variable `k' (pour interface NTuple). 893 */ 1010 894 void GeneralFitData::GetMinMax(int k, double& min, double& max) const 1011 //1012 // Retourne le minimum et le maximum de la variable `k'.1013 //--1014 895 { 1015 896 int var; … … 1024 905 } 1025 906 907 //! Pour interface NTuple 1026 908 void GeneralFitData::GetMinMax(string const & nom, double& min, double& max) const 1027 909 { … … 1030 912 } 1031 913 914 //! Pour interface NTuple 1032 915 int GeneralFitData::ColumnIndex(string const & nom) const 1033 916 { … … 1043 926 } 1044 927 928 //! Pour interface NTuple 1045 929 string GeneralFitData::ColumnName(int k) const 1046 930 { … … 1056 940 } 1057 941 1058 //++ 942 /*! 943 Retourne une chaine de caracteres avec la declaration des noms de 944 variables. si "nomx!=NULL" , des instructions d'affectation 945 a partir d'un tableau "nomx[i]" sont ajoutees (pour interface NTuple). 946 */ 1059 947 string GeneralFitData::VarList_C(const char* nomx) const 1060 //1061 // Retourne une chaine de caracteres avec la declaration des noms de1062 // variables. si "nomx!=NULL" , des instructions d'affectation1063 // a partir d'un tableau "nomx[i]" sont ajoutees.1064 //--1065 948 { 1066 949 char buff[256];
Note:
See TracChangeset
for help on using the changeset viewer.