Changeset 914 in Sophya for trunk/SophyaLib/HiStats/histos2.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/HiStats/histos2.cc

    r763 r914  
    1616#include "generalfit.h"
    1717
    18 //++
    19 // Class        Histo2D
    20 // Lib  Outils++
    21 // include      histos2.h
    22 //
    23 //      Classe d'histogrammes 2D
    24 //--
    25 
    26 ///////////////////////////////////////////////////////////////////
    27 //++
    28 // Titre        Constructeurs
    29 //--
    30 
    31 //++
     18///////////////////////////////////////////////////////////////////
     19/*!
     20  Createur d'un histogramme 2D ayant nxBin,nyBin bins
     21  entre xMin,xMax et yMin,yMax.
     22*/
    3223Histo2D::Histo2D(float xMin, float xMax, int nxBin
    3324                ,float yMin, float yMax, int nyBin)
    34 //
    35 //      Createur d'un histogramme 2D ayant nxBin,nyBin bins
    36 //      entre xMin,xMax et yMin,yMax.
    37 //--
    3825      : data(new float[nxBin*nyBin]), err2(NULL)
    3926      , nHist(0), nEntries(0)
     
    5037}
    5138
    52 //++
     39/*!
     40  Constructeur par copie.
     41*/
    5342Histo2D::Histo2D(const Histo2D& h)
    54 //
    55 //      Constructeur par copie.
    56 //--
    5743{
    5844int i,j;
     
    118104}
    119105
    120 //++
     106/*!
     107  Constructeur par defaut.
     108*/
    121109Histo2D::Histo2D()
    122 //
    123 //      Constructeur par defaut.
    124 //--
    125110      : data(NULL), err2(NULL)
    126111      , nHist(0), nEntries(0)
     
    136121
    137122///////////////////////////////////////////////////////////////////
    138 //++
     123/*!
     124  Desallocation de la place de l'histogramme (fct privee).
     125*/
    139126void Histo2D::Delete()
    140 //
    141 //      Desallocation de la place de l'histogramme (fct privee).
    142 //--
    143127{
    144128  if( data != NULL ) { delete[] data; data = NULL;}
     
    163147}
    164148
    165 //++
     149/*!
     150  Destructeur.
     151*/
    166152Histo2D::~Histo2D()
    167 //
    168 //      Destructeur.
    169 //--
    170153{
    171154Delete();
     
    173156
    174157///////////////////////////////////////////////////////////////////
    175 //++
    176 // Titre        Methodes generales
    177 //--
    178 
    179 //++
     158/*!
     159  Remise a zero du contenu, des erreurs et des valeurs.
     160*/
    180161void Histo2D::Zero()
    181 //
    182 //      Remise a zero du contenu, des erreurs et des valeurs.
    183 //--
    184162{
    185163  nHist = nEntries = 0;
     
    200178
    201179///////////////////////////////////////////////////////////////////
    202 //++
     180/*!
     181  Pour avoir le calcul des erreurs.
     182*/
    203183void Histo2D::Errors()
    204 //
    205 //      Pour avoir le calcul des erreurs.
    206 //--
    207184{
    208185 if( nxy > 0 ) {
     
    213190
    214191///////////////////////////////////////////////////////////////////
    215 //++
     192/*!
     193  Operateur H2 = H1
     194*/
    216195Histo2D& Histo2D::operator = (const Histo2D& h)
    217 //
    218 //--
    219196{
    220197  int i,j,nb;
     
    286263
    287264///////////////////////////////////////////////////////////////////
    288 //++
     265/*!
     266  Operateur H *= b
     267*/
    289268Histo2D& Histo2D::operator *= (double b)
    290 //
    291 //--
    292269{
    293270int i,j;
     
    310287}
    311288
    312 //++
     289/*!
     290  Operateur H /= b
     291*/
    313292Histo2D& Histo2D::operator /= (double b)
    314 //
    315 //--
    316293{
    317294int i,j;
     
    335312}
    336313
    337 //++
     314/*!
     315  Operateur H += b
     316*/
    338317Histo2D& Histo2D::operator += (double b)
    339 //
    340 //--
    341318{
    342319int i,j;
     
    362339}
    363340
    364 //++
     341/*!
     342  Operateur H -= b
     343*/
    365344Histo2D& Histo2D::operator -= (double b)
    366 //
    367 //--
    368345{
    369346int i,j;
     
    390367
    391368///////////////////////////////////////////////////////////////////
    392 //++
     369/*!
     370  Operateur H2 = H1 * b
     371*/
    393372Histo2D operator * (const Histo2D& a, double b)
    394 //
    395 //--
    396373{
    397374  Histo2D result(a);
     
    399376}
    400377
    401 //++
     378/*!
     379  Operateur H2 = b * H1
     380*/
    402381Histo2D operator * (double b, const Histo2D& a)
    403 //
    404 //--
    405382{
    406383  Histo2D result(a);
     
    408385}
    409386
    410 //++
     387/*!
     388  Operateur H2 = H1 / b
     389*/
    411390Histo2D operator / (const Histo2D& a, double b)
    412 //
    413 //--
    414391{
    415392  Histo2D result(a);
     
    417394}
    418395
    419 //++
     396/*!
     397  Operateur H2 = H1 + b
     398*/
    420399Histo2D operator + (const Histo2D& a, double b)
    421 //
    422 //--
    423400{
    424401  Histo2D result(a);
     
    426403}
    427404
    428 //++
     405/*!
     406  Operateur H2 = b + H1
     407*/
    429408Histo2D operator + (double b, const Histo2D& a)
    430 //
    431 //--
    432409{
    433410  Histo2D result(a);
     
    435412}
    436413
    437 //++
     414/*!
     415  Operateur H2 = H1 - b
     416*/
    438417Histo2D operator - (const Histo2D& a, double b)
    439 //
    440 //--
    441418{
    442419  Histo2D result(a);
     
    444421}
    445422
    446 //++
     423/*!
     424  Operateur H2 = b - H1
     425*/
    447426Histo2D operator - (double b, const Histo2D& a)
    448 //
    449 //--
    450427{
    451428  Histo2D result(a);
     
    455432
    456433///////////////////////////////////////////////////////////////////
    457 //++
     434/*!
     435  Operateur H += H1
     436*/
    458437Histo2D& Histo2D::operator += (const Histo2D& a)
    459 //
    460 //--
    461438{
    462439int i,j;
     
    478455}
    479456
    480 //++
     457/*!
     458  Operateur H -= H1
     459*/
    481460Histo2D& Histo2D::operator -= (const Histo2D& a)
    482 //
    483 //--
    484461{
    485462int i,j;
     
    501478}
    502479
    503 //++
     480/*!
     481  Operateur H *= H1
     482*/
    504483Histo2D& Histo2D::operator *= (const Histo2D& a)
    505 //
    506 //--
    507484{
    508485int i,j;
     
    526503}
    527504
    528 //++
     505/*!
     506  Operateur H /= H1
     507*/
    529508Histo2D& Histo2D::operator /= (const Histo2D& a)
    530 //
    531 //--
    532509{
    533510int i,j;
     
    559536
    560537///////////////////////////////////////////////////////////////////
    561 //++
     538/*!
     539  Operateur H = H1 + H2
     540*/
     541
    562542Histo2D operator + (const Histo2D& a, const Histo2D& b)
    563 //
    564 //--
    565543{
    566544if (b.NBinX()!=a.NBinX() || b.NBinY()!=a.NBinY()) THROW(sizeMismatchErr);
     
    569547}
    570548
    571 //++
     549/*!
     550  Operateur H = H1 - H2
     551*/
    572552Histo2D operator - (const Histo2D& a, const Histo2D& b)
    573 //
    574 //--
    575553{
    576554if (b.NBinX()!=a.NBinX() || b.NBinY()!=a.NBinY()) THROW(sizeMismatchErr);
     
    579557}
    580558
    581 //++
     559/*!
     560  Operateur H = H1 * H2
     561*/
    582562Histo2D operator * (const Histo2D& a, const Histo2D& b)
    583 //
    584 //--
    585563{
    586564if (b.NBinX()!=a.NBinX() || b.NBinY()!=a.NBinY()) THROW(sizeMismatchErr);
     
    589567}
    590568
    591 //++
     569/*!
     570  Operateur H = H1 / H2
     571*/
    592572Histo2D operator / (const Histo2D& a, const Histo2D& b)
    593 //
    594 //--
    595573{
    596574if (b.NBinX()!=a.NBinX() || b.NBinY()!=a.NBinY()) THROW(sizeMismatchErr);
     
    600578
    601579///////////////////////////////////////////////////////////////////
    602 //++
     580/*!
     581  Remplissage d'un tableau avec les valeurs des abscisses.
     582*/
    603583void Histo2D::GetXCoor(Vector &v)
    604 //
    605 //      Remplissage d'un tableau avec les valeurs des abscisses.
    606 //--
    607584{
    608585float x,y;
     
    612589}
    613590
    614 //++
     591/*!
     592  Remplissage d'un tableau avec les valeurs des ordonnees.
     593*/
    615594void Histo2D::GetYCoor(Vector &v)
    616 //
    617 //      Remplissage d'un tableau avec les valeurs des ordonnees.
    618 //--
    619595{
    620596float x,y;
     
    624600}
    625601
    626 //++
    627 //| Remarque sur les indices:
    628 //|  H(i,j)   -> i  = coord x (0<i<nx),     j  = coord y (0<j<ny)
    629 //|  v(ii,jj) -> ii = ligne (0<i<NRows()),  jj = colonne (0<i<NCol())
    630 //|  On fait une correspondance directe i<->ii et j<->jj
    631 //|  ce qui, en representation classique des histos2D et des matrices
    632 //|  entraine une inversion x<->y cad une symetrie / diagonale principale
    633 //|  H(0,...)  represente ^         mais v(0,...) represente
    634 //|                       |x.......               |xxxxxxxx|
    635 //|                       |x.......               |........|
    636 //|                       |x.......               |........|
    637 //|                       |x.......               |........|
    638 //|                       |x.......               |........|
    639 //|                       --------->
    640 //|                       colonne no 1            ligne no 1
    641 //--
    642 
    643 //++
     602/*!
     603  Remplissage d'un tableau avec les valeurs du contenu.
     604*/
    644605void Histo2D::GetValue(Matrix &v)
    645 //
    646 //      Remplissage d'un tableau avec les valeurs du contenu.
    647 //--
    648606{
    649607v.Realloc(nx,ny);
     
    653611}
    654612
    655 //++
     613/*!
     614  Remplissage d'un tableau avec les valeurs du carre des erreurs.
     615*/
    656616void Histo2D::GetError2(Matrix &v)
    657 //
    658 //      Remplissage d'un tableau avec les valeurs du carre des erreurs.
    659 //--
    660617{
    661618int i,j;
     
    667624}
    668625
    669 //++
     626/*!
     627  Remplissage d'un tableau avec les valeurs des erreurs.
     628*/
    670629void Histo2D::GetError(Matrix &v)
    671 //
    672 //      Remplissage d'un tableau avec les valeurs des erreurs.
    673 //--
    674630{
    675631int i,j;
     
    682638
    683639///////////////////////////////////////////////////////////////////
    684 //++
     640/*!
     641  Remplissage du contenu de l'histo avec les valeurs d'un tableau.
     642*/
    685643void Histo2D::PutValue(Matrix &v, int ierr)
    686 //
    687 //      Remplissage du contenu de l'histo avec les valeurs d'un tableau.
    688 //--
    689644{
    690645int i,j;
     
    697652}
    698653
    699 //++
     654/*!
     655  Addition du contenu de l'histo avec les valeurs d'un tableau.
     656*/
    700657void Histo2D::PutValueAdd(Matrix &v, int ierr)
    701 //
    702 //      Addition du contenu de l'histo avec les valeurs d'un tableau.
    703 //--
    704658{
    705659int i,j;
     
    712666}
    713667
    714 //++
     668/*!
     669  Remplissage des erreurs au carre de l'histo
     670  avec les valeurs d'un tableau.
     671*/
    715672void Histo2D::PutError2(Matrix &v)
    716 //
    717 //      Remplissage des erreurs au carre de l'histo
    718 //      avec les valeurs d'un tableau.
    719 //--
    720673{
    721674int i,j;
     
    726679}
    727680
    728 //++
     681/*!
     682  Addition des erreurs au carre de l'histo
     683  avec les valeurs d'un tableau.
     684*/
    729685void Histo2D::PutError2Add(Matrix &v)
    730 //
    731 //      Addition des erreurs au carre de l'histo
    732 //      avec les valeurs d'un tableau.
    733 //--
    734686{
    735687int i,j;
     
    741693}
    742694
    743 //++
     695/*!
     696  Remplissage des erreurs de l'histo avec les valeurs d'un tableau.
     697*/
    744698void Histo2D::PutError(Matrix &v)
    745 //
    746 //      Remplissage des erreurs de l'histo avec les valeurs d'un tableau.
    747 //--
    748699{
    749700int i,j;
     
    757708///////////////////////////////////////////////////////////////////
    758709/********* Methode *********/
    759 //++
     710/*!
     711  Addition du contenu de l'histo pour x,y poids w.
     712*/
    760713void Histo2D::Add(float x, float y, float w)
    761 //
    762 //      Addition du contenu de l'histo pour x,y poids w.
    763 //--
    764714{
    765715list<bande_slice>::iterator it;
     
    801751
    802752///////////////////////////////////////////////////////////////////
    803 //++
     753/*!
     754  Recherche du bin du maximum dans le pave [il,ih][jl,jh].
     755*/
    804756void Histo2D::IJMax(int& imax,int& jmax,int il,int ih,int jl,int jh)
    805 //
    806 //      Recherche du bin du maximum dans le pave [il,ih][jl,jh].
    807 //--
    808757{
    809758if( il > ih ) { il = 0; ih = nx-1; }
     
    823772}
    824773
    825 //++
     774/*!
     775  Recherche du bin du minimum dans le pave [il,ih][jl,jh].
     776*/
    826777void Histo2D::IJMin(int& imax,int& jmax,int il,int ih,int jl,int jh)
    827 //
    828 //      Recherche du bin du minimum dans le pave [il,ih][jl,jh].
    829 //--
    830778{
    831779if( il > ih ) { il = 0; ih = nx-1; }
     
    846794
    847795
    848 //++
     796/*!
     797  Recherche du maximum dans le pave [il,ih][jl,jh].
     798*/
    849799float Histo2D::VMax(int il,int ih,int jl,int jh) const
    850 //
    851 //      Recherche du maximum dans le pave [il,ih][jl,jh].
    852 //--
    853800{
    854801if( il > ih ) { il = 0; ih = nx-1; }
     
    867814}
    868815
    869 //++
     816/*!
     817  Recherche du minimum dans le pave [il,ih][jl,jh].
     818*/
    870819float Histo2D::VMin(int il,int ih,int jl,int jh) const
    871 //
    872 //      Recherche du minimum dans le pave [il,ih][jl,jh].
    873 //--
    874820{
    875821if( il > ih ) { il = 0; ih = nx-1; }
     
    889835
    890836///////////////////////////////////////////////////////////////////
    891 //++
     837/*!
     838  Renvoie les under.overflow dans les 8 quadrants.
     839  \verbatim
     840     over[3][3]:        20 | 21 | 22
     841                           |    |
     842                       --------------
     843                           |    |
     844                        10 | 11 | 12        11 = all overflow+underflow
     845                           |    |
     846                       --------------
     847                           |    |
     848                        00 | 01 | 02
     849  \endverbatim
     850*/
    892851float Histo2D::NOver(int i,int j) const
    893 //
    894 //      Renvoie les under.overflow dans les 8 quadrants.
    895 //|  over[3][3]:        20 | 21 | 22
    896 //|                        |    |
    897 //|                    --------------
    898 //|                        |    |
    899 //|                     10 | 11 | 12        11 = all overflow+underflow
    900 //|                        |    |
    901 //|                    --------------
    902 //|                        |    |
    903 //|                     00 | 01 | 02
    904 //--
    905852{
    906853if( i < 0 || i>=3 || j < 0 || j>=3 ) return over[1][1];
     
    910857
    911858///////////////////////////////////////////////////////////////////
    912 //++
     859/*!
     860  Retourne le nombre de bins non-nuls.
     861*/
    913862int Histo2D::BinNonNul() const
    914 //
    915 //      Retourne le nombre de bins non-nuls.
    916 //--
    917863{
    918864int non=0;
     
    921867}
    922868
    923 //++
     869/*!
     870  Retourne le nombre de bins avec erreurs non-nulles.
     871*/
    924872int Histo2D::ErrNonNul() const
    925 //
    926 //      Retourne le nombre de bins avec erreurs non-nulles.
    927 //--
    928873{
    929874if(err2==NULL) return -1;
     
    934879
    935880///////////////////////////////////////////////////////////////////
    936 //++
     881/*!
     882  Idem EstimeMax(int...) mais retourne x,y.
     883*/
    937884int Histo2D::EstimeMax(float& xm,float& ym,int SzPav
    938885                      ,int il,int ih,int jl,int jh)
    939 //
    940 //      Idem EstimeMax(int...) mais retourne x,y.
    941 //--
    942886{
    943887int im,jm;
     
    946890}
    947891
    948 //++
     892/*!
     893  Determine les abscisses et ordonnees du maximum donne par im,jm
     894  en moyennant dans un pave SzPav x SzPav autour du maximum.
     895  \verbatim
     896     Return:
     897       0 = si fit maximum reussi avec SzPav pixels
     898       1 = si fit maximum reussi avec moins que SzPav pixels
     899                                   dans au moins 1 direction
     900       2 = si fit maximum echoue et renvoit BinCenter()
     901      -1 = si echec: SzPav <= 0 ou im,jm hors limites
     902  \endverbatim
     903*/
    949904int Histo2D::EstimeMax(int im,int jm,float& xm,float& ym,int SzPav)
    950 //
    951 //      Determine les abscisses et ordonnees du maximum donne par im,jm
    952 //      en moyennant dans un pave SzPav x SzPav autour du maximum.
    953 //|  Return:
    954 //|    0 = si fit maximum reussi avec SzPav pixels
    955 //|    1 = si fit maximum reussi avec moins que SzPav pixels
    956 //|                                dans au moins 1 direction
    957 //|    2 = si fit maximum echoue et renvoit BinCenter()
    958 //|   -1 = si echec: SzPav <= 0 ou im,jm hors limites
    959 //--
    960905{
    961906xm = ym = 0;
     
    992937}
    993938
    994 //++
     939/*!
     940  Pour trouver le maximum de l'histogramme en tenant compte
     941  des fluctuations.
     942  \verbatim
     943    Methode:
     944    1-/ On recherche le bin maximum MAX de l'histogramme
     945    2-/ On considere que tous les pixels compris entre [MAX-Dz,MAX]
     946        peuvent etre des pixels maxima.
     947    3-/ On identifie le bin maximum en choissisant le pixel du 2-/
     948        tel que la somme des pixels dans un pave SzPav x SzPav soit maximale.
     949    INPUT:
     950     SzPav = taille du pave pour departager
     951     Dz    = tolerance pour identifier tous les pixels "maximum"
     952    OUTPUT:
     953     im,jm = pixel maximum trouve
     954    RETURN:
     955      <0 =  Echec
     956      >0 =  nombre de pixels possibles pour le maximum
     957  \endverbatim
     958*/
    995959int Histo2D::FindMax(int& im,int& jm,int SzPav,float Dz
    996960                    ,int il,int ih,int jl,int jh)
    997 //
    998 //      Pour trouver le maximum de l'histogramme en tenant compte
    999 //      des fluctuations.
    1000 //| Methode:
    1001 //| 1-/ On recherche le bin maximum MAX de l'histogramme
    1002 //| 2-/ On considere que tous les pixels compris entre [MAX-Dz,MAX]
    1003 //|     peuvent etre des pixels maxima.
    1004 //| 3-/ On identifie le bin maximum en choissisant le pixel du 2-/
    1005 //|     tel que la somme des pixels dans un pave SzPav x SzPav soit maximale.
    1006 //| INPUT:
    1007 //|  SzPav = taille du pave pour departager
    1008 //|  Dz    = tolerance pour identifier tous les pixels "maximum"
    1009 //| OUTPUT:
    1010 //|  im,jm = pixel maximum trouve
    1011 //| RETURN:
    1012 //|   <0 =  Echec
    1013 //|   >0 =  nombre de pixels possibles pour le maximum
    1014 //--
    1015961{
    1016962if( il > ih ) { il = 0; ih = nx-1; }
     
    1046992
    1047993//////////////////////////////////////////////////////////
    1048 //++
     994/*!
     995  Fit de l'histogramme par ``gfit''.
     996  \verbatim
     997    typ_err = 0 :
     998       - erreur attachee au bin si elle existe
     999       - sinon 1
     1000    typ_err = 1 :
     1001       - erreur attachee au bin si elle existe
     1002       - sinon max( sqrt(abs(bin) ,1 )
     1003    typ_err = 2 :
     1004       - erreur forcee a 1
     1005    typ_err = 3 :
     1006       - erreur forcee a max( sqrt(abs(bin) ,1 )
     1007    typ_err = 4 :
     1008       - erreur forcee a 1, nulle si bin a zero.
     1009    typ_err = 5 :
     1010       - erreur forcee a max( sqrt(abs(bin) ,1 ),
     1011         nulle si bin a zero.
     1012  \endverbatim
     1013*/
    10491014int  Histo2D::Fit(GeneralFit& gfit,unsigned short typ_err)
    1050 //
    1051 //      Fit de l'histogramme par ``gfit''.
    1052 //| typ_err = 0 :
    1053 //|    - erreur attachee au bin si elle existe
    1054 //|    - sinon 1
    1055 //| typ_err = 1 :
    1056 //|    - erreur attachee au bin si elle existe
    1057 //|    - sinon max( sqrt(abs(bin) ,1 )
    1058 //| typ_err = 2 :
    1059 //|    - erreur forcee a 1
    1060 //| typ_err = 3 :
    1061 //|    - erreur forcee a max( sqrt(abs(bin) ,1 )
    1062 //| typ_err = 4 :
    1063 //|    - erreur forcee a 1, nulle si bin a zero.
    1064 //| typ_err = 5 :
    1065 //|    - erreur forcee a max( sqrt(abs(bin) ,1 ),
    1066 //|      nulle si bin a zero.
    1067 //--
    10681015{
    10691016if(NBinX()*NBinY()<=0) return -1000;
     
    10921039}
    10931040
    1094 //++
     1041/*!
     1042  Retourne une classe contenant les residus du fit ``gfit''.
     1043*/
    10951044Histo2D Histo2D::FitResidus(GeneralFit& gfit)
    1096 //
    1097 //      Retourne une classe contenant les residus du fit ``gfit''.
    1098 //--
    10991045{
    11001046if(NBinX()<=0 || NBinY()<=0)
     
    11141060}
    11151061
    1116 //++
     1062/*!
     1063  Retourne une classe contenant la fonction du fit ``gfit''.
     1064*/
    11171065Histo2D Histo2D::FitFunction(GeneralFit& gfit)
    1118 //
    1119 //      Retourne une classe contenant la fonction du fit ``gfit''.
    1120 //--
    11211066{
    11221067if(NBinX()<=0 || NBinY()<=0)
     
    11371082
    11381083///////////////////////////////////////////////////////////////////
    1139 //++
     1084/*!
     1085  Impression des informations sur l'histogramme.
     1086*/
    11401087void Histo2D::PrintStatus()
    1141 //
    1142 //      Impression des informations sur l'histogramme.
    1143 //--
    11441088{
    11451089printf("~Histo::Print    nHist=%g nEntries=%d\n",nHist,nEntries);
     
    11531097
    11541098///////////////////////////////////////////////////////////////////
    1155 //++
     1099/*!
     1100  Impression de l'histogramme sur stdout entre [il,ih] et [jl,jh].
     1101  \verbatim
     1102    numero d'index:  00000000001111111111222222222233333
     1103                     01234567890123456789012345678901234
     1104    valeur entiere:  00000000001111111111222222222233333
     1105                     12345678901234567890123456789012345
     1106  \endverbatim
     1107*/
    11561108void Histo2D::Print(float min,float max
    11571109                   ,int il,int ih,int jl,int jh)
    1158 //
    1159 //      Impression de l'histogramme sur stdout entre [il,ih] et [jl,jh].
    1160 //--
    11611110{
    11621111int ns = 35;
    1163 // numero d'index:  00000000001111111111222222222233333
    1164 //                  01234567890123456789012345678901234
    1165 // valeur entiere:  00000000001111111111222222222233333
    1166 //                  12345678901234567890123456789012345
    11671112const char *s =    "+23456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    11681113
     
    12451190}
    12461191
    1247 // Rappel des inline functions pour commentaires
    1248 //++
    1249 // inline float   XMin()
    1250 //      Retourne l'abscisse minimum.
    1251 //--
    1252 //++
    1253 // inline float   XMax()
    1254 //      Retourne l'abscisse maximum.
    1255 //--
    1256 //++
    1257 // inline float   YMin()
    1258 //      Retourne l'ordonnee minimum.
    1259 //--
    1260 //++
    1261 // inline float   YMax()
    1262 //      Retourne l'ordonnee maximum.
    1263 //--
    1264 //++
    1265 // inline int     NBinX()
    1266 //      Retourne le nombre de bins selon X.
    1267 //--
    1268 //++
    1269 // inline int     NBinY()
    1270 //      Retourne le nombre de bins selon Y.
    1271 //--
    1272 //++
    1273 // inline float   WBinX()
    1274 //      Retourne la largeur du bin selon X.
    1275 //--
    1276 //++
    1277 // inline float   WBinY()
    1278 //      Retourne la largeur du bin selon Y.
    1279 //--
    1280 //++
    1281 // inline float*  Bins() const
    1282 //      Retourne le pointeur sur le tableaux des contenus.
    1283 //--
    1284 //++
    1285 // inline float   operator()(int i,int j) const
    1286 //      Retourne le contenu du bin i,j.
    1287 //--
    1288 //++
    1289 // inline float&  operator()(int i,int j)
    1290 //      Remplit le contenu du bin i,j.
    1291 //--
    1292 //++
    1293 // inline float   Error(int i,int j)  const
    1294 //      Retourne l'erreur du bin i,j.
    1295 //--
    1296 //++
    1297 // inline double  Error2(int i,int j) const
    1298 //      Retourne l'erreur au carre du bin i,j.
    1299 //--
    1300 //++
    1301 // inline double& Error2(int i,int j)
    1302 //      Remplit l'erreur au carre du bin i,j.
    1303 //--
    1304 //++
    1305 // inline float   NData() const
    1306 //      Retourne la somme ponderee.
    1307 //--
    1308 //++
    1309 // inline int     NEntries() const
    1310 //      Retourne le nombre d'entrees.
    1311 //--
    1312 //++
    1313 // inline void BinLowEdge(int i,int j,float& x,float& y)
    1314 //      Retourne l'abscisse et l'ordonnee du coin inferieur du bin i,j.
    1315 //--
    1316 //++
    1317 // inline void BinCenter(int i,int j,float& x,float& y)
    1318 //      Retourne l'abscisse et l'ordonnee du centre du bin i,j.
    1319 //--
    1320 //++
    1321 // inline void BinHighEdge(int i,int j,float& x,float& y)
    1322 //      Retourne l'abscisse et l'ordonnee du coin superieur du bin i,j.
    1323 //--
    1324 //++
    1325 // inline void FindBin(float x,float y,int& i,int& j)
    1326 //      Retourne les numeros du bin contenant l'abscisse et l'ordonnee x,y.
    1327 //--
    1328 
    1329 ///////////////////////////////////////////////////////////////////
    1330 //++
     1192///////////////////////////////////////////////////////////////////
    13311193// Titre        Methodes pour gerer les projections
    1332 //--
    1333 
    1334 //++
     1194
     1195/*!
     1196  Pour creer la projection X.
     1197*/
    13351198void Histo2D::SetProjX()
    1336 //
    1337 //      Pour creer la projection X.
    1338 //--
    13391199{
    13401200if( hprojx != NULL ) DelProjX();
     
    13431203}
    13441204
    1345 //++
     1205/*!
     1206  Pour creer la projection Y.
     1207*/
    13461208void Histo2D::SetProjY()
    1347 //
    1348 //      Pour creer la projection Y.
    1349 //--
    13501209{
    13511210if( hprojy != NULL ) DelProjY();
     
    13541213}
    13551214
    1356 //++
     1215/*!
     1216  Pour creer les projections X et Y.
     1217*/
    13571218void Histo2D::SetProj()
    1358 //
    1359 //      Pour creer les projections X et Y.
    1360 //--
    13611219{
    13621220SetProjX();
     
    13641222}
    13651223
    1366 //++
     1224/*!
     1225  Informations sur les projections.
     1226*/
    13671227void Histo2D::ShowProj()
    1368 //
    1369 //      Informations sur les projections.
    1370 //--
    13711228{
    13721229if( hprojx != NULL ) cout << ">>>> Projection X set : "<< hprojx <<endl;
     
    13761233}
    13771234
    1378 //++
     1235/*!
     1236  Destruction de l'histogramme de la projection selon X.
     1237*/
    13791238void Histo2D::DelProjX()
    1380 //
    1381 //      Destruction de l'histogramme de la projection selon X.
    1382 //--
    13831239{
    13841240if( hprojx == NULL ) return;
     
    13871243}
    13881244
    1389 //++
     1245/*!
     1246  Destruction de l'histogramme de la projection selon X.
     1247*/
    13901248void Histo2D::DelProjY()
    1391 //
    1392 //      Destruction de l'histogramme de la projection selon X.
    1393 //--
    13941249{
    13951250if( hprojy == NULL ) return;
     
    13981253}
    13991254
    1400 //++
     1255/*!
     1256  Destruction des histogrammes des projections selon X et Y.
     1257*/
    14011258void Histo2D::DelProj()
    1402 //
    1403 //      Destruction des histogrammes des projections selon X et Y.
    1404 //--
    14051259{
    14061260DelProjX();
     
    14081262}
    14091263
    1410 //++
     1264/*!
     1265  Remise a zero de la projection selon X.
     1266*/
    14111267void Histo2D::ZeroProjX()
    1412 //
    1413 //      Remise a zero de la projection selon X.
    1414 //--
    14151268{
    14161269if( hprojx == NULL ) return;
     
    14181271}
    14191272
    1420 //++
     1273/*!
     1274  Remise a zero de la projection selon Y.
     1275*/
    14211276void Histo2D::ZeroProjY()
    1422 //
    1423 //      Remise a zero de la projection selon Y.
    1424 //--
    14251277{
    14261278if( hprojy == NULL ) return;
     
    14281280}
    14291281
    1430 //++
     1282/*!
     1283  Remise a zero des projections selon X et Y.
     1284*/
    14311285void Histo2D::ZeroProj()
    1432 //
    1433 //      Remise a zero des projections selon X et Y.
    1434 //--
    14351286{
    14361287ZeroProjX();
     
    14381289}
    14391290
    1440 // Rappel des inline functions pour commentaires
    1441 //++
    1442 // inline Histo*  HProjX()
    1443 //      Retourne le pointeur sur l'histo 1D de la projection selon X.
    1444 //--
    1445 //++
    1446 // inline Histo*  HProjY()
    1447 //      Retourne le pointeur sur l'histo 1D de la projection selon Y.
    1448 //--
    1449 
    1450 ///////////////////////////////////////////////////////////////////
    1451 //++
     1291///////////////////////////////////////////////////////////////////
    14521292// Titre        Methodes pour gerer les bandes
    1453 //--
    1454 
    1455 //++
     1293
     1294/*!
     1295  Pour creer une bande en X entre ybmin et ybmax.
     1296*/
    14561297int Histo2D::SetBandX(float ybmin,float ybmax)
    1457 //
    1458 //      Pour creer une bande en X entre ybmin et ybmax.
    1459 //--
    14601298{
    14611299b_s.num = lbandx.size();
     
    14681306}
    14691307
    1470 //++
     1308/*!
     1309  Pour creer une bande en Y entre xbmin et xbmax.
     1310*/
    14711311int Histo2D::SetBandY(float xbmin,float xbmax)
    1472 //
    1473 //      Pour creer une bande en Y entre xbmin et xbmax.
    1474 //--
    14751312{
    14761313b_s.num = lbandy.size();
     
    14831320}
    14841321
    1485 //++
     1322/*!
     1323  Destruction des histogrammes des bandes selon X.
     1324*/
    14861325void Histo2D::DelBandX()
    1487 //
    1488 //      Destruction des histogrammes des bandes selon X.
    1489 //--
    14901326{
    14911327if( lbandx.size() <= 0 ) return;
     
    14951331}
    14961332
    1497 //++
     1333/*!
     1334  Destruction des histogrammes des bandes selon Y.
     1335*/
    14981336void Histo2D::DelBandY()
    1499 //
    1500 //      Destruction des histogrammes des bandes selon Y.
    1501 //--
    15021337{
    15031338if( lbandy.size() <= 0 ) return;
     
    15071342}
    15081343
    1509 //++
     1344/*!
     1345  Remise a zero des bandes selon X.
     1346*/
    15101347void Histo2D::ZeroBandX()
    1511 //
    1512 //      Remise a zero des bandes selon X.
    1513 //--
    15141348{
    15151349if( lbandx.size() <= 0 ) return;
     
    15191353}
    15201354
    1521 //++
     1355/*!
     1356  Remise a zero des bandes selon Y.
     1357*/
    15221358void Histo2D::ZeroBandY()
    1523 //
    1524 //      Remise a zero des bandes selon Y.
    1525 //--
    15261359{
    15271360if( lbandy.size() <= 0 ) return;
     
    15311364}
    15321365
    1533 //++
     1366/*!
     1367  Retourne un pointeur sur la bande numero `n' selon X.
     1368*/
    15341369Histo* Histo2D::HBandX(int n) const
    1535 //
    1536 //      Retourne un pointeur sur la bande numero `n' selon X.
    1537 //--
    15381370{
    15391371if( lbandx.size() <= 0 || n < 0 || n >= (int) lbandx.size() ) return NULL;
     
    15431375}
    15441376
    1545 //++
     1377/*!
     1378  Retourne un pointeur sur la bande numero `n' selon Y.
     1379*/
    15461380Histo* Histo2D::HBandY(int n) const
    1547 //
    1548 //      Retourne un pointeur sur la bande numero `n' selon Y.
    1549 //--
    15501381{
    15511382if( lbandy.size() <= 0 || n < 0 || n >= (int) lbandy.size() ) return NULL;
     
    15551386}
    15561387
    1557 //++
     1388/*!
     1389  Retourne les limites de la bande numero `n' selon X.
     1390*/
    15581391void Histo2D::GetBandX(int n,float& ybmin,float& ybmax) const
    1559 //
    1560 //      Retourne les limites de la bande numero `n' selon X.
    1561 //--
    15621392{
    15631393ybmin = 0.; ybmax = 0.;
     
    15681398}
    15691399
    1570 //++
     1400/*!
     1401  Retourne les limites de la bande numero `n' selon Y.
     1402*/
    15711403void Histo2D::GetBandY(int n,float& xbmin,float& xbmax) const
    1572 //
    1573 //      Retourne les limites de la bande numero `n' selon Y.
    1574 //--
    15751404{
    15761405xbmin = 0.; xbmax = 0.;
     
    15811410}
    15821411
    1583 //++
     1412/*!
     1413  Informations sur les bandes.
     1414*/
    15841415void Histo2D::ShowBand(int lp)
    1585 //
    1586 //      Informations sur les bandes.
    1587 //--
    15881416{
    15891417  cout << ">>>> Nombre de bande X : " << lbandx.size() << endl;
     
    16081436}
    16091437
    1610 // Rappel des inline functions pour commentaires
    1611 //++
    1612 // inline int     NBandX()
    1613 //      Retourne le nombre de bandes selon X
    1614 //--
    1615 //++
    1616 // inline int     NBandY()
    1617 //      Retourne le nombre de bandes selon Y
    1618 //--
    1619 
    1620 ///////////////////////////////////////////////////////////////////
    1621 //++
    1622 // Titre        Methodes pour gerer les bandes equidistantes
    1623 //--
    1624 
    1625 //++
     1438///////////////////////////////////////////////////////////////////
     1439// Titre  Methodes pour gerer les bandes equidistantes ou slices
     1440
     1441/*!
     1442  Pour creer `nsli' bandes equidistantes selon X.
     1443*/
    16261444int Histo2D::SetSliX(int nsli)
    1627 //
    1628 //      Pour creer `nsli' bandes equidistantes selon X.
    1629 //--
    16301445{
    16311446if( nsli <= 0 ) return -1;
     
    16451460}
    16461461
    1647 //++
     1462/*!
     1463  Pour creer `nsli' bandes equidistantes selon Y.
     1464*/
    16481465int Histo2D::SetSliY(int nsli)
    1649 //
    1650 //      Pour creer `nsli' bandes equidistantes selon Y.
    1651 //--
    16521466{
    16531467if( nsli <= 0 ) return -1;
     
    16671481}
    16681482
    1669 //++
     1483/*!
     1484  Destruction des bandes equidistantes selon X.
     1485*/
    16701486void Histo2D::DelSliX()
    1671 //
    1672 //      Destruction des bandes equidistantes selon X.
    1673 //--
    16741487{
    16751488if( lslix.size() <= 0 ) return;
     
    16791492}
    16801493
    1681 //++
     1494/*!
     1495  Destruction des bandes equidistantes selon Y.
     1496*/
    16821497void Histo2D::DelSliY()
    1683 //
    1684 //      Destruction des bandes equidistantes selon Y.
    1685 //--
    16861498{
    16871499if( lsliy.size() <= 0 ) return;
     
    16911503}
    16921504
    1693 //++
     1505/*!
     1506  Remise a zero des bandes equidistantes selon X.
     1507*/
    16941508void Histo2D::ZeroSliX()
    1695 //
    1696 //      Remise a zero des bandes equidistantes selon X.
    1697 //--
    16981509{
    16991510if( lslix.size() <= 0 ) return;
     
    17031514}
    17041515
    1705 //++
     1516/*!
     1517  Remise a zero des bandes equidistantes selon Y.
     1518*/
    17061519void Histo2D::ZeroSliY()
    1707 //
    1708 //      Remise a zero des bandes equidistantes selon Y.
    1709 //--
    17101520{
    17111521if( lsliy.size() <= 0 ) return;
     
    17151525}
    17161526
    1717 //++
     1527/*!
     1528  Retourne un pointeur sur la bande equidistante numero `n'
     1529  selon X.
     1530*/
    17181531Histo* Histo2D::HSliX(int n) const
    1719 //
    1720 //      Retourne un pointeur sur la bande equidistante numero `n'
    1721 //      selon X.
    1722 //--
    17231532{
    17241533if( lslix.size() <= 0 || n < 0 || n >= (int) lslix.size() ) return NULL;
     
    17281537}
    17291538
    1730 //++
     1539/*!
     1540  Retourne un pointeur sur la bande equidistante numero `n'
     1541  selon Y.
     1542*/
    17311543Histo* Histo2D::HSliY(int n) const
    1732 //
    1733 //      Retourne un pointeur sur la bande equidistante numero `n'
    1734 //      selon Y.
    1735 //--
    17361544{
    17371545if( lsliy.size() <= 0 || n < 0 || n >= (int) lsliy.size() ) return NULL;
     
    17411549}
    17421550
    1743 //++
     1551/*!
     1552  Informations sur les bandes equidistantes.
     1553*/
    17441554void Histo2D::ShowSli(int lp)
    1745 //
    1746 //      Informations sur les bandes equidistantes.
    1747 //--
    17481555{
    17491556list<bande_slice>::iterator i;
     
    17641571  }
    17651572}
    1766 
    1767 // Rappel des inline functions pour commentaires
    1768 //++
    1769 // inline int     NSliX()
    1770 //      Retourne le nombre de slices selon X
    1771 //--
    1772 //++
    1773 // inline int     NSliY()
    1774 //      Retourne le nombre de slices selon Y
    1775 //--
    1776 
    17771573
    17781574///////////////////////////////////////////////////////////
Note: See TracChangeset for help on using the changeset viewer.