Changeset 914 in Sophya for trunk/SophyaLib/HiStats/histos2.h
- Timestamp:
- Apr 13, 2000, 6:04:50 PM (25 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/SophyaLib/HiStats/histos2.h
r763 r914 22 22 class GeneralFit; 23 23 24 25 /*! 26 Classe d'histogrammes 2D 27 \verbatim 28 Remarque sur les indices: 29 H(i,j) -> i = coord x (0<i<nx), j = coord y (0<j<ny) 30 v(ii,jj) -> ii = ligne (0<i<NRows()), jj = colonne (0<i<NCol()) 31 On fait une correspondance directe i<->ii et j<->jj 32 ce qui, en representation classique des histos2D et des matrices 33 entraine une inversion x<->y cad une symetrie / diagonale principale 34 H(0,...) represente ^ mais v(0,...) represente 35 |x....... |xxxxxxxx| 36 |x....... |........| 37 |x....... |........| 38 |x....... |........| 39 |x....... |........| 40 ---------> 41 colonne no 1 ligne no 1 42 \endverbatim 43 */ 24 44 class Histo2D : public AnyDataObj { 25 45 friend class ObjFileIO<Histo2D>; … … 75 95 76 96 // INLINES 97 //! Retourne l'abscisse minimum. 77 98 inline float XMin() const {return xmin;} 99 //! Retourne l'abscisse maximum. 78 100 inline float XMax() const {return xmax;} 101 //! Retourne l'ordonnee minimum. 79 102 inline float YMin() const {return ymin;} 103 //! Retourne l'ordonnee maximum. 80 104 inline float YMax() const {return ymax;} 105 //! Retourne le nombre de bins selon X. 81 106 inline int_4 NBinX() const {return nx;} 107 //! Retourne le nombre de bins selon Y. 82 108 inline int_4 NBinY() const {return ny;} 109 //! Retourne la largeur du bin selon X. 83 110 inline float WBinX() const {return wbinx;} 111 //! Retourne la largeur du bin selon Y. 84 112 inline float WBinY() const {return wbiny;} 113 //! Retourne le pointeur sur le tableaux des contenus. 85 114 inline float* Bins() const {return data;} 115 //! Retourne le contenu du bin i,j. 86 116 inline float operator()(int i,int j) const {return data[j*nx+i];} 117 //! Remplit le contenu du bin i,j. 87 118 inline float& operator()(int i,int j) {return data[j*nx+i];} 119 //! retourne "true" si il y a des erreurs stoquees 88 120 inline bool HasErrors() { if(err2) return true; else return false;} 121 //! Retourne l'erreur du bin i,j. 89 122 inline float Error(int i,int j) const 90 123 {if(err2) 91 124 {if(err2[j*nx+i]>0.) return sqrt(err2[j*nx+i]); else return 0.;} 92 125 else return 0.;} 126 //! Remplit l'erreur au carre du bin i,j. 93 127 inline double Error2(int i,int j) const 94 128 {if(err2) return err2[j*nx+i]; else return 0.;} 129 //! Remplit l'erreur au carre du bin i,j. 95 130 inline double& Error2(int i,int j) {return err2[j*nx+i];} 131 //! Retourne la somme ponderee. 96 132 inline float NData() const {return (float) nHist;} 133 //! Retourne le nombre d'entrees. 97 134 inline int_4 NEntries() const {return nEntries;} 135 //! Retourne l'abscisse et l'ordonnee du coin inferieur du bin i,j. 98 136 inline void BinLowEdge(int i,int j,float& x,float& y) 99 137 {x = xmin + i*wbinx; y = ymin + j*wbiny;} 138 //! Retourne l'abscisse et l'ordonnee du centre du bin i,j. 100 139 inline void BinCenter(int i,int j,float& x,float& y) 101 140 {x = xmin + (i+0.5)*wbinx; y = ymin + (j+0.5)*wbiny;} 141 //! Retourne l'abscisse et l'ordonnee du coin superieur du bin i,j. 102 142 inline void BinHighEdge(int i,int j,float& x,float& y) 103 143 {x = xmin + (i+1)*wbinx; y = ymin + (j+1)*wbiny;} 144 //! Retourne les numeros du bin contenant l'abscisse et l'ordonnee x,y. 104 145 inline void FindBin(float x,float y,int& i,int& j) 105 146 { i = (int) floorf((x - xmin)/wbinx); j = (int) floorf((y - ymin)/wbiny);} … … 139 180 void ZeroProjY(); 140 181 void ZeroProj(); 182 //! Retourne le pointeur sur l'histo 1D de la projection selon X. 141 183 inline Histo* HProjX() const {return hprojx;} 184 //! Retourne le pointeur sur l'histo 1D de la projection selon Y. 142 185 inline Histo* HProjY() const {return hprojy;} 143 186 void ShowProj(); 144 187 145 188 // BANDES 189 //! Retourne le nombre de bandes selon X 146 190 inline int NBandX() const {return lbandx.size();} 191 //! Retourne le nombre de bandes selon Y 147 192 inline int NBandY() const {return lbandy.size();} 148 193 int SetBandX(float ybmin,float ybmax); … … 159 204 160 205 // SLICES 206 //! Retourne le nombre de slices selon X 161 207 inline int NSliX() const {return lslix.size();} 208 //! Retourne le nombre de slices selon Y 162 209 inline int NSliY() const {return lsliy.size();} 163 210 int SetSliX(int nsli); … … 174 221 protected: 175 222 #endif 223 //! structure de definition des bandes 176 224 struct bande_slice { 177 int num; 178 float min, max; 179 Histo* H; 225 int num; //!< nombre de bandes 226 float min; //!< limite minimum pour remplir la bande 227 float max; //!< limite maximum pour remplir la bande 228 Histo* H; //!< pointer sur l Histo 1D de la bande 180 229 STRUCTCOMP(bande_slice) 181 230 }; … … 186 235 void Delete(); 187 236 188 float* data; 189 double* err2; 190 191 float over[3][3]; 192 double nHist; 193 int_4 nEntries; 194 195 int_4 nx,ny,nxy; 196 float xmin; 197 float xmax; 198 float ymin; 199 float ymax; 200 float wbinx; 201 float wbiny; 237 float* data; //!< donnees 238 double* err2; //!< erreurs carrees 239 240 float over[3][3]; //!< overflow table 241 double nHist; //!< somme ponderee des entrees 242 int_4 nEntries; //!< nombre d'entrees 243 244 int_4 nx; //!< nombre de bins en X 245 int_4 ny; //!< nombre de bins en Y 246 int_4 nxy; //!< nombre de bins total 247 float xmin; //!< abscisse minimum 248 float xmax; //!< abscisse maximum 249 float ymin; //!< ordonnee minimum 250 float ymax; //!< ordonnee maximum 251 float wbinx; //!< largeur du bin en X 252 float wbiny; //!< largeur du bin en Y 202 253 203 254 bande_slice b_s; 204 255 205 Histo* hprojx; 206 Histo* hprojy; 207 208 list<bande_slice> lbandx; 209 list<bande_slice> lbandy; 256 Histo* hprojx; //!< pointer sur Histo des proj X 257 Histo* hprojy; //!< pointer sur Histo des proj Y 258 259 list<bande_slice> lbandx; //!< liste des bandes selon X 260 list<bande_slice> lbandy; //!< liste des bandes selon Y 210 261 211 list<bande_slice> lslix; 212 list<bande_slice> lsliy; 262 list<bande_slice> lslix; //!< liste des slices selon X 263 list<bande_slice> lsliy; //!< liste des slices selon Y 213 264 214 265 };
Note:
See TracChangeset
for help on using the changeset viewer.