Changeset 2792 in Sophya for trunk/SophyaPI/PIext/basexecut.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/basexecut.cc

    r2781 r2792  
    2222#include "ntuple.h"
    2323#include "generaldata.h"
     24#include "datatable.h"
    2425
    2526#ifdef SANS_EVOLPLANCK
     
    284285  mObjMgr->AddObj(nt,tokens[0]);
    285286  }
     287
     288// Creation de DataTable
     289else if (kw == "newdt") {
     290  if(tokens.size() < 2)
     291    {cout<<"Usage: newdt name v1:t1 v2:t2 ... vn:tn / newdt name nvar"<<endl; return(0);}
     292  DataTable* dt = new DataTable();
     293  const char *c = tokens[1].c_str();
     294  if(isdigit(c[0])) {
     295    int n = atoi(tokens[1].c_str());
     296    if(n<=0 || n>=10000) {
     297      cout<<"newdt name nvar : nvar="<<n<<" must be an positive integer<10000"<<endl;
     298      delete dt; return(0);
     299    }
     300    for(int i=0;i<n;i++) {
     301      char str[16]; sprintf(str,"v%d",i);
     302      dt->AddDoubleColumn(str);
     303    }
     304  } else {
     305    for(int i=1;i<tokens.size();i++) {
     306      string vname = tokens[i];
     307      uint_4 p = tokens[i].find(':');
     308      if(p<tokens[i].size()) vname = vname.substr(0,p);
     309      if(vname.size()<1) {
     310        cout<<"Zero size name for variable: tokens["<<i<<"]="<<tokens[i]<<endl;
     311        delete dt; return(0);
     312      }
     313      if     (tokens[i].find(":r4")<tokens[i].size()) dt->AddFloatColumn(vname);
     314      else if(tokens[i].find(":r8")<tokens[i].size()) dt->AddDoubleColumn(vname);
     315      else if(tokens[i].find(":i4")<tokens[i].size()) dt->AddIntegerColumn(vname);
     316      else if(tokens[i].find(":i8")<tokens[i].size()) dt->AddLongColumn(vname);
     317      else if(tokens[i].find(":s") <tokens[i].size()) dt->AddStringColumn(vname);
     318      else                                            dt->AddDoubleColumn(vname);
     319    }
     320  }
     321  mObjMgr->AddObj(dt,tokens[0]);
     322}
    286323
    287324// Creation de GeneralFitData
     
    889926mpiac->RegisterCommand(kw, usage, this, "FileIO");
    890927kw = "ntfrascii";
    891 usage = "Fills an existing NTuple from ASCII table file";
     928usage = "Fills an existing NTuple or DataTable from ASCII table file";
    892929usage += "\n Usage: ntfrascii nt_name file_name [def_init_val]";
    893930usage += "\n  Related commands: ntloop fillnt ";
     
    9821019kw = "newh1d";
    9831020usage = "Creates a 1D histogramm \n Usage: newh1d name xmin xmax nbin";
    984 usage += "\n  Related commands: newh2d  newprof[e] newnt  newgfd "; 
     1021usage += "\n  Related commands: newh2d  newprof[e] newdt newnt  newgfd "; 
    9851022mpiac->RegisterCommand(kw, usage, this, "Objects");
    9861023kw = "newh2d";
    9871024usage = "Creates a 2D histogramm \n Usage: newh2d name xmin xmax nbinx ymin ymax nbiny";
    988 usage += "\n  Related commands: newh1d  newprof[e] newnt  newgfd "; 
     1025usage += "\n  Related commands: newh1d  newprof[e] newdt newnt  newgfd "; 
    9891026mpiac->RegisterCommand(kw, usage, this, "Objects");
    9901027kw = "newprof";
    9911028usage = "Creates a profile histogramm \n Usage: newprof name xmin xmax nbin [ymin ymax]";
    9921029usage += "\n  Errors represent the data spread in the X bin "; 
    993 usage += "\n  Related commands: newh1d  newh2d newprofe newnt newgfd "; 
     1030usage += "\n  Related commands: newh1d  newh2d newprofe newdt newnt newgfd "; 
    9941031mpiac->RegisterCommand(kw, usage, this, "Objects");
    9951032kw = "newprofe";
    9961033usage = "Creates a profile histogramm \n Usage: newprofe name xmin xmax nbin [ymin ymax]";
    9971034usage += "\n  Errors represent the error on the data mean in the X bin "; 
    998 usage += "\n  Related commands: newh1d  newh2d newprof newnt newgfd "; 
     1035usage += "\n  Related commands: newh1d  newh2d newprof newdt newnt newgfd "; 
    9991036mpiac->RegisterCommand(kw, usage, this, "Objects");
    10001037kw = "newnt";
    10011038usage = "Creates a ntuple \n Usage: newnt name v1 v2 v3 .. vn";
    10021039usage += "\n        newnt name nvar"; 
    1003 usage += "\n  Related commands: newh1d  newh2d newprof[e] newgfd "; 
     1040usage += "\n  Related commands: newdt newh1d  newh2d newprof[e] newgfd "; 
     1041mpiac->RegisterCommand(kw, usage, this, "Objects");
     1042kw = "newdt";
     1043usage = "Creates a datatable \n Usage: newdt name v1:t1 v2:t2 v3:t3 .. vn:tn";
     1044usage += "\n        newdt name nvar"; 
     1045usage += "\n    vi : variable name"; 
     1046usage += "\n    ti : variable type"; 
     1047usage += "\n         r8,r4 for 8 and 4 bytes float"; 
     1048usage += "\n         i8,i4 for 8 and 4 bytes signed integer"; 
     1049usage += "\n         s for string"; 
     1050usage += "\n  Related commands: newnt newh1d  newh2d newprof[e] newgfd"; 
    10041051mpiac->RegisterCommand(kw, usage, this, "Objects");
    10051052kw = "newgfd";
    10061053usage = "Creates GeneralFit Data object \n Usage: newgfd nvar nalloc [errx(0/1)]";
    1007 usage += "\n  Related commands: newh1d  newh2d  newprof[e] newnt "; 
     1054usage += "\n  Related commands: newh1d  newh2d  newprof[e] newdt newnt "; 
    10081055mpiac->RegisterCommand(kw, usage, this, "Objects");
    10091056kw = "newvec";
Note: See TracChangeset for help on using the changeset viewer.