Changeset 1056 in Sophya for trunk/SophyaLib/HiStats/histos.h


Ignore:
Timestamp:
Jul 7, 2000, 10:41:11 AM (25 years ago)
Author:
ansari
Message:

cmv 7/7/2000

hisprof.cc,h:

fonction IsOk()
GetMean -> GetValue (mauvais nom)
float Error2() -> double Error2()
nouveau: GetError(TVector<r_8>& v)
HProf::PrintF() sur-ecriture de Histo::PrintF
protection dans createur par copie dans alloc

SumY... pour le cas ou H.bins==0

protection dans UpdateHisto pour HProf cree par defaut (bins==0)
Dans WriteSelf UpdateHisto appele que si necessaire (IsOk()?)

histos2.cc : le Print() dit si les erreurs ont ete demandees
histos.cc,h:

protection dans createur par copie dans alloc

pour le cas ou H.bins==0

protection dans Zero() pour Histo cree par defaut (bins==0)
protection dans operator=() pour Histo cree par defaut (bins==0)
le Print() dit si les erreurs ont ete demandees

cmv 7/7/2000

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/SophyaLib/HiStats/histos.h

    r1053 r1056  
    11// This may look like C code, but it is really -*- C++ -*-
    22//
    3 // $Id: histos.h,v 1.7 2000-06-30 13:21:53 ansari Exp $
     3// $Id: histos.h,v 1.8 2000-07-07 08:41:11 ansari Exp $
    44//
    55
     
    2828  Histo(float xMin, float xMax, int nBin=100);
    2929  Histo(const Histo& H);
    30   virtual        ~Histo();
     30  virtual ~Histo();
    3131
    3232  // OPTIONS
    33   void   Errors();
     33  void Errors();
    3434
    3535  // UPDATING or SETTING
    36   void   Zero();
    37   void   Add(float x, float w = 1.);
    38   void   AddBin(int numBin, float w = 1.);
    39   void   SetBin(float x, float w = 1.);
    40   void   SetBin(int numBin, float w = 1.);
    41   void   SetErr2(float x, double e2);
    42   void   SetErr2(int numBin, double e2);
    43   void   SetErr(float x, float e);
     36  void Zero();
     37  void Add(float x, float w = 1.);
     38  void AddBin(int numBin, float w = 1.);
     39  void SetBin(float x, float w = 1.);
     40  void SetBin(int numBin, float w = 1.);
     41  void SetErr2(float x, double e2);
     42  void SetErr2(int numBin, double e2);
     43  void SetErr(float x, float e);
    4444  void   SetErr(int numBin, float e);
    4545
     
    6868  // INLINES
    6969  //! Retourne l'abscisse minimum
    70   inline float          XMin() const            {return min;}
     70  inline float XMin() const {return min;}
    7171  //! Retourne l'abscisse maximum
    72   inline float          XMax() const            {return max;}
     72  inline float XMax() const {return max;}
    7373  //! Retourne le nombre de bins
    74   inline int_4          NBins() const            {return bins;}
     74  inline int_4 NBins() const {return bins;}
    7575  //! Retourne la largeur du bin
    76   inline float          BinWidth() const        {return binWidth;}
     76  inline float BinWidth() const {return binWidth;}
    7777  //! Retourne le pointeur sur le tableaux des contenus
    78   inline float*         Bins() const            {return data;}
     78  inline float* Bins() const {return data;}
    7979  //! Retourne le contenu du bin i
    80   inline float          operator()(int i) const  {return data[i];}
     80  inline float operator()(int i) const  {return data[i];}
    8181  //! Remplit le contenu du bin i
    82   inline float&         operator()(int i)        {return data[i];}
     82  inline float& operator()(int i) {return data[i];}
    8383  //! retourne "true" si il y a des erreurs stoquees
    84   inline bool           HasErrors() { if(err2) return true; else return false;}
     84  inline bool HasErrors()
     85         {if(err2) return true; else return false;}
    8586  //! Retourne l'erreur du bin i
    86   inline float          Error(int i) const
    87                           {if(err2) {if(err2[i]>0.) return sqrt(err2[i]); else return 0.;}
    88                            else return 0.;}
     87  inline float Error(int i) const
     88         {if(err2) {if(err2[i]>0.) return sqrt(err2[i]); else return 0.;}
     89                    else return 0.;}
    8990  //! Retourne l'erreur au carre du bin i
    90   inline double         Error2(int i) const
    91                           {if(err2) return err2[i]; else return 0.;}
     91  inline double Error2(int i) const
     92         {if(err2) return err2[i]; else return 0.;}
    9293  //! Remplit l'erreur au carre du bin i
    93   inline double&        Error2(int i) {return err2[i];}
     94  inline double& Error2(int i) {return err2[i];}
    9495  //! Retourne la somme ponderee
    95   inline float          NData() const            {return (float) nHist;}
     96  inline float NData() const            {return (float) nHist;}
    9697  //! Retourne le nombre d'entrees
    97   inline float          NEntries() const         {return nEntries;}
     98  inline float NEntries() const         {return nEntries;}
    9899  //! Retourne le nombre d'overflow
    99   inline float          NOver() const            {return over;}
     100  inline float NOver() const            {return over;}
    100101  //! Retourne le nombre d'underflow
    101   inline float          NUnder() const           {return under;}
     102  inline float NUnder() const           {return under;}
    102103
    103104  //! Retourne l'abscisse du bord inferieur du bin i
    104   inline float          BinLowEdge(int i)  const {return min + i*binWidth;}
     105  inline float BinLowEdge(int i)  const {return min + i*binWidth;}
    105106  //! Retourne l'abscisse du centre du bin i
    106   inline float          BinCenter(int i)   const {return min + (i+0.5)*binWidth;}
     107  inline float BinCenter(int i)   const {return min + (i+0.5)*binWidth;}
    107108  //! Retourne l'abscisse du bord superieur du bin i
    108   inline float          BinHighEdge(int i) const {return min + (i+1)*binWidth;}
     109  inline float BinHighEdge(int i) const {return min + (i+1)*binWidth;}
    109110  //! Retourne le numero du bin contenant l'abscisse x
    110   inline int_4          FindBin(float x) const   
    111                             {return (int_4) floorf((x - min) / binWidth);}
     111  inline int_4 FindBin(float x) const   
     112         {return (int_4) floorf((x - min) / binWidth);}
    112113
    113114  // Info, statistique et calculs sur les histogrammes
    114   int            BinNonNul() const;
    115   int            ErrNonNul() const;
    116   int            IMax() const;
    117   int            IMin() const;
    118   float          VMax() const;
    119   float          VMin() const;
    120   float          Mean() const;
    121   float          Sigma() const;
    122   float          MeanLH(int il,int ih) const;
    123   float          SigmaLH(int il,int ih) const;
    124   float          Mean(float x0, float dx) const;
    125   float          Sigma(float x0, float dx) const;
    126   float          CleanedMean() const;
    127   float          CleanedMean(float& sigma) const;
    128   int            BinPercent(float per) const;
    129   int            BinPercent(float x,float per,int& imin,int& imax);
    130   int            BinPercent(float x,float per,float& xmin,float& xmax);
    131   void           HInteg(float norm = 0.);
    132   void           HDeriv();
    133   void           HRebin(int nbinew);
    134 
    135   int            MaxiLocal(float& maxi,int& imax,float& maxn,int& imaxn);
    136   float          FitMax(int degree=2, float frac=0.5f, int debug=0) const;
    137   float          FindWidth(float xmax,float frac=0.5f, int debug=0) const;
    138   float          FindWidth(float frac=0.5f, int debug=0) const;
    139   int            EstimeMax(float& xm,int SzPav = 3);
    140   int            EstimeMax(int& im,float& xm,int SzPav = 3);
    141   void           EstimeWidthS(float frac,float& widthG,float& widthD);
     115  int       BinNonNul() const;
     116  int       ErrNonNul() const;
     117  int       IMax() const;
     118  int       IMin() const;
     119  float     VMax() const;
     120  float     VMin() const;
     121  float     Mean() const;
     122  float     Sigma() const;
     123  float     MeanLH(int il,int ih) const;
     124  float     SigmaLH(int il,int ih) const;
     125  float     Mean(float x0, float dx) const;
     126  float     Sigma(float x0, float dx) const;
     127  float     CleanedMean() const;
     128  float     CleanedMean(float& sigma) const;
     129  int       BinPercent(float per) const;
     130  int       BinPercent(float x,float per,int& imin,int& imax);
     131  int       BinPercent(float x,float per,float& xmin,float& xmax);
     132  void      HInteg(float norm = 0.);
     133  void      HDeriv();
     134  void      HRebin(int nbinew);
     135
     136  int       MaxiLocal(float& maxi,int& imax,float& maxn,int& imaxn);
     137  float     FitMax(int degree=2, float frac=0.5f, int debug=0) const;
     138  float     FindWidth(float xmax,float frac=0.5f, int debug=0) const;
     139  float     FindWidth(float frac=0.5f, int debug=0) const;
     140  int       EstimeMax(float& xm,int SzPav = 3);
     141  int       EstimeMax(int& im,float& xm,int SzPav = 3);
     142  void      EstimeWidthS(float frac,float& widthG,float& widthD);
    142143
    143144  // Fit
     
    147148
    148149  // Print et Display ASCII
    149   void           PrintF(FILE * fp, int dyn = 100, float hmin = 1., float hmax = -1.,
    150                         int pflag = 0, int il = 1, int ih = -1);
    151   void           Print(int dyn = 100, float hmin = 1., float hmax = -1.,
    152                         int pflag = 0, int il = 1, int ih = -1);
     150  void PrintF(FILE * fp, int dyn = 100, float hmin = 1., float hmax = -1.,
     151                      int pflag = 0, int il = 1, int ih = -1);
     152  void Print(int dyn = 100, float hmin = 1., float hmax = -1.,
     153                     int pflag = 0, int il = 1, int ih = -1);
    153154
    154155protected:
    155156  void Delete();
    156157
    157   float*         data;     //!< donnees
    158   double*        err2;     //!< erreurs carrees
    159   float          under;    //!< underflow
    160   float          over;     //!< overflow
    161   double         nHist;    //!< somme ponderee des entrees
    162   int_4          nEntries; //!< nombre d'entrees
    163   int_4          bins;     //!< nombre de bins
    164   float          min;      //!< abscisse minimum
    165   float          max;      //!< abscisse maximum
    166   float          binWidth; //!< largeur du bin
     158  float*    data;     //!< donnees
     159  double*   err2;          //!< erreurs carrees
     160  float     under;    //!< underflow
     161  float     over;     //!< overflow
     162  double    nHist;    //!< somme ponderee des entrees
     163  int_4     nEntries; //!< nombre d'entrees
     164  int_4     bins;     //!< nombre de bins
     165  float     min;      //!< abscisse minimum
     166  float     max;      //!< abscisse maximum
     167  float     binWidth; //!< largeur du bin
    167168};
    168169
Note: See TracChangeset for help on using the changeset viewer.