int GetFF_SOG(const double aQ_FM, double* aGE, double *aGQ, double *aGM); double RINTERPQ(const double x0, double* x, double* y, const int N); int GetFF(double Q2_New, double *FC_New, double *FQ_New, double *FM_New); int GetFF_RInterPQ(double Q2_New, double *FC_New, double *FQ_New, double *FM_New); /*double Deut_Elastic( double E0, double Theta){{{*/ double Deut_Elastic( double E0,double Theta_Degree){ double TanThSQ,SinThSQ,TAO,Q2_FM,Ep, Q2; double A,B,FF,G_C,G_M,G_Q,GC2,GM2,GQ2; double Sig_Mott,REC; bool bCoulomb_Distort = kTRUE;//Add Coulomb Distortion when simualte "Exp" data //bool bCoulomb_Distort = kFALSE; //When comparing with model or extract, we need to correct it back. // int model = 0; cerr<<" Which model? (1->InterP, 2->SoG)"; cin >> model; int model = 2; //--------------------------------------------------------------------- // Calculate some kinematical quantities //--------------------------------------------------------------------- double Theta = Theta_Degree * PI/180.0; TanThSQ = tan(Theta/2.0); SinThSQ = pow(sin(Theta/2.0),2); Ep= E0/(1.+ 2.*E0/Deut_Mass*SinThSQ); //MeV Q2 = 4.0 * E0 * Ep * SinThSQ; //MeV2 TAO = Q2/(4.0 * Deut_Mass*Deut_Mass); //--------------------------------------------------------------------- // Get deuteron form factors //--------------------------------------------------------------------- Q2_FM = Q2/pow(HBARC,2); double Q_FM = sqrt(Q2_FM); int err = 0; if(model==2){ err = GetFF_SOG(Q_FM, &G_C, &G_Q, &G_M); // cerr<