Geant4  10.02.p03
G4TwoBodyAngularDist Class Reference

#include <G4TwoBodyAngularDist.hh>

Collaboration diagram for G4TwoBodyAngularDist:

Public Member Functions

 ~G4TwoBodyAngularDist ()
 

Static Public Member Functions

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

Private Member Functions

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

Private Attributes

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

Static Private Attributes

static G4ThreadLocal G4TwoBodyAngularDisttheInstance = 0
 

Detailed Description

Definition at line 62 of file G4TwoBodyAngularDist.hh.

Constructor & Destructor Documentation

◆ ~G4TwoBodyAngularDist()

G4TwoBodyAngularDist::~G4TwoBodyAngularDist ( )

Definition at line 85 of file G4TwoBodyAngularDist.cc.

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

◆ G4TwoBodyAngularDist() [1/2]

G4TwoBodyAngularDist::G4TwoBodyAngularDist ( )
private

Definition at line 74 of file G4TwoBodyAngularDist.cc.

83 {;}
G4NuclNucl3BodyAngDst * nn3BodyDst
G4PipP2PipPAngDst * pippAngDst
G4PimP2PimPAngDst * pimpAngDst
G4GamP2PPi0AngDst * gp_ppi0
G4PiNInelasticAngDst * qxAngDst
G4HadNElastic2AngDst * hn2AngDst
G4NuclNuclAngDst * nnAngDst
G4GamP2NPipAngDst * gp_npip
G4Pi0P2Pi0PAngDst * pi0pAngDst
G4PimP2Pi0NAngDst * pipCXAngDst
G4HadNElastic1AngDst * hn1AngDst
G4GammaNuclAngDst * gnAngDst
G4HadNucl3BodyAngDst * hn3BodyDst
Here is the caller graph for this function:

◆ 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 132 of file G4TwoBodyAngularDist.cc.

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

◆ GetDist() [1/2]

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

Definition at line 69 of file G4TwoBodyAngularDist.hh.

69  {
70  return GetInstance()->ChooseDist(is,fs,kw);
71  }
static const G4TwoBodyAngularDist * GetInstance()
const G4VTwoBodyAngDst * ChooseDist(G4int is, G4int fs, G4int kw) const
Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetDist() [2/2]

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

Definition at line 73 of file G4TwoBodyAngularDist.hh.

73  {
74  return GetInstance()->ChooseDist(is,0,0);
75  }
static const G4TwoBodyAngularDist * GetInstance()
const G4VTwoBodyAngDst * ChooseDist(G4int is, G4int fs, G4int kw) const
Here is the call graph for this function:

◆ GetInstance()

const G4TwoBodyAngularDist * G4TwoBodyAngularDist::GetInstance ( void  )
static

Definition at line 63 of file G4TwoBodyAngularDist.cc.

63  {
64  if (!theInstance) {
67  }
68 
69  return theInstance;
70 }
static G4ThreadLocal G4TwoBodyAngularDist * theInstance
void Register(T *inst)
Definition: G4AutoDelete.hh:65
Here is the call graph for this function:
Here is the caller graph for this function:

◆ operator=()

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

◆ passVerbose()

void G4TwoBodyAngularDist::passVerbose ( G4int  verbose)
private

Definition at line 110 of file G4TwoBodyAngularDist.cc.

110  {
111  if (gp_npip) gp_npip->setVerboseLevel(verbose);
112  if (gp_ppi0) gp_ppi0->setVerboseLevel(verbose);
113  if (ppAngDst) ppAngDst->setVerboseLevel(verbose);
114  if (nnAngDst) nnAngDst->setVerboseLevel(verbose);
115  if (pi0pAngDst) pi0pAngDst->setVerboseLevel(verbose);
116  if (pipCXAngDst) pipCXAngDst->setVerboseLevel(verbose);
117  if (pimpAngDst) pimpAngDst->setVerboseLevel(verbose);
118  if (pippAngDst) pippAngDst->setVerboseLevel(verbose);
119  if (qxAngDst) qxAngDst->setVerboseLevel(verbose);
120  if (hn1AngDst) hn1AngDst->setVerboseLevel(verbose);
121  if (hn2AngDst) hn2AngDst->setVerboseLevel(verbose);
122  if (gnAngDst) gnAngDst->setVerboseLevel(verbose);
123  if (npAngDst) npAngDst->setVerboseLevel(verbose);
124  if (hn3BodyDst) hn3BodyDst->setVerboseLevel(verbose);
125  if (nn3BodyDst) nn3BodyDst->setVerboseLevel(verbose);
126 }
G4NuclNucl3BodyAngDst * nn3BodyDst
G4PipP2PipPAngDst * pippAngDst
G4PimP2PimPAngDst * pimpAngDst
G4GamP2PPi0AngDst * gp_ppi0
G4PiNInelasticAngDst * qxAngDst
G4HadNElastic2AngDst * hn2AngDst
G4NuclNuclAngDst * nnAngDst
G4GamP2NPipAngDst * gp_npip
virtual void setVerboseLevel(G4int verbose=0)
G4Pi0P2Pi0PAngDst * pi0pAngDst
G4PimP2Pi0NAngDst * pipCXAngDst
G4HadNElastic1AngDst * hn1AngDst
G4GammaNuclAngDst * gnAngDst
G4HadNucl3BodyAngDst * hn3BodyDst
Here is the call graph for this function:
Here is the caller graph for this function:

