54 pom_Alphaprime = 0.25/GeV/GeV;
55 qex_Gamma = 9./GeV/GeV;
57 qex_Alphaprime = 1.5/GeV/GeV;
59 G4int aP = std::abs(PDG);
60 if (PDG==2212 || PDG==2112) InitForNucleon();
61 else if(PDG==111 || aP==211) InitForPion();
62 else if(PDG==130 || PDG==310 || aP==311 || aP==321) InitForKaon();
63 else if(PDG==22) InitForGamma();
64 else if(PDG > 3000) InitForHyperon();
65 else if(PDG <-2000) InitForAntiBaryon();
68 G4cout<<
"-Warning-G4QProbability is initialized for PDGCode="<<PDG<<
" as Pion"<<
G4endl;
71 pom_sqC=std::sqrt(pom_C);
77 static const G4int nft=11;
78 static const G4int nf1=nft-1;
79 static const G4double ft[nft]={1.,1.,2.,6.,24.,120.,720.,5040.,40320.,362880.,3628800.};
82 if(nPom<nft) f=ft[nPom];
83 else for(
G4int i=nft; i<= nPom; i++) f*=i;
84 G4double e=PomEikonal(s_value,imp2); e+=e;
85 return std::exp(-e)*std::pow(e,nPom)/pom_C/f;
91 static const G4int nft=11;
92 static const G4int nf1=nft-1;
93 static const G4double ft[nft]={1.,1.,2.,6.,24.,120.,720.,5040.,40320.,362880.,3628800.};
96 if(nQex<nft) f=ft[nQex];
97 else for(
G4int i=nft; i<= nQex; i++) f*=i;
98 G4double e=QexEikonal(s_value,imp2); e+=e;
99 return std::exp(-e)*std::pow(e,nQex)/f;
102void G4QProbability::InitForNucleon()
104 pom_Gamma = 2.16/GeV/GeV;
106 pom_R2 = 3.30/GeV/GeV;
109void G4QProbability::InitForHyperon()
111 pom_Gamma = 2.16/GeV/GeV;
113 pom_R2 = 3.30/GeV/GeV;
115void G4QProbability::InitForAntiBaryon()
117 pom_Gamma = 2.16/GeV/GeV;
119 pom_R2 = 3.30/GeV/GeV;
122void G4QProbability::InitForPion()
124 pom_Gamma = 2.16/GeV/GeV;
126 pom_R2 = 2.36/GeV/GeV;
129void G4QProbability::InitForKaon()
131 pom_Gamma = 1.92/GeV/GeV;
133 pom_R2 = 1.96/GeV/GeV;
136void G4QProbability::InitForGamma()
138 pom_Gamma = 2.16/GeV/GeV;
140 pom_R2 = 2.16/GeV/GeV;
147 for(
G4int j=2; j<21; j++)
149 current *= -z*(j-1)/j/j;
157 G4double ExpPom=std::exp(-PomEikonal(s_value,imp2));
158 G4double ExpQex=std::exp(-QexEikonal(s_value,imp2));
159 G4double Amp=(ExpQex*(1.-ExpPom) +
sqr(pom_sqC-1.)*ExpPom*(1.-ExpQex))/pom_C;
165 G4double ExpPom=std::exp(-PomEikonal(s_value,imp2));
166 G4double ExpQex=std::exp(-QexEikonal(s_value,imp2));
167 G4double Amp=(ExpQex*(1.-ExpPom) +
sqr(pom_sqC-1.)*ExpPom*(1.-ExpQex))/pom_C;
173 G4double ExpPom=std::exp(-PomEikonal(s_value,imp2));
174 G4double ExpQex=std::exp(-QexEikonal(s_value,imp2));
175 G4double Amp=
sqr(pom_sqC-1.)*(ExpQex*(1.-ExpPom) + ExpPom*(1.-ExpQex))/pom_C;
181 G4double ExpPom=std::exp(-PomEikonal(s_value,imp2));
182 G4double ExpQex=std::exp(-QexEikonal(s_value,imp2));
183 G4double Amp=(pom_sqC-1.)*(ExpQex*(1.-ExpPom) - (pom_sqC-1.)*ExpPom*(1.-ExpQex))/pom_C;
194 G4double ExpPom=std::exp(-PomEikonal(s_value,imp2));
195 G4double ExpQex=std::exp(-QexEikonal(s_value,imp2));
196 G4double Amp=
sqr(pom_sqC-1.)*(ExpQex*(1.-ExpPom) + ExpPom*(1.-ExpQex))/pom_C;
197 return Amp+Amp-Amp*Amp;
G4DLLIMPORT std::ostream G4cout
G4double GetQexDubDiffProbability(const G4double s, const G4double imp2)
G4QProbability(G4int PDGCode=2212)
G4double GetQexElProbability(const G4double s, const G4double imp2)
G4double GetQexTotProbability(const G4double s, const G4double imp2)
G4double GetCutQexProbability(const G4double s, const G4double ip2, const G4int nQex)
G4double GetQexDiffProbability(const G4double s, const G4double imp2)
G4double GetCutPomProbability(const G4double s, const G4double ip2, const G4int nPom)
G4double GetQexInelProbability(const G4double s, const G4double imp2)
G4double GetQexSinDiffProbability(const G4double s, const G4double imp2)