Changeset 3145 in Sophya for trunk/SophyaPI/PIext/sohiswrap.h


Ignore:
Timestamp:
Jan 18, 2007, 5:33:46 PM (19 years ago)
Author:
ansari
Message:

1/ Petites modifs ds PIHisto et le P1DHistoWrapper - en particulier decodage des options et choix renvoi BinContent/Error/NEntries
2/ Codage Wrapper pour Histo-2D et modifs PIHisto2D
3/ Suppression des adaptateurs de tableaux PI des Histos2D ds pipodrw.h .cc, les
Wrappers d'histos heritant de P1D,P2DArrayAdapter
4/ Mise a jour Makefile et smakefile

Reza , 18/01/2007

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/SophyaPI/PIext/sohiswrap.h

    r3135 r3145  
    1212#include "histerr.h"
    1313
     14#include "histos2.h"
     15#include "hist2err.h"
     16
    1417#include "pexceptions.h"
    1518
     
    1821namespace SOPHYA {
    1922 
    20 //! Wrapper class for SOPHYA::Histo  , SOPHYA::HProf
     23//! Wrapper class for SOPHYA::Histo  , SOPHYA::HProf , for use by PIHisto
    2124class HistoWrapper : public P1DHistoWrapper
    2225{
    2326public:
    2427  HistoWrapper(Histo* h, bool ad=true)
     28    : P1DHistoWrapper(h->NBins())
    2529  {
    2630    if (h == NULL) throw NullPtrError("HistoWrapper(Histo* h = NULL)");
     
    2832    mHpr = dynamic_cast<HProf*>(h);
    2933    mAD = ad;
     34    DefineXCoordinate(h->XMin(), h->BinWidth()); // Pour P1DArrayAdapter
    3035  }
    3136  ~HistoWrapper() { if (mAD) delete mHis; }
     
    4045  virtual r_8 BinHighEdge(int_4 i) { return mHis->BinHighEdge(i) ; }
    4146
    42   virtual r_8 Value(int_4 i) { return (*mHis)(i) ; }
     47  virtual r_8 Content(int_4 i) { return (*mHis)(i) ; }
    4348  virtual r_8 Error(int_4 i) { return mHis->Error(i) ; }
    4449  virtual r_8 NbEntries(int_4 i) { if(mHpr) return mHpr->SumW(i); else return 0.; }
     
    7075
    7176
    72 //! Wrapper class for SOPHYA::HistoErr 
     77//! Wrapper class for SOPHYA::HistoErr  for use by PIHisto
    7378class HistoErrWrapper : public P1DHistoWrapper
    7479{
    7580public:
    7681  HistoErrWrapper(HistoErr* h, bool ad=false)
    77   {
    78     if (h == NULL) throw NullPtrError("HistoWrapper(HistoErr* h = NULL)");
     82    : P1DHistoWrapper(h->NBins())
     83  {
     84    if (h == NULL) throw NullPtrError("HistoErrWrapper(HistoErr* h = NULL)");
    7985    mHis = h;  mAD = ad;
     86    DefineXCoordinate(h->XMin(), h->BinWidth()); // Pour P1DArrayAdapter
    8087  }
    8188  ~HistoErrWrapper() { if (mAD) delete mHis; }
     
    9097  virtual r_8 BinHighEdge(int_4 i) { return mHis->BinHighEdge(i) ; }
    9198
    92   virtual r_8 Value(int_4 i) { return (*mHis)(i) ; }
     99  virtual r_8 Content(int_4 i) { return (*mHis)(i) ; }
    93100  virtual r_8 Error(int_4 i) { return mHis->Error(i) ; }
    94101  virtual r_8 NbEntries(int_4 i) { return mHis->NEntBin(i) ; }
     
    113120};
    114121
     122
     123//! Wrapper class for SOPHYA::Histo2D   for use by PIHisto2D
     124class Histo2DWrapper : public P2DHistoWrapper
     125{
     126public:
     127  Histo2DWrapper(Histo2D* h, bool ad=true)
     128    : P2DHistoWrapper(h->NBinX(), h->NBinY())
     129  {
     130    if (h == NULL) throw NullPtrError("Histo2DWrapper(Histo2D* h = NULL)");
     131    mHis = h;  mAD = ad;
     132    DefineXYCoordinates(h->XMin(), h->YMin(), h->WBinX(), h->WBinY() ); // pour P2DArrayAdapter
     133  }
     134
     135  virtual ~Histo2DWrapper() { if (mAD) delete mHis; }
     136
     137  virtual int_4 NBinX() { return mHis->NBinX(); }
     138  virtual int_4 NBinY() { return mHis->NBinY(); }
     139  virtual r_8 XMin() { return mHis->XMin() ; }
     140  virtual r_8 XMax() { return mHis->XMax() ; }
     141  virtual r_8 YMin() { return mHis->YMin() ; }
     142  virtual r_8 YMax() { return mHis->YMax() ; }
     143  virtual r_8 WBinX() { return mHis->WBinX() ; }
     144  virtual r_8 WBinY() { return mHis->WBinY() ; }
     145
     146  virtual void BinLowEdge(int_4 i, int_4 j, r_8& xr, r_8& yr)
     147    { mHis->BinLowEdge(i, j, xr, yr); return; }
     148  virtual void BinCenter(int_4 i, int_4 j, r_8& xr, r_8& yr)
     149    { mHis->BinCenter(i, j, xr, yr); return; }
     150  virtual void BinHighEdge(int_4 i, int_4 j, r_8& xr, r_8& yr)
     151    { mHis->BinHighEdge(i, j, xr, yr); return; }
     152
     153  // Renvoie contenu du bin i
     154  virtual r_8 Content(int_4 i, int_4 j) { return (*mHis)(i,j) ; }
     155  virtual r_8 Error(int_4 i, int_4 j) { return mHis->Error(i,j) ; }
     156  virtual r_8 NbEntries(int_4 i, int_4 j) { return 0.; }  // $CHECK$ CMV 0 ??
     157
     158  // Methode de mise a jour du contenu
     159  //  virtual void Update() $CHECK$ CMV  a supprimer ?
     160
     161  // ajoute des lignes de texte avec les infos statistiques (dans text)
     162  // renvoie le nombre de lignes ajoutees - avec implementation par defaut
     163  virtual int GetStatInfoAsText(vector<string> &  text )
     164  {
     165    // $CHECK$ CMV , faut-il completer ?
     166    char label[64];
     167    string s;
     168    sprintf(label,"N= %-g", mHis->NData());
     169    s = label;   text.push_back(s);
     170    return 1;
     171  }
     172
     173  inline Histo2D* getHisto2D() { return mHis; }
     174
     175protected:
     176  Histo2D* mHis;
     177  bool mAD;
     178};
     179
     180
     181
     182//! Wrapper class for SOPHYA::Histo2DErr   for use by PIHisto2D
     183class Histo2DErrWrapper : public P2DHistoWrapper
     184{
     185public:
     186  Histo2DErrWrapper(Histo2DErr* h, bool ad=true)
     187    : P2DHistoWrapper(h->NBinX(), h->NBinY())
     188  {
     189    if (h == NULL) throw NullPtrError("Histo2DErrWrapper(Histo2DErr* h = NULL)");
     190    mHis = h;    mAD = ad;
     191    DefineXYCoordinates(h->XMin(), h->YMin(), h->WBinX(), h->WBinY() ); // pour P2DArrayAdapter
     192  }
     193
     194  virtual ~Histo2DErrWrapper() { if (mAD) delete mHis; }
     195
     196  virtual int_4 NBinX() { return mHis->NBinX(); }
     197  virtual int_4 NBinY() { return mHis->NBinY(); }
     198  virtual r_8 XMin() { return mHis->XMin() ; }
     199  virtual r_8 XMax() { return mHis->XMax() ; }
     200  virtual r_8 YMin() { return mHis->YMin() ; }
     201  virtual r_8 YMax() { return mHis->YMax() ; }
     202  virtual r_8 WBinX() { return mHis->WBinX() ; }
     203  virtual r_8 WBinY() { return mHis->WBinY() ; }
     204
     205  virtual void BinLowEdge(int_4 i, int_4 j, r_8& xr, r_8& yr)
     206    { mHis->BinLowEdge(i, j, xr, yr); return; }
     207  virtual void BinCenter(int_4 i, int_4 j, r_8& xr, r_8& yr)
     208    { mHis->BinCenter(i, j, xr, yr); return; }
     209  virtual void BinHighEdge(int_4 i, int_4 j, r_8& xr, r_8& yr)
     210    { mHis->BinHighEdge(i, j, xr, yr); return; }
     211
     212  // Renvoie contenu du bin i
     213  virtual r_8 Content(int_4 i, int_4 j) { return (*mHis)(i,j) ; }
     214  virtual r_8 Error(int_4 i, int_4 j) { return mHis->Error(i,j) ; }
     215  virtual r_8 NbEntries(int_4 i, int_4 j) { return mHis->NEntBin(i,j) ; }  // $CHECK$ CMV  OK ?
     216
     217  // Methode de mise a jour du contenu
     218  //  virtual void Update() $CHECK$ CMV  a supprimer ?
     219
     220  // ajoute des lignes de texte avec les infos statistiques (dans text)
     221  // renvoie le nombre de lignes ajoutees - avec implementation par defaut
     222  virtual int GetStatInfoAsText(vector<string> &  text )
     223  {
     224    // $CHECK$ CMV , faut-il completer ?
     225    char label[64];
     226    string s;
     227    sprintf(label,"NCorrel= %d", mHis->NCorrel());
     228    text.push_back(label);
     229    return 1;
     230  }
     231
     232  inline Histo2DErr* getHisto2DErr() { return mHis; }
     233
     234protected:
     235  Histo2DErr* mHis;
     236  bool mAD;
     237};
     238
    115239} // Fin du namespace
    116240
Note: See TracChangeset for help on using the changeset viewer.