From b3c257fff2d17787dac11206e24fb84a2dfc078b Mon Sep 17 00:00:00 2001 From: Peter DeRosa <54421997+MagnusSnowleopard@users.noreply.github.com> Date: Wed, 13 Jul 2022 02:44:11 -0400 Subject: [PATCH] Two types of functional GUI's can be made --- .Chi_error.h.swp | Bin 12288 -> 0 bytes .gitignore | 2 + 1062b.csv | 4 - AD.cxx | 1373 +++++++++++++++++---------------- GUI_AD.h | 11 +- Graphical_Testing/.GUI.h.swp | Bin 16384 -> 0 bytes Graphical_Testing/ADT | Bin 79656 -> 85400 bytes Graphical_Testing/GUI.h | 6 +- Graphical_Testing/ad_test.cxx | 27 +- Racah.h | 2 +- 10 files changed, 739 insertions(+), 686 deletions(-) delete mode 100644 .Chi_error.h.swp delete mode 100644 1062b.csv delete mode 100644 Graphical_Testing/.GUI.h.swp diff --git a/.Chi_error.h.swp b/.Chi_error.h.swp deleted file mode 100644 index c1253ace3cb184c42a71d88e14e5be216a6c4fd8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12288 zcmeI&Jxjwt7zgmHTL)iIa6a2bMUu8E3W^}@;^0^pk<#YQ=4hIPOQKX!7vEnH5kG`} zGxaM7`lL;fb`iT3{ull^F3EE_ep|@ZaywhweAOs0Y7_CP)0Q-2z6>RGe>P!TexBOO zvf#Q|ydZJ(8?^ zI_Xn=eKJG`0SG_<0uX=z1Rwwb2tWV=5P-lC3RDGSUt{#If1DOi|Npz+|KBwJq&CikXt*ZA)gX_g$qi)xPSKC-(PKh(K4&xLftYFw$B>PXHW mwD-`jckXV)B@4XoS}5j@=_Og^T23S+&(s~SR&@+J!`Kf|L18lh diff --git a/.gitignore b/.gitignore index 6f13b0f..8abe69e 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,3 @@ ADEX +ADT +.gitignore diff --git a/1062b.csv b/1062b.csv deleted file mode 100644 index 7056ee1..0000000 --- a/1062b.csv +++ /dev/null @@ -1,4 +0,0 @@ -angle,Y,Yerr -45,1.29,.10 -90,1.10,.10 -135,1.29,.10 diff --git a/AD.cxx b/AD.cxx index 93f726e..9a1d762 100644 --- a/AD.cxx +++ b/AD.cxx @@ -1,6 +1,6 @@ #include "global.h" -//#include "GUI.h" +#include "GUI_AD.h" #include "GUI_Base.h" #include "Functlib.h" #include "QDK.h" @@ -15,730 +15,781 @@ using namespace std; int main(int argc,char **argv){ - HistoGUI gui; - - double j1, j2; + + double j1, j2; - //detector data input - double detradius, targetdistance, detthickness = -1; - double Energy; - //input .csv file - double Sigma; + //detector data input + double detradius, targetdistance, detthickness = -1; + double Energy; + //input .csv file + double Sigma; -//-------------------------------- + //-------------------------------- - detradius = 3.; - targetdistance = 4.; - detthickness = 5.; - - Energy = 1062.; - Sigma = 0.; - + detradius = 3.; + targetdistance = 4.; + detthickness = 5.; - j1 = 2.; - j2 = 1.; -//-------------------------------- - -//TEST MODE? y : 1 || n = 0 - - int test = 1; - - int det_param_token = -1; - int gamma_energy_token = -1; - int ang_file_token = -1; - int sigma_token = -1; - - int j1j2token = -1; - if(test == 1){ - - det_param_token = 1; - gamma_energy_token = 1; - ang_file_token = -1; - sigma_token = 1; - - j1j2token = 1; - -} -if( test == 0 ) { - printf("Input detector radius, target distance, and detector thickness : "); - scanf("%lf,%lf,%lf",&detradius,&targetdistance,&detthickness); + Energy = 1062.; + Sigma = 0.; - if(detradius > 0 && targetdistance > 0 && detthickness > 0){ - det_param_token = 1; - }else{ + j1 = 2.; + j2 = 1.; + //-------------------------------- - do{ - if(detradius< 0|| targetdistance < 0|| detthickness < 0){ - printf("Negative numbers are not allowed!\nRe-enter radius, distance, and thickness : "); - scanf("%lf,%lf,%lf", &detradius,&targetdistance,&detthickness); - } - }while(detradius< 0|| targetdistance < 0|| detthickness < 0);} + //TEST MODE? y : 1 || n = 0 - if(detradius > 0 && targetdistance > 0 && detthickness > 0){ - det_param_token = 1; printf(" --- Detector characteristics loaded --- \n"); - } + int test = 1; - printf("Enter the gamma-ray energy : "); - scanf("%lf", &Energy); - if(Energy > 0){ - gamma_energy_token = 1; - }else{ - do{ - if(Energy <= 0){ - printf("Negative numbers are not allowed!\nRe-enter gamma-ray energy : "); - scanf("%lf", &Energy);} + int det_param_token = -1; + int gamma_energy_token = -1; + int ang_file_token = -1; + int sigma_token = -1; - }while(Energy <= 0);} + int j1j2token = -1; + if(test == 1){ - if(Energy > 0){ - gamma_energy_token = 1; printf(" --- Gamma Energy loaded --- \n"); - } + det_param_token = 1; + gamma_energy_token = 1; + ang_file_token = -1; + sigma_token = 1; - //then calucate QD2 and QD4, and replace the 0 with them. -} + j1j2token = 1; - double QD2 = QK2(Energy, detradius, targetdistance, detthickness); ; - //.82;//NEED TO READ FROM ad.txt in the future. - double QD4 = QK4(Energy, detradius, targetdistance, detthickness); ; - //.44; -// cout << "QD2 = " << " " << QD2 << " QD4 = " << " " << QD4 << "\n"; - -//input data file of Angular Data (theta, Yexp, Yerr) - - vector > content; - vector row; - string line, word; - - vector adata; - vector ydata; - vector eydata; - int num = 0; - string fname,fname2; - cout<<"Enter the file name : "; - cin>>fname; - - int aaaa = -1; - fstream file(fname.c_str()); - - if(file.is_open()){ - cout<< " --- Angular Data File Loaded --- \n"; - ang_file_token = 1; - while(getline(file,line)){ - - row.clear(); - - stringstream str(line); - - while(getline(str, word, ',')) - - row.push_back(word); - content.push_back(row); - adata.push_back(row[0]); - ydata.push_back(row[1]); - eydata.push_back(row[2]); - - } - }else{ - do{ - cout<< "Could not open the file\n"; - cout<< "Enter the file name : "; - cin>>fname2; - - fstream file(fname2.c_str()); - - if(file.is_open()){ - aaaa = 1; - - while(getline(file,line)){ - - row.clear(); - - stringstream str(line); - - while(getline(str, word, ',')) - - row.push_back(word); - content.push_back(row); - adata.push_back(row[0]); - ydata.push_back(row[1]); - eydata.push_back(row[2]); - - } - - }else{ aaaa = -1; } - - }while(aaaa == -1); - - cout<< " --- Angular Data File Loaded --- \n"; - ang_file_token = 1; - - } - - for(int i = 0; i< adata.size();i++){ -// cout << adata[i] << "\n"; -// cout << ydata[i] << "\n"; -// cout << eydata[i] << "\n"; - } - -// Legendre Polinomial fit using adata, ydata, eydata; - - adata.erase(adata.begin()); - ydata.erase(ydata.begin()); - eydata.erase(eydata.begin()); - - vector dangle = string_to_double_vector(adata); - vector dydata = string_to_double_vector(ydata); - vector deydata = string_to_double_vector(eydata); - - vector dangler; - - for(int i = 0; i < dangle.size(); i++){ - double aa = dangle[i]; - - dangler.push_back(aa*3.14159/180.); - printf("dangle = %lf\n",dangler[i]); - } - - /* - for(int i=0; i 0 && targetdistance > 0 && detthickness > 0){ + det_param_token = 1; + }else{ + + do{ + if(detradius< 0|| targetdistance < 0|| detthickness < 0){ + printf("Negative numbers are not allowed!\nRe-enter radius, distance, and thickness : "); + scanf("%lf,%lf,%lf", &detradius,&targetdistance,&detthickness); + } + }while(detradius< 0|| targetdistance < 0|| detthickness < 0);} + + if(detradius > 0 && targetdistance > 0 && detthickness > 0){ + det_param_token = 1; printf(" --- Detector characteristics loaded --- \n"); + } + + printf("Enter the gamma-ray energy : "); + scanf("%lf", &Energy); + if(Energy > 0){ + gamma_energy_token = 1; + }else{ + do{ + if(Energy <= 0){ + printf("Negative numbers are not allowed!\nRe-enter gamma-ray energy : "); + scanf("%lf", &Energy);} + + }while(Energy <= 0);} + + if(Energy > 0){ + gamma_energy_token = 1; printf(" --- Gamma Energy loaded --- \n"); + } + + //then calucate QD2 and QD4, and replace the 0 with them. + } + + double QD2 = QK2(Energy, detradius, targetdistance, detthickness); ; + //.82;//NEED TO READ FROM ad.txt in the future. + double QD4 = QK4(Energy, detradius, targetdistance, detthickness); ; + //.44; + // cout << "QD2 = " << " " << QD2 << " QD4 = " << " " << QD4 << "\n"; + + //input data file of Angular Data (theta, Yexp, Yerr) + + vector > content; + vector row; + string line, word; + + vector adata; + vector ydata; + vector eydata; + int num = 0; + string fname,fname2; + cout<<"Enter the file name : "; + cin>>fname; + + int aaaa = -1; + fstream file(fname.c_str()); + + if(file.is_open()){ + cout<< " --- Angular Data File Loaded --- \n"; + ang_file_token = 1; + while(getline(file,line)){ + + row.clear(); + + stringstream str(line); + + while(getline(str, word, ',')) + + row.push_back(word); + content.push_back(row); + adata.push_back(row[0]); + ydata.push_back(row[1]); + eydata.push_back(row[2]); + + } + }else{ + do{ + cout<< "Could not open the file\n"; + cout<< "Enter the file name : "; + cin>>fname2; + + fstream file(fname2.c_str()); + + if(file.is_open()){ + aaaa = 1; + + while(getline(file,line)){ + + row.clear(); + + stringstream str(line); + + while(getline(str, word, ',')) + + row.push_back(word); + content.push_back(row); + adata.push_back(row[0]); + ydata.push_back(row[1]); + eydata.push_back(row[2]); + + } + + }else{ aaaa = -1; } + + }while(aaaa == -1); + + cout<< " --- Angular Data File Loaded --- \n"; + ang_file_token = 1; + + } + + for(int i = 0; i< adata.size();i++){ + // cout << adata[i] << "\n"; + // cout << ydata[i] << "\n"; + // cout << eydata[i] << "\n"; + } + + // Legendre Polinomial fit using adata, ydata, eydata; + + adata.erase(adata.begin()); + ydata.erase(ydata.begin()); + eydata.erase(eydata.begin()); + + vector dangle = string_to_double_vector(adata); + vector dydata = string_to_double_vector(ydata); + vector deydata = string_to_double_vector(eydata); + + vector dangler; + + for(int i = 0; i < dangle.size(); i++){ + double aa = dangle[i]; + + dangler.push_back(aa*3.14159/180.); + printf("dangle = %lf\n",dangler[i]); + } + // if you need to scale the y data by sin(theta) + + + /* + for(int i=0; i= 0; i--){ + + residual[i] = mat[i][n]; + + for( int j = i + 1; j= 0 ){ + sigma_token = 1; + }else{ + do{ + + printf("Negative numbers are not allowed!\nRe-enter Sigma : "); + scanf("%lf", &Sigma); + }while(Sigma <0);} + + if(Sigma >= 0 ){ + sigma_token = 1; printf(" --- Sigma Loaded --- \n"); } - } - } - } -//performing gaussian elimination. + printf("Please enter J1,J2 : "); + scanf("%lf,%lf",&j1,&j2); + if(j1 >= 0 && j2 >= 0 ){ + j1j2token = 1; + }else{ + do{ + printf("Negative numbers are not allowed!\nRe-enter J1,J2 : "); + scanf("%lf,%lf", &j1,&j2); + }while(j1 < 0 || j2 < 0);} - for(int i = 0; i< n-1; i++) { - - for(int j = i +1; j= 0; i--){ - - residual[i] = mat[i][n]; - - for( int j = i + 1; j= 0 ){ - sigma_token = 1; - }else{ - do{ - - printf("Negative numbers are not allowed!\nRe-enter Sigma : "); - scanf("%lf", &Sigma); - }while(Sigma <0);} - - if(Sigma >= 0 ){ - sigma_token = 1; printf(" --- Sigma Loaded --- \n"); - } - - printf("Please enter J1,J2 : "); - scanf("%lf,%lf",&j1,&j2); - if(j1 >= 0 && j2 >= 0 ){ - j1j2token = 1; - }else{ - do{ - printf("Negative numbers are not allowed!\nRe-enter J1,J2 : "); - scanf("%lf,%lf", &j1,&j2); - }while(j1 < 0 || j2 < 0);} - - if(j1 >= 0 && j2 >= 0 ){ - j1j2token = 1; printf(" --- J1 & J2 Loaded --- \n"); - } - -} - -// Calculate BK(j1) for perfect allignment -// - - double A[6]; - double js = sqrt(2*j1 +1); - double j12 = 2*j1; - int IS = (int)j12 % 2; - - double cg12,cg22,cg24,cg14 = 0.; - double I1, I2 = 0.; - - double cg1, cg2 = 0.; - - double Bk11, Bk12 = 0.; - if(Sigma == 0){ - if(IS == 1){ - A[0] = j1; - A[1] = j1; - A[2] = 2.; - A[3] = .5; - A[4] = -.5; - A[5] = 0.; - - cg12 = CG2(A); - - A[3] = -.5; - A[4] = .5; - - cg22 = CG2(A); - - A[2] = 4.; - - cg24 = CG2(A); - - A[3] = .5; - A[4] = -.5; - - cg14 = CG2(A); - - - printf("cg12 = %lf\n",cg12); - printf("cg22 = %lf\n",cg22); - printf("cg24 = %lf\n",cg24); - printf("cg24 = %lf\n",cg24); - - printf("Bk11 = %lf\n",Bk11); - printf("Bk12 = %lf\n",Bk12); - - Bk11 = (0.5)*js*(pow(-1,I1) * cg12 + pow(-1,I2) * cg22); - Bk12 = (0.5)*js*(pow(-1,I1) * cg14 + pow(-1,I2) * cg24); - }else if(IS == 0){ - A[0] = j1; - A[1] = j1; - A[2] = 2.; - A[3] = 0.; - A[4] = 0.; - A[5] = 0.; - - cg1 = CG2(A); - - Bk11 = pow(-1,j1) * js * cg1; - - A[2] = 4.; - - cg2 = CG2(A); - Bk12 = pow(-1,j1) * js * cg2; - - printf("Bk11 = %lf\n",Bk11); - printf("Bk12 = %lf\n",Bk12); - printf("cg1 = %lf\n",cg1); - printf("cg2 = %lf\n",cg2); - } - } -//normalize W(m1) -// - - j12 = 2*j1; - double j14 = 4*j1; - - double sigsq = pow(Sigma,2); - double sum1 = 0.; - - double am1,amsq,x,ex = 0.; -//-------------------------------------------------------SOMETHING WRONG WITH CN1. - for(int i = 0; i <= j14; i = i + 2){ - am1 = 0.5*(i - j12); - amsq = pow(am1,2); - x = - (amsq/(2*sigsq)); - ex = exp(x); - - sum1 = sum1 + ex; - } - double cn1 = 1./sum1; - -// cout << "cn1" << " " << cn1 << "\n"; - - double AL0 = 0.; - double A0 = j1 - j2; - double A0b = abs(A0); - if(A0b > 0){ AL0 = A0b;} - - if(A0b <= 0){AL0 = 1.;} - - double AL1 = AL0 +1; - - double am11,amsq1,x1,ex1 = 0.; -//calculate Bk(j1) for gaussian W(m1) or non zero Sigma - -//NEEDS VALUE FIX - if(Sigma != 0){ - double A[6]; - A[0] = j1; - A[1] = j1; - - double sfact = sqrt(2*j1 +1); - double cgg = 0.; - double tTerm = 0.; - double II = 0.; - for(int i = 2; i<= 4; i = i + 2){ - - A[2] = i; - Bk11 = 0.; - Bk12 = 0.; - for(int m = 0; m <= j14; m = m +2){ - am11 = 0.5*(m - j12); - amsq1 = pow(am11,2); - x1 = -(amsq/(2*sigsq)); - II = j1 - am11; - A[3] = am11; - A[4] = -am11; - A[5] = 0; - cgg = CG2(A); - // cout << "cgg = " << " " << cgg << "\n"; - // cout << "am11 = " << " " << am11 << "\n"; - // cout << "amsq1 = " << " " << amsq1 << "\n"; - // cout << "x1 = " << " " << x1 << "\n"; - - ex1 = exp(x1); - tTerm = cn1*ex1*pow(-1,II) * sfact*cgg; - - // cout <<"tTerm "<<" " << tTerm << "\n"; - - if(i == 2) Bk11 = Bk11 + tTerm; - if(i == 4) Bk12 = Bk12 + tTerm; - } - } - cout << "Bk11" << " " << Bk11 << "\n"; - cout << "Bk12" << " " << Bk12 << "\n"; - - - } - - vector > content_r; - vector row_r; - string line_r, word_r; - - vector j1data; - vector j2data; - vector Rk20data; - vector Rk21data; - vector Rk22data; - vector Rk40data; - vector Rk41data; - vector Rk42data; - - - fstream file1("RkTable.csv"); - if(file1.is_open()){ - while(getline(file1,line_r)){ - row_r.clear(); - - stringstream str(line_r); - - while(getline(str, word_r, ',')) - - row_r.push_back(word_r); - content_r.push_back(row_r); - j1data.push_back(row_r[0]); - j2data.push_back(row_r[1]); - Rk20data.push_back(row_r[2]); - Rk21data.push_back(row_r[3]); - Rk22data.push_back(row_r[4]); - Rk40data.push_back(row_r[5]); - Rk41data.push_back(row_r[6]); - Rk42data.push_back(row_r[7]); - - } - cout<< " --- Rk(llj1j2) Table Loaded --- \n"; - }else cout<< "Could not open the file\n"; - - vector::iterator dit; - vector::iterator dit2; - - vector j1datad = string_to_double_vector(j1data); - vector j2datad = string_to_double_vector(j2data); - vector rk20datad = string_to_double_vector(Rk20data); - vector rk21datad = string_to_double_vector(Rk21data); - vector rk22datad = string_to_double_vector(Rk22data); - vector rk40datad = string_to_double_vector(Rk40data); - vector rk41datad = string_to_double_vector(Rk41data); - vector rk42datad = string_to_double_vector(Rk42data); - - int nn = 0; - for(dit = j1datad.begin();dit < j1datad.end();dit++){ - - if(j1 == *dit){ - - for(dit2 = j2datad.begin();dit2 < j2datad.end();dit2++){ - - if(j2 == *dit2 and j1 == j1datad[distance(j2datad.begin(),dit2)]){ - // cout << *dit << " " << *dit2 << " Index Equals = " <= 0 && j2 >= 0 ){ + j1j2token = 1; printf(" --- J1 & J2 Loaded --- \n"); } - } + } - } - -// cout << j1<< " " << j2 << " "<< nn << "\n"; - - -// rk01,rk11,rk21, rk02, rk12,rk22 //READ OUT OF Rk TABLE - - double rk01 = rk20datad[nn]; - double rk11 = rk21datad[nn]; - double rk21 = rk22datad[nn]; - double rk02 = rk40datad[nn]; - double rk12 = rk41datad[nn]; - double rk22 = rk42datad[nn]; + + // Calculate BK(j1) for perfect allignment + // + + double A[6]; + double js = sqrt(2*j1 +1); + double j12 = 2*j1; + int IS = (int)j12 % 2; + + double cg12,cg22,cg24,cg14 = 0.; + double I1, I2 = 0.; + + double cg1, cg2 = 0.; + + double Bk11, Bk12 = 0.; + if(Sigma == 0){ + if(IS == 1){ + A[0] = j1; + A[1] = j1; + A[2] = 2.; + A[3] = .5; + A[4] = -.5; + A[5] = 0.; + + cg12 = CG2(A); + + A[3] = -.5; + A[4] = .5; + + cg22 = CG2(A); + + A[2] = 4.; + + cg24 = CG2(A); + + A[3] = .5; + A[4] = -.5; + + cg14 = CG2(A); -// printf("Bk1 = %lf\n",Bk11); -// printf("Bk2 = %lf\n",Bk12); + printf("cg12 = %lf\n",cg12); + printf("cg22 = %lf\n",cg22); + printf("cg24 = %lf\n",cg24); + printf("cg24 = %lf\n",cg24); - printf("rk01 = %lf\n",rk01); - printf("rk11 = %lf\n",rk11); - printf("rk21 = %lf\n",rk21); - printf("rk02 = %lf\n",rk02); - printf("rk12 = %lf\n",rk12); - printf("rk22 = %lf\n",rk22); - + printf("Bk11 = %lf\n",Bk11); + printf("Bk12 = %lf\n",Bk12); - // here the Chi-sqs from A2 and A4 needed to be added together. + Bk11 = (0.5)*js*(pow(-1,I1) * cg12 + pow(-1,I2) * cg22); + Bk12 = (0.5)*js*(pow(-1,I1) * cg14 + pow(-1,I2) * cg24); + }else if(IS == 0){ + A[0] = j1; + A[1] = j1; + A[2] = 2.; + A[3] = 0.; + A[4] = 0.; + A[5] = 0.; - - double delta_min = -3.14159/2.; - double delta_max = 3.14159/2.; - double step = 0.001; + cg1 = CG2(A); - double delta = 0.; - double tan_delta =0.; - double A0E = residual[0];//NEED FrOM AF FIT - double A2E = residual[1]; - double A4E = residual[2]; - double A2T,a2T = 0.; - double A4T,a4T = 0.; - double rd2T = 0.; - double rd4T = 0.; - double X22,X24 = 0.; - double X2_total = 0.; + Bk11 = pow(-1,j1) * js * cg1; - double a2E = A2E/A0E; - double a4E = A4E/A0E; + A[2] = 4.; + + cg2 = CG2(A); + Bk12 = pow(-1,j1) * js * cg2; + + printf("Bk11 = %lf\n",Bk11); + printf("Bk12 = %lf\n",Bk12); + printf("cg1 = %lf\n",cg1); + printf("cg2 = %lf\n",cg2); + } + } + //normalize W(m1) + // + + j12 = 2*j1; + double j14 = 4*j1; + + double sigsq = pow(Sigma,2); + double sum1 = 0.; + + double am1,amsq,x,ex = 0.; + //-------------------------------------------------------SOMETHING WRONG WITH CN1. + for(int i = 0; i <= j14; i = i + 2){ + am1 = 0.5*(i - j12); + amsq = pow(am1,2); + x = - (amsq/(2*sigsq)); + ex = exp(x); + + sum1 = sum1 + ex; + } + double cn1 = 1./sum1; + + // cout << "cn1" << " " << cn1 << "\n"; + + double AL0 = 0.; + double A0 = j1 - j2; + double A0b = abs(A0); + if(A0b > 0){ AL0 = A0b;} + + if(A0b <= 0){AL0 = 1.;} + + double AL1 = AL0 +1; + + double am11,amsq1,x1,ex1 = 0.; + //calculate Bk(j1) for gaussian W(m1) or non zero Sigma + + //NEEDS VALUE FIX + if(Sigma != 0){ + double A[6]; + A[0] = j1; + A[1] = j1; + + double sfact = sqrt(2*j1 +1); + double cgg = 0.; + double tTerm = 0.; + double II = 0.; + for(int i = 2; i<= 4; i = i + 2){ + + A[2] = i; + Bk11 = 0.; + Bk12 = 0.; + for(int m = 0; m <= j14; m = m +2){ + am11 = 0.5*(m - j12); + amsq1 = pow(am11,2); + x1 = -(amsq/(2*sigsq)); + II = j1 - am11; + A[3] = am11; + A[4] = -am11; + A[5] = 0; + cgg = CG2(A); + // cout << "cgg = " << " " << cgg << "\n"; + // cout << "am11 = " << " " << am11 << "\n"; + // cout << "amsq1 = " << " " << amsq1 << "\n"; + // cout << "x1 = " << " " << x1 << "\n"; + + ex1 = exp(x1); + tTerm = cn1*ex1*pow(-1,II) * sfact*cgg; + + // cout <<"tTerm "<<" " << tTerm << "\n"; + + if(i == 2) Bk11 = Bk11 + tTerm; + if(i == 4) Bk12 = Bk12 + tTerm; + } + } + cout << "Bk11" << " " << Bk11 << "\n"; + cout << "Bk12" << " " << Bk12 << "\n"; - int points = (delta_max - delta_min) / step ; - - vector chisqr; - vector tdelta; + } - for(int i = 0; i< points; i++){ - tan_delta = i*step + delta_min; - delta = tan(tan_delta); - rd2T = (rk01 + 2*delta*rk11 + pow(delta,2)*rk21)/(1+pow(delta,2)); - A2T = QD2*Bk11*rd2T; - a2T = A2T/A0E; - //using the idea that A0E is our normalizer. - - rd4T = (rk02 + 2*delta*rk12 + pow(delta,2)*rk22)/(1+pow(delta,2)); - A4T = QD4*Bk12*rd4T; - a4T = A4T/A0E; - - X22 = pow(abs(a2E -a2T),2)/(abs(a2T)); - X24 = pow(abs(a4E -a4T),2)/(abs(a4T)); - X2_total = (X22 + X24)/2; + vector > content_r; + vector row_r; + string line_r, word_r; - chisqr.push_back(-log(X2_total)); - tdelta.push_back(tan_delta); - - } -//NEEDS FIX - -//If gui does this how does the vector pushback here make sense. - vector Theta; - vector AD_I; - double ad_start = -3.1415/2; - int adpoints = (3.1415)/(step); - double theta,Iad = 0.; - double aaa,aab,aac = 0.; - for(int i = 0; i < adpoints; i++){ - - theta = i*step + ad_start; - aaa = A0E; - aab = A2E*(1.5 * pow(theta,2) - .5); - aac = A4E*(35./8. * pow(theta,4) - 30./8. * pow(theta,2) + 3./8. ); - - Iad = aaa + aab + aac; - - AD_I.push_back(Iad); - Theta.push_back(theta); - - } + vector j1data; + vector j2data; + vector Rk20data; + vector Rk21data; + vector Rk22data; + vector Rk40data; + vector Rk41data; + vector Rk42data; + fstream file1("RkTable.csv"); + if(file1.is_open()){ + while(getline(file1,line_r)){ + row_r.clear(); - int param; + stringstream str(line_r); - param = param_run(det_param_token, gamma_energy_token, ang_file_token, sigma_token, j1j2token); -/* - cout << det_param_token << "\n"; - cout << gamma_energy_token << "\n"; - cout << ang_file_token << "\n"; - cout << sigma_token << "\n"; - cout << j1j2token << "\n"; - - cout << param << "\n"; -*/ - int optnum = -1; - menu(); + while(getline(str, word_r, ',')) - printf("Input option : "); - scanf("%d", &optnum); - if(optnum < 0){ - optnum = -1; - printf("Negative numbers are not allowed!\nInput option : "); - scanf("%d", &optnum); - } + row_r.push_back(word_r); + content_r.push_back(row_r); + j1data.push_back(row_r[0]); + j2data.push_back(row_r[1]); + Rk20data.push_back(row_r[2]); + Rk21data.push_back(row_r[3]); + Rk22data.push_back(row_r[4]); + Rk40data.push_back(row_r[5]); + Rk41data.push_back(row_r[6]); + Rk42data.push_back(row_r[7]); - if(optnum == 0){ - Readme(); - optnum = -1; + } + cout<< " --- Rk(llj1j2) Table Loaded --- \n"; + }else cout<< "Could not open the file\n"; + + vector::iterator dit; + vector::iterator dit2; + + vector j1datad = string_to_double_vector(j1data); + vector j2datad = string_to_double_vector(j2data); + vector rk20datad = string_to_double_vector(Rk20data); + vector rk21datad = string_to_double_vector(Rk21data); + vector rk22datad = string_to_double_vector(Rk22data); + vector rk40datad = string_to_double_vector(Rk40data); + vector rk41datad = string_to_double_vector(Rk41data); + vector rk42datad = string_to_double_vector(Rk42data); + + int nn = 0; + for(dit = j1datad.begin();dit < j1datad.end();dit++){ + + if(j1 == *dit){ + + for(dit2 = j2datad.begin();dit2 < j2datad.end();dit2++){ + + if(j2 == *dit2 and j1 == j1datad[distance(j2datad.begin(),dit2)]){ + // cout << *dit << " " << *dit2 << " Index Equals = " < chisqr; + vector tdelta; + + for(int i = 0; i< points; i++){ + atan_delta = i*step + delta_min; + delta = tan(atan_delta); + rd2T = (rk01 + 2*delta*rk11 + pow(delta,2)*rk21)/(1+pow(delta,2)); + A2T = QD2*Bk11*rd2T; + a2T = A2T/A0E; + //using the idea that A0E is our normalizer. + + rd4T = (rk02 + 2*delta*rk12 + pow(delta,2)*rk22)/(1+pow(delta,2)); + A4T = QD4*Bk12*rd4T; + a4T = A4T/A0E; + + X22 = pow(abs(a2E -a2T),2)/(abs(a2T)); + X24 = pow(abs(a4E -a4T),2)/(abs(a4T)); + X2_total = (X22 + X24)/2; + + chisqr.push_back(-log(X2_total)); + tdelta.push_back(atan_delta); + + } + + vector Theta; + vector AD_I; + double ad_start = 0.; + int adpoints = (3.1415)/(step); + double theta,Iad = 0.; + double aaa,aab,aac = 0.; + for(int i = 0; i < adpoints; i++){ + + theta = i*step + ad_start; + aaa = 1.; + aab = (A2E/A0E)*(1.5 * pow(cos(theta),2) - .5); + aac = (A4E/A0E)*(35./8. * pow(cos(theta),4) - 30./8. * pow(cos(theta),2) + 3./8. ); + + Iad = aaa + aab + aac; + + AD_I.push_back(Iad); + Theta.push_back(theta); + //these arrays arent used, but they are the function (if one just wanted to the legendre fit function that goes over the data. + } + + + vector dydatas; + + for(int i = 0; i < dydata.size(); i++){ + double bbb = dydata[i]; + + dydatas.push_back(bbb/A0E); + printf("Normalized y-intensity %i = %lf\n",i+1,dydatas[i]); + + } + //This is to temporarily fix the issue with the AD distribution, it takes off the last point in the arrays when plotting or doesnt see them. NEED FIX + dydatas.push_back(A0E); + dangler.push_back(3.1415/2.); + + int param; + + param = param_run(det_param_token, gamma_energy_token, ang_file_token, sigma_token, j1j2token); + /* + cout << det_param_token << "\n"; + cout << gamma_energy_token << "\n"; + cout << ang_file_token << "\n"; + cout << sigma_token << "\n"; + cout << j1j2token << "\n"; + + cout << param << "\n"; + */ + + //Initialize Graphics Here. + + + HistoGUI gui; + + HistoGUIad gui_ad; + + + int optnum = -1; + menu(); printf("Input option : "); scanf("%d", &optnum); - } + if(optnum < 0){ + optnum = -1; + printf("Negative numbers are not allowed!\nInput option : "); + scanf("%d", &optnum); + } - //if all inputs are valid, plot distribution. - if(param == 1 && optnum == 1){ - optnum = -1; + if(optnum == 0){ + Readme(); + optnum = -1; + + printf("Input option : "); + scanf("%d", &optnum); + } + + //if all inputs are valid, plot distribution. + if(param == 1 && optnum == 1){ + optnum = -1; - //plotting values here - //x will be arctan of mixing ratio. - //y will be log(X^2); - - gui.SetData(tdelta,chisqr); - gui.Init(); - gui.Loop(); - gui.Close(); + //plotting values here + //x will be arctan of mixing ratio. + //y will be log(X^2); -// printf("Input option : "); -// scanf("%d", &optnum); -// if(optnum < 0){ -// printf("Input option : "); -// scanf("%d", &optnum); -// } - } -//Plot Angular distribution fit, with points and error bars. - if(param == 1 and optnum == 2){ + gui.SetData(tdelta,chisqr); + //gui.SetData(Theta,AD_I); + gui.Init(); + gui.Loop(); + gui.Close(); + + // printf("Input option : "); + // scanf("%d", &optnum); + // if(optnum < 0){ + // printf("Input option : "); + // scanf("%d", &optnum); + // } + } + + //Plot Angular distribution fit, with points and error bars. + if(param == 1 and optnum == 2){ + /* + gui.SetData(Theta,AD_I); + gui.Init(); + gui.Loop(); + gui.Close(); + */ + + gui_ad.SetData(dangler,dydatas); + gui_ad.SetErrors(deydata); + gui_ad.SetFit(residual[0],residual[1],residual[2]); + + gui_ad.Init(); + gui_ad.Loop(); + gui_ad.Close(); -/* - gui.SetData(dangler,dydata); - gui.SetErrors(deydata); - gui.SetFit(residual[0],residual[1],residual[2]); - - gui.Init(); - gui.Loop(); - gui.Close(); -*/ + + } + //exit + if(param == 1 and optnum == 3){ + + return 0; + } - } -//exit - if(param == 1 and optnum == 3){ - - return 0; - } - - - return 1; + return 1; } diff --git a/GUI_AD.h b/GUI_AD.h index 8631aa6..2d03445 100644 --- a/GUI_AD.h +++ b/GUI_AD.h @@ -54,7 +54,8 @@ class HistoGUIad{ double A0; double A2E; - double A4E; + double A4E; + double Ierr; int SetFit(double a, double b, double c){ A0 = a; A2E = b; @@ -385,7 +386,7 @@ int HistoGUIad::DrawData(double x_low_win, double y_low_win, double x_hi_win, do for(int i=0; i < x.size() - 1; i++){ x_wid = (x[i] + x_offset) / width_scale; y_wid = (y[i] + y_offset) / height_scale; - y_errors_wid = (y_errors[i] / height_scale); + y_errors_wid = ((y_errors[i]/A0) / height_scale); // x_wid2 = (x[i + 1] + x_offset) / width_scale; // y_wid2 = (y[i + 1] + y_offset) / height_scale; //printf("(%f, %f), (%f,%f)\n", x_wid,y_wid,x_wid2,y_wid2); @@ -424,14 +425,14 @@ int HistoGUIad::DrawData(double x_low_win, double y_low_win, double x_hi_win, do for(int i=0; i < (int) width; i += w_step){ double x_val = i * width_scale - x_offset; sprintf(axis_val, "%.1f", x_val); - XDrawString(disp, wind, DefaultGC(disp, screen), i, axis_y + 10, axis_val, strlen(axis_val)); + XDrawString(disp, wind, DefaultGC(disp, screen), i, axis_y + 10/A0, axis_val, strlen(axis_val)); } int h_step = height / 10; for(int i=0; i < (int) height; i += h_step){ double y_val = i * height_scale - y_offset; sprintf(axis_val, "%.1f", y_val); - XDrawString(disp, wind, DefaultGC(disp, screen), axis_x + 10, i, axis_val, strlen(axis_val)); + XDrawString(disp, wind, DefaultGC(disp, screen), axis_x + 10/A0, i, axis_val, strlen(axis_val)); } @@ -447,7 +448,7 @@ int HistoGUIad::DrawData(double x_low_win, double y_low_win, double x_hi_win, do x_wid = (x[i] + x_offset) / width_scale; y_wid = (y[i] + y_offset) / height_scale; - y_errors_wid = (y_errors[i] / height_scale); + y_errors_wid = ((y_errors[i]/A0) / height_scale); // x_wid2 = (x[i + 1] + x_offset) / width_scale; // y_wid2 = (y[i + 1] + y_offset) / height_scale; diff --git a/Graphical_Testing/.GUI.h.swp b/Graphical_Testing/.GUI.h.swp deleted file mode 100644 index 276bbf8959ee91d239c82b52d90cc33c844f5735..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16384 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 diff --git a/Graphical_Testing/ADT b/Graphical_Testing/ADT index 5e039f6bcb32e6ee49703338c7a64be1c5c9f191..c1d62e109675af9f5b13d67f74db7486ed327e24 100755 GIT binary patch literal 85400 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 delta 9383 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 diff --git a/Graphical_Testing/GUI.h b/Graphical_Testing/GUI.h index 7388347..f5e805f 100644 --- a/Graphical_Testing/GUI.h +++ b/Graphical_Testing/GUI.h @@ -210,9 +210,9 @@ double HistoGUI::legval(double theta){ double lg; - double aaa = A0; - double aab = A2E*(1.5 * pow(theta,2) - .5); - double aac = A4E*(35./8. * pow(theta,4) - 30./8. * pow(theta,2) + 3./8. ); + double aaa = A0/A0; + double aab = (A2E/A0)*(1.5 * pow(cos(theta),2) - .5); + double aac = (A4E/A0)*(35./8. * pow(cos(theta),4) - 30./8. * pow(cos(theta),2) + 3./8. ); lg = aaa + aab + aac; diff --git a/Graphical_Testing/ad_test.cxx b/Graphical_Testing/ad_test.cxx index 1cc15f8..ad443e3 100644 --- a/Graphical_Testing/ad_test.cxx +++ b/Graphical_Testing/ad_test.cxx @@ -5,10 +5,13 @@ int main ( int argc, char** argv){ HistoGUI gui; - double A0E = 134.327; - double A2E = -11.7874; - double A4E = 0.760896; + double A0E = 111.514; + double A2E = -54.3312; + double A4E = -76.4778; + //double A0E = 134.327; + //double A2E = -11.7874; + //double A4E = 0.760896; double step = 0.0001; vector Theta; @@ -27,7 +30,7 @@ int main ( int argc, char** argv){ Iad = aaa + aab + aac; - cout << theta << "\n"; + // cout << theta << "\n"; AD_I.push_back(Iad); Theta.push_back(theta); @@ -43,16 +46,16 @@ int main ( int argc, char** argv){ dangle.push_back(1.5619); vector dydata; //= {129.,110.,129.}; - dydata.push_back(129.); - dydata.push_back(110.); - dydata.push_back(129.); - dydata.push_back(115.); + dydata.push_back(129./A0E); + dydata.push_back(110./A0E); + dydata.push_back(129./A0E); + dydata.push_back(115./A0E); vector deydata; //= {10.,10.,10.}; - deydata.push_back(10.); - deydata.push_back(10.); - deydata.push_back(10.); - deydata.push_back(10.); + deydata.push_back(5.); + deydata.push_back(5.); + deydata.push_back(5.); + deydata.push_back(5.); diff --git a/Racah.h b/Racah.h index 11403e8..d354b95 100644 --- a/Racah.h +++ b/Racah.h @@ -5,7 +5,7 @@ using namespace std; - +//this program doesnt work and it is not used, I spent so much time transcribing it that maybe, one day some poor soul will come and try to fix it to match rose and brinks. double RACAH(double A[6]){