Changeset 381 in Sophya for trunk/SophyaPI


Ignore:
Timestamp:
Aug 12, 1999, 9:52:49 AM (26 years ago)
Author:
ercodmgr
Message:

suite fit fenetre cmv 10/8/99

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/SophyaPI/PIext/piafitting.cc

    r379 r381  
    1 //CMVBUG reste pb suivant:
     1//CMVBUG reste pb suivant sous Linux-egcs (OSF1-cxx c'est ok):
    22//openppf cmvwppf.ppf
    33//fitw h1g g2 p:4500,45,10,900
     
    5353  PIButton**   but; int nbut;
    5454  PICheckBox** ckb; int nckb;
     55  PIOptMenu**  pom; int npom;
    5556  bool ReFillGData;
     57  int saveI1,saveI2, saveJ1, saveJ2;
    5658};
    5759
     
    358360if(mOpt.lpg<0) mOpt.lpg = 0;
    359361mOpt.i1 = (mOpt.i1<0||mOpt.i1>=mNBinX)? 0: mOpt.i1;
    360 mOpt.i2 = (mOpt.i2<0||mOpt.i2>=mNBinX||mOpt.i2<mOpt.i1)? mNBinX-1: mOpt.i2;
     362mOpt.i2 = (mOpt.i2<0||mOpt.i2>=mNBinX||mOpt.i2<=mOpt.i1)? mNBinX-1: mOpt.i2;
    361363if(mNVar>=2) {
    362364  mOpt.j1 = (mOpt.j1<0||mOpt.j1>=mNBinY)? 0: mOpt.j1;
    363   mOpt.j2 = (mOpt.j2<0||mOpt.j2>=mNBinY||mOpt.j2<mOpt.j1)? mNBinY-1: mOpt.j2;
     365  mOpt.j2 = (mOpt.j2<0||mOpt.j2>=mNBinY||mOpt.j2<=mOpt.j1)? mNBinY-1: mOpt.j2;
    364366} else mOpt.j2 = mOpt.j1 = 0;
    365367if(mOpt.polcx==2) {
     
    772774{
    773775ReFillGData = false;
     776saveI1 = saveI2 = saveJ1 = saveJ2 = 0;
    774777mDap = par;
    775778mFitter = fiter;
     
    783786nbut = 20;        but = new PIButton*[nbut];   {for(int i=0;i<nbut;i++) but[i]=NULL;}
    784787nckb = 20+npar;   ckb = new PICheckBox*[nckb]; {for(int i=0;i<nckb;i++) ckb[i]=NULL;}
     788npom = 10;        pom = new PIOptMenu*[npom];  {for(int i=0;i<npom;i++) pom[i]=NULL;}
    785789
    786790// On definit la taille a partir de la taille par defaut des composantes
     
    792796
    793797int wszx = (5*bsx+5*spx)+spx;
    794 int wszy = 8*(bsy+spy)+npar*(bsy+spy)+spy;
     798int wszy = 9*(bsy+spy)+npar*(bsy+spy)+spy;
    795799SetSize(wszx, wszy);
    796800int cpx,cpy;
    797801
    798 // 1 ere ligne
     802// new ligne
    799803cpx=spx; cpy=spy;
    800804but[0] = new PIButton(this,"Fr.Last",111,bsx,bsy,cpx,cpy);
     
    810814ckb[1]->SetBinding(PIBK_elastic,PIBK_elastic, PIBK_elastic,PIBK_elastic);
    811815
    812 // 2 ieme ligne
    813 cpx=spx; cpy += bsy+spy;
    814 ckb[2] = new PICheckBox(this,"Cent X",1003,bsx,bsy,cpx,cpy);
    815 ckb[2]->SetBinding(PIBK_elastic,PIBK_elastic, PIBK_elastic,PIBK_elastic);
     816// new ligne
     817cpx=spx; cpy += bsy+spy -spy;
     818lab[0] = new PILabel(this,"- Center X -",2*bsx,bsy,cpx,cpy);
     819lab[0]->SetBinding(PIBK_elastic,PIBK_elastic, PIBK_elastic,PIBK_elastic);
     820cpx += 2*bsx+spx;
     821lab[1] = new PILabel(this,"- Center Y -",2*bsx,bsy,cpx,cpy);
     822lab[1]->SetBinding(PIBK_elastic,PIBK_elastic, PIBK_elastic,PIBK_elastic);
     823
     824// new ligne
     825cpx=spx; cpy += bsy+spy -spy;
     826pom[0] = new PIOptMenu(this,"No",bsx,bsy,cpx,cpy);
     827  pom[0]->AppendItem("No",2001);
     828  pom[0]->AppendItem("Value",2002);
     829  pom[0]->AppendItem("Auto",2003);
     830pom[0]->SetBinding(PIBK_elastic,PIBK_elastic, PIBK_elastic,PIBK_elastic);
    816831cpx+=bsx+spx;
    817832txt[0] = new PIText(this,"",bsx,bsy,cpx,cpy);
    818833txt[0]->SetBinding(PIBK_elastic,PIBK_elastic, PIBK_elastic,PIBK_elastic);
    819834cpx+=bsx+2*spx;
    820 ckb[3] = new PICheckBox(this,"Y",1004,bsx/2,bsy,cpx,cpy);
    821 ckb[3]->SetBinding(PIBK_elastic,PIBK_elastic, PIBK_elastic,PIBK_elastic);
    822 cpx+=bsx/2+spx;
     835pom[1] = new PIOptMenu(this,"No",bsx,bsy,cpx,cpy);
     836  pom[1]->AppendItem("No",2011);
     837  pom[1]->AppendItem("Value",2012);
     838  pom[1]->AppendItem("Auto",2013);
     839pom[1]->SetBinding(PIBK_elastic,PIBK_elastic, PIBK_elastic,PIBK_elastic);
     840cpx+=bsx+spx;
    823841txt[1] = new PIText(this,"",bsx,bsy,cpx,cpy);
    824842txt[1]->SetBinding(PIBK_elastic,PIBK_elastic, PIBK_elastic,PIBK_elastic);
    825843
    826 // 3 ieme ligne
     844// new ligne
    827845cpx=spx; cpy += bsy+spy;
    828 lab[0] = new PILabel(this,"Err cste",1.25*bsx,bsy,cpx,cpy);
    829 lab[0]->SetBinding(PIBK_elastic,PIBK_elastic, PIBK_elastic,PIBK_elastic);
     846lab[2] = new PILabel(this,"Err cste",1.25*bsx,bsy,cpx,cpy);
     847lab[2]->SetBinding(PIBK_elastic,PIBK_elastic, PIBK_elastic,PIBK_elastic);
    830848cpx+=1.25*bsx+spx;
    831849txt[2] = new PIText(this,"",bsx,bsy,cpx,cpy);
    832850txt[2]->SetBinding(PIBK_elastic,PIBK_elastic, PIBK_elastic,PIBK_elastic);
    833851cpx+=bsx+2*spx;
    834 lab[1] = new PILabel(this,"sqrt",bsx,bsy,cpx,cpy);
    835 lab[1]->SetBinding(PIBK_elastic,PIBK_elastic, PIBK_elastic,PIBK_elastic);
     852lab[3] = new PILabel(this,"sqrt",bsx,bsy,cpx,cpy);
     853lab[3]->SetBinding(PIBK_elastic,PIBK_elastic, PIBK_elastic,PIBK_elastic);
    836854cpx+=bsx+spx;
    837855txt[3] = new PIText(this,"",bsx,bsy,cpx,cpy);
    838856txt[3]->SetBinding(PIBK_elastic,PIBK_elastic, PIBK_elastic,PIBK_elastic);
    839857
    840 // 4 ieme ligne
     858// new ligne
    841859cpx=spx; cpy += bsy+spy;
    842 lab[2] = new PILabel(this,"Stop Xi2",1.25*bsx,bsy,cpx,cpy);
    843 lab[2]->SetBinding(PIBK_elastic,PIBK_elastic, PIBK_elastic,PIBK_elastic);
     860lab[4] = new PILabel(this,"Stop Xi2",1.25*bsx,bsy,cpx,cpy);
     861lab[4]->SetBinding(PIBK_elastic,PIBK_elastic, PIBK_elastic,PIBK_elastic);
    844862cpx+=1.25*bsx+spx;
    845863txt[4] = new PIText(this,"",bsx,bsy,cpx,cpy);
    846864txt[4]->SetBinding(PIBK_elastic,PIBK_elastic, PIBK_elastic,PIBK_elastic);
    847865cpx+=bsx+spx;
    848 lab[3] = new PILabel(this,"Iter",bsx, bsy, cpx, cpy);
    849 lab[3]->SetBinding(PIBK_elastic,PIBK_elastic, PIBK_elastic,PIBK_elastic);
     866lab[5] = new PILabel(this,"Iter",bsx, bsy, cpx, cpy);
     867lab[5]->SetBinding(PIBK_elastic,PIBK_elastic, PIBK_elastic,PIBK_elastic);
    850868cpx+=bsx+spx;
    851869txt[5] = new PIText(this,"",bsx,bsy,cpx,cpy);
    852870txt[5]->SetBinding(PIBK_elastic,PIBK_elastic, PIBK_elastic,PIBK_elastic);
    853871
    854 // 5 ieme ligne
     872// new ligne
    855873cpx=spx; cpy += bsy+spy;
    856 lab[4] = new PILabel(this,"Print",bsx,bsy,cpx,cpy);
    857 lab[4]->SetBinding(PIBK_elastic,PIBK_elastic, PIBK_elastic,PIBK_elastic);
     874lab[6] = new PILabel(this,"Print",bsx,bsy,cpx,cpy);
     875lab[6]->SetBinding(PIBK_elastic,PIBK_elastic, PIBK_elastic,PIBK_elastic);
    858876cpx+=bsx+spx;
    859877txt[6] = new PIText(this,"",bsx/2,bsy,cpx,cpy);
    860878txt[6]->SetBinding(PIBK_elastic,PIBK_elastic, PIBK_elastic,PIBK_elastic);
    861879cpx+=bsx/2+spx;
    862 lab[5] = new PILabel(this,"Debug",bsx,bsy,cpx,cpy);
    863 lab[5]->SetBinding(PIBK_elastic,PIBK_elastic, PIBK_elastic,PIBK_elastic);
     880lab[7] = new PILabel(this,"Debug",bsx,bsy,cpx,cpy);
     881lab[7]->SetBinding(PIBK_elastic,PIBK_elastic, PIBK_elastic,PIBK_elastic);
    864882cpx+=bsx+spx;
    865883txt[7] = new PIText(this,"",bsx/2,bsy,cpx,cpy);
    866884txt[7]->SetBinding(PIBK_elastic,PIBK_elastic, PIBK_elastic,PIBK_elastic);
    867885
    868 // 6 ieme ligne
     886// new ligne
    869887cpx=spx; cpy += bsy+spy;
    870 lab[6] = new PILabel(this,"Range X",bsx,bsy,cpx,cpy);
    871 lab[6]->SetBinding(PIBK_elastic,PIBK_elastic, PIBK_elastic,PIBK_elastic);
     888lab[8] = new PILabel(this,"Range X",bsx,bsy,cpx,cpy);
     889lab[8]->SetBinding(PIBK_elastic,PIBK_elastic, PIBK_elastic,PIBK_elastic);
    872890cpx+=bsx+spx;
    873891txt[8] = new PIText(this,"",0.75*bsx,bsy,cpx,cpy);
     
    877895txt[9]->SetBinding(PIBK_elastic,PIBK_elastic, PIBK_elastic,PIBK_elastic);
    878896cpx+=0.75*bsx+spx;
    879 lab[7] = new PILabel(this,"Y",bsx/2,bsy,cpx,cpy);
    880 lab[7]->SetBinding(PIBK_elastic,PIBK_elastic, PIBK_elastic,PIBK_elastic);
     897lab[9] = new PILabel(this,"Y",bsx/2,bsy,cpx,cpy);
     898lab[9]->SetBinding(PIBK_elastic,PIBK_elastic, PIBK_elastic,PIBK_elastic);
    881899cpx+=bsx/2+spx;
    882900txt[10] = new PIText(this,"",0.75*bsx,bsy,cpx,cpy);
     
    886904txt[11]->SetBinding(PIBK_elastic,PIBK_elastic, PIBK_elastic,PIBK_elastic);
    887905
    888 // 7 ieme ligne
     906// new ligne
    889907cpx=spx; cpy+=bsy+spy;
    890908but[2] = new PIButton(this, "Dismiss",777,bsx,bsy,cpx,cpy);
     
    897915but[4]->SetBinding(PIBK_elastic,PIBK_elastic, PIBK_elastic,PIBK_elastic);
    898916cpx+=bsx+spx;
    899 lab[8] = new PILabel(this,fun.c_str(),bsx/2,bsy,cpx,cpy);
    900 lab[8]->SetBinding(PIBK_elastic,PIBK_elastic, PIBK_elastic,PIBK_elastic);
    901 
    902 // Parametres (npar lignes)
     917lab[10] = new PILabel(this,fun.c_str(),bsx/2,bsy,cpx,cpy);
     918lab[10]->SetBinding(PIBK_elastic,PIBK_elastic, PIBK_elastic,PIBK_elastic);
     919
     920// new lines: Parametres (npar lignes)
    903921cpx=spx; cpy+=bsy+spy;
    904 lab[9] = new PILabel(this,"Par",bsx/2,bsy,cpx,cpy);
    905 lab[9]->SetBinding(PIBK_elastic,PIBK_elastic, PIBK_elastic,PIBK_elastic);
     922lab[11] = new PILabel(this,"Par",bsx/2,bsy,cpx,cpy);
     923lab[11]->SetBinding(PIBK_elastic,PIBK_elastic, PIBK_elastic,PIBK_elastic);
    906924cpx+=bsx/2+spx;
    907 lab[10] = new PILabel(this,"F",bsx/3,bsy,cpx,cpy);
    908 lab[10]->SetBinding(PIBK_elastic,PIBK_elastic, PIBK_elastic,PIBK_elastic);
     925lab[12] = new PILabel(this,"F",bsx/3,bsy,cpx,cpy);
     926lab[12]->SetBinding(PIBK_elastic,PIBK_elastic, PIBK_elastic,PIBK_elastic);
    909927cpx+=bsx/3+spx;
    910 lab[11] = new PILabel(this,"Init",bsx,bsy,cpx,cpy);
    911 lab[11]->SetBinding(PIBK_elastic,PIBK_elastic, PIBK_elastic,PIBK_elastic);
    912 cpx+=bsx+spx;
    913 lab[12] = new PILabel(this,"Step",bsx,bsy,cpx,cpy);
    914 lab[12]->SetBinding(PIBK_elastic,PIBK_elastic, PIBK_elastic,PIBK_elastic);
    915 cpx+=bsx+spx;
    916 lab[13] = new PILabel(this,"Min",bsx,bsy,cpx,cpy);
     928lab[13] = new PILabel(this,"Init",bsx,bsy,cpx,cpy);
    917929lab[13]->SetBinding(PIBK_elastic,PIBK_elastic, PIBK_elastic,PIBK_elastic);
    918930cpx+=bsx+spx;
    919 lab[14] = new PILabel(this,"Max",bsx,bsy,cpx,cpy);
     931lab[14] = new PILabel(this,"Step",bsx,bsy,cpx,cpy);
    920932lab[14]->SetBinding(PIBK_elastic,PIBK_elastic, PIBK_elastic,PIBK_elastic);
     933cpx+=bsx+spx;
     934lab[15] = new PILabel(this,"Min",bsx,bsy,cpx,cpy);
     935lab[15]->SetBinding(PIBK_elastic,PIBK_elastic, PIBK_elastic,PIBK_elastic);
     936cpx+=bsx+spx;
     937lab[16] = new PILabel(this,"Max",bsx,bsy,cpx,cpy);
     938lab[16]->SetBinding(PIBK_elastic,PIBK_elastic, PIBK_elastic,PIBK_elastic);
    921939if(npar>0) {
    922940  for(int i=0;i<npar;i++) {
     
    949967for(i=0;i<nbut;i++) if(but[i]) {delete but[i]; but[i]=NULL;}
    950968for(i=0;i<nckb;i++) if(ckb[i]) {delete ckb[i]; ckb[i]=NULL;}
     969for(i=0;i<npom;i++) if(pom[i]) {delete pom[i]; pom[i]=NULL;}
    951970if(lab) {delete lab; lab=NULL; nlab=0;}
    952971if(txt) {delete txt; txt=NULL; ntxt=0;}
    953972if(but) {delete but; but=NULL; nbut=0;}
    954973if(ckb) {delete ckb; ckb=NULL; nckb=0;}
     974if(pom) {delete pom; pom=NULL; npom=0;}
    955975}
    956976
     
    973993ckb[0]->SetState(mFitter->mOpt.okfun);
    974994ckb[1]->SetState(mFitter->mOpt.okres);
    975 ckb[2]->SetState((mFitter->mOpt.polcx>0)?true:false);
    976 ckb[3]->SetState((mFitter->mOpt.polcy>0)?true:false);
    977995if(npar>0)
    978996  for(int i=0;i<npar;i++) ckb[20+i]->SetState((mFitter->mFix(i)>=1.)?true:false);
     
    10071025void PIAFitterWind::Process(PIMessage msg, PIMsgHandler* sender, void* data)
    10081026{
    1009 int lp = 1;
     1027int lp = (mFitter->mOpt.lp>2)?1:0;;
    10101028int npar = mFitter->mNPar;
    10111029
     
    10131031NamedObjMgr omg;
    10141032if(omg.GetObj(mFitter->mNObj) == NULL) {
    1015   cout<<"PIAFitterWind::Process Error , Pas d'objet de nom "<<mFitter->mNObj<<endl;
     1033  cout<<"PIAFitterWind::Process Error , Pas d'objet de nom "
     1034      <<mFitter->mNObj<<endl;
    10161035  mFitter->ResetDPointer(); return;
    10171036}
     
    10191038// On recupere les champs textes
    10201039string dum; char str[128];
    1021 int lenxc=0, lenyc=0;
    10221040dum=txt[0]->GetText(); strcpy(str,dum.c_str()); strip(str,'B',' ');
    1023   sscanf(str,"%lf",&(mFitter->mOpt.xc)); lenxc = strlen(str);
     1041  sscanf(str,"%lf",&(mFitter->mOpt.xc));
    10241042dum=txt[1]->GetText(); strcpy(str,dum.c_str()); strip(str,'B',' ');
    1025   sscanf(str,"%lf",&(mFitter->mOpt.yc)); lenyc = strlen(str);
     1043  sscanf(str,"%lf",&(mFitter->mOpt.yc));
    10261044dum=txt[2]->GetText(); strcpy(str,dum.c_str()); strip(str,'B',' ');
    10271045  sscanf(str,"%lf",&(mFitter->mOpt.err_e));
     
    10371055  sscanf(str,"%d",&(mFitter->mOpt.lpg));
    10381056dum=txt[8]->GetText(); strcpy(str,dum.c_str()); strip(str,'B',' ');
     1057// Attention si les valeurs de mOpt.i1/.i2/.j1/.j2 ont ete changees
    10391058  sscanf(str,"%d",&(mFitter->mOpt.i1));
    10401059dum=txt[9]->GetText(); strcpy(str,dum.c_str()); strip(str,'B',' ');
    10411060  sscanf(str,"%d",&(mFitter->mOpt.i2));
    10421061dum=txt[10]->GetText(); strcpy(str,dum.c_str()); strip(str,'B',' ');
    1043 sscanf(str,"%d",&(mFitter->mOpt.j1));
     1062  sscanf(str,"%d",&(mFitter->mOpt.j1));
    10441063dum=txt[11]->GetText(); strcpy(str,dum.c_str()); strip(str,'B',' ');
    10451064  sscanf(str,"%d",&(mFitter->mOpt.j2));
     1065if(saveI1!=mFitter->mOpt.i1 || saveI2!=mFitter->mOpt.i2 ||
     1066   saveJ1!=mFitter->mOpt.j1 || saveJ2!=mFitter->mOpt.j2 ) {
     1067  if(lp)
     1068    cout<<"Range changed: I("<<saveI1<<","<<saveI2
     1069        <<") -> I("<<mFitter->mOpt.i1<<","<<mFitter->mOpt.i2
     1070        <<")  ou   J("<<saveJ1<<","<<saveJ2
     1071        <<") -> J("<<mFitter->mOpt.j1<<","<<mFitter->mOpt.j2
     1072        <<")"<<endl;
     1073  ReFillGData = true;
     1074  saveI1=mFitter->mOpt.i1; saveI2=mFitter->mOpt.i2;
     1075  saveJ1=mFitter->mOpt.j1; saveJ2=mFitter->mOpt.j2;
     1076}
     1077
    10461078if(npar>0) {
    10471079  for(int i=0;i<npar;i++) {
     
    10651097  return;
    10661098}
    1067 if(msg ==666) {
     1099else if(msg ==666) {
    10681100  if(lp) cout<<"Refresh"<<endl;
     1101  mFitter->CheckOptions();
    10691102  if(ReFillGData) mFitter->FillGData();
    10701103  ReFillGData = false;
    10711104}
    1072 if(msg ==111) {
     1105else if(msg ==111) {
    10731106  if(lp) cout<<"Update from last"<<endl;
    10741107  mFitter->ResetOptions();
     
    10781111  ReFillGData = true;
    10791112}
    1080 if(msg ==222) {
     1113else if(msg ==222) {
    10811114  if(lp) cout<<"Default options/par"<<endl;
    10821115  mFitter->ResetOptions();
     
    10841117  ReFillGData = true;
    10851118}
    1086 if(msg ==333) {
     1119else if(msg ==333) {
    10871120  if(lp) cout<<"Do the fit"<<endl;
     1121  mFitter->CheckOptions();
    10881122  if(ReFillGData) mFitter->FillGData();
    10891123  ReFillGData = false;
     
    10911125  if(rc>=0) mFitter->FitFunRes();
    10921126}
    1093 if(msg==1001) {
     1127else if(msg==1001) {
    10941128  if(ckb[0]->GetState()) {
    10951129    if(lp) cout<<"Gen fitted function"<<endl;
     
    11001134  }
    11011135}
    1102 if(msg==1002) {
     1136else if(msg==1002) {
    11031137  if(ckb[1]->GetState()) {
    11041138    if(lp) cout<<"Gen fitted residus"<<endl;
     
    11091143  }
    11101144}
    1111 if(msg==1003) {
    1112   if(ckb[2]->GetState()) {
    1113     if(lp) cout<<"Centrage X"<<endl;
    1114     if(lenxc>0) mFitter->mOpt.polcx = 1; else mFitter->mOpt.polcx = 2;
    1115   } else if(!ckb[2]->GetState()) {
    1116     if(lp) cout<<"No Centrage X"<<endl;
    1117     mFitter->mOpt.polcx = 0;
    1118   }
     1145else if(2001<=msg && msg<=2003) {
     1146  mFitter->mOpt.polcx = msg-2001;
     1147  if(lp) cout<<"Centrage X polcx="<<mFitter->mOpt.polcx
     1148             <<" xc="<<mFitter->mOpt.xc<<endl;
    11191149  ReFillGData = true;
    11201150}
    1121 if(msg==1004) {
    1122   if(ckb[3]->GetState()) {
    1123     if(lp) cout<<"Centrage Y"<<endl;
    1124     if(lenyc>0) mFitter->mOpt.polcy = 1; else mFitter->mOpt.polcy = 2;
    1125   } else if(!ckb[3]->GetState()) {
    1126     if(lp) cout<<"No Centrage Y"<<endl;
    1127     mFitter->mOpt.polcy = 0;
    1128   }
     1151else if(2011<=msg && msg<=2013) {
     1152  mFitter->mOpt.polcx = msg-2011;
     1153  if(lp) cout<<"Centrage Y polcy="<<mFitter->mOpt.polcy
     1154             <<" yc="<<mFitter->mOpt.yc<<endl;
    11291155  ReFillGData = true;
    11301156}
    1131 if(msg>=1500 && msg<2000) {
     1157else if(msg>=1500 && msg<2000) {
    11321158  int ip = msg-1500;
    11331159  if(ckb[20+ip]->GetState()) {
Note: See TracChangeset for help on using the changeset viewer.