Changeset 2815 in Sophya
- Timestamp:
- Jul 8, 2005, 5:26:49 PM (20 years ago)
- Location:
- trunk/SophyaPI/PIext
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/SophyaPI/PIext/piafitting.cc
r2813 r2815 205 205 , mUFNVar(0), mUFNPar(0) 206 206 { 207 // Flag de controle d'execution depuis la boucle d'evts 208 SetFgEvtLoopFlag(false); 209 207 210 // Init et Set des options 208 211 mPar=0.; mStep=1.; mMin=1.; mMax=-1.; mFix=0.; … … 496 499 { 497 500 mNObj = ""; 498 AnyDataObj* mobj = mApp->ObjMgr()->GetObj(obj); 501 AnyDataObj* mobj = NULL; 502 if ( fg_evtloop ) mobj = mApp->ObjMgr()->GetObj(obj); 503 else { 504 NamedObjMgr omg; 505 mobj = omg.GetObj(obj); 506 } 499 507 if(mobj == NULL) 500 508 {cout<<"PIAFitter::DecodeObject Error , Pas d'objet de nom "<<obj<<endl; … … 540 548 mNVar = mNData = 0; 541 549 542 mAdObj = mApp->ObjMgr()->GetObjAdapter(mNObj); // Ne pas deleter 550 mAdObj = NULL; 551 if ( fg_evtloop ) mAdObj = mApp->ObjMgr()->GetObjAdapter(mNObj); // Ne pas deleter 552 else { 553 NamedObjMgr omg; 554 mAdObj = omg.GetObjAdapter(mNObj); // Ne pas deleter 555 } 556 543 557 if(mAdObj == NULL) { 544 558 cout<<"PIAFitter::DecodeObject Error , ObjAdapter==NULL for "<<mNObj<<endl; … … 874 888 nomresfun = mNObj + "_res"; 875 889 AnyDataObj* ob = mAdObj->FitResidusObj(*mFit); 876 if(ob) mApp->ObjMgr()->AddObj(ob,nomresfun); 890 if(ob) { 891 if ( fg_evtloop ) mApp->ObjMgr()->AddObj(ob,nomresfun); 892 else { 893 NamedObjMgr omg; 894 omg.AddObj(ob,nomresfun); 895 } 896 } 877 897 } 878 898 … … 880 900 nomresfun = mNObj + "_fun"; 881 901 AnyDataObj* ob = mAdObj->FitFunctionObj(*mFit); 882 if(ob) mApp->ObjMgr()->AddObj(ob,nomresfun); 902 if(ob) { 903 if ( fg_evtloop ) mApp->ObjMgr()->AddObj(ob,nomresfun); 904 else { 905 NamedObjMgr omg; 906 omg.AddObj(ob,nomresfun); 907 } 908 } 883 909 } 884 910 … … 1054 1080 DecodeParam(mSp,mSs,mSm,mSM,mSf); 1055 1081 if(kw == "fit") { 1082 ZSync zs(getMutex()); // On s'assure 1083 SetFgEvtLoopFlag(false); // l'origine n'est pas la boucle d'evts 1056 1084 int rc = DoFit(); 1057 1085 if(rc>=0) FitFunRes(); 1086 zs.NOp(); 1058 1087 } else if(kw == "fitlin") { 1088 ZSync zs(getMutex()); 1089 SetFgEvtLoopFlag(false); // l'origine n'est pas la boucle d'evts 1059 1090 LinFit(); 1060 1091 } else if ((kw == "fitw") && (mApp != NULL) ) { … … 1450 1481 void PIAFitterWind::Process(PIMessage msg, PIMsgHandler* sender, void* data) 1451 1482 { 1452 int lp = (mFitter->mOpt.lp>2)?1:0;1453 int npar = mFitter->mNPar;1454 1483 1455 1484 // Decodage des messages, init et dismiss 1456 1485 msg = UserMsg(msg); 1457 1486 if(msg ==777) { 1458 if(lp)cout<<"Dismiss"<<endl;1487 // cout<<"Dismiss"<<endl; 1459 1488 //mDap->SetReady(); 1460 1489 Hide(); … … 1462 1491 } 1463 1492 1493 mFitter->SetFgEvtLoopFlag(true); // On indique que l'origine est la boucle d'evts 1494 ZSync zs(mFitter->getMutex()); // On s'assure d'une seule execution du code PIAFitting 1495 1496 int lp = (mFitter->mOpt.lp>2)?1:0; 1497 int npar = mFitter->mNPar; 1464 1498 // L'objet existe t-il encore? 1465 1499 if(mDap->ObjMgr()->GetObj(mFitter->mNObj) == NULL) { 1466 1500 cout<<"PIAFitterWind::Process Error , Pas d'objet de nom " 1467 1501 <<mFitter->mNObj<<endl; 1502 mFitter->SetFgEvtLoopFlag(false); 1468 1503 return; 1469 1504 } … … 1634 1669 if(mFitter->mOpt.lp>1) mFitter->PrintOptions(); 1635 1670 1636 return; 1637 } 1671 zs.NOp(); 1672 mFitter->SetFgEvtLoopFlag(false); 1673 return; 1674 } -
trunk/SophyaPI/PIext/piafitting.h
r1268 r2815 16 16 #include "dlftypes.h" 17 17 #include "piacmd.h" 18 #include "zthread.h" 18 19 19 20 class PIStdImgApp; … … 42 43 ,int nvar,int npar); 43 44 45 inline void SetFgEvtLoopFlag(bool fg=false) { fg_evtloop = fg; } 46 inline ZMutex & getMutex() { return singlefit_mutex; } 47 44 48 friend class PIAFitterWind; 45 49 46 50 protected : 51 bool fg_evtloop; // true : appel depuis Boucle d'evts, PIAFitterWind 52 // Attributs pour controle de thread 53 ZMutex singlefit_mutex; // Pour empecher l'execution simultanee de deux fits 47 54 48 55 typedef struct DFOptions {
Note:
See TracChangeset
for help on using the changeset viewer.