Geant4-11
Public Member Functions | Static Public Member Functions | Private Member Functions | Private Attributes | Static Private Attributes
G4TwoBodyAngularDist Class Reference

#include <G4TwoBodyAngularDist.hh>

Public Member Functions

 ~G4TwoBodyAngularDist ()
 

Static Public Member Functions

static const G4VTwoBodyAngDstGetDist (G4int is)
 
static const G4VTwoBodyAngDstGetDist (G4int is, G4int fs, G4int kw)
 
static const G4TwoBodyAngularDistGetInstance ()
 
static void setVerboseLevel (G4int vb=0)
 

Private Member Functions

const G4VTwoBodyAngDstChooseDist (G4int is, G4int fs, G4int kw) const
 
 G4TwoBodyAngularDist ()
 
 G4TwoBodyAngularDist (const G4TwoBodyAngularDist &)
 
G4TwoBodyAngularDistoperator= (const G4TwoBodyAngularDist &)
 
void passVerbose (G4int verbose)
 

Private Attributes

G4GammaNuclAngDstgnAngDst
 
G4GamP2NPipAngDstgp_npip
 
G4GamP2PPi0AngDstgp_ppi0
 
G4HadNElastic1AngDsthn1AngDst
 
G4HadNElastic2AngDsthn2AngDst
 
G4HadNucl3BodyAngDsthn3BodyDst
 
G4NuclNucl3BodyAngDstnn3BodyDst
 
G4NuclNuclAngDstnnAngDst
 
G4NP2NPAngDstnpAngDst
 
G4Pi0P2Pi0PAngDstpi0pAngDst
 
G4PimP2PimPAngDstpimpAngDst
 
G4PimP2Pi0NAngDstpipCXAngDst
 
G4PipP2PipPAngDstpippAngDst
 
G4PP2PPAngDstppAngDst
 
G4PiNInelasticAngDstqxAngDst
 

Static Private Attributes

static G4ThreadLocal G4TwoBodyAngularDisttheInstance = 0
 

Detailed Description

Definition at line 61 of file G4TwoBodyAngularDist.hh.

Constructor & Destructor Documentation

◆ ~G4TwoBodyAngularDist()

G4TwoBodyAngularDist::~G4TwoBodyAngularDist ( )

Definition at line 84 of file G4TwoBodyAngularDist.cc.

84 {
85 delete gp_npip;
86 delete gp_ppi0;
87 delete ppAngDst;
88 delete nnAngDst;
89 delete pi0pAngDst;
90 delete pipCXAngDst;
91 delete pimpAngDst;
92 delete pippAngDst;
93 delete qxAngDst;
94 delete hn1AngDst;
95 delete hn2AngDst;
96 delete gnAngDst;
97 delete npAngDst;
98 delete hn3BodyDst;
99 delete nn3BodyDst;
100}
G4GamP2PPi0AngDst * gp_ppi0
G4HadNElastic1AngDst * hn1AngDst
G4PipP2PipPAngDst * pippAngDst
G4HadNucl3BodyAngDst * hn3BodyDst
G4HadNElastic2AngDst * hn2AngDst
G4PimP2PimPAngDst * pimpAngDst
G4GamP2NPipAngDst * gp_npip
G4NuclNucl3BodyAngDst * nn3BodyDst
G4Pi0P2Pi0PAngDst * pi0pAngDst
G4NuclNuclAngDst * nnAngDst
G4PiNInelasticAngDst * qxAngDst
G4PimP2Pi0NAngDst * pipCXAngDst
G4GammaNuclAngDst * gnAngDst

References gnAngDst, gp_npip, gp_ppi0, hn1AngDst, hn2AngDst, hn3BodyDst, nn3BodyDst, nnAngDst, npAngDst, pi0pAngDst, pimpAngDst, pipCXAngDst, pippAngDst, ppAngDst, and qxAngDst.

◆ G4TwoBodyAngularDist() [1/2]

G4TwoBodyAngularDist::G4TwoBodyAngularDist ( )
private

◆ G4TwoBodyAngularDist() [2/2]

G4TwoBodyAngularDist::G4TwoBodyAngularDist ( const G4TwoBodyAngularDist )
private

