Geant4-11
Public Member Functions | Private Attributes
G4ParticleHPKallbachMannSyst Class Reference

#include <G4ParticleHPKallbachMannSyst.hh>

Public Member Functions

G4double A (G4double anEnergy)
 
 G4ParticleHPKallbachMannSyst (G4double aCompoundFraction, G4double anIncidentEnergy, G4double anIncidentMass, G4double aProductEnergy, G4double aProductMass, G4double aResidualMass, G4int aResidualA, G4int aResidualZ, G4double aTargetMass, G4int aTargetA, G4int aTargetZ, G4int aProjectileA, G4int aProjectileZ, G4int aProductA, G4int aProductZ)
 
G4double GetKallbachZero (G4double anEnergy)
 
G4double Kallbach (G4double cosTh, G4double anEnergy)
 
G4double Sample (G4double anEnergy)
 
G4double SeparationEnergy (G4int Ac, G4int Nc, G4int AA, G4int ZA, G4int Abinding, G4int Zbinding)
 
 ~G4ParticleHPKallbachMannSyst ()
 

Private Attributes

G4double theCompoundFraction
 
G4double theIncidentEnergy
 
G4double theIncidentMass
 
G4int theProductA
 
G4double theProductEnergy
 
G4double theProductMass
 
G4int theProductZ
 
G4int theProjectileA
 
G4int theProjectileZ
 
G4int theResidualA
 
G4double theResidualMass
 
G4int theResidualZ
 
G4int theTargetA
 
G4double theTargetMass
 
G4int theTargetZ
 

Detailed Description

Definition at line 36 of file G4ParticleHPKallbachMannSyst.hh.

Constructor & Destructor Documentation

◆ G4ParticleHPKallbachMannSyst()

G4ParticleHPKallbachMannSyst::G4ParticleHPKallbachMannSyst ( G4double  aCompoundFraction,
G4double  anIncidentEnergy,
G4double  anIncidentMass,
G4double  aProductEnergy,
G4double  aProductMass,
G4double  aResidualMass,
G4int  aResidualA,
G4int  aResidualZ,
G4double  aTargetMass,
G4int  aTargetA,
G4int  aTargetZ,
G4int  aProjectileA,
G4int  aProjectileZ,
G4int  aProductA,
G4int  aProductZ 
)
inline

Definition at line 40 of file G4ParticleHPKallbachMannSyst.hh.

46 {
47 theCompoundFraction = aCompoundFraction;
48 theIncidentEnergy = anIncidentEnergy;
49 theIncidentMass = anIncidentMass;
50 theProductEnergy = aProductEnergy;
51 theProductMass = aProductMass;
52 theResidualMass = aResidualMass;
53 theResidualA = aResidualA;
54 theResidualZ = aResidualZ;
55 theTargetMass = aTargetMass;
56 theTargetA = aTargetA;
57 theTargetZ = aTargetZ;
58 theProjectileA=aProjectileA;
59 theProjectileZ=aProjectileZ;
60 theProductA=aProductA;
61 theProductZ=aProductZ;
62 }

References theCompoundFraction, theIncidentEnergy, theIncidentMass, theProductA, theProductEnergy, theProductMass, theProductZ, theProjectileA, theProjectileZ, theResidualA, theResidualMass, theResidualZ, theTargetA, theTargetMass, and theTargetZ.

◆ ~G4ParticleHPKallbachMannSyst()

G4ParticleHPKallbachMannSyst::~G4ParticleHPKallbachMannSyst ( )
inline

Definition at line 64 of file G4ParticleHPKallbachMannSyst.hh.

64{};

Member Function Documentation

◆ A()

G4double G4ParticleHPKallbachMannSyst::A ( G4double  anEnergy)

Definition at line 100 of file G4ParticleHPKallbachMannSyst.cc.

