Changeset 475 in Sophya for trunk


Ignore:
Timestamp:
Oct 19, 1999, 12:07:16 PM (26 years ago)
Author:
ansari
Message:

added overloading of perator = GLM,FT 19-OCT-99

Location:
trunk/SophyaLib/NTools
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/SophyaLib/NTools/ntuple.cc

    r297 r475  
    3535//++
    3636NTuple::NTuple(int nvar, char** noms, int blk)
    37 //
    38 //      Createur d'un ntuple de `nvar' variables dont les
    39 //      noms sont dans le tableau de cahines de caracteres `noms'
    40 //      avec `blk' d'evenements par blocks.
    41 //--
    42 {
    43 mNVar = mNEnt = mBlk = mNBlk = 0;
    44 mVar = NULL;
    45 mVarD = NULL;
    46 mNames = NULL;
    47 mInfo = NULL;
    48 if (nvar <= 0)  THROW(sizeMismatchErr);
    49 mNVar = nvar;
    50 mVar = new r_4[nvar];
    51 mVarD = new r_8[nvar];
    52 if (blk < 10) blk = 10;
    53 mBlk = blk;
    54 // On prend des noms de LENNAME char pour le moment
    55 mNames = new char[nvar*LENNAME1];
    56 r_4* pt = new r_4[nvar*blk];
    57 mNBlk = 1;
    58 mPtr.push_back(pt);
    59 int i;
    60 for(i=0; i<nvar; i++)
    61   { strncpy(mNames+i*LENNAME1, noms[i], LENNAME); 
    62   mNames[i*LENNAME1+LENNAME] = '\0'; }
    63 return;
     37  //
     38  //    Createur d'un ntuple de `nvar' variables dont les
     39  //    noms sont dans le tableau de cahines de caracteres `noms'
     40  //    avec `blk' d'evenements par blocks.
     41//--
     42{
     43  mNVar = mNEnt = mBlk = mNBlk = 0;
     44  mVar = NULL;
     45  mVarD = NULL;
     46  mNames = NULL;
     47  mInfo = NULL;
     48  if (nvar <= 0)  THROW(sizeMismatchErr);
     49  mNVar = nvar;
     50  mVar = new r_4[nvar];
     51  mVarD = new r_8[nvar];
     52  if (blk < 10) blk = 10;
     53  mBlk = blk;
     54  // On prend des noms de LENNAME char pour le moment
     55  mNames = new char[nvar*LENNAME1];
     56  r_4* pt = new r_4[nvar*blk];
     57  mNBlk = 1;
     58  mPtr.push_back(pt);
     59  int i;
     60  for(i=0; i<nvar; i++)
     61    {
     62      strncpy(mNames+i*LENNAME1, noms[i], LENNAME); 
     63      mNames[i*LENNAME1+LENNAME] = '\0';
     64    }
     65  return;
    6466}
    6567
     
    194196return(rets);
    195197}
    196 
    197 
    198198 
    199199/* --Methode-- */
     
    347347{
    348348
    349 Clean();
    350 
    351 char strg[256];
    352 s.GetLine(strg, 255);
    353 // Pour savoir s'il y avait un DVList Info associe
    354 bool hadinfo = false;
    355 if (strncmp(strg+strlen(strg)-7, "HasInfo", 7) == 0)  hadinfo = true;
    356 
    357 s.GetI4(mNVar);
    358 mNames = new char[mNVar*LENNAME1];
    359 mVar = new r_4[mNVar];
    360 mVarD = new r_8[mNVar];
    361 s.GetBytes(mNames, mNVar*LENNAME1);
    362 s.GetI4(mNEnt);
    363 s.GetI4(mBlk);
    364 s.GetI4(mNBlk);
    365 
    366 if (hadinfo) {    // Lecture eventuelle du DVList Info
    367   if (mInfo == NULL)  mInfo = new DVList;
    368   s >> (*mInfo);
    369   }
    370 
    371 int jb;
    372 for(jb=0; jb<mNBlk; jb++) {
    373   r_4* pt = new r_4[mNVar*mBlk];
    374   mPtr.push_back(pt);
    375   s.GetR4s(mPtr[jb], mNVar*mBlk);
    376 }
    377 
    378 }
     349  Clean();
     350 
     351  char strg[256];
     352  s.GetLine(strg, 255);
     353  // Pour savoir s'il y avait un DVList Info associe
     354  bool hadinfo = false;
     355  if (strncmp(strg+strlen(strg)-7, "HasInfo", 7) == 0)  hadinfo = true;
     356
     357  s.GetI4(mNVar);
     358  mNames = new char[mNVar*LENNAME1];
     359  mVar = new r_4[mNVar];
     360  mVarD = new r_8[mNVar];
     361  s.GetBytes(mNames, mNVar*LENNAME1);
     362  s.GetI4(mNEnt);
     363  s.GetI4(mBlk);
     364  s.GetI4(mNBlk);
     365
     366  if (hadinfo) {    // Lecture eventuelle du DVList Info
     367    if (mInfo == NULL)  mInfo = new DVList;
     368    s >> (*mInfo);
     369  }
     370
     371  int jb;
     372  for(jb=0; jb<mNBlk; jb++) {
     373    r_4* pt = new r_4[mNVar*mBlk];
     374    mPtr.push_back(pt);
     375    s.GetR4s(mPtr[jb], mNVar*mBlk);
     376  }
     377}
     378
     379NTuple& NTuple::operator=(const NTuple &ntpl)
     380{
     381  mNVar= ntpl.mNVar;
     382  mNEnt= ntpl.mNEnt;
     383  mBlk = ntpl.mBlk;
     384  mNBlk= ntpl.mNBlk;
     385 
     386  mVar= new r_4[mNVar];
     387  for(int k = 0; k < mNVar; k++)
     388    mVar[k]= ntpl.mVar[k];
     389 
     390  mVarD= new r_8[mNVar];
     391  for(int k = 0; k < mNVar; k++)
     392    mVarD[k]= ntpl.mVarD[k];
     393 
     394  mNames = new char[mNVar*LENNAME1];
     395  for(int i = 0; i < mNVar; i++)
     396    {
     397      strncpy(mNames+i*LENNAME1,(ntpl.mNames)+i*LENNAME1, LENNAME); 
     398      mNames[i*LENNAME1+LENNAME] = '\0';
     399    }
     400
     401  for(int k = 0; k < mNBlk; k++)
     402    {
     403      r_4 *ptr= new r_4[mNVar*mBlk];
     404      for(int i = 0; i < mNVar*mBlk; i++)
     405        {
     406          *(ptr+i)= *(ntpl.mPtr[k]+i);
     407        }
     408      mPtr.push_back(ptr);
     409    }
     410
     411  mInfo = new DVList;
     412  if(ntpl.mInfo) 
     413    {
     414      *mInfo= *(ntpl.mInfo);
     415    }
     416  else
     417    {
     418      mInfo = NULL;
     419    }
     420
     421  return *this;
     422}
  • trunk/SophyaLib/NTools/ntuple.h

    r297 r475  
    22//  CMV+Reza     Juillet 97
    33//  CEA-DAPNIA      LAL-IN2P3/CNRS
     4//  added overloading of operator =      F. Touze, Guy Le Meur 19-OCT-99
    45
    56#ifndef NTUPLE_H_SEEN
     
    2829  virtual           ~NTuple();
    2930
     31  NTuple &operator=(const NTuple &ntpl);
     32
    3033  void              Fill(r_4* x);
    3134
    3235  inline int_4      NEntry() { return(mNEnt); }
    3336  inline int_4      NVar() { return(mNVar); }
     37  inline int_4      BLock() { return(mBlk); }
    3438
    3539  float             GetVal(int n, int k)   const;
Note: See TracChangeset for help on using the changeset viewer.