Geant4 10.7.0
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
G4RKFieldIntegrator Class Reference

#include <G4RKFieldIntegrator.hh>

+ Inheritance diagram for G4RKFieldIntegrator:

Public Member Functions

 G4RKFieldIntegrator ()
 
 G4RKFieldIntegrator (const G4RKFieldIntegrator &)
 
 ~G4RKFieldIntegrator ()
 
const G4RKFieldIntegratoroperator= (const G4RKFieldIntegrator &)
 
G4bool operator== (const G4RKFieldIntegrator &) const
 
G4bool operator!= (const G4RKFieldIntegrator &) const
 
void Transport (G4KineticTrackVector &theActive, const G4KineticTrackVector &theSpectators, G4double theTimeStep)
 
G4double GetExcitationEnergy (G4int nHitNucleons, const G4KineticTrackVector &theParticles)
 
void Init (G4int z, G4int a)
 
G4double GetNeutronPotential (G4double radius)
 
G4double GetNeutronPotential (G4ThreeVector &aPosition)
 
G4double GetProtonPotential (G4double radius)
 
G4double GetProtonPotential (G4ThreeVector &aPosition)
 
G4double GetAntiprotonPotential (G4double radius)
 
G4double GetAntiprotonPotential (G4ThreeVector &aPosition)
 
G4double GetKaonPotential (G4double radius)
 
G4double GetKaonPotential (G4ThreeVector &aPosition)
 
G4double GetPionPotential (G4double radius)
 
G4double GetPionPotential (G4ThreeVector &aPosition)
 
- Public Member Functions inherited from G4FieldPropagation
 G4FieldPropagation ()
 
 G4FieldPropagation (const G4FieldPropagation &)
 
virtual ~G4FieldPropagation ()
 
virtual void Transport (G4KineticTrackVector &theActive, const G4KineticTrackVector &theSpectators, G4double theTimeStep)=0
 
virtual G4double GetExcitationEnergy (G4int nHit, const G4KineticTrackVector &theParticles)=0
 
virtual void Init (G4int z, G4int a)=0
 
virtual G4double GetNeutronPotential (G4double radius)=0
 
virtual G4double GetNeutronPotential (G4ThreeVector &aPosition)=0
 
virtual G4double GetProtonPotential (G4double radius)=0
 
virtual G4double GetProtonPotential (G4ThreeVector &aPosition)=0
 
virtual G4double GetAntiprotonPotential (G4double radius)=0
 
virtual G4double GetAntiprotonPotential (G4ThreeVector &aPosition)=0
 
virtual G4double GetKaonPotential (G4double radius)=0
 
virtual G4double GetKaonPotential (G4ThreeVector &aPosition)=0
 
virtual G4double GetPionPotential (G4double radius)=0
 
virtual G4double GetPionPotential (G4ThreeVector &aPosition)=0
 

Detailed Description

Definition at line 31 of file G4RKFieldIntegrator.hh.

Constructor & Destructor Documentation

◆ G4RKFieldIntegrator() [1/2]

G4RKFieldIntegrator::G4RKFieldIntegrator ( )
inline

Definition at line 34 of file G4RKFieldIntegrator.hh.

34{}

◆ G4RKFieldIntegrator() [2/2]

G4RKFieldIntegrator::G4RKFieldIntegrator ( const G4RKFieldIntegrator )
inline

Definition at line 35 of file G4RKFieldIntegrator.hh.

◆ ~G4RKFieldIntegrator()

G4RKFieldIntegrator::~G4RKFieldIntegrator ( )
inline

Definition at line 37 of file G4RKFieldIntegrator.hh.

37{}

Member Function Documentation

◆ GetAntiprotonPotential() [1/2]

G4double G4RKFieldIntegrator::GetAntiprotonPotential ( G4double  radius)
virtual

Implements G4FieldPropagation.

Definition at line 296 of file G4RKFieldIntegrator.cc.

297{
298 /*
299 //G4double theM = G4NucleiProperties::GetAtomicMass(theA, theZ);
300 G4double theM = theZ * G4Proton::Proton()->GetPDGMass()
301 + (theA - theZ) * G4Neutron::Neutron()->GetPDGMass()
302 + G4CreateNucleus::GetBindingEnergy(theZ, theA);
303
304 const G4double Mp = 938.27231 * MeV; // mass of proton
305 G4double mu = (theM * Mp)/(theM + Mp);
306
307 // antiproton's potential coefficient
308 // V = coeff_antiproton * nucleus_density
309 G4double coeff_antiproton = -2.*pi/mu * (1. + Mp) * a_antiproton;
310
311 G4VNuclearDensity *theDencity;
312 if(theA < 17) theDencity = new G4NuclearShellModelDensity(theA, theZ);
313 else theDencity = new G4NuclearFermiDensity(theA, theZ);
314
315 // GetDencity() accepts only G4ThreeVector so build it:
316 G4ThreeVector aPosition(0.0, 0.0, radius);
317 G4double density = theDencity->GetDensity(aPosition);
318 delete theDencity;
319
320 return coeff_antiproton * density;
321 */
322
323 return 0.0;
324}