101{
102 G4double result;
103 G4double C1 = 0.04/MeV;
104 G4double C2 = 1.8E-6/(MeV*MeV*MeV);
105 G4double C3 = 6.7E-7/(MeV*MeV*MeV*MeV);
106
111 G4int ZA = theTargetZ;
113 G4double Et1 = 130*MeV;
114 G4double R1 = std::min(ea, Et1);
115 // theProductEnergy is still in CMS!!!
117 G4int AB = theResidualA;
118 G4int ZB = theResidualZ;
119 G4double eb = epsb+SeparationEnergy(Ac, Nc, AB, ZB,theProductA, theProductZ);
120 G4double X1 = R1*eb/ea;
121 G4double Et3 = 41*MeV;
122 G4double R3 = std::min(ea, Et3);
123 G4double X3 = R3*eb/ea;
124
125 G4double Ma=1;
126 G4double mb=1;
127 if(theProjectileA==1 || (theProjectileZ==1 && theProjectileA==2)){Ma=1;}//neutron,proton,deuteron
128 else if(theProjectileA==4 && theProjectileZ==2){Ma=0;}//alpha
129 else if(theProjectileA==3 && (theProjectileZ==1 || theProjectileZ==2)){Ma=0.5;}//tritum,He3 : set intermediate value
130 else
131 {
132 throw G4HadronicException(__FILE__, __LINE__, "Severe error in the sampling of Kallbach-Mann Systematics");
133 }
134 if(theProductA==1 && theProductZ==0){mb=1./2.;}//neutron
135 else if(theProductA==4 && theProductZ==2){mb=2;}//alpha
136 else{mb=1;}
137
138 result = C1*X1 + C2*G4Pow::GetInstance()->powN(X1, 3) + C3*Ma*mb*G4Pow::GetInstance()->powN(X3, 4);
139 return result;
140
141}
static constexpr double MeV
Definition: G4SIunits.hh:200
double G4double
Definition: G4Types.hh:83
int G4int
Definition: G4Types.hh:85
const double C2
const double C1
#define C3
G4double SeparationEnergy(G4int Ac, G4int Nc, G4int AA, G4int ZA, G4int Abinding, G4int Zbinding)
static G4Pow * GetInstance()
Definition: G4Pow.cc:41
G4double powN(G4double x, G4int n) const
Definition: G4Pow.cc:166
T min(const T t1, const T t2)
brief Return the smallest of the two arguments
static const G4double AA[5]
Definition: paraMaker.cc:44

References anonymous_namespace{paraMaker.cc}::AA, C1, C2, C3, G4Pow::GetInstance(), MeV, G4INCL::Math::min(), G4Pow::powN(), SeparationEnergy(), theIncidentMass, theProductA, theProductEnergy, theProductMass, theProductZ, theProjectileA, theProjectileZ, theResidualA, theResidualMass, theResidualZ, theTargetA, theTargetMass, and theTargetZ.

Referenced by GetKallbachZero(), Kallbach(), and mcscore.MCParticle::printout().

◆ GetKallbachZero()

G4double G4ParticleHPKallbachMannSyst::GetKallbachZero ( G4double  anEnergy)

Definition at line 86 of file G4ParticleHPKallbachMannSyst.cc.

87{
88 G4double result;
89 //delta 2.0e-16 in not good.
90 //delta 4.0e-16 is OK
91 //safety factor of 2
92 G4double delta = 8.0e-16;
93 if ( std::abs (theCompoundFraction - 1 ) < delta ) {
94 theCompoundFraction = 1.0-delta;
95 }
96 result = 0.5 * (1./A(anEnergy)) * G4Log((1-theCompoundFraction)/(1+theCompoundFraction));
97 return result;
98}
G4double G4Log(G4double x)
Definition: G4Log.hh:226

References A(), G4Log(), and theCompoundFraction.

Referenced by Sample().

◆ Kallbach()

G4double G4ParticleHPKallbachMannSyst::Kallbach ( G4double  cosTh,
G4double  anEnergy 
)

Definition at line 76 of file G4ParticleHPKallbachMannSyst.cc.

77{
78 // Kallbach-Mann systematics without normalization.
79 G4double result;
80 G4double theX = A(anEnergy)*cosTh;
81 result = 0.5*(G4Exp( theX)*(1+theCompoundFraction)
82 +G4Exp(-theX)*(1-theCompoundFraction));
83 return result;
84}
G4double G4Exp(G4double initial_x)
Exponential Function double precision.
Definition: G4Exp.hh:179