Member Function Documentation

◆ ChooseDist()

const G4VTwoBodyAngDst * G4TwoBodyAngularDist::ChooseDist ( G4int  is,
G4int  fs,
G4int  kw 
) const
private

Definition at line 131 of file G4TwoBodyAngularDist.cc.

131 {
132 // TEMPORARY: Three-body distributions for hN/NN
133 if (fs==0 && kw==0) {
134 if (is == pro*pro || is == pro*neu || is == neu*neu) return nn3BodyDst;
135 else return hn3BodyDst;
136 }
137
138 // gamma-nucleon -> nucleon pi0
139 if ((is == gam*pro && fs == pro*pi0) ||
140 (is == gam*neu && fs == neu*pi0)) {
141 return gp_ppi0;
142 }
143
144 // gamma-nucleon charge exchange
145 if ((is == gam*pro && fs == neu*pip) ||
146 (is == gam*neu && fs == pro*pim)) {
147 return gp_npip;
148 }
149
150 // pp and nn elastic
151 if (is == pro*pro || is == neu*neu) return ppAngDst;
152
153 // np and pn elastic
154 if (is == pro*neu) return npAngDst;
155
156 // pi+ p and pi- n elastic
157 if ((fs == is) && (is == pip*pro || is == pim*neu) ) return pippAngDst;
158
159 // pi- p and pi+ n elastic
160 if ((fs == is) && (is == pim*pro || is == pip*neu) ) return pimpAngDst;
161
162 // pi0 p and pi0 n elastic
163 if ((fs == is) && (is == pi0*pro || is == pi0*neu) ) return pi0pAngDst;
164
165 // pi- p -> pi0 n, pi+ n -> pi0 p, pi0 p -> pi+ n, pi0 n -> pi- p
166 if ((is == pim*pro && fs == pi0*neu) || (is == pip*neu && fs == pi0*pip) ||
167 (is == pi0*pro && fs == pip*neu) || (is == pi0*neu && fs == pim*pro) )
168 return pipCXAngDst;
169
170 // hyperon-nucleon
171 if (is == pro*lam || is == pro*sp || is == pro*s0 ||
172 is == pro*sm || is == pro*xi0 || is == pro*xim ||
173 is == pro*om ||
174 is == neu*lam || is == neu*sp || is == neu*s0 ||
175 is == neu*sm || is == neu*xi0 || is == neu*xim ||
176 is == neu*om) {
177 return nnAngDst;
178 }
179
180 // gamma p -> K Y (and isospin variants)
181 if (kw == 2 && (is == pro*gam || is == neu*gam)) {
182 return gnAngDst;
183 }
184
185 // pion-nucleon strangeness production
186 if (kw == 2) {
187 return qxAngDst;
188 }
189
190 // gamma p, k+p, k0bp, gamma n, k-n, or k0n
191 if (is == pro*gam ||
192 is == pro*kpl || is == pro*k0b ||
193 is == neu*gam ||
194 is == neu*kmi || is == neu*k0) {
195 return hn1AngDst;
196 }
197
198 // k-p, k0bn, k+n, or k0p
199 if (is == pro*kmi || is == pro*k0 ||
200 is == neu*kpl || is == neu*k0b) {
201 return hn2AngDst;
202 }
203
204 // Invalid interaction
205 return 0;
206}

References G4InuclParticleNames::gam, gnAngDst, gp_npip, gp_ppi0, hn1AngDst, hn2AngDst, hn3BodyDst, G4InuclParticleNames::k0, G4InuclParticleNames::k0b, G4InuclParticleNames::kmi, G4InuclParticleNames::kpl, G4InuclParticleNames::lam, G4InuclParticleNames::neu, nn3BodyDst, nnAngDst, npAngDst, G4InuclParticleNames::om, G4InuclParticleNames::pi0, pi0pAngDst, G4InuclParticleNames::pim, pimpAngDst, G4InuclParticleNames::pip, pipCXAngDst, pippAngDst, ppAngDst, G4InuclParticleNames::pro, qxAngDst, G4InuclParticleNames::s0, G4InuclParticleNames::sm, G4InuclParticleNames::sp, G4InuclParticleNames::xi0, and G4InuclParticleNames::xim.