◆ GetAntiprotonPotential() [2/2]

G4double G4RKFieldIntegrator::GetAntiprotonPotential ( G4ThreeVector aPosition)
inlinevirtual

Implements G4FieldPropagation.

Definition at line 61 of file G4RKFieldIntegrator.hh.

61{return GetAntiprotonPotential(aPosition.mag());};
double mag() const
G4double GetAntiprotonPotential(G4double radius)

Referenced by GetAntiprotonPotential().

◆ GetExcitationEnergy()

G4double G4RKFieldIntegrator::GetExcitationEnergy ( G4int  nHitNucleons,
const G4KineticTrackVector theParticles 
)
virtual

Implements G4FieldPropagation.

Definition at line 185 of file G4RKFieldIntegrator.cc.

186{
187 const G4double MeanE = 50;
188 G4double Sum = 0;
189 for(G4int c1 = 0; c1 < nHitNucleons; c1++)
190 {
191 Sum += -MeanE*G4Log(G4UniformRand());
192 }
193 return Sum;
194}
G4double G4Log(G4double x)
Definition: G4Log.hh:226
double G4double
Definition: G4Types.hh:83
int G4int
Definition: G4Types.hh:85
#define G4UniformRand()
Definition: Randomize.hh:52

◆ GetKaonPotential() [1/2]

G4double G4RKFieldIntegrator::GetKaonPotential ( G4double  radius)
virtual

Implements G4FieldPropagation.

Definition at line 326 of file G4RKFieldIntegrator.cc.

327{
328 /*
329 //G4double theM = G4NucleiProperties::GetAtomicMass(theA, theZ);
330 G4double theM = theZ * G4Proton::Proton()->GetPDGMass()
331 + (theA - theZ) * G4Neutron::Neutron()->GetPDGMass()
332 + G4CreateNucleus::GetBindingEnergy(theZ, theA);
333
334 const G4double Mk = 496. * MeV; // mass of "kaon"
335 G4double mu = (theM * Mk)/(theM + Mk);
336
337 // kaon's potential coefficient
338 // V = coeff_kaon * nucleus_density
339 G4double coeff_kaon = -2.*pi/mu * (1. + Mk/theM) * a_kaon;
340
341 G4VNuclearDensity *theDencity;
342 if(theA < 17) theDencity = new G4NuclearShellModelDensity(theA, theZ);
343 else theDencity = new G4NuclearFermiDensity(theA, theZ);
344
345 // GetDencity() accepts only G4ThreeVector so build it:
346 G4ThreeVector aPosition(0.0, 0.0, radius);
347 G4double density = theDencity->GetDensity(aPosition);
348 delete theDencity;
349
350 return coeff_kaon * density;
351 */
352
353 return 0.0;
354}

◆ GetKaonPotential() [2/2]

G4double G4RKFieldIntegrator::GetKaonPotential ( G4ThreeVector aPosition)
inlinevirtual

Implements G4FieldPropagation.

Definition at line 64 of file G4RKFieldIntegrator.hh.

64{return GetKaonPotential(aPosition.mag());}
G4double GetKaonPotential(G4double radius)

Referenced by GetKaonPotential().

◆ GetNeutronPotential() [1/2]

G4double G4RKFieldIntegrator::GetNeutronPotential ( G4double  radius)
virtual

Implements G4FieldPropagation.

Definition at line 239 of file G4RKFieldIntegrator.cc.

240{
241 /*
242 const G4double Mn = 939.56563 * MeV; // mass of nuetron
243
244 G4VNuclearDensity *theDencity;
245 if(theA < 17) theDencity = new G4NuclearShellModelDensity(theA, theZ);
246 else theDencity = new G4NuclearFermiDensity(theA, theZ);
247
248 // GetDencity() accepts only G4ThreeVector so build it:
249 G4ThreeVector aPosition(0.0, 0.0, radius);
250 G4double density = theDencity->GetDensity(aPosition);
251 delete theDencity;
252
253 G4FermiMomentum *fm = new G4FermiMomentum();
254 fm->Init(theA, theZ);
255 G4double fermiMomentum = fm->GetFermiMomentum(density);
256 delete fm;
257
258 return sqr(fermiMomentum)/(2 * Mn)
259 + G4CreateNucleus::GetBindingEnergy(theZ, theA)/theA;
260 //+ G4NucleiProperties::GetBindingEnergy(theZ, theA)/theA;
261 */
262
263 return 0.0;
264}

◆ GetNeutronPotential() [2/2]

G4double G4RKFieldIntegrator::GetNeutronPotential ( G4ThreeVector aPosition)
inlinevirtual

Implements G4FieldPropagation.

Definition at line 55 of file G4RKFieldIntegrator.hh.

55{return GetNeutronPotential(aPosition.mag());}
G4double GetNeutronPotential(G4double radius)

Referenced by GetNeutronPotential().

◆ GetPionPotential() [1/2]