References A(), G4Exp(), and theCompoundFraction.

Referenced by Sample().

◆ Sample()

G4double G4ParticleHPKallbachMannSyst::Sample ( G4double  anEnergy)

Definition at line 44 of file G4ParticleHPKallbachMannSyst.cc.

45{
46 G4double result=0.;
47
48 G4double zero = GetKallbachZero(anEnergy);
49 if(zero>1) zero=1.;
50 if(zero<-1)zero=-1.;
51 G4double max = Kallbach(zero, anEnergy);
52 G4double upper = Kallbach(1., anEnergy);
53 G4double lower = Kallbach(-1., anEnergy);
54 if(upper>max) max=upper;
55 if(lower>max) max=lower;
56 G4double value, random;
57
58 G4int icounter=0;
59 G4int icounter_max=1024;
60 do
61 {
62 icounter++;
63 if ( icounter > icounter_max ) {
64 G4cout << "Loop-counter exceeded the threshold value at " << __LINE__ << "th line of " << __FILE__ << "." << G4endl;
65 break;
66 }
67 result = 2.*G4UniformRand()-1;
68 value = Kallbach(result, anEnergy)/max;
69 random = G4UniformRand();
70 }
71 while(random>value); // Loop checking, 11.05.2015, T. Koi
72
73 return result;
74}
#define G4endl
Definition: G4ios.hh:57
G4GLOB_DLL std::ostream G4cout
#define G4UniformRand()
Definition: Randomize.hh:52
G4double Kallbach(G4double cosTh, G4double anEnergy)
G4double GetKallbachZero(G4double anEnergy)
T max(const T t1, const T t2)
brief Return the largest of the two arguments
static const G4LorentzVector zero(0., 0., 0., 0.)

References G4cout, G4endl, G4UniformRand, GetKallbachZero(), Kallbach(), G4INCL::Math::max(), and anonymous_namespace{G4CascadeDeexciteBase.cc}::zero.

Referenced by G4ParticleHPContAngularPar::Sample().

◆ SeparationEnergy()

G4double G4ParticleHPKallbachMannSyst::SeparationEnergy ( G4int  Ac,
G4int  Nc,
G4int  AA,
G4int  ZA,
G4int  Abinding,
G4int  Zbinding 
)

Definition at line 143 of file G4ParticleHPKallbachMannSyst.cc.

144{
145 G4double result;
146 G4int NA = AA-ZA;
147 G4int Zc = Ac-Nc;
148 result = 15.68*(Ac-AA);
149 result += -28.07*((Nc-Zc)*(Nc-Zc)/(G4double)Ac - (NA-ZA)*(NA-ZA)/(G4double)AA);
150 result += -18.56*(G4Pow::GetInstance()->A23(G4double(Ac)) - G4Pow::GetInstance()->A23(G4double(AA)));
151 result += 33.22*((Nc-Zc)*(Nc-Zc)/G4Pow::GetInstance()->powA(G4double(Ac), 4./3.) - (NA-ZA)*(NA-ZA)/G4Pow::GetInstance()->powA(G4double(AA), 4./3.));
152 result += -0.717*(Zc*Zc/G4Pow::GetInstance()->A13(G4double(Ac))-ZA*ZA/G4Pow::GetInstance()->A13(G4double(AA)));
153 result += 1.211*(Zc*Zc/(G4double)Ac-ZA*ZA/(G4double)AA);
154 G4double totalBinding(0);
155 if(Zbinding==0&&Abinding==1) totalBinding=0;
156 if(Zbinding==1&&Abinding==1) totalBinding=0;
157 if(Zbinding==1&&Abinding==2) totalBinding=2.224596;
158 if(Zbinding==1&&Abinding==3) totalBinding=8.481798;
159 if(Zbinding==2&&Abinding==3) totalBinding=7.718043;
160 if(Zbinding==2&&Abinding==4) totalBinding=28.29566;
161 result += -totalBinding;
162 result *= MeV;
163 return result;
164}
G4double A13(G4double A) const
Definition: G4Pow.cc:120
G4double powA(G4double A, G4double y) const
Definition: G4Pow.hh:230
G4double A23(G4double A) const
Definition: G4Pow.hh:131

