Changeset 3145 in Sophya for trunk/SophyaPI/PIext/sohiswrap.h
- Timestamp:
- Jan 18, 2007, 5:33:46 PM (19 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/SophyaPI/PIext/sohiswrap.h
r3135 r3145 12 12 #include "histerr.h" 13 13 14 #include "histos2.h" 15 #include "hist2err.h" 16 14 17 #include "pexceptions.h" 15 18 … … 18 21 namespace SOPHYA { 19 22 20 //! Wrapper class for SOPHYA::Histo , SOPHYA::HProf 23 //! Wrapper class for SOPHYA::Histo , SOPHYA::HProf , for use by PIHisto 21 24 class HistoWrapper : public P1DHistoWrapper 22 25 { 23 26 public: 24 27 HistoWrapper(Histo* h, bool ad=true) 28 : P1DHistoWrapper(h->NBins()) 25 29 { 26 30 if (h == NULL) throw NullPtrError("HistoWrapper(Histo* h = NULL)"); … … 28 32 mHpr = dynamic_cast<HProf*>(h); 29 33 mAD = ad; 34 DefineXCoordinate(h->XMin(), h->BinWidth()); // Pour P1DArrayAdapter 30 35 } 31 36 ~HistoWrapper() { if (mAD) delete mHis; } … … 40 45 virtual r_8 BinHighEdge(int_4 i) { return mHis->BinHighEdge(i) ; } 41 46 42 virtual r_8 Value(int_4 i) { return (*mHis)(i) ; }47 virtual r_8 Content(int_4 i) { return (*mHis)(i) ; } 43 48 virtual r_8 Error(int_4 i) { return mHis->Error(i) ; } 44 49 virtual r_8 NbEntries(int_4 i) { if(mHpr) return mHpr->SumW(i); else return 0.; } … … 70 75 71 76 72 //! Wrapper class for SOPHYA::HistoErr 77 //! Wrapper class for SOPHYA::HistoErr for use by PIHisto 73 78 class HistoErrWrapper : public P1DHistoWrapper 74 79 { 75 80 public: 76 81 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)"); 79 85 mHis = h; mAD = ad; 86 DefineXCoordinate(h->XMin(), h->BinWidth()); // Pour P1DArrayAdapter 80 87 } 81 88 ~HistoErrWrapper() { if (mAD) delete mHis; } … … 90 97 virtual r_8 BinHighEdge(int_4 i) { return mHis->BinHighEdge(i) ; } 91 98 92 virtual r_8 Value(int_4 i) { return (*mHis)(i) ; }99 virtual r_8 Content(int_4 i) { return (*mHis)(i) ; } 93 100 virtual r_8 Error(int_4 i) { return mHis->Error(i) ; } 94 101 virtual r_8 NbEntries(int_4 i) { return mHis->NEntBin(i) ; } … … 113 120 }; 114 121 122 123 //! Wrapper class for SOPHYA::Histo2D for use by PIHisto2D 124 class Histo2DWrapper : public P2DHistoWrapper 125 { 126 public: 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 175 protected: 176 Histo2D* mHis; 177 bool mAD; 178 }; 179 180 181 182 //! Wrapper class for SOPHYA::Histo2DErr for use by PIHisto2D 183 class Histo2DErrWrapper : public P2DHistoWrapper 184 { 185 public: 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 234 protected: 235 Histo2DErr* mHis; 236 bool mAD; 237 }; 238 115 239 } // Fin du namespace 116 240
Note:
See TracChangeset
for help on using the changeset viewer.