Referenced by GetDist().

◆ GetDist() [1/2]

static const G4VTwoBodyAngDst * G4TwoBodyAngularDist::GetDist ( G4int  is)
inlinestatic

Definition at line 72 of file G4TwoBodyAngularDist.hh.

72 {
73 return GetInstance()->ChooseDist(is,0,0);
74 }
const G4VTwoBodyAngDst * ChooseDist(G4int is, G4int fs, G4int kw) const
static const G4TwoBodyAngularDist * GetInstance()

References ChooseDist(), and GetInstance().

◆ GetDist() [2/2]

static const G4VTwoBodyAngDst * G4TwoBodyAngularDist::GetDist ( G4int  is,
G4int  fs,
G4int  kw 
)
inlinestatic

Definition at line 68 of file G4TwoBodyAngularDist.hh.

68 {
69 return GetInstance()->ChooseDist(is,fs,kw);
70 }

References ChooseDist(), and GetInstance().

Referenced by G4CascadeFinalStateAlgorithm::ChooseGenerators().

◆ GetInstance()

const G4TwoBodyAngularDist * G4TwoBodyAngularDist::GetInstance ( )
static

Definition at line 62 of file G4TwoBodyAngularDist.cc.

62 {
63 if (!theInstance) {
66 }
67
68 return theInstance;
69}
static G4ThreadLocal G4TwoBodyAngularDist * theInstance
void Register(T *inst)
Definition: G4AutoDelete.hh:65

References G4TwoBodyAngularDist(), G4AutoDelete::Register(), and theInstance.

Referenced by GetDist(), and setVerboseLevel().

◆ operator=()

G4TwoBodyAngularDist & G4TwoBodyAngularDist::operator= ( const G4TwoBodyAngularDist )
private

◆ passVerbose()

void G4TwoBodyAngularDist::passVerbose ( G4int  verbose)
private

Definition at line 109 of file G4TwoBodyAngularDist.cc.

109 {
110 if (gp_npip) gp_npip->setVerboseLevel(verbose);
111 if (gp_ppi0) gp_ppi0->setVerboseLevel(verbose);
112 if (ppAngDst) ppAngDst->setVerboseLevel(verbose);
113 if (nnAngDst) nnAngDst->setVerboseLevel(verbose);
118 if (qxAngDst) qxAngDst->setVerboseLevel(verbose);
119 if (hn1AngDst) hn1AngDst->setVerboseLevel(verbose);
120 if (hn2AngDst) hn2AngDst->setVerboseLevel(verbose);
121 if (gnAngDst) gnAngDst->setVerboseLevel(verbose);
122 if (npAngDst) npAngDst->setVerboseLevel(verbose);
125}
virtual void setVerboseLevel(G4int verbose=0)

References gnAngDst, gp_npip, gp_ppi0, hn1AngDst, hn2AngDst, hn3BodyDst, nn3BodyDst, nnAngDst, npAngDst, pi0pAngDst, pimpAngDst, pipCXAngDst, pippAngDst, ppAngDst, qxAngDst, and G4VTwoBodyAngDst::setVerboseLevel().

Referenced by setVerboseLevel().

◆ setVerboseLevel()

void G4TwoBodyAngularDist::setVerboseLevel ( G4int  vb = 0)
static

Definition at line 105 of file G4TwoBodyAngularDist.cc.

105 {
106 const_cast<G4TwoBodyAngularDist*>(GetInstance())->passVerbose(verbose);
107}
void passVerbose(G4int verbose)

References GetInstance(), and passVerbose().

Referenced by G4CascadeFinalStateAlgorithm::SetVerboseLevel().

Field Documentation

◆ gnAngDst

G4GammaNuclAngDst* G4TwoBodyAngularDist::gnAngDst
private

Definition at line 102 of file G4TwoBodyAngularDist.hh.

Referenced by ChooseDist(), passVerbose(), and ~G4TwoBodyAngularDist().

◆ gp_npip

G4GamP2NPipAngDst* G4TwoBodyAngularDist::gp_npip
private

Definition at line 89 of file G4TwoBodyAngularDist.hh.

