Changeset 357 in Sophya for trunk/SophyaPI/PIext/servnobjm.cc
- Timestamp:
- Aug 5, 1999, 8:08:07 PM (26 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
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-- */
Note:
See TracChangeset
for help on using the changeset viewer.