G4double G4RKFieldIntegrator::GetPionPotential ( G4double  radius)
virtual

Implements G4FieldPropagation.

Definition at line 356 of file G4RKFieldIntegrator.cc.

357{
358 /*
359 //G4double theM = G4NucleiProperties::GetAtomicMass(theA, theZ);
360 G4double theM = theZ * G4Proton::Proton()->GetPDGMass()
361 + (theA - theZ) * G4Neutron::Neutron()->GetPDGMass()
362 + G4CreateNucleus::GetBindingEnergy(theZ, theA);
363
364 const G4double Mpi = 139. * MeV; // mass of "pion"
365 G4double mu = (theM * Mpi)/(theM + Mpi);
366
367 // pion's potential coefficient
368 // V = coeff_pion * nucleus_density
369 G4double coeff_pion = -2.*pi/mu * (1. + Mpi) * a_pion;
370
371 G4VNuclearDensity *theDencity;
372 if(theA < 17) theDencity = new G4NuclearShellModelDensity(theA, theZ);
373 else theDencity = new G4NuclearFermiDensity(theA, theZ);
374
375 // GetDencity() accepts only G4ThreeVector so build it:
376 G4ThreeVector aPosition(0.0, 0.0, radius);
377 G4double density = theDencity->GetDensity(aPosition);
378 delete theDencity;
379
380 return coeff_pion * density;
381 */
382
383 return 0.0;
384}

◆ GetPionPotential() [2/2]

G4double G4RKFieldIntegrator::GetPionPotential ( G4ThreeVector aPosition)
inlinevirtual

Implements G4FieldPropagation.

Definition at line 67 of file G4RKFieldIntegrator.hh.

67{return GetPionPotential(aPosition.mag());}
G4double GetPionPotential(G4double radius)

Referenced by GetPionPotential().

◆ GetProtonPotential() [1/2]

G4double G4RKFieldIntegrator::GetProtonPotential ( G4double  radius)
virtual

Implements G4FieldPropagation.

Definition at line 266 of file G4RKFieldIntegrator.cc.

267{
268 /*
269 // calculate Coulomb barrier value
270 G4double theCoulombBarrier = coulomb * theZ/(1. + G4Pow::GetInstance()->Z13(theA));
271 const G4double Mp = 938.27231 * MeV; // mass of proton
272
273 G4VNuclearDensity *theDencity;
274 if(theA < 17) theDencity = new G4NuclearShellModelDensity(theA, theZ);
275 else theDencity = new G4NuclearFermiDensity(theA, theZ);
276
277 // GetDencity() accepts only G4ThreeVector so build it:
278 G4ThreeVector aPosition(0.0, 0.0, radius);
279 G4double density = theDencity->GetDensity(aPosition);
280 delete theDencity;
281
282 G4FermiMomentum *fm = new G4FermiMomentum();
283 fm->Init(theA, theZ);
284 G4double fermiMomentum = fm->GetFermiMomentum(density);
285 delete fm;
286
287 return sqr(fermiMomentum)/ (2 * Mp)
288 + G4CreateNucleus::GetBindingEnergy(theZ, theA)/theA;
289 //+ G4NucleiProperties::GetBindingEnergy(theZ, theA)/theA
290 + theCoulombBarrier;
291 */
292
293 return 0.0;
294}

◆ GetProtonPotential() [2/2]

G4double G4RKFieldIntegrator::GetProtonPotential ( G4ThreeVector aPosition)
inlinevirtual

Implements G4FieldPropagation.

Definition at line 58 of file G4RKFieldIntegrator.hh.

58{return GetProtonPotential(aPosition.mag());}
G4double GetProtonPotential(G4double radius)

Referenced by GetProtonPotential().

◆ Init()

void G4RKFieldIntegrator::Init ( G4int  z,
G4int  a 
)
inlinevirtual

Implements G4FieldPropagation.

Definition at line 51 of file G4RKFieldIntegrator.hh.

51{theZ = z; theA = a;} // prepare potentials' functions

◆ operator!=()

G4bool G4RKFieldIntegrator::operator!= ( const G4RKFieldIntegrator ) const
inline

Definition at line 43 of file G4RKFieldIntegrator.hh.

43{return 1;}

◆ operator=()

const G4RKFieldIntegrator & G4RKFieldIntegrator::operator= ( const G4RKFieldIntegrator )
inline

Definition at line 40 of file G4RKFieldIntegrator.hh.

40{return *this;}

◆ operator==()

G4bool G4RKFieldIntegrator::operator== ( const G4RKFieldIntegrator ) const
inline

Definition at line 42 of file G4RKFieldIntegrator.hh.

42{return 1;}

◆ Transport()

void G4RKFieldIntegrator::Transport ( G4KineticTrackVector theActive,
const G4KineticTrackVector theSpectators,
G4double  theTimeStep 
)
virtual

Implements G4FieldPropagation.

Definition at line 45 of file G4RKFieldIntegrator.cc.

46{
47 (void)theActive;
48 (void)theSpectators;
49 (void)theTimeStep;
50}

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