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

    r763 r914  
    11//
    2 // $Id: histos.cc,v 1.1.1.1 2000-03-02 16:51:32 ansari Exp $
     2// $Id: histos.cc,v 1.2 2000-04-13 16:04:11 ansari Exp $
    33//
    44
     
    1313#include "generalfit.h"
    1414
    15 //++
    16 // Class        Histo
    17 // Lib  Outils++
    18 // include      histos.h
    19 //
    20 //      Classe d'histogrammes 1D
    21 //--
    22 
    23 //++
    24 // Titre        Constructeurs
    25 //--
    26 
    27 /********* Methode *********/
    28 //++
     15/********* Methode *********/
     16/*! Constructeur par defaut */
    2917Histo::Histo()
    30 //
    31 //--
    3218: data(NULL), err2(NULL),
    3319  under(0), over(0), nHist(0), nEntries(0),
     
    3925
    4026/********* Methode *********/
    41 //++
     27/*! Constructeur d'un histo de nBin bins allant de xMin a xMax */
    4228Histo::Histo(float xMin, float xMax, int nBin)
    43 //
    44 //--
    4529: data(new float[nBin]), err2(NULL),
    4630  under(0), over(0), nHist(0), nEntries(0),
     
    5337
    5438/********* Methode *********/
    55 //++
     39/*! Constructeur par copie */
    5640Histo::Histo(const Histo& H)
    57 //
    58 //--
    5941: data(new float[H.bins]), err2(NULL),
    6042  under(H.under), over(H.over), nHist(H.nHist), nEntries(H.nEntries),
     
    7153
    7254/********* Methode *********/
     55/*! Gestion de la des-allocation */
    7356void Histo::Delete()
    7457{
     
    8164
    8265/********* Methode *********/
     66/*! Destructeur */
    8367Histo::~Histo()
    8468{
     
    8670}
    8771
    88 //++
    89 // Titre        Methodes
    90 //--
    91 
    92 /********* Methode *********/
    93 //++
     72/********* Methode *********/
     73/*!
     74  Remise a zero
     75*/
    9476void Histo::Zero()
    95 //
    96 //      Remise a zero
    97 //--
    9877{
    9978  memset(data, 0, bins*sizeof(float));
     
    10584
    10685/********* Methode *********/
    107 //++
     86/*!
     87  Pour avoir le calcul des erreurs
     88*/
    10889void Histo::Errors()
    109 //
    110 //      Pour avoir le calcul des erreurs
    111 //--
    11290{
    11391 if( bins > 0 ) {
     
    11896
    11997/********* Methode *********/
    120 //++
     98/*!
     99  Operateur egal
     100*/
    121101Histo& Histo::operator = (const Histo& h)
    122 //
    123 //--
    124102{
    125103  if(this == &h) return *this;
     
    145123
    146124/********* Methode *********/
    147 //++
     125/*!
     126  Operateur de multiplication par une constante
     127*/
    148128Histo& Histo::operator *= (double b)
    149 //
    150 //--
    151129{
    152130double b2 = b*b;
     
    162140}
    163141
    164 //++
     142/*!
     143  Operateur de division par une constante
     144*/
    165145Histo& Histo::operator /= (double b)
    166 //
    167 //--
    168146{
    169147if (b==0.) THROW(inconsistentErr);
     
    180158}
    181159
    182 //++
     160/*!
     161  Operateur d'addition d'une constante
     162*/
    183163Histo& Histo::operator += (double b)
    184 //
    185 //--
    186164{
    187165for(int i=0;i<bins;i++) data[i] += b;
     
    193171}
    194172
    195 //++
     173/*!
     174  Operateur de soustraction d'une constante
     175*/
    196176Histo& Histo::operator -= (double b)
    197 //
    198 //--
    199177{
    200178for(int i=0;i<bins;i++) data[i] -= b;
     
    207185
    208186/********* Methode *********/
    209 //++
     187/*!
     188  Operateur H2 = H1 * b
     189*/
    210190Histo operator * (const Histo& a, double b)
    211 //
    212 //--
    213191{
    214192  Histo result(a);
     
    216194}
    217195
    218 //++
     196/*!
     197  Operateur H2 = b * H1
     198*/
    219199Histo operator * (double b, const Histo& a)
    220 //
    221 //--
    222200{
    223201  Histo result(a);
     
    225203}
    226204
    227 //++
     205/*!
     206  Operateur H2 = H1 / b
     207*/
    228208Histo operator / (const Histo& a, double b)
    229 //
    230 //--
    231209{
    232210  Histo result(a);
     
    234212}
    235213
    236 //++
     214/*!
     215  Operateur H2 = H1 + b
     216*/
    237217Histo operator + (const Histo& a, double b)
    238 //
    239 //--
    240218{
    241219  Histo result(a);
     
    243221}
    244222
    245 //++
     223/*!
     224  Operateur H2 = b + H1
     225*/
    246226Histo operator + (double b, const Histo& a)
    247 //
    248 //--
    249227{
    250228  Histo result(a);
     
    252230}
    253231
    254 //++
     232/*!
     233  Operateur H2 = H1 - b
     234*/
    255235Histo operator - (const Histo& a, double b)
    256 //
    257 //--
    258236{
    259237  Histo result(a);
     
    261239}
    262240
    263 //++
     241/*!
     242  Operateur H2 = b - H1
     243*/
    264244Histo operator - (double b, const Histo& a)
    265 //
    266 //--
    267245{
    268246  Histo result(a);
     
    272250
    273251/********* Methode *********/
    274 //++
     252/*!
     253  Operateur H += H1
     254*/
    275255Histo& Histo::operator += (const Histo& a)
    276 //
    277 //--
    278256{
    279257if(bins!=a.bins) THROW(sizeMismatchErr);
     
    291269}
    292270
    293 //++
     271/*!
     272  Operateur H -= H1
     273*/
    294274Histo& Histo::operator -= (const Histo& a)
    295 //
    296 //--
    297275{
    298276if(bins!=a.bins) THROW(sizeMismatchErr);
     
    310288}
    311289
    312 //++
     290/*!
     291  Operateur H *= H1
     292*/
    313293Histo& Histo::operator *= (const Histo& a)
    314 //
    315 //--
    316294{
    317295if(bins!=a.bins) THROW(sizeMismatchErr);
     
    331309}
    332310
    333 //++
     311/*!
     312  Operateur H /= H1
     313*/
    334314Histo& Histo::operator /= (const Histo& a)
    335 //
    336 //--
    337315{
    338316if(bins!=a.bins) THROW(sizeMismatchErr);
     
    359337
    360338/********* Methode *********/
    361 //++
     339/*!
     340  Operateur H = H1 + H2
     341*/
    362342Histo operator + (const Histo& a, const Histo& b)
    363 //
    364 //--
    365343{
    366344if (b.NBins()!=a.NBins()) THROW(sizeMismatchErr);
     
    369347}
    370348
    371 //++
     349/*!
     350  Operateur H = H1 - H2
     351*/
    372352Histo operator - (const Histo& a, const Histo& b)
    373 //
    374 //--
    375353{
    376354if (b.NBins()!=a.NBins()) THROW(sizeMismatchErr);
     
    379357}
    380358
    381 //++
     359/*!
     360  Operateur H = H1 * H2
     361*/
    382362Histo operator * (const Histo& a, const Histo& b)
    383 //
    384 //--
    385363{
    386364if (b.NBins()!=a.NBins()) THROW(sizeMismatchErr);
     
    389367}
    390368
    391 //++
     369/*!
     370  Operateur H = H1 / H2
     371*/
    392372Histo operator / (const Histo& a, const Histo& b)
    393 //
    394 //--
    395373{
    396374if (b.NBins()!=a.NBins()) THROW(sizeMismatchErr);
     
    400378
    401379/********* Methode *********/
    402 //++
     380/*!
     381  Remplissage d'un tableau avec la valeur des abscisses
     382*/
    403383void Histo::GetAbsc(Vector &v)
    404 //
    405 //      Remplissage d'un tableau avec la valeur des abscisses
    406 //--
    407384{
    408385v.Realloc(bins);
     
    411388}
    412389
    413 //++
     390/*!
     391  Remplissage d'un tableau avec la valeur du contenu
     392*/
    414393void Histo::GetValue(Vector &v)
    415 //
    416 //      Remplissage d'un tableau avec la valeur du contenu
    417 //--
    418394{
    419395v.Realloc(bins);
     
    422398}
    423399
    424 //++
     400/*!
     401  Remplissage d'un tableau avec la valeur des erreurs au carre
     402*/
    425403void Histo::GetError2(Vector &v)
    426 //
    427 //      Remplissage d'un tableau avec la valeur des erreurs au carre
    428 //--
    429404{
    430405v.Realloc(bins);
     
    434409}
    435410
    436 //++
     411/*!
     412  Remplissage d'un tableau avec la valeur des erreurs
     413*/
    437414void Histo::GetError(Vector &v)
    438 //
    439 //      Remplissage d'un tableau avec la valeur des erreurs
    440 //--
    441415{
    442416v.Realloc(bins);
     
    447421
    448422/********* Methode *********/
    449 //++
     423/*!
     424  Remplissage du contenu de l'histo avec les valeurs d'un vecteur
     425*/
    450426void Histo::PutValue(Vector &v, int ierr)
    451 //
    452 //      Remplissage du contenu de l'histo avec les valeurs d'un vecteur
    453 //--
    454427{
    455428if(v.NElts()<bins) THROW(sizeMismatchErr);
     
    461434}
    462435
    463 //++
     436/*!
     437  Addition du contenu de l'histo avec les valeurs d'un vecteur
     438*/
    464439void Histo::PutValueAdd(Vector &v, int ierr)
    465 //
    466 //      Addition du contenu de l'histo avec les valeurs d'un vecteur
    467 //--
    468440{
    469441if(v.NElts()<bins) THROW(sizeMismatchErr);
     
    475447}
    476448
    477 //++
     449/*!
     450  Remplissage des erreurs au carre de l'histo avec les valeurs d'un vecteur
     451*/
    478452void Histo::PutError2(Vector &v)
    479 //
    480 //      Remplissage des erreurs au carre de l'histo avec les valeurs d'un vecteur
    481 //--
    482453{
    483454if(v.NElts()<bins) THROW(sizeMismatchErr);
     
    487458}
    488459
    489 //++
     460/*!
     461  Addition des erreurs au carre de l'histo avec les valeurs d'un vecteur
     462*/
    490463void Histo::PutError2Add(Vector &v)
    491 //
    492 //      Addition des erreurs au carre de l'histo avec les valeurs d'un vecteur
    493 //--
    494464{
    495465if(v.NElts()<bins) THROW(sizeMismatchErr);
     
    499469}
    500470
    501 //++
     471/*!
     472  Remplissage des erreurs de l'histo avec les valeurs d'un vecteur
     473*/
    502474void Histo::PutError(Vector &v)
    503 //
    504 //      Remplissage des erreurs de l'histo avec les valeurs d'un vecteur
    505 //--
    506475{
    507476if(v.NElts()<bins) THROW(sizeMismatchErr);
     
    513482
    514483/********* Methode *********/
    515 //++
     484/*!
     485  Addition du contenu de l'histo pour abscisse x poids w
     486*/
    516487void Histo::Add(float x, float w)
    517 //
    518 //      Addition du contenu de l'histo pour abscisse x poids w
    519 //--
    520488{
    521489  int numBin = FindBin(x);
     
    531499
    532500/********* Methode *********/
    533 //++
     501/*!
     502  Addition du contenu de l'histo bin numBin poids w
     503*/
    534504void Histo::AddBin(int numBin, float w)
    535 //
    536 //      Addition du contenu de l'histo bin numBin poids w
    537 //--
    538505{
    539506  if (numBin<0) under += w;
     
    548515
    549516/********* Methode *********/
    550 //++
     517/*!
     518  Remplissage du contenu de l'histo pour abscisse x poids w
     519*/
    551520void Histo::SetBin(float x, float w)
    552 //
    553 //      Remplissage du contenu de l'histo pour abscisse x poids w
    554 //--
    555521{
    556522  int numBin = FindBin(x);
     
    559525
    560526/********* Methode *********/
    561 //++
     527/*!
     528  Remplissage du contenu de l'histo pour numBin poids w
     529*/
    562530void Histo::SetBin(int numBin, float w)
    563 //
    564 //      Remplissage du contenu de l'histo pour numBin poids w
    565 //--
    566531{
    567532  if (numBin<0) under = w;
     
    575540
    576541/********* Methode *********/
    577 //++
     542/*!
     543  Remplissage des erreurs au carre pour abscisse x
     544*/
    578545void Histo::SetErr2(float x, double e2)
    579 //
    580 //      Remplissage des erreurs au carre pour abscisse x
    581 //--
    582546{
    583547  int numBin = FindBin(x);
     
    586550
    587551/********* Methode *********/
    588 //++
     552/*!
     553  Remplissage des erreurs au carre pour numBin poids
     554*/
    589555void Histo::SetErr2(int numBin, double e2)
    590 //
    591 //      Remplissage des erreurs au carre pour numBin poids
    592 //--
    593556{
    594557  if( err2==NULL) return;
     
    598561
    599562/********* Methode *********/
    600 //++
     563/*!
     564  Remplissage des erreurs pour abscisse x
     565*/
    601566void Histo::SetErr(float x, float e)
    602 //
    603 //      Remplissage des erreurs pour abscisse x
    604 //--
    605567{
    606568SetErr2(x, (double) e*e);
     
    608570
    609571/********* Methode *********/
    610 //++
     572/*!
     573  Remplissage des erreurs pour numBin
     574*/
    611575void Histo::SetErr(int numBin, float e)
    612 //
    613 //      Remplissage des erreurs pour numBin
    614 //--
    615576{
    616577SetErr2(numBin, (double) e*e);
     
    618579
    619580/********* Methode *********/
    620 //++
     581/*!
     582  Numero du bin ayant le contenu maximum
     583*/
    621584int Histo::IMax() const
    622 //
    623 //      Numero du bin ayant le contenu maximum
    624 //--
    625585{
    626586  int imx=0;
     
    633593
    634594/********* Methode *********/
    635 //++
     595/*!
     596  Numero du bin ayant le contenu minimum
     597*/
    636598int Histo::IMin() const
    637 //
    638 //      Numero du bin ayant le contenu minimum
    639 //--
    640599{
    641600  int imx=0;
     
    648607
    649608/********* Methode *********/
    650 //++
     609/*!
     610  Valeur le contenu maximum
     611*/
    651612float Histo::VMax() const
    652 //
    653 //      Valeur le contenu maximum
    654 //--
    655613{
    656614  float mx=data[0];
     
    661619
    662620/********* Methode *********/
    663 //++
     621/*!
     622  Valeur le contenu minimum
     623*/
    664624float Histo::VMin() const
    665 //
    666 //      Valeur le contenu minimum
    667 //--
    668625{
    669626  float mx=data[0];
     
    674631
    675632/********* Methode *********/
    676 //++
     633/*!
     634  Valeur moyenne
     635*/
    677636float Histo::Mean() const
    678 //
    679 //      Valeur moyenne
    680 //--
    681637{
    682638  double n = 0;
     
    691647
    692648/********* Methode *********/
    693 //++
     649/*!
     650  Valeur du sigma
     651*/
    694652float Histo::Sigma() const
    695 //
    696 //      Valeur du sigma
    697 //--
    698653{
    699654  double n = 0;
     
    714669
    715670/********* Methode *********/
    716 //++
     671/*!
     672  Valeur de la moyenne calculee entre les bin il et ih
     673*/
    717674float Histo::MeanLH(int il,int ih) const
    718 //
    719 //      Valeur de la moyenne calculee entre les bin il et ih
    720 //--
    721675{
    722676  if( ih < il ) { il = 0; ih = bins-1; }
     
    734688
    735689/********* Methode *********/
    736 //++
     690/*!
     691  Valeur de la moyenne calculee entre les bin il et ih
     692*/
    737693float Histo::SigmaLH(int il,int ih) const
    738 //
    739 //      Valeur de la moyenne calculee entre les bin il et ih
    740 //--
    741694{
    742695  if( ih < il ) { il = 0; ih = bins - 1; }
     
    759712
    760713/********* Methode *********/
    761 //++
     714/*!
     715  Valeur de la moyenne calculee entre x0-dx et x0+dx
     716*/
    762717float Histo::Mean(float x0, float dx) const
    763 //
    764 //      Valeur de la moyenne calculee entre x0-dx et x0+dx
    765 //--
    766718{
    767719  double sdata = 0;
     
    780732
    781733/********* Methode *********/
    782 //++
     734/*!
     735  Valeur du sigma calcule entre x0-dx et x0+dx
     736*/
    783737float Histo::Sigma(float x0, float dx) const
    784 //
    785 //      Valeur du sigma calcule entre x0-dx et x0+dx
    786 //--
    787738{
    788739  double sx = 0;
     
    804755
    805756/********* Methode *********/
    806 //++
     757/*!
     758  Valeur de la moyenne et du sigma nettoyes
     759*/
    807760float Histo::CleanedMean(float& sigma) const
    808 //
    809 //      Valeur de la moyenne et du sigma nettoyes
    810 //--
    811761{
    812762  if (!nHist) return 0;
     
    825775
    826776/********* Methode *********/
    827 //++
     777/*!
     778  Valeur de la moyenne nettoyee
     779*/
    828780float Histo::CleanedMean() const
    829 //
    830 //      Valeur de la moyenne nettoyee
    831 //--
    832781{
    833782  if (!nHist) return 0;
     
    837786
    838787/********* Methode *********/
    839 //++
     788/*!
     789  Retourne le nombre de bins non-nul
     790*/
    840791int Histo::BinNonNul() const
    841 //
    842 //      Retourne le nombre de bins non-nul
    843 //--
    844792{
    845793int non=0;
     
    849797
    850798/********* Methode *********/
    851 //++
     799/*!
     800  Retourne le nombre de bins ayant une erreur non-nulle
     801*/
    852802int Histo::ErrNonNul() const
    853 //
    854 //      Retourne le nombre de bins ayant une erreur non-nulle
    855 //--
    856803{
    857804if(err2==NULL) return -1;
     
    862809
    863810/********* Methode *********/
    864 //++
     811/*!
     812  Renvoie le numero de bin tel que il y ait "per" pourcent entrees
     813  entre le bin 0 et ce bin (y compris le contenu de ce bin).
     814*/
    865815int Histo::BinPercent(float per) const
    866 //
    867 //      Renvoie le numero de bin tel que il y ait "per" pourcent entrees
    868 //      entre le bin 0 et ce bin (y compris le contenu de ce bin).
    869 //--
    870816{
    871817double n = nHist*per;
     
    881827
    882828/********* Methode *********/
    883 //++
     829/*!
     830  Renvoie les numeros de bins imin,imax (0=<i<bins) tels que:
     831  \verbatim
     832       notons I = bin contenant l'abscisse x
     833              N1 = nombre d'entrees entre bin 0 et I compris
     834              N2 = nombre d'entrees entre bin I et bins-1 compris
     835       imin = bin tel que nombre d'entrees entre imin et I = N1 * per
     836       imax = bin tel que nombre d'entrees entre I et imax = N2 * per
     837     Return: <0 si echec
     838             min(I-imin,imax-I) si ok
     839  \endverbatim
     840*/
    884841int Histo::BinPercent(float x,float per,int& imin,int& imax)
    885 //
    886 //      Renvoie les numeros de bins imin,imax (0=<i<bins) tels que:
    887 //|    notons I = bin contenant l'abscisse x
    888 //|           N1 = nombre d'entrees entre bin 0 et I compris
    889 //|           N2 = nombre d'entrees entre bin I et bins-1 compris
    890 //|    imin = bin tel que nombre d'entrees entre imin et I = N1 * per
    891 //|    imax = bin tel que nombre d'entrees entre I et imax = N2 * per
    892 //|  Return: <0 si echec
    893 //|          min(I-imin,imax-I) si ok
    894 //--
    895842{
    896843imin = imax = -1;
     
    917864
    918865/********* Methode *********/
    919 //++
     866/*!
     867  Idem precedent mais renvoie xmin et xmax
     868*/
    920869int Histo::BinPercent(float x,float per,float& xmin,float& xmax)
    921 //
    922 //      Idem precedent mais renvoie xmin et xmax
    923 //--
    924870{
    925871xmin = xmax = 0.;
     
    931877
    932878/********* Methode *********/
    933 //++
     879/*!
     880  Remplace l'histogramme par son integrale normalise a norm:
     881  si norm <= 0 : pas de normalisation, integration seule
     882*/
    934883void Histo::HInteg(float norm)
    935 //
    936 //      Remplace l'histogramme par son integrale normalise a norm:
    937 //      si norm <= 0 : pas de normalisation, integration seule
    938 //--
    939884{
    940885if(bins>1)
     
    952897
    953898/********* Methode *********/
    954 //++
     899/*!
     900  Remplace l'histogramme par sa derivee
     901*/
    955902void Histo::HDeriv()
    956 //
    957 //      Remplace l'histogramme par sa derivee
    958 //--
    959903{
    960904if( bins <= 1 ) return;
     
    970914
    971915/********* Methode *********/
    972 //++
     916/*!
     917  Pour rebinner l'histogramme sur nbinew bins
     918*/
    973919void Histo::HRebin(int nbinew)
    974 //
    975 //      Pour rebinner l'histogramme sur nbinew bins
    976 //--
    977920{
    978921  if( nbinew <= 0 ) return;
     
    1023966
    1024967/********* Methode *********/
    1025 //++
     968/*!
     969  Retourne le nombre de maxima locaux, la valeur du maximum (maxi)
     970  et sa position (imax), ainsi que la valeur du second maximum
     971  local (maxn) et sa position (imaxn).
     972  Attention: si un maximum a la meme valeur sur plusieurs bins
     973  consecutifs, le bin le plus a droite est pris.
     974*/
    1026975int Histo::MaxiLocal(float& maxi,int& imax,float& maxn,int& imaxn)
    1027 //
    1028 //      Retourne le nombre de maxima locaux, la valeur du maximum (maxi)
    1029 //      et sa position (imax), ainsi que la valeur du second maximum
    1030 //      local (maxn) et sa position (imaxn).
    1031 //      Attention: si un maximum a la meme valeur sur plusieurs bins
    1032 //      consecutifs, le bin le plus a droite est pris.
    1033 //--
    1034976{
    1035977int nml = 0;
     
    10641006
    10651007/********* Methode *********/
    1066 //++
     1008/*!
     1009  Fit de la position du maximum de l'histo par un polynome
     1010  de degre `degree' a `frac' pourcent du maximum.
     1011  L'histo est suppose etre remplit de valeurs positives
     1012*/
    10671013float Histo::FitMax(int degree, float frac, int debug) const
    1068 //
    1069 //      Fit de la position du maximum de l'histo par un polynome
    1070 //      de degre `degree' a `frac' pourcent du maximum.
    1071 //      L'histo est suppose etre remplit de valeurs positives
    1072 //--
    10731014{
    10741015  if (degree < 2 || degree > 3) degree = 3;
     
    12001141
    12011142/********* Methode *********/
    1202 //++
     1143/*!
     1144  Calcul de la largeur a frac pourcent du maximum
     1145  autour du bin du maximum.
     1146  L'histo est suppose etre remplit de valeurs positives
     1147*/
    12031148float Histo::FindWidth(float frac, int debug) const
    1204 //
    1205 //      Calcul de la largeur a frac pourcent du maximum
    1206 //      autour du bin du maximum.
    1207 //      L'histo est suppose etre remplit de valeurs positives
    1208 //--
    12091149{
    12101150  float xmax = BinCenter( IMax() );
     
    12131153
    12141154/********* Methode *********/
    1215 //++
     1155/*!
     1156  Calcul de la largeur a frac pourcent de la valeur du bin xmax.
     1157  L'histo est suppose etre remplit de valeurs positives
     1158*/
    12161159float Histo::FindWidth(float xmax,float frac, int debug) const
    1217 //
    1218 //      Calcul de la largeur a frac pourcent de la valeur du bin xmax.
    1219 //      L'histo est suppose etre remplit de valeurs positives
    1220 //--
    12211160{
    12221161  if (frac <= 0 || frac >= 1.) frac = 0.5;
     
    12921231
    12931232/********* Methode *********/
    1294 //++
     1233/*!
     1234  Cf suivant mais im est le bin du maximum de l'histo
     1235*/
    12951236int Histo::EstimeMax(float& xm,int SzPav)
    1296 //
    1297 //      Cf suivant mais im est le bin du maximum de l'histo
    1298 //--
    12991237{
    13001238int im = IMax();
     
    13031241
    13041242/********* Methode *********/
    1305 //++
     1243/*!
     1244  Determine l'abscisses du maximum donne par im
     1245  en moyennant dans un pave SzPav  autour du maximum
     1246  \verbatim
     1247     Return:
     1248        0 = si fit maximum reussi avec SzPav pixels
     1249        1 = si fit maximum reussi avec moins que SzPav pixels
     1250        2 = si fit maximum echoue et renvoit BinCenter()
     1251       -1 = si echec: SzPav <= 0 ou im hors limites
     1252  \endverbatim
     1253*/
    13061254int Histo::EstimeMax(int& im,float& xm,int SzPav)
    1307 //
    1308 //      Determine l'abscisses du maximum donne par im
    1309 //      en moyennant dans un pave SzPav  autour du maximum
    1310 //|  Return:
    1311 //|     0 = si fit maximum reussi avec SzPav pixels
    1312 //|     1 = si fit maximum reussi avec moins que SzPav pixels
    1313 //|     2 = si fit maximum echoue et renvoit BinCenter()
    1314 //|    -1 = si echec: SzPav <= 0 ou im hors limites
    1315 //--
    13161255{
    13171256xm = 0;
     
    13411280
    13421281/********* Methode *********/
    1343 //++
     1282/*!
     1283  Determine la largeur a frac% du maximum a gauche (widthG)
     1284  et a droite (widthD)
     1285*/
    13441286void Histo::EstimeWidthS(float frac,float& widthG,float& widthD)
    1345 //
    1346 //      Determine la largeur a frac% du maximum a gauche (widthG)
    1347 //      et a droite (widthD)
    1348 //--
    13491287{
    13501288int i;
     
    13851323
    13861324//////////////////////////////////////////////////////////
    1387 //++
     1325/*!
     1326  Fit de l'histogramme par ``gfit''.
     1327  \verbatim
     1328    typ_err = 0 :
     1329       - erreur attachee au bin si elle existe
     1330       - sinon 1
     1331    typ_err = 1 :
     1332       - erreur attachee au bin si elle existe
     1333       - sinon max( sqrt(abs(bin) ,1 )
     1334    typ_err = 2 :
     1335       - erreur forcee a 1
     1336    typ_err = 3 :
     1337       - erreur forcee a max( sqrt(abs(bin) ,1 )
     1338    typ_err = 4 :
     1339       - erreur forcee a 1, nulle si bin a zero.
     1340    typ_err = 5 :
     1341       - erreur forcee a max( sqrt(abs(bin) ,1 ),
     1342         nulle si bin a zero.
     1343  \endverbatim
     1344*/
    13881345int  Histo::Fit(GeneralFit& gfit,unsigned short typ_err)
    1389 //
    1390 //      Fit de l'histogramme par ``gfit''.
    1391 //| typ_err = 0 :
    1392 //|    - erreur attachee au bin si elle existe
    1393 //|    - sinon 1
    1394 //| typ_err = 1 :
    1395 //|    - erreur attachee au bin si elle existe
    1396 //|    - sinon max( sqrt(abs(bin) ,1 )
    1397 //| typ_err = 2 :
    1398 //|    - erreur forcee a 1
    1399 //| typ_err = 3 :
    1400 //|    - erreur forcee a max( sqrt(abs(bin) ,1 )
    1401 //| typ_err = 4 :
    1402 //|    - erreur forcee a 1, nulle si bin a zero.
    1403 //| typ_err = 5 :
    1404 //|    - erreur forcee a max( sqrt(abs(bin) ,1 ),
    1405 //|      nulle si bin a zero.
    1406 //--
    14071346{
    14081347if(NBins()<=0) return -1000;
     
    14301369}
    14311370
    1432 //++
     1371/*!
     1372  Retourne une classe contenant les residus du fit ``gfit''.
     1373*/
    14331374Histo Histo::FitResidus(GeneralFit& gfit)
    1434 //
    1435 //      Retourne une classe contenant les residus du fit ``gfit''.
    1436 //--
    14371375{
    14381376if(NBins()<=0)
     
    14501388}
    14511389
    1452 //++
     1390/*!
     1391  Retourne une classe contenant la fonction du fit ``gfit''.
     1392*/
    14531393Histo Histo::FitFunction(GeneralFit& gfit)
    1454 //
    1455 //      Retourne une classe contenant la fonction du fit ``gfit''.
    1456 //--
    14571394{
    14581395if(NBins()<=0)
     
    14711408
    14721409/********* Methode *********/
    1473 //++
     1410/*!
     1411  Impression de l'histogramme dans le fichier fp
     1412  \verbatim
     1413      hdyn = nombre de colonnes pour imprimer les etoiles
     1414          si =0 alors defaut(100),
     1415          si <0 pas de print histo seulement infos
     1416      hmin = minimum de la dynamique
     1417      hmax = maximum de la dynamique
     1418          si hmax<=hmin           : hmin=VMin() hmax=VMax()
     1419          si hmax<=hmin et hmin=0 : hmin=0 hmax=VMax()
     1420          sinon : hmin hmax
     1421      pflag < 0 : on imprime les informations (nbin,min,...) sans l'histogramme
     1422            = 0 : on imprime  "BinCenter(i) data[i]"  (note "... ...")
     1423            bit 0 on : (v=1): numero_bin "... ..."
     1424            bit 1 on : (v=2): "... ..." erreur
     1425  \endverbatim
     1426*/
    14741427void Histo::PrintF(FILE * fp, int hdyn,float hmin, float hmax,int pflag,
    14751428              int il, int ih)
    1476 //
    1477 //      Impression de l'histogramme dans le fichier fp
    1478 //|   hdyn = nombre de colonnes pour imprimer les etoiles
    1479 //|       si =0 alors defaut(100),
    1480 //|       si <0 pas de print histo seulement infos
    1481 //|   hmin = minimum de la dynamique
    1482 //|   hmax = maximum de la dynamique
    1483 //|       si hmax<=hmin           : hmin=VMin() hmax=VMax()
    1484 //|       si hmax<=hmin et hmin=0 : hmin=0 hmax=VMax()
    1485 //|       sinon : hmin hmax
    1486 //|   pflag < 0 : on imprime les informations (nbin,min,...) sans l'histogramme
    1487 //|         = 0 : on imprime  "BinCenter(i) data[i]"  (note "... ...")
    1488 //|         bit 0 on : (v=1): numero_bin "... ..."
    1489 //|         bit 1 on : (v=2): "... ..." erreur
    1490 //--
    14911429{
    14921430
     
    16421580
    16431581/********* Methode *********/
    1644 //++
     1582/*!
     1583  Impression de l'histogramme sur stdout
     1584*/
    16451585void Histo::Print(int hdyn,float hmin, float hmax,int pflag,
    16461586             int il, int ih)
    1647 //
    1648 //      Impression de l'histogramme sur stdout
    1649 //--
    16501587{
    16511588 Histo::PrintF(stdout, hdyn, hmin, hmax, pflag, il, ih);
    16521589}
    1653 
    1654 
    1655 // Rappel des inlines functions pour commentaires
    1656 //++
    1657 // inline float          XMin() const
    1658 //      Retourne l'abscisse minimum
    1659 //--
    1660 //++
    1661 // inline float          XMax() const
    1662 //      Retourne l'abscisse maximum
    1663 //--
    1664 //++
    1665 // inline int            NBins() const
    1666 //      Retourne le nombre de bins
    1667 //--
    1668 //++
    1669 // inline float          BinWidth() const
    1670 //      Retourne la largeur du bin
    1671 //--
    1672 //++
    1673 // inline float*         Bins() const
    1674 //      Retourne le pointeur sur le tableaux des contenus
    1675 //--
    1676 //++
    1677 // inline float          operator()(int i) const
    1678 //      Retourne le contenu du bin i
    1679 //--
    1680 //++
    1681 // inline float&         operator()(int i)
    1682 //      Remplit le contenu du bin i
    1683 //--
    1684 //++
    1685 // inline float          Error(int i) const
    1686 //      Retourne l'erreur du bin i
    1687 //--
    1688 //++
    1689 // inline double         Error2(int i) const
    1690 //      Retourne l'erreur au carre du bin i
    1691 //--
    1692 //++
    1693 // inline double&        Error2(int i)
    1694 //      Remplit l'erreur au carre du bin i
    1695 //--
    1696 //++
    1697 // inline float          NData() const
    1698 //      Retourne la somme ponderee
    1699 //--
    1700 //++
    1701 // inline float          NEntries()
    1702 //      Retourne le nombre d'entrees
    1703 //--
    1704 //++
    1705 // inline float          NOver() const
    1706 //      Retourne le nombre d'overflow
    1707 //--
    1708 //++
    1709 // inline float          NUnder() const
    1710 //      Retourne le nombre d'underflow
    1711 //--
    1712 //++
    1713 // inline float          BinLowEdge(int i)  const
    1714 //      Retourne l'abscisse du bord inferieur du bin i
    1715 //--
    1716 //++
    1717 // inline float          BinCenter(int i)   const
    1718 //      Retourne l'abscisse du centre du bin i
    1719 //--
    1720 //++
    1721 // inline float          BinHighEdge(int i) const
    1722 //      Retourne l'abscisse du bord superieur du bin i
    1723 //--
    1724 //++
    1725 // inline int            FindBin(float x) const   
    1726 //      Retourne le numero du bin contenant l'abscisse x
    1727 //--
    17281590
    17291591
Note: See TracChangeset for help on using the changeset viewer.