Changeset 2792 in Sophya for trunk/SophyaPI/PIext/pawexecut.cc


Ignore:
Timestamp:
Jun 1, 2005, 3:24:48 PM (20 years ago)
Author:
cmv
Message:

spiapp cmd "newdt" pour creer une DataTable
spiapp cmd "n/read" modifier pour remplir aussi des DataTable (option -dt)
NtFromASCIIFile modifier pour remplir aussi des DataTable

mais le decodage FillFromASCII de la classe DataTAble est encore a faire

cmv 01/06/2005

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/SophyaPI/PIext/pawexecut.cc

    r2775 r2792  
    1313#include "histerr.h"
    1414#include "ntuple.h"
     15#include "datatable.h"
    1516
    1617#include "pawexecut.h"
     
    99100
    100101kw = "n/read";
    101 usage = "Read columns in an ASCII file and fill a NTuple";
     102usage = "Read columns in an ASCII file and fill a NTuple or a DataTable";
    102103usage += "\n n/read nt fascii [options] var_1,c_1 var_2,c_2 ... var_n,c_n ";
    103 usage += "\n var_i,c_i : ntuple variable name, associated column in ASCII file [0,n[";
     104usage += "\n nt : NTuple or DataTable (see options) name";
     105usage += "\n var_i,c_i : variable name, associated column in ASCII file [0,n[";
    104106usage += "\n where [options] are:";
     107usage += "\n   \"-dt\": create a DataTable of double instead of a NTuple";
    105108usage += "\n   \"=s\": separator character is \'s\' (could be \"\t\")";
    106109usage += "\n   \"-^abcd\": do not read lines beginning with string \"abcd\" ";
     
    655658 string nament = tokens[0];
    656659 string nameascii = tokens[1];
     660 bool create_datatable = false;
    657661 vector<string> donotreadbeg;
    658662 vector<string> donotreadin;
     
    667671   int lc = tokens[i].size();
    668672   if(lc<2) continue;
     673   if(tokens[i].find("-dt")==0) { // create DataTable instead of NTuple
     674     create_datatable = true;
     675     continue;
     676   }
    669677   const char *c = tokens[i].c_str();
    670678   if(c[0]=='=') { // Separator
     
    739747 }
    740748
    741  // Creation du NTuple
    742  char** ntvn = new char*[nvar];
    743  for(int i=0;i<nvar;i++) ntvn[i] = const_cast<char *>(varname[i].c_str());
     749 // Creation du NTuple ou de la DataTable
     750 NTuple *nt = NULL;
     751 DataTable *dt = NULL;
     752 if(!create_datatable) { //create NTuple
     753   char** ntvn = new char*[nvar];
     754   for(int i=0;i<nvar;i++) ntvn[i] = const_cast<char *>(varname[i].c_str());
     755   nt = new NTuple(nvar,ntvn);
     756   delete [] ntvn;
     757 } else { //create DataTable
     758   dt = new DataTable();
     759   for(int i=0;i<nvar;i++) dt->AddDoubleColumn(varname[i]);
     760 }
    744761 r_8 *xnt = new r_8[nvar];
    745  NTuple *nt = new NTuple(nvar,ntvn);
    746762
    747763 // Read file
     
    808824   if(lvs<numcolmaxi) continue; // Pas assez de champs decodes, mauvaise ligne
    809825
    810    // Remplissage du NTuple
     826   // Remplissage du NTuple ou de la DataTable
    811827   for(int i=0;i<nvar;i++) {
    812828     xnt[i] = 0.;
     
    815831     xnt[i] = atof(vs[ic].c_str());
    816832   }
    817    nt->Fill(xnt);
     833   if(nt)      nt->Fill(xnt);
     834   else if(dt) dt->Fill(xnt);
    818835   //cout<<"...xnt"; for(int i=0;i<nvar;i++) cout<<" "<<xnt[i]; cout<<endl;
    819836
    820837 }
     838 int_4 nentries = (nt)? nt->NEntry(): dt->NEntry();
    821839 cout<<"n_read: "<<nline<<" lines in file, "
    822840     <<nlinecom<<" commentary, "
    823      <<nt->NEntry()<<" Ntuple entries"<<endl;
    824 
    825  // On sauve le NTuple si besoin, on ferme et detruit ce qu'il faut
     841     <<nentries<<" object entries"<<endl;
     842
     843 // On sauve le NTuple/DataTable si besoin, on ferme et detruit ce qu'il faut
    826844 NamedObjMgr omg;
    827  if(nt->NEntry()>0) omg.AddObj(nt,nament); else delete nt;
    828  delete [] ntvn;
     845 if(nentries>0) {
     846   if(nt) omg.AddObj(nt,nament);
     847   if(dt) omg.AddObj(dt,nament);
     848 } else {
     849   if(nt) delete nt;
     850   if(dt) delete dt;
     851 }
    829852 delete [] xnt;
    830853 delete [] line;
Note: See TracChangeset for help on using the changeset viewer.