Changeset 357 in Sophya for trunk/SophyaPI/PIext
- Timestamp:
- Aug 5, 1999, 8:08:07 PM (26 years ago)
- Location:
- trunk/SophyaPI/PIext
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/SophyaPI/PIext/basexecut.cc
r349 r357 255 255 double xmin, xmax; 256 256 xmin = 0.; xmax = n; 257 if (tokens.size() < 3) tokens.push_back("0."); 258 if (tokens.size() < 4) tokens.push_back("n"); 259 mObjMgr->GetServiceObj()->PlotFunc(tokens[2], tokens[0], xmin, xmax, n, tokens[3]); 257 if (tokens.size() < 3) { 258 Vector* v = new Vector(n); 259 mObjMgr->AddObj(v, tokens[0]); 260 } 261 else { 262 if (tokens.size() < 4) tokens.push_back(""); 263 mObjMgr->GetServiceObj()->PlotFunc(tokens[2], tokens[0], xmin, xmax, n, tokens[3]); 264 } 260 265 } 261 266 else if (kw == "newmtx") { 262 267 if (tokens.size() < 3) { 263 cout << "Usage: newvec name sizeX sizeY[f(i,j) dopt] " << endl; return(0);268 cout << "Usage: newvec name sizeX(Col) sizeY(Lines) [f(i,j) dopt] " << endl; return(0); 264 269 } 265 270 int nx = atoi(tokens[1].c_str()); … … 268 273 xmin = 0.; xmax = nx; 269 274 ymin = 0.; ymax = ny; 270 if (tokens.size() < 4) tokens.push_back("0."); 271 if (tokens.size() < 5) tokens.push_back("n"); 272 mObjMgr->GetServiceObj()->PlotFunc2D(tokens[3], tokens[0], xmin, xmax, ymin, ymax, 273 nx, ny, tokens[4]); 275 if (tokens.size() < 4) { 276 Matrix* mtx = new Matrix(ny,nx); 277 mObjMgr->AddObj(mtx, tokens[0]); 278 } 279 else { 280 if (tokens.size() < 5) tokens.push_back("n"); 281 mObjMgr->GetServiceObj()->PlotFunc2D(tokens[3], tokens[0], xmin, xmax, ymin, ymax, 282 nx, ny, tokens[4]); 283 } 274 284 } 275 285 … … 333 343 else if ( (kw == "func") ) { 334 344 if (tokens.size() < 4) { cout << "Usage: func f(x) xmin xmax npt [opt]" << endl; return(0); } 335 string opt = " n";345 string opt = ""; 336 346 if (tokens.size() > 4) opt = tokens[4]; 337 347 int np; … … 346 356 else if ( (kw == "funcff") ) { 347 357 if (tokens.size() < 5) { cout << "Usage: funcff C-filename f(x)-name xmin xmax npt [opt]" << endl; return(0); } 348 string opt = " n";358 string opt = ""; 349 359 if (tokens.size() > 5) opt = tokens[5]; 350 360 int np; … … 359 369 else if ( (kw == "func2d") ) { 360 370 if (tokens.size() < 7) { 361 cout << "Usage: func2d f(x,y) xmin xmax nptx ymin ymax npty opt" << endl;371 cout << "Usage: func2d f(x,y) xmin xmax nptx ymin ymax npty [opt]" << endl; 362 372 return(0); 363 373 } … … 372 382 xmin = atof(tokens[1].c_str()); xmax = atof(tokens[2].c_str()); 373 383 ymin = atof(tokens[4].c_str()); ymax = atof(tokens[5].c_str()); 374 string opt = " n";384 string opt = ""; 375 385 if (tokens.size() > 7) opt = tokens[7]; 376 386 string nom = ""; … … 379 389 else if ( (kw == "func2dff") ) { 380 390 if (tokens.size() < 8) { 381 cout << "Usage: func2d C-filename F(x,y)-name xmax nptx ymin ymax npty opt" << endl;391 cout << "Usage: func2d C-filename F(x,y)-name xmax nptx ymin ymax npty [opt]" << endl; 382 392 return(0); 383 393 } … … 392 402 xmin = atof(tokens[2].c_str()); xmax = atof(tokens[3].c_str()); 393 403 ymin = atof(tokens[5].c_str()); ymax = atof(tokens[6].c_str()); 394 string opt = " n";404 string opt = ""; 395 405 if (tokens.size() > 8) opt = tokens[8]; 396 406 string nom = ""; … … 400 410 // >>>>>>>>>>> Trace d'expressions de N_Tuple, StarList, etc ... 401 411 else if (kw == "plot2d" ) { 402 if (tokens.size() < 4) {403 cout << "Usage: plot2d nameobj expx expy [exp errx experry] expcut [opt]" << endl;412 if (tokens.size() < 3) { 413 cout << "Usage: plot2d nameobj expx expy [expcut opt loop_par]" << endl; 404 414 return(0); 405 415 } 406 string errx = ""; string erry = ""; string ecut = "1"; 407 string opt = "n"; 408 if (tokens.size() < 6) { // Plot sans les erreurs 409 ecut = tokens[3]; 410 if (tokens.size() > 4) opt = tokens[4]; 411 } 412 else { // Plot avec les erreurs 413 errx = tokens[3]; erry = tokens[4]; ecut = tokens[5]; 414 if (tokens.size() > 6) opt = tokens[6]; 415 } 416 srvo->DisplayPoints2D(tokens[0],tokens[1],tokens[2],errx,erry,ecut,opt); 417 } 418 419 else if (kw == "plot2dw" ) { 416 string errx = ""; string erry = ""; 417 if (tokens.size() < 4) tokens.push_back("1"); 418 while (tokens.size() < 6) tokens.push_back(""); 419 srvo->DisplayPoints2D(tokens[0],tokens[1],tokens[2],errx,erry,tokens[3],tokens[4],tokens[5]); 420 } 421 422 else if (kw == "plot2de" ) { // Plot2D avec les erreurs 423 if (tokens.size() < 5) { 424 cout << "Usage: plot2de nameobj expx expy experrx experry [expcut opt loop_par]" << endl; 425 return(0); 426 } 427 if (tokens.size() < 6) tokens.push_back("1"); 428 while (tokens.size() < 8) tokens.push_back(""); 429 srvo->DisplayPoints2D(tokens[0],tokens[1],tokens[2],tokens[3],tokens[4], 430 tokens[5],tokens[6],tokens[7]); 431 } 432 433 else if (kw == "plot2dw" ) { // Plot2d avec poids 434 if (tokens.size() < 4) { 435 cout << "Usage: plot2dw nomobj expx expy expwt [expcut opt loop_par]" << endl; 436 return(0); 437 } 438 if (tokens.size() < 5) tokens.push_back("1"); 439 while (tokens.size() < 7) tokens.push_back(""); 440 srvo->DisplayPoints2DW(tokens[0],tokens[1],tokens[2],tokens[3], tokens[4], tokens[5], tokens[6]); 441 } 442 else if (kw == "plot3d" ) { 443 if (tokens.size() < 4) { 444 cout << "Usage: plot3d nomobj expx expy expz [expcut opt loop_par]" << endl; 445 return(0); 446 } 447 if (tokens.size() < 5) tokens.push_back("1"); 448 while (tokens.size() < 7) tokens.push_back(""); 449 srvo->DisplayPoints3D(tokens[0],tokens[1],tokens[2],tokens[3], tokens[4], tokens[5], tokens[6]); 450 } 451 452 else if (kw == "projh1d" ) { 453 if (tokens.size() < 3) { 454 cout << "Usage: projh1d nomh1 nomobj expx [expwt expcut opt loop_par]" << endl; 455 return(0); 456 } 457 if (tokens.size() < 4) tokens.push_back("1."); 458 if (tokens.size() < 5) tokens.push_back("1"); 459 while (tokens.size() < 7) tokens.push_back(""); 460 srvo->ProjectH1(tokens[1], tokens[2], tokens[3], tokens[4], tokens[0], tokens[5], tokens[6] ); 461 } 462 463 464 // Projection dans histogrammes 465 else if (kw == "projh2d" ) { 466 if (tokens.size() < 4) { 467 cout << "Usage: projh2d nomh2 nomobj expx expy [expwt expcut opt loop_par]" << endl; 468 return(0); 469 } 470 if (tokens.size() < 5) tokens.push_back("1."); 471 if (tokens.size() < 6) tokens.push_back("1"); 472 while (tokens.size() < 8) tokens.push_back(""); 473 srvo->ProjectH2(tokens[1], tokens[2], tokens[3], tokens[4], tokens[5], tokens[0], 474 tokens[6], tokens[7] ); 475 } 476 477 else if (kw == "projprof" ) { 478 if (tokens.size() < 4) { 479 cout << "Usage: projprof nomprof nomobj expx expy [expwt expcut opt loop_par]" << endl; 480 return(0); 481 } 482 if (tokens.size() < 5) tokens.push_back("1."); 483 if (tokens.size() < 6) tokens.push_back("1"); 484 while (tokens.size() < 8) tokens.push_back(""); 485 srvo->ProjectHProf(tokens[1], tokens[2], tokens[3], tokens[4], tokens[5], tokens[0], 486 tokens[6], tokens[7] ); 487 } 488 489 // Projection dans vector/matrix 490 else if (kw == "fillvec" ) { 491 if (tokens.size() < 4) { 492 cout << "Usage: fillvec nomvec nomobj expx expv [expcut opt loop_par]" << endl; 493 return(0); 494 } 495 if (tokens.size() < 5) tokens.push_back("1"); 496 while (tokens.size() < 7) tokens.push_back(""); 497 srvo->FillVect(tokens[1], tokens[2], tokens[3], tokens[4], tokens[0], tokens[5], tokens[6] ); 498 } 499 500 else if (kw == "fillmtx" ) { 420 501 if (tokens.size() < 5) { 421 cout << "Usage: plot2dw nomobj expx expy expwt expcut opt" << endl; 422 return(0); 423 } 424 string opt = "n"; 425 if (tokens.size() > 5) opt = tokens[5]; 426 srvo->DisplayPoints2DW(tokens[0],tokens[1],tokens[2],tokens[3], tokens[4], opt); 427 } 428 else if (kw == "plot3d" ) { 502 cout << "Usage: fillmtx nommtx nomobj expx expy expv [expcut opt loop_par]" << endl; 503 return(0); 504 } 505 if (tokens.size() < 6) tokens.push_back("1"); 506 while (tokens.size() < 8) tokens.push_back(""); 507 srvo->FillMatx(tokens[1], tokens[2], tokens[3], tokens[4], tokens[5], tokens[0], 508 tokens[6], tokens[7] ); 509 } 510 511 // Remplissage NTuple,Vecteurs, ... , boucle de NTuple 512 else if (kw == "fillnt" ) { 429 513 if (tokens.size() < 5) { 430 cout << "Usage: plot3d nomobj expx expy expz expcut opt" << endl; 431 return(0); 432 } 433 string opt = "n"; 434 if (tokens.size() > 5) opt = tokens[5]; 435 srvo->DisplayPoints3D(tokens[0],tokens[1],tokens[2],tokens[3], tokens[4], opt); 436 } 437 438 else if (kw == "projh1d" ) { 439 if (tokens.size() < 5) { 440 cout << "Usage: projh1d nomobj expx expwt expcut nomh1 opt" << endl; 441 return(0); 442 } 443 string opt = "n"; 444 if (tokens.size() > 5) opt = tokens[5]; 445 srvo->ProjectH1(tokens[0],tokens[1],tokens[2], tokens[3], tokens[4], opt); 446 } 447 448 else if (kw == "projh2d" ) { 449 if (tokens.size() < 6) { 450 cout << "Usage: projh2 nomobj expx expy expwt expcut nomh2 opt" << endl; 451 return(0); 452 } 453 string opt = "n"; 454 if (tokens.size() > 6) opt = tokens[6]; 455 456 srvo->ProjectH2(tokens[0],tokens[1],tokens[2], tokens[3], tokens[4], tokens[5], opt); 457 } 458 459 else if (kw == "projprof" ) { 460 if (tokens.size() < 6) { 461 cout << "Usage: projprof nomobj expx expy expwt expcut nomprof opt" << endl; 462 return(0); 463 } 464 string opt = "n"; 465 if (tokens.size() > 6) opt = tokens[6]; 466 467 srvo->ProjectHProf(tokens[0],tokens[1],tokens[2], tokens[3], tokens[4], tokens[5], opt); 468 } 469 470 else if (kw == "fillnt" ) { 471 if (tokens.size() < 6) { 472 cout << "Usage: fillnt nameobj expx expy expz expt expcut [ntname]" << endl; 473 return(0); 474 } 475 if (tokens.size() < 7) tokens.push_back(""); 476 srvo->FillNT(tokens[0],tokens[1],tokens[2], tokens[3], tokens[4], tokens[5], tokens[6] ); 514 cout << "Usage: fillnt nameobj expx expy expz expt [expcut ntname loop_par]" << endl; 515 return(0); 516 } 517 while (tokens.size() < 8) tokens.push_back(""); 518 srvo->FillNT(tokens[0],tokens[1],tokens[2], tokens[3], tokens[4], tokens[5], tokens[6], tokens[7] ); 477 519 } 478 520 479 521 else if (kw == "ntloop" ) { 480 522 if (tokens.size() < 3) { 481 cout << "Usage: ntloop nameobj fname funcname [ntname [N1 N2] ]" << endl; 482 return(0); 483 } 484 if (tokens.size() < 4) tokens.push_back(""); 485 if (tokens[3] == "!") tokens[3] = ""; 486 int nl1 = -1; 487 int nl2 = -1; 488 if (tokens.size() > 5) { 489 nl1 = atoi(tokens[4].c_str()); 490 nl2 = atoi(tokens[5].c_str()); 491 } 492 srvo->FillNTFrCFile(tokens[0],tokens[1], tokens[2], tokens[3], nl1, nl2); 523 cout << "Usage: ntloop nameobj fname funcname [ntname loop_par ]" << endl; 524 return(0); 525 } 526 while (tokens.size() < 5) tokens.push_back(""); 527 srvo->FillNTFrCFile(tokens[0],tokens[1], tokens[2], tokens[3], tokens[4]); 493 528 } 494 529 … … 501 536 } 502 537 503 else if (kw == "fillvec" ) { 504 if (tokens.size() < 4) { 505 cout << "Usage: fillvec nameobj expx expcut nomvec opt" << endl; 506 return(0); 507 } 508 string opt = "n"; 509 if (tokens.size() > 4) opt = tokens[4]; 510 srvo->FillVect(tokens[0],tokens[1],tokens[2], tokens[3], opt); 538 else if (kw == "exptovec" ) { 539 if (tokens.size() < 3) { 540 cout << "Usage: exptovec nomvec nameobj expx [expcut opt loop_par]" << endl; 541 return(0); 542 } 543 while (tokens.size() < 6) tokens.push_back(""); 544 srvo->ExpressionToVector(tokens[1],tokens[2],tokens[3],tokens[0],tokens[4],tokens[5]); 511 545 } 512 546 513 547 else if (kw == "fillgd1" ) { 514 548 if (tokens.size() < 5) { 515 cout << "Usage: fillgd1 nom obj expx expy experry expcut nomgfd" << endl;516 return(0); 517 } 518 string nomgfd = "";519 if (tokens.size() > 5) nomgfd = tokens[5];549 cout << "Usage: fillgd1 nomgfd nomobj expx expy experry [expcut loop_par] " << endl; 550 return(0); 551 } 552 if (tokens.size() < 6) tokens.push_back("1"); 553 if (tokens.size() < 7) tokens.push_back(""); 520 554 string expy = ""; 521 srvo->FillGFD(tokens[ 0],tokens[1], expy, tokens[2], tokens[3], tokens[4],nomgfd);555 srvo->FillGFD(tokens[1],tokens[2], expy, tokens[3], tokens[4], tokens[5], tokens[0]); 522 556 } 523 557 524 558 else if (kw == "fillgd2" ) { 525 559 if (tokens.size() < 6) { 526 cout << "Usage: fillgd2 nom obj expx expy expz experrz expcut nomgfd" << endl;527 return(0); 528 } 529 string nomgfd = "";530 if (tokens.size() > 6) nomgfd = tokens[6];531 srvo->FillGFD(tokens[ 0],tokens[1],tokens[2], tokens[3], tokens[4], tokens[5],nomgfd);560 cout << "Usage: fillgd2 nomgfd nomobj expx expy expz experrz [expcut loop_par]" << endl; 561 return(0); 562 } 563 if (tokens.size() < 7) tokens.push_back("1"); 564 if (tokens.size() < 8) tokens.push_back(""); 565 srvo->FillGFD(tokens[1],tokens[2],tokens[3], tokens[4], tokens[5], tokens[6], tokens[0], tokens[7]); 532 566 } 533 567 … … 713 747 mpiac->RegisterCommand(kw, usage, this, "Objects"); 714 748 kw = "newvec"; 715 usage = "Creates (and fills) a vector \n Usage: newvec name size [f(i) [dopt] ] ";749 usage = "Creates (and optionaly fills) a vector \n Usage: newvec name size [f(i) [dopt] ] "; 716 750 usage += "\n Related commands: newmtx"; 717 mpiac->RegisterCommand(kw, usage, this, "Obje ts");751 mpiac->RegisterCommand(kw, usage, this, "Objects"); 718 752 kw = "newmtx"; 719 usage = "Creates (and fills) a matrix \n Usage: newvec name sizeX sizeY [f(i,j) [dopt] ] "; 753 usage = "Creates (and optionaly fills) a matrix \n"; 754 usage +=" Usage: newvec name sizeX(Col) sizeY(Lines) [f(i,j) [dopt] ] "; 720 755 usage += "\n Related commands: newvec"; 721 mpiac->RegisterCommand(kw, usage, this, "Obje ts");756 mpiac->RegisterCommand(kw, usage, this, "Objects"); 722 757 723 758 kw = "disp"; … … 785 820 mpiac->RegisterCommand(kw, usage, this, "Func Plot"); 786 821 822 kw = "ObjectExpressions"; 823 usage = "Any mathematical expression (math.h) with object variables can be used"; 824 usage += "\n ------ Object Variable names (double) -------- "; 825 usage += "\nNTuple varnames - Histo1D/HProf: i,x,val,err - Histo2D: i,j,x,y,val,err"; 826 usage += "\nVector: i,val - Matrix: i,j,val - Image: x=i,y=j, pix=val"; 827 usage += "\nLoop parameters can be specified as I1[:I2[:DI]] for(int i=I1; i<I2; i+=DI)"; 828 usage += "\nThe default Cut() expression in true (=1) for all"; 829 usage += "\n Related commands: plot2d plot2de plot2dw plot3d "; 830 usage += "\n projh1d projh2d projprof fillvec fillmtx "; 831 usage += "\n fillnt fillgd1 fillgd2 ntloop exptovec ... "; 832 mpiac->RegisterCommand(kw, usage, NULL, "Expr. Plotting"); 787 833 kw = "plot2d"; 788 834 usage = "Plots (2D) Y=g(Object) vs. X=f(Object) --- Object Variable names (double) :"; 789 usage += "\nNTuple varnames - Histo1D/HProf: i,x,val,err - Histo2D: i,j,x,y,val,err"; 790 usage += "\nVector: i,val - Matrix: i,j,val - Image: x=i,y=j, pix=val"; 791 usage += "\n Usage: plot2d nameobj f_X() g_Y() [ f_ErrX() f_ErrY() ] f_Cut() [graphic_attributes]"; 792 usage += "\n Related commands: plot2dw plot3d projh1d projh2d projprof fillnt fillvec fillgd1 "; 835 usage += "\n Usage: plot2d nameobj f_X() g_Y() [f_Cut() graphic_attributes loop_param]"; 836 usage += "\n Related commands: plot2de plot2dw plot3d ObjectExpressions ..."; 837 mpiac->RegisterCommand(kw, usage, this, "Expr. Plotting"); 838 kw = "plot2de"; 839 usage = "Plots (2D) Y=g(Object) vs. X=f(Object) with error bars eX/Y=f_ErrX/Y(Object) "; 840 usage += "\n Usage: plot2de nameobj f_X() g_Y() f_ErrX() f_ErrY() [f_Cut() graphic_attributes loop_param]"; 841 usage += "\n Related commands: plot2d plot2dw plot3d ObjectExpressions ..."; 793 842 mpiac->RegisterCommand(kw, usage, this, "Expr. Plotting"); 794 843 kw = "plot2dw"; 795 844 usage = "Plots (2D) Y=g(Object) vs. X=f(Object) with Weight W=h(Object) "; 796 usage += "\n Usage: plot2dw nameobj f_X() g_Y() h_Wt() Cut() [graphic_attributes]";797 usage += "\n Related commands: plot2d projh1d projh2d projprof fillnt fillvec ";845 usage += "\n Usage: plot2dw nameobj f_X() g_Y() h_Wt() [Cut() graphic_attributes loop_param]"; 846 usage += "\n Related commands: plot2d plot2dw plot3d ObjectExpressions ..."; 798 847 mpiac->RegisterCommand(kw, usage, this, "Expr. Plotting"); 799 848 kw = "plot3d"; 800 849 usage = "Plots (3D) Z=h(Object) vs. Y=g(Object) vs. X=f(Object) vs "; 801 usage += "\n Usage: plot3d nameobj f_X() g_Y() h_Z() Cut() [graphic_attributes]";802 usage += "\n Related commands: plot2d plot2dw p rojh1d projh2d projprof fillnt fillvec ";850 usage += "\n Usage: plot3d nameobj f_X() g_Y() h_Z() [Cut() graphic_attributes loop_param]"; 851 usage += "\n Related commands: plot2d plot2dw plot2de plot3d ObjectExpressions ..."; 803 852 mpiac->RegisterCommand(kw, usage, this, "Expr. Plotting"); 804 853 805 854 kw = "projh1d"; 806 855 usage = "Projects X=f(Object) with weight WT=h(Object) into a 1D histogram "; 807 usage += "\n Usage: projh1d name obj f_X() h_WT() Cut() nameh1d [graphic_attributes]";856 usage += "\n Usage: projh1d nameh1d nameobj f_X() [h_WT()=1. Cut() graphic_attributes loop_param]"; 808 857 usage += "\n Histo1D nameh1d is created if necessary "; 809 usage += "\n Related commands: p lot2d projh2d projprof fillnt fillvec ";858 usage += "\n Related commands: projh2d projprof ObjectExpressions ..."; 810 859 mpiac->RegisterCommand(kw, usage, this, "Expr. Plotting"); 811 860 kw = "projh2d"; 812 861 usage = "Projects (X=f(Object),Y=g(Object)) with weight WT=h(Object) into a 2D histogram "; 813 usage += "\n Usage: projh2d name obj f_X() g_Y() h_WT() Cut() nameh2d [graphic_attributes]";862 usage += "\n Usage: projh2d nameh2d nameobj f_X() g_Y() [h_WT()=1. Cut() graphic_attributes loop_param]"; 814 863 usage += "\n Histo2D nameh2d is created if necessary "; 815 usage += "\n Related commands: p lot2d projh1d projprof ";864 usage += "\n Related commands: projh1d projprof ObjectExpressions ..."; 816 865 mpiac->RegisterCommand(kw, usage, this, "Expr. Plotting"); 817 866 kw = "projprof"; 818 867 usage = "Projects (X=f(Object),Y=g(Object)) with weight WT=h(Object) into a profile histogram "; 819 usage += "\n Usage: projh2d name obj f_X() g_Y() h_WT() Cut() nameprof [graphic_attributes]";868 usage += "\n Usage: projh2d nameprof nameobj f_X() g_Y() [h_WT()=1. Cut() graphic_attributes loop_param]"; 820 869 usage += "\n HProf nameprof is created if necessary "; 821 usage += "\n Related commands: plot2d projh2d "; 870 usage += "\n Related commands: projh1d projh2d ObjectExpressions ..."; 871 mpiac->RegisterCommand(kw, usage, this, "Expr. Plotting"); 872 kw = "fillvec"; 873 usage = "Fills a Vector V((int)(f_X(Object)+0.5)) = h_V(Object) "; 874 usage += "\n Usage: fillvec namevec nameobj f_X() h_V() [Cut() graphic_attributes loop_param]"; 875 usage += "\n Related commands: fillmtx fillnt ObjectExpressions ..."; 876 mpiac->RegisterCommand(kw, usage, this, "Expr. Plotting"); 877 kw = "fillmtx"; 878 usage = "Fills a Matrix M(Line=g_Y(Object)+0.5, Col=f_X(Object)+0.5)) = h_V(Object) "; 879 usage += "\n Usage: fillvec namevec nameobj f_X() g_Y() h_V() [Cut() graphic_attributes loop_param]"; 880 usage += "\n Related commands: fillvec fillnt ObjectExpressions ..."; 822 881 mpiac->RegisterCommand(kw, usage, this, "Expr. Plotting"); 823 882 824 883 kw = "fillnt"; 825 884 usage = "Creates and Fills an NTuple(x,y,z,t) with (X=f(Object),Y=g(...),Z=h(...),T=k(...))"; 826 usage += "\n Usage: fillnt nameobj f_X() g_Y() h_Z() k_T() Cut() nameNt";885 usage += "\n Usage: fillnt nameobj f_X() g_Y() h_Z() k_T() [Cut() nameNt loop_param]"; 827 886 usage += "\n Related commands: ntloop plot2d projh1d projh2d projprof "; 828 mpiac->RegisterCommand(kw, usage, this, "Expr. Plotting"); 887 usage += "\n Related commands: fillvec fillmtx ntloop exptovec fillgd1 fillgd2 ObjectExpressions ..."; 888 mpiac->RegisterCommand(kw, usage, this, "Expr. Plotting"); 889 829 890 kw = "ntloop"; 830 891 usage = "Loops over an Object NTupleInterface calling a function from a C-file \n"; 831 892 usage += "and optionaly fills an NTuple(x,y,z,t) with (X=f(Object),Y=g(...),Z=h(...),T=k(...))"; 832 usage += "\n Usage: ntloop nameobj CFileName FuncName [NtupleName [N1 N2]]";833 usage += "\n Or: ntloop nameobj CFileName FuncName ! N1 N2 ";893 usage += "\n Usage: ntloop nameobj CFileName FuncName [NtupleName loop_param]"; 894 usage += "\n Related commands: fillvec fillmtx fillnt fillgd1 fillgd2 exptovec ObjectExpressions ..."; 834 895 usage += "\n Related commands: ntexpcfile fillnt"; 835 896 mpiac->RegisterCommand(kw, usage, this, "Expr. Plotting"); 897 836 898 kw = "ntexpcfile"; 837 899 usage = "Creates a C-File with declarations suitable to be used for ntloop"; … … 840 902 mpiac->RegisterCommand(kw, usage, this, "Expr. Plotting"); 841 903 842 kw = " fillvec";904 kw = "exptovec"; 843 905 usage = "Creates and Fills a Vector with X=f(Object)"; 844 usage += "\n Usage: fillvec nameobj f_X() Cut() nameVec [graphic_attributes]";845 usage += "\n Related commands: plot2d projh1d fillnt ";906 usage += "\n Usage: exptovec namevec nameobj f_X() [Cut() graphic_attributes loop_param]"; 907 usage += "\n Related commands: ntloop fillnt ObjectExpressions ..."; 846 908 mpiac->RegisterCommand(kw, usage, this, "Expr. Plotting"); 847 909 kw = "fillgd1"; 848 910 usage = "Creates and Fills a GeneralFitData with (X=f(Object), Y=g(...), ErrY=h(...))"; 849 usage += "\n Usage: fillgd1 name obj f_X() g_Y() h_ErrY() Cut() nameGfd";850 usage += "\n Related commands: plot2d fillnt ";911 usage += "\n Usage: fillgd1 namegfd nameobj f_X() g_Y() h_ErrY() [Cut() loop_param]"; 912 usage += "\n Related commands: ntloop fillnt ObjectExpressions ..."; 851 913 mpiac->RegisterCommand(kw, usage, this, "Expr. Plotting"); 852 914 kw = "fillgd2"; 853 915 usage = "Creates and Fills a GeneralFitData with (X=f(Object), Y=g(...), Z=h(...)) ErrZ=k(...)"; 854 usage += "\n Usage: fillgd1 name obj f_X() g_Y() h_Z() k_ErrZ() Cut() nameGfd";855 usage += "\n Related commands: plot2d fillgd2 ";916 usage += "\n Usage: fillgd1 namegfd nameobj f_X() g_Y() h_Z() k_ErrZ() [Cut() loop_param]"; 917 usage += "\n Related commands: ntloop fillnt ObjectExpressions ..."; 856 918 mpiac->RegisterCommand(kw, usage, this, "Expr. Plotting"); 857 919 -
trunk/SophyaPI/PIext/piacmd.cc
r353 r357 435 435 typedef vector<string> cmdtok; 436 436 437 /* Fonction */ 438 static string GetStringFrStdin() 439 { 440 #ifndef __mac__ 441 /* On vide le buffer X-Window */ 442 XFlush(PIXDisplay()); 443 #endif 444 char buff[128]; 445 fgets(buff, 128, stdin); 446 buff[127] = '\0'; 447 return((string)buff); 448 } 449 437 450 /* --Methode-- */ 438 451 int PIACmd::Interpret(string& s) … … 683 696 return(0); 684 697 } 685 char buff[128]; 686 fgets(buff, 128, stdin); 687 buff[127] = '\0'; 688 mVars[tokens[0]] = buff; 698 mImgApp->GetConsole()->AddStr(">>> Reading From StdIn \n", PIVA_Magenta); 699 cout << tokens[0] << " ? " << endl; 700 mVars[tokens[0]] = GetStringFrStdin(); 689 701 } 690 702 … … 833 845 Interpret(line); 834 846 } 835 histon = false;847 histon = true; 836 848 837 849 // hist << "### End of Exec( " << file << " ) " << endl; … … 870 882 helpwin->Show(); 871 883 } 884 885 -
trunk/SophyaPI/PIext/servnobjm.cc
r349 r357 203 203 if (nom.length() < 1) { 204 204 titre = "Function f(x)"; 205 nom = "/ tmp/func";205 nom = "/home/func"; 206 206 } 207 207 else titre = nom; … … 265 265 if (nom.length() < 1) { 266 266 titre = "Function f(x,y)"; 267 nom = "/ tmp/func2d";267 nom = "/home/func2d"; 268 268 } 269 269 else titre = nom; … … 287 287 void Services2NObjMgr::DisplayPoints2D(string& nom, string& expx, string& expy, 288 288 string& experrx, string& experry, 289 string& expcut, string dopt )289 string& expcut, string dopt, string loop) 290 290 { 291 291 NObjMgrAdapter* obja=NULL; … … 305 305 else { haserr = false; experrx = experry = "0."; nt = new NTuple(2, ntn); } 306 306 307 ComputeExpressions(obja, expx, expy, experrx, experry, expcut, nt, NULL, NULL);307 ComputeExpressions(obja, expx, expy, experrx, experry, expcut, loop, nt, NULL, NULL); 308 308 309 309 if (nt->NEntry() < 1) { … … 330 330 /* --Methode-- */ 331 331 void Services2NObjMgr::DisplayPoints3D(string& nom, string& expx, string& expy, 332 string& expz, string& expcut, string dopt )332 string& expz, string& expcut, string dopt, string loop) 333 333 { 334 334 NObjMgrAdapter* obja=NULL; … … 344 344 345 345 string expwt = "1."; 346 ComputeExpressions(obja, expx, expy, expz, expwt, expcut, nt, NULL, NULL);346 ComputeExpressions(obja, expx, expy, expz, expwt, expcut, loop, nt, NULL, NULL); 347 347 348 348 if (nt->NEntry() < 1) { … … 372 372 /* --Methode-- */ 373 373 void Services2NObjMgr::DisplayPoints2DW(string& nom, string& expx, string& expy, 374 string& expwt, string& expcut, string dopt )374 string& expwt, string& expcut, string dopt, string loop) 375 375 { 376 376 NObjMgrAdapter* obja=NULL; … … 386 386 387 387 string exp = "1."; 388 ComputeExpressions(obja, expx, expy, expwt, exp, expcut, nt, NULL, NULL);388 ComputeExpressions(obja, expx, expy, expwt, exp, expcut, loop, nt, NULL, NULL); 389 389 390 390 if (nt->NEntry() < 1) { … … 408 408 /* --Methode-- */ 409 409 void Services2NObjMgr::ProjectH1(string& nom, string& expx, string& expwt, 410 string& expcut, string& nomh1, string dopt )410 string& expcut, string& nomh1, string dopt, string loop) 411 411 { 412 412 NObjMgrAdapter* obja=NULL; … … 429 429 } 430 430 string expz = "0."; 431 ComputeExpressions(obja, expx, expwt, expz, expwt, expcut, nt, h1, NULL);431 ComputeExpressions(obja, expx, expwt, expz, expwt, expcut, loop, nt, h1, NULL); 432 432 433 433 if ((!h1) && (!nt)) return; … … 457 457 /* --Methode-- */ 458 458 void Services2NObjMgr::ProjectH2(string& nom, string& expx, string& expy, string& expwt, 459 string& expcut, string& nomh2, string dopt )459 string& expcut, string& nomh2, string dopt, string loop) 460 460 { 461 461 NObjMgrAdapter* obja=NULL; … … 478 478 } 479 479 string expz = "0."; 480 ComputeExpressions(obja, expx, expy, expwt, expwt, expcut, nt, NULL, h2);480 ComputeExpressions(obja, expx, expy, expwt, expwt, expcut, loop, nt, NULL, h2); 481 481 482 482 if ((!h2) && (!nt)) return; … … 508 508 /* --Methode-- cmv 13/10/98 */ 509 509 void Services2NObjMgr::ProjectHProf(string& nom, string& expx, string& expy, string& expwt, 510 string& expcut, string& nomprof, string dopt )511 // Pour remplir un ``GeneralFitData'' a partir de divers objets: 510 string& expcut, string& nomprof, string dopt, string loop) 511 // Pour remplir un ``GeneralFitData'' a partir de divers objets: 512 512 //| nom = nom de l'objet a projeter dans un HProf. 513 513 //| expx = expression X de definition du bin. … … 539 539 } 540 540 string expz = "0."; 541 ComputeExpressions(obja, expx, expy, expwt, expwt, expcut, nt, NULL, NULL, hprof);541 ComputeExpressions(obja, expx, expy, expwt, expwt, expcut, loop, nt, NULL, NULL, hprof); 542 542 543 543 if((!hprof) && (!nt)) return; … … 566 566 } 567 567 568 /* --Methode-- */ 569 void Services2NObjMgr::FillVect(string& nom, string& expx, string& expcut, 570 string& nomvec, string dopt) 568 569 /* --Methode-- */ 570 void Services2NObjMgr::FillVect(string& nom, string& expx, string& expv, 571 string& expcut, string& nomvec, string dopt, string loop) 571 572 { 572 573 NObjMgrAdapter* obja=NULL; 573 574 obja = mOmg->GetObjAdapter(nom); 574 575 if (obja == NULL) { 575 cout << "Services2NObjMgr::FillVect() Error , Pas d'objet de nom" << nom << endl;576 cout << "Services2NObjMgr::FillVect() Error , No such object: " << nom << endl; 576 577 return; 577 578 } 578 579 if (!mImgapp) return; 579 580 581 Vector* v1 = NULL; 582 AnyDataObj* ov = NULL; 583 ov=mOmg->GetObj(nomvec); 584 if (ov != NULL) v1 = dynamic_cast<Vector *>(ov); 585 if (v1 == NULL) { 586 cout << "Services2NObjMgr::FillVect() Error , No such object or not a vector: " << nomvec << endl; 587 return; 588 } 589 590 char* ntn[2]= {"vi", "vv"}; 591 NTuple* nt = new NTuple(2,ntn); // Creation NTuple 592 593 string expz = "0."; 594 ComputeExpressions(obja, expx, expv, expz, expz, expcut, loop, nt); 595 596 if (!nt) return; 597 if (nt->NEntry() < 1) { 598 cout << "Services2NObjMgr::FillVect() Warning Zero points satisfy cut !" << endl; 599 delete nt; 600 return; 601 } 602 603 int i,k; 604 double* xn; 605 for(k=0; k<nt->NEntry(); k++) { 606 xn = nt->GetLineD(k); 607 i = xn[0]+0.5; 608 if ( (i < 0) || i >= v1->NElts() ) continue; 609 (*v1)(i) = xn[1]; 610 } 611 delete nt; 612 613 614 mOmg->DisplayObj(nomvec, dopt); 615 return; 616 } 617 618 /* --Methode-- */ 619 void Services2NObjMgr::FillMatx(string& nom, string& expx, string& expy, string& expv, 620 string& expcut, string& nommtx, string dopt, string loop) 621 { 622 NObjMgrAdapter* obja=NULL; 623 obja = mOmg->GetObjAdapter(nom); 624 if (obja == NULL) { 625 cout << "Services2NObjMgr::FillMatx() Error , No such objet " << nom << endl; 626 return; 627 } 628 if (!mImgapp) return; 629 630 Matrix* mtx = NULL; 631 AnyDataObj* om = NULL; 632 om=mOmg->GetObj(nommtx); 633 if (om != NULL) mtx = dynamic_cast<Matrix *>(om); 634 if (mtx == NULL) { 635 cout << "Services2NObjMgr::FillMatx() Error , No such object or not a matrix " << nommtx << endl; 636 return; 637 } 638 639 char* ntn[3]= {"mi", "mj", "mv"}; 640 NTuple* nt = new NTuple(3,ntn); // Creation NTuple 641 642 string expz = "0."; 643 ComputeExpressions(obja, expx, expy, expv, expz, expcut, loop, nt); 644 645 if (!nt) return; 646 if (nt->NEntry() < 1) { 647 cout << "Services2NObjMgr::FillMatx() Warning Zero points satisfy cut !" << endl; 648 delete nt; 649 return; 650 } 651 652 int ic, jl, k; 653 double* xn; 654 for(k=0; k<nt->NEntry(); k++) { 655 xn = nt->GetLineD(k); 656 ic = xn[0]+0.5; 657 jl = xn[1]+0.5; 658 if ( (ic < 0) || ic >= mtx->NCol() ) continue; 659 if ( (jl < 0) || jl >= mtx->NRows() ) continue; 660 (*mtx)(jl, ic) = xn[2]; 661 } 662 delete nt; 663 664 665 mOmg->DisplayObj(nommtx, dopt); 666 return; 667 668 } 669 670 /* --Methode-- */ 671 void Services2NObjMgr::ExpressionToVector(string& nom, string& expx, string& expcut, 672 string& nomvec, string dopt, string loop) 673 { 674 NObjMgrAdapter* obja=NULL; 675 obja = mOmg->GetObjAdapter(nom); 676 if (obja == NULL) { 677 cout << "Services2NObjMgr::ExpressionToVector() Error , Pas d'objet de nom " << nom << endl; 678 return; 679 } 680 if (!mImgapp) return; 681 580 682 NTuple* nt = NULL; 581 if (nomvec.length() < 1) nomvec = "/tmp/ fillvec";683 if (nomvec.length() < 1) nomvec = "/tmp/expvec"; 582 684 583 685 char* ntn[2]= {"vecval", "vecwt"}; … … 586 688 string expwt = "1."; 587 689 string expz = "0."; 588 ComputeExpressions(obja, expx, expz, expz, expwt, expcut, nt, NULL, NULL);690 ComputeExpressions(obja, expx, expz, expz, expwt, expcut, loop, nt, NULL, NULL); 589 691 590 692 if (!nt) return; 591 693 if (nt->NEntry() < 1) { 592 cout << "Services2NObjMgr:: FillVect() Warning Zero points satisfy cut !" << endl;694 cout << "Services2NObjMgr::ExpressionToVector() Warning Zero points satisfy cut !" << endl; 593 695 delete nt; 594 696 return; … … 610 712 /* --Methode-- */ 611 713 void Services2NObjMgr::FillNT(string& nom, string& expx, string& expy, string& expz, 612 string& expt, string& expcut, string& nomnt )714 string& expt, string& expcut, string& nomnt, string loop) 613 715 { 614 716 NObjMgrAdapter* obja=NULL; … … 638 740 } 639 741 640 ComputeExpressions(obja, expx, expy, expz, expt, expcut, nt, NULL, NULL);742 ComputeExpressions(obja, expx, expy, expz, expt, expcut, loop, nt, NULL, NULL); 641 743 642 744 if (fgnnt) mOmg->AddObj(nt, nomnt); … … 647 749 /* --Methode-- */ 648 750 void Services2NObjMgr::FillNTFrCFile(string & nom, string const & fname, 649 string const & funcname, string & nomnt, 650 int nl1, int nl2) 751 string const & funcname, string & nomnt, string loop) 651 752 { 652 753 if (!mImgapp) return; … … 703 804 mImgapp->RedirectStdOutErr(false); 704 805 806 int k1,k2,dk; 807 k1 = 0; k2 = objnt->NbLines(); dk = 1; 808 DecodeLoopParameters(loop, k1, k2, dk); 809 if (k1 < 0) k1 = 0; 810 if (k2 < 0) k2 = objnt->NbLines(); 811 if (k2 > objnt->NbLines()) k2 = objnt->NbLines(); 812 if (dk <= 0) dk = 1; 813 705 814 TRY { 706 815 double* xn; 707 if (nl1 < 0) nl1 = 0; 708 if (nl2 < 0) nl2 = objnt->NbLines(); 709 if (nl2 > objnt->NbLines()) nl2 = objnt->NbLines(); 710 int kmax = nl2; 711 for(k=nl1; k<kmax; k++) { 816 int kmax = k2; 817 for(k=k1; k<kmax; k+=dk) { 712 818 xn = objnt->GetLineD(k); 713 819 if (f(xn, xnt, xnt+1, xnt+2, xnt+3, k, kmax) != 0) { … … 804 910 /* --Methode-- cmv 13/10/98 */ 805 911 void Services2NObjMgr::FillGFD(string& nom, string& expx, string& expy, string& expz, 806 string& experr, string& expcut, string& nomgfd )912 string& experr, string& expcut, string& nomgfd, string loop) 807 913 // Pour remplir un ``GeneralFitData'' a partir de divers objets: 808 914 //| nom = nom de l'objet a transcrire selon 1D: Z=f(X) ou 2D: Z=f(X,Y) . … … 832 938 833 939 // Remplissage NTuple buffer 834 ComputeExpressions(obja, expx, expy, expz, experr, expcut, nt, NULL, NULL);940 ComputeExpressions(obja, expx, expy, expz, experr, expcut, loop, nt, NULL, NULL); 835 941 if(nt->NEntry() < 1) 836 942 {cout<<"Services2NObjMgr::FillGFD() Warning Zero points satisfy cut !"<<endl; … … 1339 1445 /* --Methode-- */ 1340 1446 void Services2NObjMgr::ComputeExpressions(NObjMgrAdapter* obja, string& expx, 1341 string& expy, string& expz, string& expt, string& expcut, 1447 string& expy, string& expz, string& expt, string& expcut, string& loop, 1342 1448 NTuple* nt, Histo* h1, Histo2D* h2, HProf* hp) 1343 1449 { … … 1360 1466 int i,k; 1361 1467 for(i=0; i<10; i++) xnt[i] = 0.; 1362 1468 int k1,k2,dk; 1469 k1 = 0; k2 = objnt->NbLines(); dk = 1; 1470 DecodeLoopParameters(loop, k1, k2, dk); 1471 if (k1 < 0) k1 = 0; 1472 if (k2 < 0) k2 = objnt->NbLines(); 1473 if (k2 > objnt->NbLines()) k2 = objnt->NbLines(); 1474 if (dk <= 0) dk = 1; 1363 1475 TRY { 1364 1476 double* xn; 1365 for(k= 0; k<objnt->NbLines(); k++) {1477 for(k=k1; k<k2; k += dk) { 1366 1478 xn = objnt->GetLineD(k); 1367 1479 if (f(xn, xnt, xnt+1, xnt+2, xnt+3) != 0) { … … 1471 1583 } 1472 1584 1585 // Fonction static 1586 /* --Methode-- */ 1587 void Services2NObjMgr::DecodeLoopParameters(string& loop, int& i1, int& i2, int& di) 1588 { 1589 // Decode des paramatres de boucle for(int i=i1; i<i2; i+=di) specifies 1590 // sous forme i1[:i2[:di]] 1591 // cout << "LoopParam() " << loop << " I1=" << i1 << " I2=" << i2 << " DI=" << di; 1592 size_t l = loop.length(); 1593 if (l < 1) return; 1594 size_t p = loop.find(':'); 1595 if (p >= l) { i1 = atoi(loop.c_str()); return; } 1596 i1 = atoi(loop.substr(0, p).c_str()); 1597 string aa = loop.substr(p+1); 1598 p = aa.find(':'); 1599 if (p < aa.length() ) { 1600 i2 = atoi(aa.substr(0,p).c_str()); 1601 di = atoi(aa.substr(p+1).c_str()); 1602 } 1603 else i2 = atoi(aa.c_str()); 1604 // cout << "-> I1= " << i1 << " I2= " << i2 << " DI= " << di << endl; 1605 return; 1606 } 1473 1607 1474 1608 /* --Methode-- */ -
trunk/SophyaPI/PIext/servnobjm.h
r351 r357 61 61 virtual void DisplayPoints2D(string & nom, string& expx, string& expy, 62 62 string& experrx, string& experry, 63 string& expcut, string dopt="" );63 string& expcut, string dopt="", string loop=""); 64 64 virtual void DisplayPoints3D(string & nom, string& expx, string& expy, string& expz, 65 string& expcut, string dopt="" );65 string& expcut, string dopt="", string loop=""); 66 66 virtual void DisplayPoints2DW(string & nom, string& expx, string& expy, 67 string& expwt, string& expcut, string dopt="" );68 // Projection d'expressions dans histogramme (et trace)67 string& expwt, string& expcut, string dopt="", string loop=""); 68 // Projection d'expressions dans histogramme, vecteur/matrices (et trace) 69 69 virtual void ProjectH1(string & nom, string& expx, string& expwt, string& expcut, 70 string& nomh1, string dopt="" );70 string& nomh1, string dopt="", string loop=""); 71 71 virtual void ProjectH2(string & nom, string& expx, string& expy, string& expwt, 72 string& expcut, string& nomh2, string dopt="" );72 string& expcut, string& nomh2, string dopt="", string loop=""); 73 73 virtual void ProjectHProf(string & nom, string& expx, string& expy, string& expwt, 74 string& expcut, string& nomprof, string dopt=""); 75 // Projection d'expression dans vecteurs et dans n-tuple 76 virtual void FillVect(string & nom, string& expx, string& expcut, 77 string& nomvec, string dopt=""); 74 string& expcut, string& nomprof, string dopt="", string loop=""); 75 76 // Remplissage de vecteurs, ntuples, GFD 77 virtual void FillVect(string & nom, string& expx, string& expv, string& expcut, 78 string& nomvec, string dopt="", string loop=""); 79 virtual void FillMatx(string & nom, string& expx, string& expy, string& expv, 80 string& expcut, string& nommtx, string dopt="", string loop=""); 81 82 virtual void ExpressionToVector(string & nom, string& expx, string& expcut, 83 string& nomvec, string dopt="", string loop=""); 78 84 virtual void FillNT(string & nom, string& expx, string& expy, string& expz, 79 string& expt, string& expcut, string& nomnt );85 string& expt, string& expcut, string& nomnt, string loop=""); 80 86 virtual void FillGFD(string & nom, string& expx, string& expy, string& expz, 81 string& experr, string& expcut, string& nomgfd );87 string& experr, string& expcut, string& nomgfd, string loop=""); 82 88 virtual void FillNTFrCFile(string & nom, string const & fname, 83 string const & funcname, string & nomnt, 84 int nl1=-1, int nl2=-1); 89 string const & funcname, string & nomnt, string loop=""); 85 90 virtual void PrepareNTExpressionCFile(string & nomobj, string const & fname, 86 91 string const & funcname); … … 92 97 // Calcul d'expressions d'interface NTuple pour les objets 93 98 void ComputeExpressions(NObjMgrAdapter* obja, string& expx, string& expy, 94 string& expz, string& expt, string& expcut, 99 string& expz, string& expt, string& expcut, string& loop, 95 100 NTuple* nt=NULL, Histo* h1=NULL, 96 101 Histo2D* h2=NULL, HProf* hp=NULL); … … 101 106 102 107 // Utilitaires divers 108 static void DecodeLoopParameters(string& loop, int& i1, int& i2, int& di); 109 int DecodeDispOption(string& dopt, bool& fgsrgr); 103 110 string FileName2Name(string const & fn); 104 int DecodeDispOption(string& dopt, bool& fgsrgr);105 111 char* PClassIdToClassName(int cid); 106 112
Note:
See TracChangeset
for help on using the changeset viewer.