Geant4 9.6.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 &)
 
int operator== (const G4RKFieldIntegrator &) const
 
int 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 291 of file G4RKFieldIntegrator.cc.

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

◆ 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 180 of file G4RKFieldIntegrator.cc.

181{
182 const G4double MeanE = 50;
183 G4double Sum = 0;
184 for(G4int c1 = 0; c1 < nHitNucleons; c1++)
185 {
186 Sum += -MeanE*std::log(G4UniformRand());
187 }
188 return Sum;
189}
double G4double
Definition: G4Types.hh:64
int G4int
Definition: G4Types.hh:66
#define G4UniformRand()
Definition: Randomize.hh:53

◆ GetKaonPotential() [1/2]

G4double G4RKFieldIntegrator::GetKaonPotential ( G4double  radius)
virtual

Implements G4FieldPropagation.

Definition at line 321 of file G4RKFieldIntegrator.cc.

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

◆ 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 234 of file G4RKFieldIntegrator.cc.

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

◆ 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 351 of file G4RKFieldIntegrator.cc.

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

◆ 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 261 of file G4RKFieldIntegrator.cc.

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

◆ 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!=()

int 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==()

int 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 42 of file G4RKFieldIntegrator.cc.

43{
44 (void)theActive;
45 (void)theSpectators;
46 (void)theTimeStep;
47}

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