00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #ifndef G4QProbability_h
00027 #define G4QProbability_h 1
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049 #include <CLHEP/Units/PhysicalConstants.h>
00050 #include "globals.hh"
00051
00052 class G4QProbability
00053 {
00054 public:
00055 G4QProbability(G4int PDGCode = 2212);
00056 ~G4QProbability(){;}
00057 void SetS0(G4double aS0) {S0 = aS0;}
00058 void SetPom_Gamma(G4double aPom_Gamma) {pom_Gamma = aPom_Gamma;}
00059 void SetGamma(const G4double aGam) {pom_Gamma=aGam/CLHEP::GeV/CLHEP::GeV;}
00060 void SetPom_C(G4double aPom_C) {pom_C = aPom_C;}
00061 void SetPom_R2(G4double aPom_R2) {pom_R2 = aPom_R2;}
00062 void SetPom_Alpha(G4double aPom_Alpha) {pom_Alpha = aPom_Alpha;}
00063 void SetPom_Alphaprime(G4double aPom_Alphaprime){pom_Alphaprime = aPom_Alphaprime;}
00064
00065 G4double GetQexTotProbability(const G4double s, const G4double imp2);
00066 G4double GetQexCohProbability(const G4double s, const G4double imp2);
00067 G4double GetQexDiffProbability(const G4double s, const G4double imp2);
00068 G4double GetQexDubDiffProbability(const G4double s, const G4double imp2);
00069 G4double GetQexSinDiffProbability(const G4double s, const G4double imp2);
00070 G4double GetQexAbsProbability(const G4double s, const G4double imp2);
00071 G4double GetQexElProbability(const G4double s, const G4double imp2);
00072 G4double GetQexInelProbability(const G4double s, const G4double imp2);
00073
00074 G4double GetPomTotProbability(const G4double s_value, const G4double imp2)
00075 {return 2*(1.-std::exp(-PomEikonal(s_value,imp2)))/pom_C;}
00076 G4double GetPomCohProbability(const G4double s_value, const G4double imp2)
00077 {return sqr(1.-std::exp(-PomEikonal(s_value,imp2)))/pom_C;}
00078 G4double GetPomDiffProbability(const G4double s_value, const G4double imp2)
00079 {return ((pom_C-1.)/pom_C)*GetPomCohProbability(s_value,imp2);}
00080 G4double GetPomDubDiffProbability(const G4double s_value, const G4double imp2)
00081 {return (sqr(pom_sqC-1.)/pom_C)*GetPomCohProbability(s_value,imp2);}
00082 G4double GetPomSinDiffProbability(const G4double s_value, const G4double imp2)
00083 {return ((pom_sqC-1.)/pom_C)*GetPomCohProbability(s_value,imp2);}
00084 G4double GetPomAbsProbability(const G4double s_value, const G4double imp2)
00085 {return (1.-std::exp(-2*PomEikonal(s_value,imp2)))/pom_C;}
00086 G4double GetPomElProbability(const G4double s_value, const G4double imp2)
00087 {return GetPomCohProbability(s_value,imp2)/pom_C;}
00088 G4double GetPomInelProbability(const G4double s_value, const G4double imp2)
00089 {return GetPomDiffProbability(s_value,imp2) + GetPomAbsProbability(s_value,imp2);}
00090
00091 G4double GetCutPomProbability(const G4double s, const G4double ip2, const G4int nPom);
00092 G4double GetCutQexProbability(const G4double s, const G4double ip2, const G4int nQex);
00093 private:
00094 void InitForNucleon();
00095 void InitForHyperon();
00096 void InitForAntiBaryon();
00097 void InitForPion();
00098 void InitForKaon();
00099 void InitForGamma();
00100
00101 G4double Expand(G4double z);
00102 G4double PowerQex(const G4double s_value) {return qex_Gamma/(s_value/S0);}
00103 G4double PowerPom(const G4double s_value) {return pom_Gamma*std::pow(s_value/S0, pom_Alpha-1.);}
00104 G4double SigQex(const G4double s_value) {return 8*CLHEP::pi*CLHEP::hbarc_squared*PowerQex(s_value);}
00105 G4double SigPom(const G4double s_value) {return 8*CLHEP::pi*CLHEP::hbarc_squared*PowerPom(s_value);}
00106 G4double LambdaQex(const G4double s_value) {return qex_R2+qex_Alphaprime*std::log(s_value/S0);}
00107 G4double LambdaPom(const G4double s_value) {return pom_R2+pom_Alphaprime*std::log(s_value/S0);}
00108 G4double ZQex(const G4double s_value) {return 2*PowerQex(s_value)/LambdaQex(s_value);}
00109 G4double ZPom(const G4double s_value) {return 2*pom_C*PowerPom(s_value)/LambdaPom(s_value);}
00110 G4double QexEikonal(const G4double s_value, const G4double imp2)
00111 {return ZQex(s_value)*std::exp(-imp2/LambdaQex(s_value)/CLHEP::hbarc_squared/4)/2;}
00112 G4double PomEikonal(G4double s_value, G4double imp2)
00113 {return ZPom(s_value)*std::exp(-imp2/LambdaPom(s_value)/CLHEP::hbarc_squared/4)/2;}
00114
00115 G4double S0;
00116 G4double pom_Gamma;
00117 G4double pom_C;
00118 G4double pom_sqC;
00119 G4double pom_R2;
00120 G4double pom_Alpha;
00121 G4double pom_Alphaprime;
00122 G4double qex_Gamma;
00123 G4double qex_R2;
00124 G4double qex_Alphaprime;
00125 };
00126 #endif