Changeset 914 in Sophya for trunk/SophyaLib/NTools/generaldata.cc


Ignore:
Timestamp:
Apr 13, 2000, 6:04:50 PM (25 years ago)
Author:
ansari
Message:

documentation cmv 13/4/00

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/SophyaLib/NTools/generaldata.cc

    r514 r914  
    1919//================================================================
    2020
    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*/
    4327GeneralFitData::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 nul
    47 //      indique que l'on fournit des erreurs sur les ``nVar'' variables en abscisse.
    48 //--
    4928  : mNVar(0), mNDataAlloc(0), mNData(0), mNDataGood(0), mOk_EXP(0)
    5029  , mXP(NULL), mErrXP(NULL), mF(NULL), mErr(NULL), mOK(NULL)
     
    5938}
    6039
    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*/
    6247GeneralFitData::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 donnees
    67 //      sont copiees et la taille totale de ``data'' est allouee
    68 //      meme si elle est plus grande que la taille des donnees stoquees.
    69 //--
    7048  : mNVar(0), mNDataAlloc(0), mNData(0), mNDataGood(0), mOk_EXP(0)
    7149  , mXP(NULL), mErrXP(NULL), mF(NULL), mErr(NULL), mOK(NULL)
     
    9876}
    9977
    100 //++
     78/*!
     79  Constructeur par defaut.
     80*/
    10181GeneralFitData::GeneralFitData()
    102 //
    103 //      Constructeur par defaut.
    104 //--
    10582  : mNVar(0), mNDataAlloc(0), mNData(0), mNDataGood(0), mOk_EXP(0)
    10683  , mXP(NULL), mErrXP(NULL), mF(NULL), mErr(NULL), mOK(NULL)
     
    11087}
    11188
    112 //++
     89/*!
     90  Destructeur
     91*/
    11392GeneralFitData::~GeneralFitData()
    114 //
    115 //      Destructeur
    116 //--
    11793{
    11894 Delete();
     
    12096
    12197//////////////////////////////////////////////////////////////////////
    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*/
    123104void 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 utilise
    126 //      le createur par defaut). Voir les explications des arguments
    127 //      dans les commentaires du constructeur. Si ``errx''<0 alors
    128 //      la valeur prise est celle definie auparavent.
    129 //--
    130105{
    131106ASSERT( nVar>0 && ndatalloc>0 );
     
    151126
    152127//////////////////////////////////////////////////////////////////////
     128/*!
     129   Gestion des des-allocations
     130*/
    153131void GeneralFitData::Delete()
    154132{
     
    163141
    164142//////////////////////////////////////////////////////////////////////
    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*/
    166148void 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 //--
    172149{
    173150 ASSERT(ptr >= 0 && ptr < mNDataAlloc);
     
    179156
    180157//////////////////////////////////////////////////////////////////////
    181 //++
     158/*!
     159  Pour tuer un point
     160*/
    182161void GeneralFitData::KillData(int i)
    183 //
    184 //      Pour tuer un point
    185 //--
    186162{
    187163 ASSERT(i >= 0 && i < mNData);
     
    192168}
    193169
    194 //++
     170/*!
     171  Pour tuer une serie de points
     172*/
    195173void GeneralFitData::KillData(int i1,int i2)
    196 //
    197 //      Pour tuer une serie de points
    198 //--
    199174{
    200175 ASSERT(i1 >= 0 && i1 < mNData);
     
    206181
    207182//////////////////////////////////////////////////////////////////////
    208 //++
     183/*!
     184  Pour re-valider le point numero i ([0,NData]).
     185*/
    209186void GeneralFitData::ValidData(int i)
    210 //
    211 //      Pour re-valider le point numero i ([0,NData]).
    212 //--
    213187{
    214188 ASSERT(i >= 0 && i < mNData);
     
    223197}
    224198
    225 //++
     199/*!
     200  Pour re-valider les points numeros i1 a i2.
     201*/
    226202void GeneralFitData::ValidData(int i1,int i2)
    227 //
    228 //      Pour re-valider les points numeros i1 a i2.
    229 //--
    230203{
    231204 ASSERT(i1 >= 0 && i1 < mNData);
     
    236209}
    237210
    238 //++
     211/*!
     212  Pour re-valider tous les points.
     213*/
    239214void GeneralFitData::ValidData()
    240 //
    241 //      Pour re-valider tous les points.
    242 //--
    243215{
    244216 for(int i=0;i<mNData;i++) ValidData(i);
     
    246218
    247219//////////////////////////////////////////////////////////////////////
    248 //++
     220/*!
     221  Pour redefinir un point a \f$ {x,[errx] ; f,err} \f$
     222*/
    249223void GeneralFitData::RedefineData1(int i,double x,double f,double err,double errx)
    250 //
    251 //      Pour redefinir un point a
    252 //|     {x,[errx] ; f,err}
    253 //--
    254224{
    255225 RedefineData(i,&x,f,err,&errx);
    256226}
    257227
    258 //++
     228/*!
     229  Pour redefinir un point a \f$ {x,[errx], y,[erry] ; f,err} \f$
     230*/
    259231void GeneralFitData::RedefineData2(int i,double x,double y,double f
    260232                                  ,double err,double errx,double erry)
    261 //
    262 //      Pour redefinir un point a
    263 //|     {x,[errx], y,[erry] ; f,err}
    264 //--
    265233{
    266234 double xp[2] = {x,y};
     
    269237}
    270238
    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*/
    272243void GeneralFitData::RedefineData(int i,double* xp,double f,double err,double* errxp)
    273 //
    274 //      Pour redefinir un point a
    275 //| {xp[0],[errxp[0]], xp[1],[errxp[1]], xp[2],[errxp[2]],... ; f,err}
    276 //--
    277244{
    278245 ASSERT(i>=0 && i<mNData);
     
    300267
    301268//////////////////////////////////////////////////////////////////////
    302 //++
     269/*!
     270  Pour ajouter un point \f$ {x,[errx] ; f,err} \f$
     271*/
    303272void GeneralFitData::AddData1(double x, double f, double err, double errx)
    304 //
    305 //      Pour ajouter un point
    306 //|     {x,[errx] ; f,err}
    307 //--
    308273{
    309274 AddData(&x,f,err,&errx);
    310275}
    311276
    312 //++
     277/*!
     278  Pour ajouter un point \f$ {x,[errx], y,[erry] ; f,err} \f$
     279*/
    313280void GeneralFitData::AddData2(double x, double y, double f
    314281                             , double err, double errx, double erry)
    315 //
    316 //      Pour ajouter un point
    317 //|     {x,[errx], y,[erry] ; f,err}
    318 //--
    319282{
    320283 double xp[2] = {x,y};
     
    323286}
    324287
    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*/
    326292void GeneralFitData::AddData(double* xp, double f, double err,double* errxp)
    327 //
    328 //      Pour ajouter un point
    329 //| {xp[0],[errxp[0]], xp[1],[errxp[1]], xp[2],[errxp[2]],... ; f,err}
    330 //--
    331293{
    332294 ASSERT(mNData < mNDataAlloc);
     
    351313}
    352314
    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*/
    354319void GeneralFitData::AddData(float* xp, float f, float err, float* errxp)
    355 //
    356 //      Pour ajouter un point
    357 //| {xp[0],[errxp[0]], xp[1],[errxp[1]], xp[2],[errxp[2]],... ; f,err}
    358 //--
    359320{
    360321 {for(int i=0;i<mNVar;i++) BuffVar[i] = (double) xp[i];}
     
    364325
    365326//////////////////////////////////////////////////////////////////////
    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*/
    367331void GeneralFitData::SetData1(int nData
    368332            , double* x, double* f, double *err, double *errx)
    369 //
    370 //      Pour remplir la structure de donnees d'un seul coup avec
    371 //|     {x(i),[errx(i)] ; f(i),err(i)}
    372 //--
    373333{
    374334 ASSERT(nData>0 && mNData+nData<=mNDataAlloc);
     
    381341}
    382342
    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*/
    384347void GeneralFitData::SetData1(int nData
    385348            , float* x, float* f, float* err, float *errx)
    386 //
    387 //      Pour remplir la structure de donnees d'un seul coup avec
    388 //|     {x(i),[errx(i)] ; f(i),err(i)}
    389 //--
    390349{
    391350 ASSERT(nData>0 && mNData+nData<=mNDataAlloc);
     
    398357}
    399358
    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*/
    401363void GeneralFitData::SetData2(int nData, double* x, double* y, double* f
    402364                             ,double *err,double *errx,double *erry)
    403 //
    404 //      Pour remplir la structure de donnees d'un seul coup avec
    405 //|     {x(i),[errx(i)], y(i),[erry(i)], ; f(i),err(i)}
    406 //--
    407365{
    408366 ASSERT(nData>0 && mNData+nData<=mNDataAlloc);
     
    416374}
    417375
    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*/
    419380void GeneralFitData::SetData2(int nData, float* x, float* y, float* f
    420381                             ,float *err,float *errx,float *erry)
    421 //
    422 //      Pour remplir la structure de donnees d'un seul coup avec
    423 //|     {x(i),[errx(i)], y(i),[erry(i)], ; f(i),err(i)}
    424 //--
    425382{
    426383 ASSERT(nData>0 && mNData+nData<=mNDataAlloc);
     
    434391}
    435392
    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*/
    437407void GeneralFitData::SetData(int nData,double** xp, double *f
    438408                            , double *err, double** errxp)
    439 //
    440 //      Pour remplir la structure de donnees d'un seul coup avec
    441 //|   {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 copies
    443 //      apres les donnees pre-existantes (qui ne sont donc pas detruites). Pour
    444 //      effacer les donnees pre-existantes utiliser SetDataPtr(0).
    445 //|   Ici **xp est un pointeur sur un tableau de pointeurs tq
    446 //|     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 //--
    450409{
    451410 ASSERT(nData>0 && mNData+nData<=mNDataAlloc);
     
    461420}
    462421
    463 //++
     422/*!
     423  Voir commentaire ci-dessus.
     424*/
    464425void GeneralFitData::SetData(int nData,float** xp, float *f
    465426                            , float *err, float** errxp)
    466 //
    467 //      Voir commentaire ci-dessus.
    468 //--
    469427{
    470428 ASSERT(nData>0 && mNData+nData<=mNDataAlloc);
     
    482440
    483441//////////////////////////////////////////////////////////////////////
    484 //++
     442/*!
     443  Impression de l'etat de la structure de donnees
     444*/
    485445void GeneralFitData::PrintStatus()
    486 //
    487 //      Impression de l'etat de la structure de donnees
    488 //--
    489446{
    490447  cout<<"GeneralFitData:: "<<endl
     
    495452}
    496453
    497 //++
     454/*!
     455  Impression du point i
     456*/
    498457void GeneralFitData::PrintData(int i)
    499 //
    500 //      Impression du point i
    501 //--
    502458{
    503459 ASSERT(i>=0 && i<mNData);
     
    512468}
    513469
    514 //++
     470/*!
     471  Impression des points i1 a i2
     472*/
    515473void GeneralFitData::PrintData(int i1,int i2)
    516 //
    517 //      Impression des points i1 a i2
    518 //--
    519474{
    520475 if(i1<0) i1=0;
     
    529484}
    530485
    531 //++
     486/*!
     487  Impression de tous les points
     488*/
    532489void GeneralFitData::PrintData()
    533 //
    534 //      Impression de tous les points
    535 //--
    536490{
    537491 ASSERT(mNData>0);
     
    540494}
    541495
    542 //++
     496/*!
     497  Impression de l'etat de la structure de donnees avec bornes sur "s"
     498*/
    543499void GeneralFitData::Show(ostream& os) const
    544 //
    545 //      Impression de l'etat de la structure de donnees avec bornes sur "s"
    546 //--
    547500{
    548501double min,max;
     
    557510
    558511//////////////////////////////////////////////////////////////////////
    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*/
    560524int GeneralFitData::GetMnMx(int var,int& imin,int& imax) const
    561 //
    562 //      Retourne les numeros des points de valeurs minimum et maximum
    563 //      de la variable ``var'':
    564 //| La variable "var" est de la forme : var = AB avec
    565 //|  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 //--
    571525{
    572526imin = imax = -1;
     
    592546}
    593547
    594 //++
     548/*!
     549  Retourne le minimum et le maximum de la variable ``var''
     550  (cf commentaires GetMnMx).
     551*/
    595552int 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 //--
    600553{
    601554min = 1.; max = -1.;
     
    622575
    623576//////////////////////////////////////////////////////////////////////
    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*/
    625587int 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 //--
    633588{
    634589mean = sigma = 0.;
     
    661616}
    662617
    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*/
    664630int GeneralFitData::GetMoMeMed(int var,double& mode,double& mean,double& median,
    665631                               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 //--
    676632{
    677633mode = mean = median = 0.;
     
    716672}
    717673
    718 //++
     674/*!
     675  Cf description ci-dessus ``GetMoMeMed''.
     676*/
    719677int GeneralFitData::GetMode(int var,double& mode,double min,double max,double coeff)
    720 //
    721 //      Cf description ci-dessus ``GetMoMeMed''.
    722 //--
    723678{
    724679double mean,median;
     
    727682
    728683//////////////////////////////////////////////////////////////////////
    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*/
    730699double GeneralFitData::PolFit(int varx,Poly& pol,int degre,bool ey)
    731 //
    732 //      Pour fiter un polynome de degre ``degre''. On fite
    733 //      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 retourne
    736 //      dans le polynome ``pol''.
    737 //| Return:
    738 //|  -   Res = le residu du fit
    739 //|  -   -1 si degre<0
    740 //|  -   -2 si probleme sur numero de variable X
    741 //|  -   -4 si NDataGood<0
    742 //|  -   -5 si nombre de data trouves different de NDataGood
    743 //--
    744700{
    745701if(degre<0) return -1.;
     
    769725}
    770726
    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*/
    772747double 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 fite
    776 //      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 erreurs
    778 //      stoquees dans EVal, sinon fit sans erreurs. Si ``degre2''
    779 //      negatif, le fit determine un polynome en X,Y de degre
    780 //      total ``degre`''. Si ``degre2'' positif ou nul, le fit
    781 //      demande un fit de ``degre1'' pour la variable X et de degre
    782 //      ``degre2'' sur la variable Y. Le resultat du fit est retourne
    783 //      dans le polynome ``pol''.
    784 //| Return:
    785 //|  -   Res = le residu du fit
    786 //|  -   -1 si degre<0
    787 //|  -   -2 si probleme sur numero de variable X
    788 //|  -   -3 si probleme sur numero de variable Y
    789 //|  -   -4 si NDataGood<0
    790 //|  -   -5 si nombre de data trouves different de NDataGood
    791 //--
    792748{
    793749if(degre1<0) return -1.;
     
    823779
    824780//////////////////////////////////////////////////////////////////////
    825 //++
     781/*!
     782  Retourne une classe contenant les residus du fit ``gfit''.
     783*/
    826784GeneralFitData GeneralFitData::FitResidus(GeneralFit& gfit)
    827 //
    828 //      Retourne une classe contenant les residus du fit ``gfit''.
    829 //--
    830785{
    831786if(gfit.GetNVar()!=mNVar)
     
    834789}
    835790
    836 //++
     791/*!
     792  Retourne une classe contenant la function du fit ``gfit''.
     793*/
    837794GeneralFitData GeneralFitData::FitFunction(GeneralFit& gfit)
    838 //
    839 //      Retourne une classe contenant la function du fit ``gfit''.
    840 //--
    841795{
    842796if(gfit.GetNVar()!=mNVar)
     
    846800
    847801//////////////////////////////////////////////////////////////////////
    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*/
    849813r_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 retourne
    853 //| - Les donnees sont rangees dans l'ordre:
    854 //|    x0,x1,x2,... ; ex0,ex1,ex2,...  ; y ; ey ; ok(0/1)
    855 //|    |<- NVar ->| + |<-   NVar   ->| + 1 +  1 +  1
    856 //|   Le vecteur ret a la taille 2*NVar+2+1
    857 //--
    858814{
    859815int i;
     
    870826}
    871827
    872 //++
     828/*!
     829  Retourne la donnee `n' dans le vecteur de float `ret'
     830  (meme commentaires que pour GetVec).
     831*/
    873832r_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 //--
    878833{
    879834if (ret == NULL) ret = BuffVarR4;
     
    886841
    887842//////////////////////////////////////////////////////////////////////
    888 //++
    889 // int inline int GetSpaceFree() const
    890 //      Retourne la place restante dans la structure (nombre de
    891 //      donnees que l'on peut encore stoquer).
    892 //--
    893 //++
    894 // inline int  NVar()       const
    895 //      Retourne le nombre de variables Xi
    896 //--
    897 //++
    898 // inline int  NData()
    899 //      Retourne le nombre de donnees
    900 //--
    901 //++
    902 // inline int  NDataGood()  const
    903 //      Retourne le nombre de bonnes donnees (utilisees pour le fit)
    904 //--
    905 //++
    906 // inline int  NDataAlloc() const
    907 //      Retourne la place maximale allouee pour les donnees
    908 //--
    909 //++
    910 // inline unsigned short int IsValid(int i) const
    911 //      Retourne 1 si point valide, sinon 0
    912 //--
    913 //++
    914 // inline bool HasXErrors()
    915 //      Retourne ``true'' si il y a des erreurs sur les variables
    916 //      d'abscisse, ``false'' sinon.
    917 //--
    918 //++
    919 // inline double X1(int i) const
    920 //      Retourne l'abscisse pour 1 dimension (y=f(x)) donnee I
    921 //--
    922 //++
    923 // inline double X(int i) const
    924 //      Retourne la 1er abscisse (X) pour (v=f(x,y,z,...)) donnee I
    925 //--
    926 //++
    927 // inline double Y(int i) const
    928 //      Retourne la 2sd abscisse (Y) pour (v=f(x,y,z,...)) donnee I
    929 //--
    930 //++
    931 // inline double Z(int i) const
    932 //      Retourne la 3ieme abscisse (Z) pour (v=f(x,y,z,...)) donnee I
    933 //--
    934 //++
    935 // inline double Absc(int j,int i) const
    936 //      Retourne la Jieme abscisse (Xj) pour (v=f(x0,x1,x2,...)) donnee I
    937 //--
    938 //++
    939 // inline double Val(int i) const
    940 //      Retourne la valeur de la Ieme donnee
    941 //--
    942 //++
    943 // inline double EX1(int i) const
    944 //      Retourne l'erreur (dx) sur l'abscisse pour 1 dimension (y=f(x)) donnee I
    945 //--
    946 //++
    947 // inline double EX(int i) const
    948 //      Retourne l'erreur (dx) sur la 1er abscisse (X) pour (v=f(x,y,z,...)) donnee I
    949 //--
    950 //++
    951 // inline double EY(int i) const
    952 //      Retourne l'erreur (dy) sur la 2sd abscisse (Y) pour (v=f(x,y,z,...)) donnee I
    953 //--
    954 //++
    955 // inline double EZ(int i) const
    956 //      Retourne l'erreur (dz) sur la 3ieme abscisse (Z) pour (v=f(x,y,z,...)) donnee I
    957 //--
    958 //++
    959 // inline double EAbsc(int j,int i) const
    960 //      Retourne l'erreur (dxj) sur la Jieme abscisse (Xj) pour (v=f(x0,x1,x2,...)) donnee I
    961 //--
    962 //++
    963 // inline double EVal(int i) const {return mErr[i];}
    964 //      Retourne l'erreur de la Ieme donnee
    965 //--
    966 
    967 
    968 //////////////////////////////////////////////////////////////////////
    969843// ------- Implementation de  l interface NTuple  ---------
    970844
     845/*!
     846  Retourne le nombre de ligne = NData() (pour interface NTuple)
     847*/
    971848uint_4 GeneralFitData::NbLines() const
    972849{
     
    974851}
    975852
    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*/
    977865uint_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      10
    983 //|   |        |        |           |      |     |       |       
    984 //|   0       nv-1     nv         2*nv-1  2*nv  2*nv+1  2*nv+2
    985 //| soit 2*nvar+3 variables/colonnes.
    986 //--
    987866{
    988867return(2*NVar()+3);
    989868}
    990869
     870//! Pour interface NTuple
    991871r_8 * GeneralFitData::GetLineD(int n) const
    992872{
     
    994874}
    995875
     876//! Pour interface NTuple
    996877r_8 GeneralFitData::GetCell(int n, int k) const
    997878{
     
    1001882}
    1002883
     884//! Pour interface NTuple
    1003885r_8 GeneralFitData::GetCell(int n, string const & nom) const
    1004886{
     
    1007889}
    1008890
    1009 //++
     891/*!
     892  Retourne le minimum et le maximum de la variable `k' (pour interface NTuple).
     893*/
    1010894void GeneralFitData::GetMinMax(int k, double& min, double& max)  const
    1011 //
    1012 //      Retourne le minimum et le maximum de la variable `k'.
    1013 //--
    1014895{
    1015896int var;
     
    1024905}
    1025906
     907//! Pour interface NTuple
    1026908void GeneralFitData::GetMinMax(string const & nom, double& min, double& max)   const
    1027909{
     
    1030912}
    1031913
     914//! Pour interface NTuple
    1032915int GeneralFitData::ColumnIndex(string const & nom)  const
    1033916{
     
    1043926}
    1044927
     928//! Pour interface NTuple
    1045929string GeneralFitData::ColumnName(int k) const
    1046930{
     
    1056940}
    1057941
    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*/
    1059947string GeneralFitData::VarList_C(const char* nomx)  const
    1060 //
    1061 //      Retourne une chaine de caracteres avec la declaration des noms de
    1062 //      variables. si "nomx!=NULL" , des instructions d'affectation
    1063 //      a partir d'un tableau "nomx[i]" sont ajoutees.
    1064 //--
    1065948{
    1066949char buff[256];
Note: See TracChangeset for help on using the changeset viewer.