/*Include{{{*/ #include #include #include #include #include #include #include #include #include #include #include #include /*ROOT Includes{{{*/ #include #include #include #include #include "TObjString.h" #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include //#include /*}}}*/ /*}}}*/ using namespace::std; using namespace::TMath; #include "Constants.h" #include "He4_Elastic.h" const double Delta_E = 27.0;//MeV const double Delta_X = 0.02; //0.02 cm from GEM const double Delta_Y = 0.02; //0.02 cm from GEM const double Length_HyCal = 500; //cm from target to Hycal int main(){ double E0 = 0.;//MeV cerr<<"---Beam Energy (MeV) E0 = "; cin >> E0; double Ep, Q2,qfm,xbj; double Theta, Phi, XS; double Q2_gen,Theta_gen, Phi_gen,Ep_gen; double G_M, G_C; TFile *file = new TFile(Form("XS_He4_Elastic_%d_Smear.root",(int) (E0)),"recreate"); TTree* T = new TTree("T","a new tree"); T->Branch("E0", &E0, "E0/D"); T->Branch("Theta", &Theta , "Theta/D"); T->Branch("Phi", &Phi, "Phi/D"); T->Branch("Ep", &Ep, "Ep/D"); T->Branch("Q2", &Q2, "Q2/D"); T->Branch("qfm", &qfm, "qfm/D"); T->Branch("XS", &XS, "XS/D"); T->Branch("xbj", &xbj, "xbj/D"); T->Branch("G_M", &G_M, "G_M/D"); T->Branch("G_C", &G_C, "G_C/D"); T->Branch("Theta_gen", &Theta_gen , "Theta_gen/D"); T->Branch("Phi_gen", &Phi_gen, "Phi_gen/D"); T->Branch("Ep_gen", &Ep_gen, "Ep_gen/D"); T->Branch("Q2_gen", &Q2_gen, "Q2_gen/D"); gRandom->SetSeed(0); const int N = 20000000; for(int i=0;iUniform(0.4,8.0); //degree Phi_gen = gRandom->Uniform(0.,360.0); //degree double Theta_Rad = Theta_gen *PI/180.0;//Rad double Phi_Rad = Phi_gen *PI/180.0;//Rad double SinThSQ= pow(sin(Theta_Rad/2),2); double ETA= 1./(1.+ 2.*E0/Deut_Mass*SinThSQ); Ep_gen = ETA*E0; Q2_gen= 4.*E0*Ep_gen*SinThSQ; G_C = GetFF_He4(Q2_gen); //Elastic Scattering XS = He4_Elastic(E0,Theta_gen);//fm2/sr XS *= FM2NB;//nb/sr ///////////////////////////////////////////////// //Now Smearing with the resolution: ///////////////////////////////////////////////// Ep = gRandom->Gaus(Ep_gen, Delta_E); double R_L = Length_HyCal / cos(Theta_Rad); double x_gen = R_L * sin(Theta_Rad) * cos(Phi_Rad); double y_gen = R_L * sin(Theta_Rad) * sin(Phi_Rad); double x = gRandom->Gaus(x_gen, Delta_X); double y = gRandom->Gaus(y_gen, Delta_Y); Theta = asin( sqrt( (x*x+y*y)/R_L/R_L ) )*180/PI; Phi = atan(y/x)*180/PI; if(x<0. && y<0.) Phi+=180.0; if(x>0. && y<0.) Phi+=270.0; //////////////////////////////////////////////// SinThSQ= pow(sin(Theta*PI/180./2),2); Q2= 4.*E0*Ep*SinThSQ; qfm=sqrt(Q2)/HBARC; //q4 in fm**-1 xbj = Q2/(2.*Proton_Mass*(E0-Ep)); T->Fill(); } file->cd(); T->Write(); file->Close(); return 0; }