References G4Pow::A13(), G4Pow::A23(), anonymous_namespace{paraMaker.cc}::AA, G4Pow::GetInstance(), MeV, and G4Pow::powA().

Referenced by A().

Field Documentation

◆ theCompoundFraction

G4double G4ParticleHPKallbachMannSyst::theCompoundFraction
private

◆ theIncidentEnergy

G4double G4ParticleHPKallbachMannSyst::theIncidentEnergy
private

Definition at line 79 of file G4ParticleHPKallbachMannSyst.hh.

Referenced by G4ParticleHPKallbachMannSyst().

◆ theIncidentMass

G4double G4ParticleHPKallbachMannSyst::theIncidentMass
private

Definition at line 80 of file G4ParticleHPKallbachMannSyst.hh.

Referenced by A(), and G4ParticleHPKallbachMannSyst().

◆ theProductA

G4int G4ParticleHPKallbachMannSyst::theProductA
private

Definition at line 91 of file G4ParticleHPKallbachMannSyst.hh.

Referenced by A(), and G4ParticleHPKallbachMannSyst().

◆ theProductEnergy

G4double G4ParticleHPKallbachMannSyst::theProductEnergy
private

Definition at line 81 of file G4ParticleHPKallbachMannSyst.hh.

Referenced by A(), and G4ParticleHPKallbachMannSyst().

◆ theProductMass

G4double G4ParticleHPKallbachMannSyst::theProductMass
private

Definition at line 82 of file G4ParticleHPKallbachMannSyst.hh.

Referenced by A(), and G4ParticleHPKallbachMannSyst().

◆ theProductZ

G4int G4ParticleHPKallbachMannSyst::theProductZ
private

Definition at line 92 of file G4ParticleHPKallbachMannSyst.hh.

Referenced by A(), and G4ParticleHPKallbachMannSyst().

◆ theProjectileA

G4int G4ParticleHPKallbachMannSyst::theProjectileA
private

Definition at line 89 of file G4ParticleHPKallbachMannSyst.hh.

Referenced by A(), and G4ParticleHPKallbachMannSyst().

◆ theProjectileZ

G4int G4ParticleHPKallbachMannSyst::theProjectileZ
private

Definition at line 90 of file G4ParticleHPKallbachMannSyst.hh.

Referenced by A(), and G4ParticleHPKallbachMannSyst().

◆ theResidualA

G4int G4ParticleHPKallbachMannSyst::theResidualA
private

Definition at line 85 of file G4ParticleHPKallbachMannSyst.hh.

Referenced by A(), and G4ParticleHPKallbachMannSyst().

◆ theResidualMass

G4double G4ParticleHPKallbachMannSyst::theResidualMass
private

Definition at line 83 of file G4ParticleHPKallbachMannSyst.hh.

Referenced by A(), and G4ParticleHPKallbachMannSyst().

◆ theResidualZ

G4int G4ParticleHPKallbachMannSyst::theResidualZ
private

Definition at line 86 of file G4ParticleHPKallbachMannSyst.hh.

Referenced by A(), and G4ParticleHPKallbachMannSyst().

◆ theTargetA

G4int G4ParticleHPKallbachMannSyst::theTargetA
private

Definition at line 87 of file G4ParticleHPKallbachMannSyst.hh.

Referenced by A(), and G4ParticleHPKallbachMannSyst().

◆ theTargetMass

G4double G4ParticleHPKallbachMannSyst::theTargetMass
private

Definition at line 84 of file G4ParticleHPKallbachMannSyst.hh.

Referenced by A(), and G4ParticleHPKallbachMannSyst().

◆ theTargetZ

G4int G4ParticleHPKallbachMannSyst::theTargetZ
private

Definition at line 88 of file G4ParticleHPKallbachMannSyst.hh.

Referenced by A(), and G4ParticleHPKallbachMannSyst().


The documentation for this class was generated from the following files: