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


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.cc

    r1053 r1056  
    11//
    2 // $Id: histos.cc,v 1.6 2000-06-30 13:21:52 ansari Exp $
     2// $Id: histos.cc,v 1.7 2000-07-07 08:41:11 ansari Exp $
    33//
    44
     
    4545/*! Constructeur par copie */
    4646Histo::Histo(const Histo& H)
    47 : data(new float[H.bins]), err2(NULL),
     47: data((H.bins>0)? new float[H.bins] : NULL),
     48  err2(NULL),
    4849  under(H.under), over(H.over), nHist(H.nHist), nEntries(H.nEntries),
    4950  bins(H.bins), min(H.min), max(H.max),
    5051  binWidth(H.binWidth)
    5152{
    52   memcpy(data, H.data, bins*sizeof(float));
    53   if( H.err2 != NULL ) {
    54     err2 = new double[bins];
    55     memcpy(err2, H.err2, bins*sizeof(double));
     53  if(bins>0) {
     54    memcpy(data, H.data, bins*sizeof(float));
     55    if( H.err2 != NULL ) {
     56      err2 = new double[bins];
     57      memcpy(err2, H.err2, bins*sizeof(double));
     58    }
    5659  }
    5760  END_CONSTRUCTOR
     
    8285void Histo::Zero()
    8386{
     87  if(bins<=0) return;
    8488  memset(data, 0, bins*sizeof(float));
    8589  under = over = 0;
     
    9599void Histo::Errors()
    96100{
    97  if( bins > 0 ) {
    98    if(err2==NULL) err2 = new double[bins];
    99    memset(err2, 0, bins*sizeof(double));
    100  }
    101 }
    102 
    103 /********* Methode *********/
    104 /*!
    105   Operateur egal
     101 if(bins<=0) return;
     102 if(err2==NULL) err2 = new double[bins];
     103 memset(err2, 0, bins*sizeof(double));
     104}
     105
     106/********* Methode *********/
     107/*!
     108  Operateur egal Histo = Histo
    106109*/
    107110Histo& Histo::operator = (const Histo& h)
    108111{
    109112  if(this == &h) return *this;
     113  if( h.bins <= 0 ) {Delete(); return *this;}
    110114  if( h.bins > bins ) Delete();
     115  if(!h.err2 && err2 ) { delete [] err2; err2=NULL;}
    111116  if(!data) data = new float[h.bins];
    112   if( !h.err2 && err2 ) { delete [] err2; err2=NULL;}
    113   if( h.err2 && !err2 ) err2 = new double[h.bins];
     117  if(h.err2 && !err2 ) err2 = new double[h.bins];
    114118
    115119  under = h.under;
     
    817821  if( nbinew <= 0 ) return;
    818822
    819   // memoraisation de l'histogramme original
     823  // memorisation de l'histogramme original
    820824  Histo H(*this);
    821825
     
    13241328              int il, int ih)
    13251329{
    1326 
    13271330 
    13281331 if( il > ih ) { il = 0; ih = bins-1; }
     
    13421345      << "  min=" << min << "  max=" << max
    13431346      << "  binWidth=" << binWidth << endl;
    1344  cout << "       mean=" << Mean() << " r.m.s=" << Sigma() << endl;
     1347 cout << "       mean=" << Mean() << " r.m.s=" << Sigma()
     1348      << "  Errors="<<HasErrors()<< endl;
    13451349
    13461350 if(hdyn<0 || pflag<0 ) return;
Note: See TracChangeset for help on using the changeset viewer.