41 :OPTxs(3),fVerbose(0),theZ(Z),theA(A),
42 LevelDensity(0.1),elimit(CLHEP::
MeV),accuracy(0.02)
65 fEner.resize(nbin+1, 0.0);
66 fProb.resize(nbin+1, 0.0);
69 if(de > 0.0) {
elimit = de; }
95 fEner.resize(nbin + 1);
96 fProb.resize(nbin + 1);
108 G4cout <<
"### G4VEmissionProbability::IntegrateProbability: "
109 <<
" Emax= " <<
emax <<
" QB= " << cb <<
" nbin= " << nbin
125 G4cout <<
" " << i <<
". E= " <<
x <<
" prob= " << y
126 <<
" Edel= " << edelta <<
G4endl;
130 del = (y + problast)*edelta*0.5;
135 else if(del != totProbability && del > 0.8*totProbability
136 && edelta > edeltamin)
138 else if(del < 0.1*totProbability && edelta < edeltamax)
143 }
else if(peak && y <
probmax) {
149 }
while(i < nbin &&
x <
emax);
161 for(
size_t i=0; i<=
nfilled; ++i) {
164 G4double ekin(0.0), s1(1.0), s2(0.0), ksi(0.0), psi(1.0),
z(0.0);
167 G4cout <<
"### G4VEmissionProbability::SampleEnergy: "
168 <<
" Emin= " <<
emin <<
" Emax= " <<
emax
182 if(
nfilled > 5 && y2 > 0.0 && y2 < 0.1*y0 && y1 > 0.0 && x1 -
emin < ee) {
197 if(std::abs(1.0 - ksi) < 0.1) {
199 if(s1 > 0.0) { s2 = x0*y0*
z; }
202 psi = 1.0/(1.0 - ksi);
204 if(s1 > 0.0) { s2 =
std::max(y0*x0*z*psi, 0.0); }
210 G4cout <<
" Epeak= " <<
eprobmax <<
" e0= " << x0 <<
" e1= " << x1 <<
" e2= " << x2
211 <<
" psi= " << psi <<
G4endl;
212 G4cout <<
" s1= " << s1 <<
" s2= " << s2
213 <<
" y0= " << y0 <<
" y1= " << y1 <<
" y2= " << y2 <<
" z= " << z
215 for(
size_t i=0; i<=
nfilled; ++i) {
223 for(
size_t i=0; i<
nmax; ++i) {
225 if(s2 <= 0.0 || q <= s1) {
229 ekin = x0*
G4Exp((q - s1)*z/s2);
232 ekin = x0*
G4Exp(
G4Log(1.0 + (q - s1)*z/s2)*psi);
238 <<
". prob= " << g <<
" probmax= " << gr
239 <<
" Ekin= " << ekin <<
G4endl;
242 G4cout <<
"### G4VEmissionProbability::SampleEnergy Warning i= " << i
243 <<
" prob/probmax= " << g/gr <<
" rndm= " << q
244 <<
"\n prob= " << g <<
" probmax= " << gr
245 <<
" z= " << z <<
" ksi= " << ksi
246 <<
"\n Ekin= " << ekin <<
" Emin= " <<
emin
247 <<
" Emax= " <<
emax <<
" E0= " << x0 <<
G4endl;
248 G4cout <<
" s1= " << s1 <<
" s2= " << s2
249 <<
" y0= " << y0 <<
" y1= " << y1 <<
" y2= " << y2 <<
G4endl;
250 for(
size_t j=0; j<=
nfilled; ++j) {
254 if(gr*rndm->
flat() <=
g) {
break; }
G4double G4Exp(G4double initial_x)
Exponential Function double precision.
T max(const T t1, const T t2)
brief Return the largest of the two arguments
static constexpr double MeV
Float_t y1[n_points_granero]
G4DeexPrecoParameters * GetParameters()
Float_t x1[n_points_granero]
static G4NuclearLevelData * GetInstance()
G4PairingCorrection * fPairCorr
G4double G4Log(G4double x)
G4double IntegrateProbability(G4double elow, G4double ehigh, G4double CB)
Float_t y2[n_points_geant4]
static constexpr double g
static G4Pow * GetInstance()
void ResetIntegrator(size_t nbin, G4double de, G4double eps)
static constexpr double MeV
double A(double temperature)
virtual G4double ComputeProbability(G4double anEnergy, G4double CB)
G4VEmissionProbability(G4int Z, G4int A)
G4double GetLevelDensity() const
G4GLOB_DLL std::ostream G4cout
virtual ~G4VEmissionProbability()
G4int GetDeexModelType() const
static const G4double eps
G4PairingCorrection * GetPairingCorrection()
Float_t x2[n_points_geant4]
std::vector< G4double > fEner
std::vector< G4double > fProb