Changeset 2827 in Sophya


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

Location:
trunk/SophyaLib/HiStats
Files:
7 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];
  • trunk/SophyaLib/HiStats/basedtable.h

    r2822 r2827  
    1212#include <string>
    1313#include <vector>
     14
     15#include <complex>
    1416
    1517#include "ntupintf.h"
     
    6264  inline sa_size_t  AddDoubleColumn(string const & cnom)
    6365  { return AddColumn(DoubleField, cnom); }
     66  //! Adds a column holding single precision complex values (complex<r_4>), named \b cnom
     67  inline sa_size_t  AddComplexColumn(const char * cnom)
     68  { return AddColumn(ComplexField, cnom); }
     69  //! Adds a column holding single precision complex values (complex<r_4>), named \b cnom
     70  inline sa_size_t  AddComplexColumn(string const & cnom)
     71  { return AddColumn(ComplexField, cnom); }
     72  //! Adds a column holding double precision complex values (complex<r_8>), named \b cnom
     73  inline sa_size_t  AddDoubleComplexColumn(const char * cnom)
     74  { return AddColumn(DoubleComplexField, cnom); }
     75  //! Adds a column holding double precision complex values (complex<r_8>), named \b cnom
     76  inline sa_size_t  AddDoubleComplexColumn(string const & cnom)
     77  { return AddColumn(DoubleComplexField, cnom); }
    6478  //! Adds a column holding character strings, named \b cnom
    6579  inline sa_size_t  AddStringColumn(const char * cnom)
     
    199213  std::vector< SegDBInterface<r_8> * > mDColsP;
    200214  std::vector< sa_size_t > mDColIdx;
     215  std::vector< SegDBInterface< complex<r_4> > * > mYColsP;
     216  std::vector< sa_size_t > mYColIdx;
     217  std::vector< SegDBInterface< complex<r_8> > * > mZColsP;
     218  std::vector< sa_size_t > mZColIdx;
    201219  std::vector< SegDBInterface<string> * > mSColsP;
    202220  std::vector< sa_size_t > mSColIdx;
  • trunk/SophyaLib/HiStats/datatable.cc

    r2808 r2827  
    8181      mDCols[sk].Share(a.mDCols[ska]);
    8282      break;
     83    case ComplexField :
     84      mYCols[sk].Share(a.mYCols[ska]);
     85      break;
     86    case DoubleComplexField :
     87      mZCols[sk].Share(a.mZCols[ska]);
     88      break;
    8389    case StringField :
    8490      mSCols[sk].Share(a.mSCols[ska]);
     
    112118    case DoubleField :
    113119      mDCols[sk].Clone(a.mDCols[ska], true);
     120      break;
     121    case ComplexField :
     122      mYCols[sk].Clone(a.mYCols[ska], true);
     123      break;
     124    case DoubleComplexField :
     125      mZCols[sk].Clone(a.mZCols[ska], true);
    114126      break;
    115127    case StringField :
     
    142154  mFColsP.clear();
    143155  mDColsP.clear();
     156  mYColsP.clear();
     157  mZColsP.clear();
    144158  mSColsP.clear();
    145159
     
    148162  mFColIdx.clear();
    149163  mDColIdx.clear();
     164  mYColIdx.clear();
     165  mZColIdx.clear();
    150166  mSColIdx.clear();
    151167
     
    154170  mFCols.clear();
    155171  mDCols.clear();
     172  mYCols.clear();
     173  mZCols.clear();
    156174  mSCols.clear();
    157175}
     
    203221      mDColsP[kk] = &(mDCols[kk]);
    204222    break;
     223  case ComplexField :
     224    ser = mYCols.size();
     225    mYCols.push_back(SegDataBlock< complex<r_4> >(mSegSz));
     226    mYColIdx.push_back(idx);
     227    mYColsP.push_back(NULL);
     228    for(sa_size_t kk=0; kk<mYCols.size(); kk++)
     229      mYColsP[kk] = &(mYCols[kk]);
     230    break;
     231  case DoubleComplexField :
     232    ser = mZCols.size();
     233    mZCols.push_back(SegDataBlock< complex<r_8> >(mSegSz));
     234    mZColIdx.push_back(idx);
     235    mZColsP.push_back(NULL);
     236    for(sa_size_t kk=0; kk<mZCols.size(); kk++)
     237      mZColsP[kk] = &(mZCols[kk]);
     238    break;
    205239  case StringField :
    206240    ser = mDCols.size();
  • trunk/SophyaLib/HiStats/datatable.h

    r2822 r2827  
    4747  std::vector< SegDataBlock<r_4> > mFCols;
    4848  std::vector< SegDataBlock<r_8> > mDCols;
     49  std::vector< SegDataBlock< complex<r_4> > > mYCols;
     50  std::vector< SegDataBlock< complex<r_8> > > mZCols;
    4951  std::vector< SegDataBlock<string> > mSCols;     
    5052};
  • trunk/SophyaLib/HiStats/fio_dtable.cc

    r2700 r2827  
    8484        s << dt->mDCols[sk];
    8585        break;
     86      case BaseDataTable::ComplexField :
     87        s << dt->mYCols[sk];
     88        break;
     89      case BaseDataTable::DoubleComplexField :
     90        s << dt->mZCols[sk];
     91        break;
    8692      case BaseDataTable::StringField :
    8793        s << dt->mSCols[sk];
     
    109115      case BaseDataTable::DoubleField :
    110116        s.PutPosTagTable(swdt->mDCols[sk].GetSwapPosTagTable());
     117        break;
     118      case BaseDataTable::ComplexField :
     119        s.PutPosTagTable(swdt->mYCols[sk].GetSwapPosTagTable());
     120        break;
     121      case BaseDataTable::DoubleComplexField :
     122        s.PutPosTagTable(swdt->mZCols[sk].GetSwapPosTagTable());
    111123        break;
    112124      case BaseDataTable::StringField :
     
    206218        s >> dt->mDCols[sk];
    207219        break;
     220      case BaseDataTable::ComplexField :
     221        s >> dt->mYCols[sk];
     222        break;
     223      case BaseDataTable::DoubleComplexField :
     224        s >> dt->mZCols[sk];
     225        break;
    208226      case BaseDataTable::StringField :
    209227        s >> dt->mSCols[sk];
     
    241259        swdt->mDCols[sk] = SwSegDataBlock<r_8>(swdt->mDSwapper, swpos, swdt->SegmentSize());
    242260        break;
     261      case BaseDataTable::ComplexField :
     262        swpos.clear();
     263        s.GetPosTagTable(swpos);
     264        swdt->mYCols[sk] = SwSegDataBlock< complex<r_4> >(swdt->mYSwapper, swpos, swdt->SegmentSize());
     265        break;
     266      case BaseDataTable::DoubleComplexField :
     267        swpos.clear();
     268        s.GetPosTagTable(swpos);
     269        swdt->mZCols[sk] = SwSegDataBlock< complex<r_8> >(swdt->mZSwapper, swpos, swdt->SegmentSize());
     270        break;
    243271      case BaseDataTable::StringField :
    244272        swpos.clear();
  • trunk/SophyaLib/HiStats/swppfdtable.cc

    r2808 r2827  
    7474  : BaseDataTable(segsz) ,
    7575    mSwOut(&os), mSwIn(NULL),
    76     mISwapper(os), mLSwapper(os), mFSwapper(os), mDSwapper(os), mSSwapper(os)
     76    mISwapper(os), mLSwapper(os), mFSwapper(os), mDSwapper(os),
     77    mYSwapper(os), mZSwapper(os), mSSwapper(os)
    7778{
    7879}
     
    8990  mFSwapper.SetInStream(*pis);
    9091  mDSwapper.SetInStream(*pis);
     92  mYSwapper.SetInStream(*pis);
     93  mZSwapper.SetInStream(*pis);
    9194  mDSwapper.SetInStream(*pis);
    9295}
     
    119122  mFSwapper = a.mFSwapper;
    120123  mDSwapper = a.mDSwapper;
     124  mYSwapper = a.mYSwapper;
     125  mZSwapper = a.mZSwapper;
    121126  mSSwapper = a.mSSwapper;
    122127 
     
    160165      mDCols[sk] = a.mDCols[ska];
    161166      break;
     167    case ComplexField :
     168      mYCols[sk] = a.mYCols[ska];
     169      break;
     170    case DoubleComplexField :
     171      mZCols[sk] = a.mZCols[ska];
     172      break;
    162173    case StringField :
    163174      mSCols[sk] = a.mSCols[ska];
     
    186197    case DoubleField :
    187198      mDCols[sk].SwapOutBuffer();
     199      break;
     200    case ComplexField :
     201      mYCols[sk].SwapOutBuffer();
     202      break;
     203    case DoubleComplexField :
     204      mZCols[sk].SwapOutBuffer();
    188205      break;
    189206    case StringField :
     
    216233  mFColsP.clear();
    217234  mDColsP.clear();
     235  mYColsP.clear();
     236  mZColsP.clear();
    218237  mSColsP.clear();
    219238
     
    222241  mFColIdx.clear();
    223242  mDColIdx.clear();
     243  mYColIdx.clear();
     244  mZColIdx.clear();
    224245  mSColIdx.clear();
    225246
     
    228249  mFCols.clear();
    229250  mDCols.clear();
     251  mYCols.clear();
     252  mZCols.clear();
    230253  mSCols.clear();
    231254}
     
    277300      mDColsP[kk] = &(mDCols[kk]);
    278301    break;
     302  case ComplexField :
     303    ser = mYCols.size();
     304    mYCols.push_back(SwSegDataBlock< complex<r_4> >(mYSwapper, mSegSz));
     305    mYColIdx.push_back(idx);
     306    mYColsP.push_back(NULL);
     307    for(sa_size_t kk=0; kk<mYCols.size(); kk++)
     308      mYColsP[kk] = &(mYCols[kk]);
     309    break;
     310  case DoubleComplexField :
     311    ser = mZCols.size();
     312    mZCols.push_back(SwSegDataBlock< complex<r_8> >(mZSwapper, mSegSz));
     313    mZColIdx.push_back(idx);
     314    mZColsP.push_back(NULL);
     315    for(sa_size_t kk=0; kk<mZCols.size(); kk++)
     316      mZColsP[kk] = &(mZCols[kk]);
     317    break;
    279318  case StringField :
    280319    ser = mDCols.size();
  • trunk/SophyaLib/HiStats/swppfdtable.h

    r2808 r2827  
    5656  std::vector< SwSegDataBlock<r_8> > mDCols;
    5757  PPFDataSwapper<r_8> mDSwapper;
     58  std::vector< SwSegDataBlock< complex<r_4> > > mYCols;
     59  PPFDataSwapper< complex<r_4> > mYSwapper;
     60  std::vector< SwSegDataBlock< complex<r_8> > > mZCols;
     61  PPFDataSwapper< complex<r_8> > mZSwapper;
    5862  std::vector< SwSegDataBlock<string> > mSCols;   
    5963  PPFDataSwapper<string> mSSwapper;
Note: See TracChangeset for help on using the changeset viewer.