Alinel_crsec_gen.h

Go to the documentation of this file.
00001 #ifndef __ALINEL_CRSEC_GEN_HH
00002 #define __ALINEL_CRSEC_GEN_HH
00003 
00004 
00005 
00006 // data gives: FF^2 vs q
00007 // need to write a generator that returns crsec
00008 // 
00009 // input: E_in, theta
00010 //  -- evaluate q for these input parameters
00011 //  -- evaluate FF^2 for this particular q
00012 //  -- get the crsec & rate using this FF^2
00013 //
00014 // -- start with longitudinal FFs -- 10^2 greater than transverse FFs
00015 
00016 G4double getAlinel_FF2(G4double q);
00017 
00018 G4double Alinel_crsec_gen(G4double E_in=1160, G4double th=8.0){
00019 
00020   ///
00021   G4double M_p = 938.2796;  // proton mass in MeV
00022   G4double Z_Al = 13.0;
00023   G4double A_Al = 27.0;
00024   G4double M_Al = M_p*A_Al;
00025 
00026   th = th*3.14159/180.;  // convert to radians
00027   G4double CTH = cos(th/2.0);
00028   G4double STH = sin(th/2.0);
00029 
00030   // now get qsq
00031   G4double ETA = 1.0+2.0*E_in*STH*STH/M_Al;
00032   G4double E_out = E_in/ETA;
00033   
00034   G4double Q2 = 4*E_in*E_out*STH*STH;     //unit: MeV^2
00035   G4double myhbarc = hbarc / MeV / fermi; // 197.3269631 MeV fm
00036   G4double q2 = Q2/(myhbarc*myhbarc);  //convert MeV^2 into fm^(-2)
00037   G4double qq = sqrt(q2);
00038 
00039   G4double FF2 = getAlinel_FF2(qq);
00040   
00041   // get crsec mott, ub/sr
00042   G4double sigma_mott = pow(Z_Al*0.719982/E_in*CTH/(STH*STH),2)/(1+2*E_in/M_Al*STH*STH)*10000;
00043 
00044   G4double sigma = sigma_mott * FF2;
00045 
00046   // G4cout <<"Q2(GeV^2):: "<< Q2*1e-6 << G4endl;
00047   /* G4cout <<"q(1/fm):: " << qq << G4endl; */
00048   /* G4cout <<"FF2_tot:: " << FF2 << G4endl; */
00049   /* G4cout <<"crsec(ub/sr):: " << sigma << G4endl; */
00050 
00051   return sigma;
00052 }
00053 
00054 G4double getAlinel_FF2(G4double q){
00055   
00056   TF1 *ff2[8];
00057   ff2[0] = new TF1("844","0.000427*exp(-0.5*((x-0.958792)/0.341168)**2)",0.5,1.8);
00058   ff2[1] = new TF1("1016","0.000706*exp(-0.5*((x-0.868077)/0.350506)**2)",0.5,1.8);
00059   ff2[2] = new TF1("2211","0.002337*exp(-0.5*((x-0.857955)/0.290595)**2)",0.5,1.8);
00060   ff2[3] = new TF1("2735","0.000306*exp(-0.5*((x-0.955732)/0.379688)**2)",0.5,1.8);
00061   ff2[4] = new TF1("2735","0.001598*exp(-0.5*((x-0.948107)/0.330035)**2)",0.5,1.8);
00062   ff2[5] = new TF1("3680","0.000042*exp(-0.5*((x-0.992771)/0.395955)**2)",0.5,1.8);
00063   ff2[6] = new TF1("4510","0.000135*exp(-0.5*((x-1.340052)/0.302506)**2)",0.5,1.8);
00064   ff2[7] = new TF1("4580","0.000162*exp(-0.5*((x-1.297271)/0.352787)**2)",0.5,1.8);
00065 
00066   G4double ffT=0;
00067   for(G4int i=0;i<8;i++){
00068     if((q>=0.5) && (q<=1.8))
00069       ffT += ff2[i]->Eval(q);
00070     else 
00071       ffT += 0;
00072     delete ff2[i];
00073   }
00074 
00075   //  G4String printff2[] = {"844","1016","2211","2735"};
00076   //  for(G4int i=0;i<4;i++) G4cout << printff2[i] << ":: " << ff2[i]->Eval(q) << G4endl;
00077 
00078   return(ffT);
00079 }
00080 
00081 #endif

Generated on 19 Feb 2017 for QwGeant4 by  doxygen 1.6.1