◆ setVerboseLevel()

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

Definition at line 106 of file G4TwoBodyAngularDist.cc.

106  {
107  const_cast<G4TwoBodyAngularDist*>(GetInstance())->passVerbose(verbose);
108 }
static const G4TwoBodyAngularDist * GetInstance()
void passVerbose(G4int verbose)
Here is the call graph for this function:
Here is the caller graph for this function:

Member Data Documentation

◆ gnAngDst

G4GammaNuclAngDst* G4TwoBodyAngularDist::gnAngDst
private

Definition at line 103 of file G4TwoBodyAngularDist.hh.

◆ gp_npip

G4GamP2NPipAngDst* G4TwoBodyAngularDist::gp_npip
private

Definition at line 90 of file G4TwoBodyAngularDist.hh.

◆ gp_ppi0

G4GamP2PPi0AngDst* G4TwoBodyAngularDist::gp_ppi0
private

Definition at line 91 of file G4TwoBodyAngularDist.hh.

◆ hn1AngDst

G4HadNElastic1AngDst* G4TwoBodyAngularDist::hn1AngDst
private

Definition at line 101 of file G4TwoBodyAngularDist.hh.

◆ hn2AngDst

G4HadNElastic2AngDst* G4TwoBodyAngularDist::hn2AngDst
private

Definition at line 102 of file G4TwoBodyAngularDist.hh.

◆ hn3BodyDst

G4HadNucl3BodyAngDst* G4TwoBodyAngularDist::hn3BodyDst
private

Definition at line 106 of file G4TwoBodyAngularDist.hh.

◆ nn3BodyDst

G4NuclNucl3BodyAngDst* G4TwoBodyAngularDist::nn3BodyDst
private

Definition at line 107 of file G4TwoBodyAngularDist.hh.

◆ nnAngDst

G4NuclNuclAngDst* G4TwoBodyAngularDist::nnAngDst
private

Definition at line 94 of file G4TwoBodyAngularDist.hh.

◆ npAngDst

G4NP2NPAngDst* G4TwoBodyAngularDist::npAngDst
private

Definition at line 93 of file G4TwoBodyAngularDist.hh.

◆ pi0pAngDst

G4Pi0P2Pi0PAngDst* G4TwoBodyAngularDist::pi0pAngDst
private

Definition at line 95 of file G4TwoBodyAngularDist.hh.

◆ pimpAngDst

G4PimP2PimPAngDst* G4TwoBodyAngularDist::pimpAngDst
private

Definition at line 97 of file G4TwoBodyAngularDist.hh.

◆ pipCXAngDst

G4PimP2Pi0NAngDst* G4TwoBodyAngularDist::pipCXAngDst
private

Definition at line 96 of file G4TwoBodyAngularDist.hh.

◆ pippAngDst

G4PipP2PipPAngDst* G4TwoBodyAngularDist::pippAngDst
private

Definition at line 98 of file G4TwoBodyAngularDist.hh.

◆ ppAngDst

G4PP2PPAngDst* G4TwoBodyAngularDist::ppAngDst
private

Definition at line 92 of file G4TwoBodyAngularDist.hh.

◆ qxAngDst

G4PiNInelasticAngDst* G4TwoBodyAngularDist::qxAngDst
private

Definition at line 100 of file G4TwoBodyAngularDist.hh.

◆ theInstance

G4ThreadLocal G4TwoBodyAngularDist * G4TwoBodyAngularDist::theInstance = 0
staticprivate

Definition at line 87 of file G4TwoBodyAngularDist.hh.


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