Changeset 381 in Sophya for trunk/SophyaPI/PIext
- Timestamp:
- Aug 12, 1999, 9:52:49 AM (26 years ago)
- 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): 2 2 //openppf cmvwppf.ppf 3 3 //fitw h1g g2 p:4500,45,10,900 … … 53 53 PIButton** but; int nbut; 54 54 PICheckBox** ckb; int nckb; 55 PIOptMenu** pom; int npom; 55 56 bool ReFillGData; 57 int saveI1,saveI2, saveJ1, saveJ2; 56 58 }; 57 59 … … 358 360 if(mOpt.lpg<0) mOpt.lpg = 0; 359 361 mOpt.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;362 mOpt.i2 = (mOpt.i2<0||mOpt.i2>=mNBinX||mOpt.i2<=mOpt.i1)? mNBinX-1: mOpt.i2; 361 363 if(mNVar>=2) { 362 364 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; 364 366 } else mOpt.j2 = mOpt.j1 = 0; 365 367 if(mOpt.polcx==2) { … … 772 774 { 773 775 ReFillGData = false; 776 saveI1 = saveI2 = saveJ1 = saveJ2 = 0; 774 777 mDap = par; 775 778 mFitter = fiter; … … 783 786 nbut = 20; but = new PIButton*[nbut]; {for(int i=0;i<nbut;i++) but[i]=NULL;} 784 787 nckb = 20+npar; ckb = new PICheckBox*[nckb]; {for(int i=0;i<nckb;i++) ckb[i]=NULL;} 788 npom = 10; pom = new PIOptMenu*[npom]; {for(int i=0;i<npom;i++) pom[i]=NULL;} 785 789 786 790 // On definit la taille a partir de la taille par defaut des composantes … … 792 796 793 797 int wszx = (5*bsx+5*spx)+spx; 794 int wszy = 8*(bsy+spy)+npar*(bsy+spy)+spy;798 int wszy = 9*(bsy+spy)+npar*(bsy+spy)+spy; 795 799 SetSize(wszx, wszy); 796 800 int cpx,cpy; 797 801 798 // 1 ereligne802 // new ligne 799 803 cpx=spx; cpy=spy; 800 804 but[0] = new PIButton(this,"Fr.Last",111,bsx,bsy,cpx,cpy); … … 810 814 ckb[1]->SetBinding(PIBK_elastic,PIBK_elastic, PIBK_elastic,PIBK_elastic); 811 815 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 817 cpx=spx; cpy += bsy+spy -spy; 818 lab[0] = new PILabel(this,"- Center X -",2*bsx,bsy,cpx,cpy); 819 lab[0]->SetBinding(PIBK_elastic,PIBK_elastic, PIBK_elastic,PIBK_elastic); 820 cpx += 2*bsx+spx; 821 lab[1] = new PILabel(this,"- Center Y -",2*bsx,bsy,cpx,cpy); 822 lab[1]->SetBinding(PIBK_elastic,PIBK_elastic, PIBK_elastic,PIBK_elastic); 823 824 // new ligne 825 cpx=spx; cpy += bsy+spy -spy; 826 pom[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); 830 pom[0]->SetBinding(PIBK_elastic,PIBK_elastic, PIBK_elastic,PIBK_elastic); 816 831 cpx+=bsx+spx; 817 832 txt[0] = new PIText(this,"",bsx,bsy,cpx,cpy); 818 833 txt[0]->SetBinding(PIBK_elastic,PIBK_elastic, PIBK_elastic,PIBK_elastic); 819 834 cpx+=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; 835 pom[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); 839 pom[1]->SetBinding(PIBK_elastic,PIBK_elastic, PIBK_elastic,PIBK_elastic); 840 cpx+=bsx+spx; 823 841 txt[1] = new PIText(this,"",bsx,bsy,cpx,cpy); 824 842 txt[1]->SetBinding(PIBK_elastic,PIBK_elastic, PIBK_elastic,PIBK_elastic); 825 843 826 // 3 iemeligne844 // new ligne 827 845 cpx=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);846 lab[2] = new PILabel(this,"Err cste",1.25*bsx,bsy,cpx,cpy); 847 lab[2]->SetBinding(PIBK_elastic,PIBK_elastic, PIBK_elastic,PIBK_elastic); 830 848 cpx+=1.25*bsx+spx; 831 849 txt[2] = new PIText(this,"",bsx,bsy,cpx,cpy); 832 850 txt[2]->SetBinding(PIBK_elastic,PIBK_elastic, PIBK_elastic,PIBK_elastic); 833 851 cpx+=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);852 lab[3] = new PILabel(this,"sqrt",bsx,bsy,cpx,cpy); 853 lab[3]->SetBinding(PIBK_elastic,PIBK_elastic, PIBK_elastic,PIBK_elastic); 836 854 cpx+=bsx+spx; 837 855 txt[3] = new PIText(this,"",bsx,bsy,cpx,cpy); 838 856 txt[3]->SetBinding(PIBK_elastic,PIBK_elastic, PIBK_elastic,PIBK_elastic); 839 857 840 // 4 iemeligne858 // new ligne 841 859 cpx=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);860 lab[4] = new PILabel(this,"Stop Xi2",1.25*bsx,bsy,cpx,cpy); 861 lab[4]->SetBinding(PIBK_elastic,PIBK_elastic, PIBK_elastic,PIBK_elastic); 844 862 cpx+=1.25*bsx+spx; 845 863 txt[4] = new PIText(this,"",bsx,bsy,cpx,cpy); 846 864 txt[4]->SetBinding(PIBK_elastic,PIBK_elastic, PIBK_elastic,PIBK_elastic); 847 865 cpx+=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);866 lab[5] = new PILabel(this,"Iter",bsx, bsy, cpx, cpy); 867 lab[5]->SetBinding(PIBK_elastic,PIBK_elastic, PIBK_elastic,PIBK_elastic); 850 868 cpx+=bsx+spx; 851 869 txt[5] = new PIText(this,"",bsx,bsy,cpx,cpy); 852 870 txt[5]->SetBinding(PIBK_elastic,PIBK_elastic, PIBK_elastic,PIBK_elastic); 853 871 854 // 5 iemeligne872 // new ligne 855 873 cpx=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);874 lab[6] = new PILabel(this,"Print",bsx,bsy,cpx,cpy); 875 lab[6]->SetBinding(PIBK_elastic,PIBK_elastic, PIBK_elastic,PIBK_elastic); 858 876 cpx+=bsx+spx; 859 877 txt[6] = new PIText(this,"",bsx/2,bsy,cpx,cpy); 860 878 txt[6]->SetBinding(PIBK_elastic,PIBK_elastic, PIBK_elastic,PIBK_elastic); 861 879 cpx+=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);880 lab[7] = new PILabel(this,"Debug",bsx,bsy,cpx,cpy); 881 lab[7]->SetBinding(PIBK_elastic,PIBK_elastic, PIBK_elastic,PIBK_elastic); 864 882 cpx+=bsx+spx; 865 883 txt[7] = new PIText(this,"",bsx/2,bsy,cpx,cpy); 866 884 txt[7]->SetBinding(PIBK_elastic,PIBK_elastic, PIBK_elastic,PIBK_elastic); 867 885 868 // 6 iemeligne886 // new ligne 869 887 cpx=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);888 lab[8] = new PILabel(this,"Range X",bsx,bsy,cpx,cpy); 889 lab[8]->SetBinding(PIBK_elastic,PIBK_elastic, PIBK_elastic,PIBK_elastic); 872 890 cpx+=bsx+spx; 873 891 txt[8] = new PIText(this,"",0.75*bsx,bsy,cpx,cpy); … … 877 895 txt[9]->SetBinding(PIBK_elastic,PIBK_elastic, PIBK_elastic,PIBK_elastic); 878 896 cpx+=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);897 lab[9] = new PILabel(this,"Y",bsx/2,bsy,cpx,cpy); 898 lab[9]->SetBinding(PIBK_elastic,PIBK_elastic, PIBK_elastic,PIBK_elastic); 881 899 cpx+=bsx/2+spx; 882 900 txt[10] = new PIText(this,"",0.75*bsx,bsy,cpx,cpy); … … 886 904 txt[11]->SetBinding(PIBK_elastic,PIBK_elastic, PIBK_elastic,PIBK_elastic); 887 905 888 // 7 iemeligne906 // new ligne 889 907 cpx=spx; cpy+=bsy+spy; 890 908 but[2] = new PIButton(this, "Dismiss",777,bsx,bsy,cpx,cpy); … … 897 915 but[4]->SetBinding(PIBK_elastic,PIBK_elastic, PIBK_elastic,PIBK_elastic); 898 916 cpx+=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)917 lab[10] = new PILabel(this,fun.c_str(),bsx/2,bsy,cpx,cpy); 918 lab[10]->SetBinding(PIBK_elastic,PIBK_elastic, PIBK_elastic,PIBK_elastic); 919 920 // new lines: Parametres (npar lignes) 903 921 cpx=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);922 lab[11] = new PILabel(this,"Par",bsx/2,bsy,cpx,cpy); 923 lab[11]->SetBinding(PIBK_elastic,PIBK_elastic, PIBK_elastic,PIBK_elastic); 906 924 cpx+=bsx/2+spx; 907 lab[1 0] = new PILabel(this,"F",bsx/3,bsy,cpx,cpy);908 lab[1 0]->SetBinding(PIBK_elastic,PIBK_elastic, PIBK_elastic,PIBK_elastic);925 lab[12] = new PILabel(this,"F",bsx/3,bsy,cpx,cpy); 926 lab[12]->SetBinding(PIBK_elastic,PIBK_elastic, PIBK_elastic,PIBK_elastic); 909 927 cpx+=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); 928 lab[13] = new PILabel(this,"Init",bsx,bsy,cpx,cpy); 917 929 lab[13]->SetBinding(PIBK_elastic,PIBK_elastic, PIBK_elastic,PIBK_elastic); 918 930 cpx+=bsx+spx; 919 lab[14] = new PILabel(this," Max",bsx,bsy,cpx,cpy);931 lab[14] = new PILabel(this,"Step",bsx,bsy,cpx,cpy); 920 932 lab[14]->SetBinding(PIBK_elastic,PIBK_elastic, PIBK_elastic,PIBK_elastic); 933 cpx+=bsx+spx; 934 lab[15] = new PILabel(this,"Min",bsx,bsy,cpx,cpy); 935 lab[15]->SetBinding(PIBK_elastic,PIBK_elastic, PIBK_elastic,PIBK_elastic); 936 cpx+=bsx+spx; 937 lab[16] = new PILabel(this,"Max",bsx,bsy,cpx,cpy); 938 lab[16]->SetBinding(PIBK_elastic,PIBK_elastic, PIBK_elastic,PIBK_elastic); 921 939 if(npar>0) { 922 940 for(int i=0;i<npar;i++) { … … 949 967 for(i=0;i<nbut;i++) if(but[i]) {delete but[i]; but[i]=NULL;} 950 968 for(i=0;i<nckb;i++) if(ckb[i]) {delete ckb[i]; ckb[i]=NULL;} 969 for(i=0;i<npom;i++) if(pom[i]) {delete pom[i]; pom[i]=NULL;} 951 970 if(lab) {delete lab; lab=NULL; nlab=0;} 952 971 if(txt) {delete txt; txt=NULL; ntxt=0;} 953 972 if(but) {delete but; but=NULL; nbut=0;} 954 973 if(ckb) {delete ckb; ckb=NULL; nckb=0;} 974 if(pom) {delete pom; pom=NULL; npom=0;} 955 975 } 956 976 … … 973 993 ckb[0]->SetState(mFitter->mOpt.okfun); 974 994 ckb[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);977 995 if(npar>0) 978 996 for(int i=0;i<npar;i++) ckb[20+i]->SetState((mFitter->mFix(i)>=1.)?true:false); … … 1007 1025 void PIAFitterWind::Process(PIMessage msg, PIMsgHandler* sender, void* data) 1008 1026 { 1009 int lp = 1;1027 int lp = (mFitter->mOpt.lp>2)?1:0;; 1010 1028 int npar = mFitter->mNPar; 1011 1029 … … 1013 1031 NamedObjMgr omg; 1014 1032 if(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; 1016 1035 mFitter->ResetDPointer(); return; 1017 1036 } … … 1019 1038 // On recupere les champs textes 1020 1039 string dum; char str[128]; 1021 int lenxc=0, lenyc=0;1022 1040 dum=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)); 1024 1042 dum=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)); 1026 1044 dum=txt[2]->GetText(); strcpy(str,dum.c_str()); strip(str,'B',' '); 1027 1045 sscanf(str,"%lf",&(mFitter->mOpt.err_e)); … … 1037 1055 sscanf(str,"%d",&(mFitter->mOpt.lpg)); 1038 1056 dum=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 1039 1058 sscanf(str,"%d",&(mFitter->mOpt.i1)); 1040 1059 dum=txt[9]->GetText(); strcpy(str,dum.c_str()); strip(str,'B',' '); 1041 1060 sscanf(str,"%d",&(mFitter->mOpt.i2)); 1042 1061 dum=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)); 1044 1063 dum=txt[11]->GetText(); strcpy(str,dum.c_str()); strip(str,'B',' '); 1045 1064 sscanf(str,"%d",&(mFitter->mOpt.j2)); 1065 if(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 1046 1078 if(npar>0) { 1047 1079 for(int i=0;i<npar;i++) { … … 1065 1097 return; 1066 1098 } 1067 if(msg ==666) {1099 else if(msg ==666) { 1068 1100 if(lp) cout<<"Refresh"<<endl; 1101 mFitter->CheckOptions(); 1069 1102 if(ReFillGData) mFitter->FillGData(); 1070 1103 ReFillGData = false; 1071 1104 } 1072 if(msg ==111) {1105 else if(msg ==111) { 1073 1106 if(lp) cout<<"Update from last"<<endl; 1074 1107 mFitter->ResetOptions(); … … 1078 1111 ReFillGData = true; 1079 1112 } 1080 if(msg ==222) {1113 else if(msg ==222) { 1081 1114 if(lp) cout<<"Default options/par"<<endl; 1082 1115 mFitter->ResetOptions(); … … 1084 1117 ReFillGData = true; 1085 1118 } 1086 if(msg ==333) {1119 else if(msg ==333) { 1087 1120 if(lp) cout<<"Do the fit"<<endl; 1121 mFitter->CheckOptions(); 1088 1122 if(ReFillGData) mFitter->FillGData(); 1089 1123 ReFillGData = false; … … 1091 1125 if(rc>=0) mFitter->FitFunRes(); 1092 1126 } 1093 if(msg==1001) {1127 else if(msg==1001) { 1094 1128 if(ckb[0]->GetState()) { 1095 1129 if(lp) cout<<"Gen fitted function"<<endl; … … 1100 1134 } 1101 1135 } 1102 if(msg==1002) {1136 else if(msg==1002) { 1103 1137 if(ckb[1]->GetState()) { 1104 1138 if(lp) cout<<"Gen fitted residus"<<endl; … … 1109 1143 } 1110 1144 } 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 } 1145 else 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; 1119 1149 ReFillGData = true; 1120 1150 } 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 } 1151 else 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; 1129 1155 ReFillGData = true; 1130 1156 } 1131 if(msg>=1500 && msg<2000) {1157 else if(msg>=1500 && msg<2000) { 1132 1158 int ip = msg-1500; 1133 1159 if(ckb[20+ip]->GetState()) {
Note:
See TracChangeset
for help on using the changeset viewer.