Changeset 2792 in Sophya for trunk/SophyaPI/PIext
- Timestamp:
- Jun 1, 2005, 3:24:48 PM (20 years ago)
- Location:
- trunk/SophyaPI/PIext
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/SophyaPI/PIext/basexecut.cc
r2781 r2792 22 22 #include "ntuple.h" 23 23 #include "generaldata.h" 24 #include "datatable.h" 24 25 25 26 #ifdef SANS_EVOLPLANCK … … 284 285 mObjMgr->AddObj(nt,tokens[0]); 285 286 } 287 288 // Creation de DataTable 289 else 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 } 286 323 287 324 // Creation de GeneralFitData … … 889 926 mpiac->RegisterCommand(kw, usage, this, "FileIO"); 890 927 kw = "ntfrascii"; 891 usage = "Fills an existing NTuple from ASCII table file";928 usage = "Fills an existing NTuple or DataTable from ASCII table file"; 892 929 usage += "\n Usage: ntfrascii nt_name file_name [def_init_val]"; 893 930 usage += "\n Related commands: ntloop fillnt "; … … 982 1019 kw = "newh1d"; 983 1020 usage = "Creates a 1D histogramm \n Usage: newh1d name xmin xmax nbin"; 984 usage += "\n Related commands: newh2d newprof[e] new nt newgfd ";1021 usage += "\n Related commands: newh2d newprof[e] newdt newnt newgfd "; 985 1022 mpiac->RegisterCommand(kw, usage, this, "Objects"); 986 1023 kw = "newh2d"; 987 1024 usage = "Creates a 2D histogramm \n Usage: newh2d name xmin xmax nbinx ymin ymax nbiny"; 988 usage += "\n Related commands: newh1d newprof[e] new nt newgfd ";1025 usage += "\n Related commands: newh1d newprof[e] newdt newnt newgfd "; 989 1026 mpiac->RegisterCommand(kw, usage, this, "Objects"); 990 1027 kw = "newprof"; 991 1028 usage = "Creates a profile histogramm \n Usage: newprof name xmin xmax nbin [ymin ymax]"; 992 1029 usage += "\n Errors represent the data spread in the X bin "; 993 usage += "\n Related commands: newh1d newh2d newprofe new nt newgfd ";1030 usage += "\n Related commands: newh1d newh2d newprofe newdt newnt newgfd "; 994 1031 mpiac->RegisterCommand(kw, usage, this, "Objects"); 995 1032 kw = "newprofe"; 996 1033 usage = "Creates a profile histogramm \n Usage: newprofe name xmin xmax nbin [ymin ymax]"; 997 1034 usage += "\n Errors represent the error on the data mean in the X bin "; 998 usage += "\n Related commands: newh1d newh2d newprof new nt newgfd ";1035 usage += "\n Related commands: newh1d newh2d newprof newdt newnt newgfd "; 999 1036 mpiac->RegisterCommand(kw, usage, this, "Objects"); 1000 1037 kw = "newnt"; 1001 1038 usage = "Creates a ntuple \n Usage: newnt name v1 v2 v3 .. vn"; 1002 1039 usage += "\n newnt name nvar"; 1003 usage += "\n Related commands: newh1d newh2d newprof[e] newgfd "; 1040 usage += "\n Related commands: newdt newh1d newh2d newprof[e] newgfd "; 1041 mpiac->RegisterCommand(kw, usage, this, "Objects"); 1042 kw = "newdt"; 1043 usage = "Creates a datatable \n Usage: newdt name v1:t1 v2:t2 v3:t3 .. vn:tn"; 1044 usage += "\n newdt name nvar"; 1045 usage += "\n vi : variable name"; 1046 usage += "\n ti : variable type"; 1047 usage += "\n r8,r4 for 8 and 4 bytes float"; 1048 usage += "\n i8,i4 for 8 and 4 bytes signed integer"; 1049 usage += "\n s for string"; 1050 usage += "\n Related commands: newnt newh1d newh2d newprof[e] newgfd"; 1004 1051 mpiac->RegisterCommand(kw, usage, this, "Objects"); 1005 1052 kw = "newgfd"; 1006 1053 usage = "Creates GeneralFit Data object \n Usage: newgfd nvar nalloc [errx(0/1)]"; 1007 usage += "\n Related commands: newh1d newh2d newprof[e] new nt ";1054 usage += "\n Related commands: newh1d newh2d newprof[e] newdt newnt "; 1008 1055 mpiac->RegisterCommand(kw, usage, this, "Objects"); 1009 1056 kw = "newvec"; -
trunk/SophyaPI/PIext/pawexecut.cc
r2775 r2792 13 13 #include "histerr.h" 14 14 #include "ntuple.h" 15 #include "datatable.h" 15 16 16 17 #include "pawexecut.h" … … 99 100 100 101 kw = "n/read"; 101 usage = "Read columns in an ASCII file and fill a NTuple ";102 usage = "Read columns in an ASCII file and fill a NTuple or a DataTable"; 102 103 usage += "\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["; 104 usage += "\n nt : NTuple or DataTable (see options) name"; 105 usage += "\n var_i,c_i : variable name, associated column in ASCII file [0,n["; 104 106 usage += "\n where [options] are:"; 107 usage += "\n \"-dt\": create a DataTable of double instead of a NTuple"; 105 108 usage += "\n \"=s\": separator character is \'s\' (could be \"\t\")"; 106 109 usage += "\n \"-^abcd\": do not read lines beginning with string \"abcd\" "; … … 655 658 string nament = tokens[0]; 656 659 string nameascii = tokens[1]; 660 bool create_datatable = false; 657 661 vector<string> donotreadbeg; 658 662 vector<string> donotreadin; … … 667 671 int lc = tokens[i].size(); 668 672 if(lc<2) continue; 673 if(tokens[i].find("-dt")==0) { // create DataTable instead of NTuple 674 create_datatable = true; 675 continue; 676 } 669 677 const char *c = tokens[i].c_str(); 670 678 if(c[0]=='=') { // Separator … … 739 747 } 740 748 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 } 744 761 r_8 *xnt = new r_8[nvar]; 745 NTuple *nt = new NTuple(nvar,ntvn);746 762 747 763 // Read file … … 808 824 if(lvs<numcolmaxi) continue; // Pas assez de champs decodes, mauvaise ligne 809 825 810 // Remplissage du NTuple 826 // Remplissage du NTuple ou de la DataTable 811 827 for(int i=0;i<nvar;i++) { 812 828 xnt[i] = 0.; … … 815 831 xnt[i] = atof(vs[ic].c_str()); 816 832 } 817 nt->Fill(xnt); 833 if(nt) nt->Fill(xnt); 834 else if(dt) dt->Fill(xnt); 818 835 //cout<<"...xnt"; for(int i=0;i<nvar;i++) cout<<" "<<xnt[i]; cout<<endl; 819 836 820 837 } 838 int_4 nentries = (nt)? nt->NEntry(): dt->NEntry(); 821 839 cout<<"n_read: "<<nline<<" lines in file, " 822 840 <<nlinecom<<" commentary, " 823 <<n t->NEntry()<<" Ntupleentries"<<endl;824 825 // On sauve le NTuple si besoin, on ferme et detruit ce qu'il faut841 <<nentries<<" object entries"<<endl; 842 843 // On sauve le NTuple/DataTable si besoin, on ferme et detruit ce qu'il faut 826 844 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 } 829 852 delete [] xnt; 830 853 delete [] line; -
trunk/SophyaPI/PIext/servnobjm.cc
r2781 r2792 34 34 #include "histos.h" 35 35 #include "histos2.h" 36 #include "hisprof.h" 36 37 #include "ntuple.h" 37 #include " hisprof.h"38 #include "datatable.h" 38 39 39 40 #include "piyfxdrw.h" … … 823 824 /* --Methode-- */ 824 825 void Services2NObjMgr::NtFromASCIIFile(string& nom,string& filename,double def_val) 825 // Pour remplir un ntuple "nom" existant a partir du fichier826 // Pour remplir un NTuple/DataTable "nom" existant a partir du fichier 826 827 // ASCII table "filename". Si il y a plus de variables dans le 827 828 // ntuple que dans le fichier "filename", 828 // les sur-numeraires sont mises a "def_val" par defaut.829 // les sur-numeraires numeriques sont mises a "def_val" par defaut. 829 830 { 830 831 AnyDataObj* mobj = MyObjMgr()->GetObj(nom); 831 if(mobj == NULL) 832 {cout<<"NtFromASCIIFile() Error, object "<<nom<<" not existing"<<endl; 833 return;} 834 if(typeid(*mobj) != typeid(NTuple)) 835 {cout<<"NtFromASCIIFile() Error, object "<<nom<<" not an NTuple"<<endl; 836 return;} 837 if (!mImgapp) return; 838 839 NTuple* nt = (NTuple*) mobj; 840 nt->FillFromASCIIFile(filename, def_val); 832 if(mobj == NULL) { 833 cout<<"NtFromASCIIFile() Error, object "<<nom<<" not existing"<<endl; 834 return; 835 } 836 837 NTuple* nt = NULL; 838 DataTable* dt = NULL; 839 if(typeid(*mobj) == typeid(NTuple)) nt = (NTuple*) mobj; 840 else if(typeid(*mobj) == typeid(DataTable)) dt = (DataTable*) mobj; 841 842 if(nt==NULL && dt==NULL) { 843 cout<<"NtFromASCIIFile() Error, object "<<nom<<" not an NTuple nor a DataTable"<<endl; 844 return; 845 } 846 if (!mImgapp) return; 847 848 if(nt) nt->FillFromASCIIFile(filename, def_val); 849 else if(dt) dt->FillFromASCIIFile(filename); 841 850 return; 842 851 }
Note:
See TracChangeset
for help on using the changeset viewer.