Ignore:
Timestamp:
Nov 2, 2005, 9:56:25 AM (20 years ago)
Author:
ansari
Message:

Modifs code BaseDataTable , DataTable et SwPPFDataTable pour la prise en compte
de colonnes de type complex (complex<r_4> ComplexField et complex<r_8> DoubleComplexField ) Reza , 2 Nov 2005

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/SophyaLib/HiStats/basedtable.cc

    r2808 r2827  
    4444    break;
    4545  case DateField :
    46     if (fgl) rs = "Date";
    47     else rs = "Date";
     46    if (fgl) rs = "DateTime";
     47    else rs = "T";
    4848    break;
    4949  default:
     
    156156  for(sa_size_t k=0; k<mDColsP.size(); k++)
    157157    mDColsP[k]->GetSegment(bid)[off] = data[mDColIdx[k]];
     158  for(sa_size_t k=0; k<mYColsP.size(); k++)
     159    mYColsP[k]->GetSegment(bid)[off] = complex<r_4>(data[mYColIdx[k]],0.);
     160  for(sa_size_t k=0; k<mZColsP.size(); k++)
     161    mZColsP[k]->GetSegment(bid)[off] = complex<r_8>(data[mZColIdx[k]],0.);
    158162  for(sa_size_t k=0; k<mSColsP.size(); k++)
    159163    mSColsP[k]->GetSegment(bid)[off] = (string)MuTyV(data[mSColIdx[k]]);
     
    190194  for(sa_size_t k=0; k<mDColsP.size(); k++)
    191195    mDColsP[k]->GetSegment(bid)[off] = (r_8)data[mDColIdx[k]];
     196  for(sa_size_t k=0; k<mYColsP.size(); k++)
     197    mYColsP[k]->GetSegment(bid)[off] =
     198      complex<r_4>(data[mYColIdx[k]].GetRealPart(), data[mYColIdx[k]].GetImagPart());
     199  for(sa_size_t k=0; k<mZColsP.size(); k++)
     200    mZColsP[k]->GetSegment(bid)[off] =
     201      complex<r_8>(data[mZColIdx[k]].GetRealPart(), data[mZColIdx[k]].GetImagPart());
    192202
    193203  mNEnt++;
     
    205215  for(sa_size_t k=0; k<mDColsP.size(); k++)     
    206216    mDColsP[k]->Extend();
     217  for(sa_size_t k=0; k<mYColsP.size(); k++)
     218    mYColsP[k]->Extend();
     219  for(sa_size_t k=0; k<mZColsP.size(); k++)
     220    mZColsP[k]->Extend();
    207221  for(sa_size_t k=0; k<mSColsP.size(); k++)
    208222    mSColsP[k]->Extend();
     
    228242  for(sa_size_t k=0; k<mDColsP.size(); k++)
    229243    mVarMTV[mDColIdx[k]] = mDColsP[k]->GetCstSegment(bid)[off];
     244  for(sa_size_t k=0; k<mYColsP.size(); k++)
     245    mVarMTV[mYColIdx[k]] = mYColsP[k]->GetCstSegment(bid)[off];
     246  for(sa_size_t k=0; k<mZColsP.size(); k++)
     247    mVarMTV[mZColIdx[k]] = mZColsP[k]->GetCstSegment(bid)[off];
    230248  for(sa_size_t k=0; k<mSColsP.size(); k++)
    231249    mVarMTV[mSColIdx[k]] = atof(mSColsP[k]->GetCstSegment(bid)[off].c_str());
     
    336354  for(sa_size_t k=0; k<mDColsP.size(); k++)
    337355    mVarD[mDColIdx[k]] = mDColsP[k]->GetCstSegment(bid)[off];
     356  for(sa_size_t k=0; k<mYColsP.size(); k++)
     357    mVarD[mYColIdx[k]] = mYColsP[k]->GetCstSegment(bid)[off].real();
     358  for(sa_size_t k=0; k<mZColsP.size(); k++)
     359    mVarD[mZColIdx[k]] = mZColsP[k]->GetCstSegment(bid)[off].real();
    338360  for(sa_size_t k=0; k<mSColsP.size(); k++)
    339361    mVarD[mSColIdx[k]] = atof(mSColsP[k]->GetCstSegment(bid)[off].c_str());
     
    366388    break;
    367389  case DoubleField :
    368     rv = mDColsP[sk]->GetCstSegment(bid)[off];
     390  case DateField :
     391   rv = mDColsP[sk]->GetCstSegment(bid)[off];
     392    break;
     393  case ComplexField :
     394    rv = mYColsP[sk]->GetCstSegment(bid)[off].real();
     395    break;
     396  case DoubleComplexField :
     397    rv = mZColsP[sk]->GetCstSegment(bid)[off].real();
    369398    break;
    370399  case StringField :
     
    407436    rv = mDColsP[sk]->GetCstSegment(bid)[off];
    408437    break;
     438  case ComplexField :
     439    rv = mYColsP[sk]->GetCstSegment(bid)[off];
     440    break;
     441  case DoubleComplexField :
     442    rv = mZColsP[sk]->GetCstSegment(bid)[off];
     443    break;
    409444  case StringField :
    410445    rv = mSColsP[sk]->GetCstSegment(bid)[off];
     
    482517        if (sp[n] > max) max = sp[n];
    483518        if (sp[n] < min) min = sp[n];
     519        cnt++;
     520      }
     521    }
     522    break;
     523  case ComplexField :
     524    for(size_t is=0; is<mYColsP[sk]->NbSegments(); is++) {
     525      const complex<r_4> * sp = mYColsP[sk]->GetCstSegment(is);
     526      for(size_t n=0; n<mYColsP[sk]->SegmentSize(); n++) {
     527        if (cnt >= NEntry())  break;
     528        if (sp[n].real() > max) max = sp[n].real();
     529        if (sp[n].real() < min) min = sp[n].real();
     530        cnt++;
     531      }
     532    }
     533    break;
     534  case DoubleComplexField :
     535    for(size_t is=0; is<mZColsP[sk]->NbSegments(); is++) {
     536      const complex<r_8> * sp = mZColsP[sk]->GetCstSegment(is);
     537      for(size_t n=0; n<mZColsP[sk]->SegmentSize(); n++) {
     538        if (cnt >= NEntry())  break;
     539        if (sp[n].real() > max) max = sp[n].real();
     540        if (sp[n].real() < min) min = sp[n].real();
    484541        cnt++;
    485542      }
     
    583640      rv = mDColsP[sk]->GetCstSegment(bid)[off];
    584641      break;
     642    case ComplexField :
     643      rv = mYColsP[sk]->GetCstSegment(bid)[off];
     644      break;
     645    case DoubleComplexField :
     646      rv = mZColsP[sk]->GetCstSegment(bid)[off];
     647      break;
    585648    case StringField :
    586649      rv = mSColsP[sk]->GetCstSegment(bid)[off];
Note: See TracChangeset for help on using the changeset viewer.