Referenced by ChooseDist(), passVerbose(), and ~G4TwoBodyAngularDist().

◆ gp_ppi0

G4GamP2PPi0AngDst* G4TwoBodyAngularDist::gp_ppi0
private

Definition at line 90 of file G4TwoBodyAngularDist.hh.

Referenced by ChooseDist(), passVerbose(), and ~G4TwoBodyAngularDist().

◆ hn1AngDst

G4HadNElastic1AngDst* G4TwoBodyAngularDist::hn1AngDst
private

Definition at line 100 of file G4TwoBodyAngularDist.hh.

Referenced by ChooseDist(), passVerbose(), and ~G4TwoBodyAngularDist().

◆ hn2AngDst

G4HadNElastic2AngDst* G4TwoBodyAngularDist::hn2AngDst
private

Definition at line 101 of file G4TwoBodyAngularDist.hh.

Referenced by ChooseDist(), passVerbose(), and ~G4TwoBodyAngularDist().

◆ hn3BodyDst

G4HadNucl3BodyAngDst* G4TwoBodyAngularDist::hn3BodyDst
private

Definition at line 105 of file G4TwoBodyAngularDist.hh.

Referenced by ChooseDist(), passVerbose(), and ~G4TwoBodyAngularDist().

◆ nn3BodyDst

G4NuclNucl3BodyAngDst* G4TwoBodyAngularDist::nn3BodyDst
private

Definition at line 106 of file G4TwoBodyAngularDist.hh.

Referenced by ChooseDist(), passVerbose(), and ~G4TwoBodyAngularDist().

◆ nnAngDst

G4NuclNuclAngDst* G4TwoBodyAngularDist::nnAngDst
private

Definition at line 93 of file G4TwoBodyAngularDist.hh.

Referenced by ChooseDist(), passVerbose(), and ~G4TwoBodyAngularDist().

◆ npAngDst

G4NP2NPAngDst* G4TwoBodyAngularDist::npAngDst
private

Definition at line 92 of file G4TwoBodyAngularDist.hh.

Referenced by ChooseDist(), passVerbose(), and ~G4TwoBodyAngularDist().

◆ pi0pAngDst

G4Pi0P2Pi0PAngDst* G4TwoBodyAngularDist::pi0pAngDst
private

Definition at line 94 of file G4TwoBodyAngularDist.hh.

Referenced by ChooseDist(), passVerbose(), and ~G4TwoBodyAngularDist().

◆ pimpAngDst

G4PimP2PimPAngDst* G4TwoBodyAngularDist::pimpAngDst
private

Definition at line 96 of file G4TwoBodyAngularDist.hh.

Referenced by ChooseDist(), passVerbose(), and ~G4TwoBodyAngularDist().

◆ pipCXAngDst

G4PimP2Pi0NAngDst* G4TwoBodyAngularDist::pipCXAngDst
private

Definition at line 95 of file G4TwoBodyAngularDist.hh.

Referenced by ChooseDist(), passVerbose(), and ~G4TwoBodyAngularDist().

◆ pippAngDst

G4PipP2PipPAngDst* G4TwoBodyAngularDist::pippAngDst
private

Definition at line 97 of file G4TwoBodyAngularDist.hh.

Referenced by ChooseDist(), passVerbose(), and ~G4TwoBodyAngularDist().

◆ ppAngDst

G4PP2PPAngDst* G4TwoBodyAngularDist::ppAngDst
private

Definition at line 91 of file G4TwoBodyAngularDist.hh.

Referenced by ChooseDist(), passVerbose(), and ~G4TwoBodyAngularDist().

◆ qxAngDst

G4PiNInelasticAngDst* G4TwoBodyAngularDist::qxAngDst
private

Definition at line 99 of file G4TwoBodyAngularDist.hh.

Referenced by ChooseDist(), passVerbose(), and ~G4TwoBodyAngularDist().

◆ theInstance

G4ThreadLocal G4TwoBodyAngularDist * G4TwoBodyAngularDist::theInstance = 0
staticprivate

Definition at line 86 of file G4TwoBodyAngularDist.hh.

Referenced by GetInstance().


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