Changeset 914 in Sophya for trunk/SophyaLib/HiStats/hisprof.cc
- Timestamp:
- Apr 13, 2000, 6:04:50 PM (25 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/SophyaLib/HiStats/hisprof.cc
r763 r914 6 6 #include "perrors.h" 7 7 8 //++ 9 // Class HProf 10 // Lib Outils++ 11 // include hisprof.h 12 // 13 // Classe de profil d'histogrammes. 14 //-- 15 16 //++ 17 // Titre Constructeurs 18 //-- 19 20 /********* Methode *********/ 21 //++ 8 9 /********* Methode *********/ 10 /*! 11 Constructeur par defaut. 12 */ 22 13 HProf::HProf() 23 //24 // Constructeur par defaut.25 //--26 14 : Histo() 27 15 , SumY(NULL), SumY2(NULL), SumW(NULL), Ok(false), YMin(1.), YMax(-1.), Opt(0) … … 31 19 32 20 /********* Methode *********/ 33 //++ 21 /*! 22 Constructeur. Histogramme de profil de ``nBin'' bins entre ``xMin'' 23 et ``xMax'' avec coupure d'acceptance sur y entre ``yMin'' et ``yMax''. 24 Si yMin>=yMax alors pas de coupure d'acceptance sur y. 25 Par defaut l'erreur du profil represente la dispersion dans le bin, 26 SetErrOpt(1) permet de demander de calculer l'erreur sur la moyenne. 27 */ 34 28 HProf::HProf(float xMin, float xMax, int nBin, float yMin, float yMax) 35 //36 // Constructeur. Histogramme de profil de ``nBin'' bins entre ``xMin''37 // et ``xMax'' avec coupure d'acceptance sur y entre ``yMin'' et ``yMax''.38 // Si yMin>=yMax alors pas de coupure d'acceptance sur y.39 // Par defaut l'erreur du profil represente la dispersion dans le bin,40 // SetErrOpt(1) permet de demander de calculer l'erreur sur la moyenne.41 //--42 29 : Histo(xMin,xMax,nBin) 43 30 , SumY(new double[nBin]), SumY2(new double[nBin]), SumW(new double[nBin]) … … 50 37 51 38 /********* Methode *********/ 52 //++ 39 /*! 40 Constructeur par copie. 41 */ 53 42 HProf::HProf(const HProf& H) 54 //55 // Constructeur par copie.56 //--57 43 : Histo(H) 58 44 , SumY(new double[H.bins]), SumY2(new double[H.bins]), SumW(new double[H.bins]) … … 66 52 67 53 /********* Methode *********/ 54 /*! 55 Des-allocation 56 */ 68 57 void HProf::Delete() 69 58 { … … 75 64 76 65 /********* Methode *********/ 66 /*! 67 Destructeur 68 */ 77 69 HProf::~HProf() 78 70 { … … 80 72 } 81 73 82 //++ 83 // Titre Methodes 84 //-- 85 86 /********* Methode *********/ 87 //++ 74 /********* Methode *********/ 75 /*! 76 Remise a zero 77 */ 88 78 void HProf::Zero() 89 //90 // Remise a zero91 //--92 79 { 93 80 memset(SumY, 0, bins*sizeof(double)); … … 99 86 100 87 /********* Methode *********/ 101 //++ 88 /*! 89 Pour changer l'option de calcul de l'erreur du profile. 90 Si ``spread'' = true alors l'erreur represente la dispersion 91 des donnees dans le bin, si = false elle represente l'erreur 92 sur la moyenne du bin. 93 \verbatim 94 - Pour le bin (j): 95 H(j) = sum(y), E(j) = sum(y^2), L(j) = sum(w) 96 -> s(j) = sqrt(E(j)/L(j) - (H(j)/L(j))^2) dispersion 97 -> e(j) = s(j)/sqrt(L(j)) erreur sur la moyenne 98 spread=true: opt=0 : dispersion des donnees dans le bin = s(j) 99 spread=false: opt=1 : erreur sur la moyenne du bin = e(j) 100 \endverbatim 101 */ 102 102 void HProf::SetErrOpt(bool spread) 103 //104 // Pour changer l'option de calcul de l'erreur du profile.105 // Si ``spread'' = true alors l'erreur represente la dispersion106 // des donnees dans le bin, si = false elle represente l'erreur107 // sur la moyenne du bin.108 //| - Pour le bin (j):109 //| H(j) = sum(y), E(j) = sum(y^2), L(j) = sum(w)110 //| -> s(j) = sqrt(E(j)/L(j) - (H(j)/L(j))^2) dispersion111 //| -> e(j) = s(j)/sqrt(L(j)) erreur sur la moyenne112 //| spread=true: opt=0 : dispersion des donnees dans le bin = s(j)113 //| spread=false: opt=1 : erreur sur la moyenne du bin = e(j)114 //--115 103 { 116 104 int opt = (spread) ? 0 : 1; … … 119 107 120 108 /********* Methode *********/ 121 //++ 109 /*! 110 Pour mettre a jour l'histogramme de profil. 111 Il est important d'appeler cette methode si on veut 112 utiliser les methodes de la classe Histo qui ne sont 113 pas redefinies dans la classe HProf. 114 En effet, pour des raisons de precision la classe 115 HProf travaille avec des tableaux en double precision 116 et seulement au moment ou l'on a besoin de l'histogramme 117 ce dernier est rempli avec les valeurs demandees (moyenne 118 et dispersion/erreur sur la moyenne). 119 */ 122 120 void HProf::UpdateHisto() const 123 //124 // Pour mettre a jour l'histogramme de profil.125 // Il est important d'appeler cette methode si on veut126 // utiliser les methodes de la classe Histo qui ne sont127 // pas redefinies dans la classe HProf.128 // En effet, pour des raisons de precision la classe129 // HProf travaille avec des tableaux en double precision130 // et seulement au moment ou l'on a besoin de l'histogramme131 // ce dernier est rempli avec les valeurs demandees (moyenne132 // et dispersion/erreur sur la moyenne).133 //--134 121 { 135 122 … … 153 140 154 141 /********* Methode *********/ 155 //++ 142 /*! 143 Addition au contenu de l'histo pour abscisse x de la valeur y et poids w 144 */ 156 145 void HProf::Add(float x, float y, float w) 157 //158 // Addition au contenu de l'histo pour abscisse x de la valeur y et poids w159 //--160 146 { 161 147 if(YMax>YMin && (y<YMin || YMax<y)) return; … … 174 160 175 161 /********* Methode *********/ 176 //++ 162 /*! 163 Addition au contenu de l'histo bin numBin de la valeur y poids w 164 */ 177 165 void HProf::AddBin(int numBin, float y, float w) 178 //179 // Addition au contenu de l'histo bin numBin de la valeur y poids w180 //--181 166 { 182 167 if(YMax>YMin && (y<YMin || YMax<y)) return; … … 194 179 195 180 /********* Methode *********/ 196 //++ 181 /*! 182 Operateur H = H1 183 */ 197 184 HProf& HProf::operator = (const HProf& h) 198 //199 //--200 185 { 201 186 if(this == &h) return *this; … … 218 203 219 204 /********* Methode *********/ 220 //++ 205 /*! 206 Operateur H += H1 207 208 Attention dans cette addition il n'y a pas de gestion 209 des YMin et YMax. L'addition est faite meme si les limites 210 en Y de ``a'' sont differentes de celles de ``this''. 211 */ 221 212 HProf& HProf::operator += (const HProf& a) 222 //223 // Attention dans cette addition il n'y a pas de gestion224 // des YMin et YMax. L'addition est faite meme si les limites225 // en Y de ``a'' sont differentes de celles de ``this''.226 //--227 213 { 228 214 if(bins!=a.bins) THROW(sizeMismatchErr); … … 240 226 241 227 /********* Methode *********/ 242 //++ 228 /*! 229 Operateur H = H1 + H2 230 Meme commentaire que pour l'operateur += 231 */ 243 232 HProf operator + (const HProf& a, const HProf& b) 244 //245 // Meme commentaire que pour l'operateur +=246 //--247 233 { 248 234 if (b.NBins()!=a.NBins()) THROW(sizeMismatchErr); … … 250 236 return (c += b); 251 237 } 252 253 // Rappel des inlines functions pour commentaires254 //++255 // inline Histo GetHisto()256 // Retourne l'histogramme de profil.257 //--258 //++259 // inline void GetMean(Vector& v)260 // Retourne le contenu de la moyenne dans le vecteur v261 //--262 //++263 // inline void GetError2(Vector& v)264 // Retourne le contenu au carre de la dispersion/erreur dans le vecteur v265 //--266 //++267 // inline float operator()(int i) const268 // Retourne le contenu du bin i269 //--270 //++271 // inline float Error2(int i) const272 // Retourne le carre de la dispersion/erreur du bin i273 //--274 //++275 // inline float Error(int i) const276 // Retourne la dispersion/erreur du bin i277 //--278 //++279 // inline int Fit(GeneralFit& gfit)280 // Fit du profile par ``gfit''.281 //--282 //++283 // inline Histo* FitResidus(GeneralFit& gfit)284 // Retourne l'Histogramme des residus par ``gfit''.285 //--286 //++287 // inline Histo* FitFunction(GeneralFit& gfit)288 // Retourne l'Histogramme de la fonction fittee par ``gfit''.289 //--290 //++291 // inline void Print(int dyn,float hmin,float hmax,int pflag,int il,int ih)292 // Print, voir detail dans Histo::Print293 //--294 295 238 296 239 ///////////////////////////////////////////////////////////
Note:
See TracChangeset
for help on using the changeset viewer.