#include <G4RKFieldIntegrator.hh>
Inheritance diagram for G4RKFieldIntegrator:
Definition at line 31 of file G4RKFieldIntegrator.hh.
G4RKFieldIntegrator::G4RKFieldIntegrator | ( | ) | [inline] |
G4RKFieldIntegrator::G4RKFieldIntegrator | ( | const G4RKFieldIntegrator & | ) | [inline] |
G4RKFieldIntegrator::~G4RKFieldIntegrator | ( | ) | [inline] |
G4double G4RKFieldIntegrator::GetAntiprotonPotential | ( | G4ThreeVector & | aPosition | ) | [inline, virtual] |
Implements G4FieldPropagation.
Definition at line 61 of file G4RKFieldIntegrator.hh.
References GetAntiprotonPotential().
00061 {return GetAntiprotonPotential(aPosition.mag());};
Implements G4FieldPropagation.
Definition at line 291 of file G4RKFieldIntegrator.cc.
Referenced by GetAntiprotonPotential().
00292 { 00293 /* 00294 //G4double theM = G4NucleiProperties::GetAtomicMass(theA, theZ); 00295 G4double theM = theZ * G4Proton::Proton()->GetPDGMass() 00296 + (theA - theZ) * G4Neutron::Neutron()->GetPDGMass() 00297 + G4CreateNucleus::GetBindingEnergy(theZ, theA); 00298 00299 const G4double Mp = 938.27231 * MeV; // mass of proton 00300 G4double mu = (theM * Mp)/(theM + Mp); 00301 00302 // antiproton's potential coefficient 00303 // V = coeff_antiproton * nucleus_density 00304 G4double coeff_antiproton = -2.*pi/mu * (1. + Mp) * a_antiproton; 00305 00306 G4VNuclearDensity *theDencity; 00307 if(theA < 17) theDencity = new G4NuclearShellModelDensity(theA, theZ); 00308 else theDencity = new G4NuclearFermiDensity(theA, theZ); 00309 00310 // GetDencity() accepts only G4ThreeVector so build it: 00311 G4ThreeVector aPosition(0.0, 0.0, radius); 00312 G4double density = theDencity->GetDensity(aPosition); 00313 delete theDencity; 00314 00315 return coeff_antiproton * density; 00316 */ 00317 00318 return 0.0; 00319 }
G4double G4RKFieldIntegrator::GetExcitationEnergy | ( | G4int | nHitNucleons, | |
const G4KineticTrackVector & | theParticles | |||
) | [virtual] |
Implements G4FieldPropagation.
Definition at line 180 of file G4RKFieldIntegrator.cc.
References G4UniformRand.
00181 { 00182 const G4double MeanE = 50; 00183 G4double Sum = 0; 00184 for(G4int c1 = 0; c1 < nHitNucleons; c1++) 00185 { 00186 Sum += -MeanE*std::log(G4UniformRand()); 00187 } 00188 return Sum; 00189 }
G4double G4RKFieldIntegrator::GetKaonPotential | ( | G4ThreeVector & | aPosition | ) | [inline, virtual] |
Implements G4FieldPropagation.
Definition at line 64 of file G4RKFieldIntegrator.hh.
References GetKaonPotential().
00064 {return GetKaonPotential(aPosition.mag());}
Implements G4FieldPropagation.
Definition at line 321 of file G4RKFieldIntegrator.cc.
Referenced by GetKaonPotential().
00322 { 00323 /* 00324 //G4double theM = G4NucleiProperties::GetAtomicMass(theA, theZ); 00325 G4double theM = theZ * G4Proton::Proton()->GetPDGMass() 00326 + (theA - theZ) * G4Neutron::Neutron()->GetPDGMass() 00327 + G4CreateNucleus::GetBindingEnergy(theZ, theA); 00328 00329 const G4double Mk = 496. * MeV; // mass of "kaon" 00330 G4double mu = (theM * Mk)/(theM + Mk); 00331 00332 // kaon's potential coefficient 00333 // V = coeff_kaon * nucleus_density 00334 G4double coeff_kaon = -2.*pi/mu * (1. + Mk/theM) * a_kaon; 00335 00336 G4VNuclearDensity *theDencity; 00337 if(theA < 17) theDencity = new G4NuclearShellModelDensity(theA, theZ); 00338 else theDencity = new G4NuclearFermiDensity(theA, theZ); 00339 00340 // GetDencity() accepts only G4ThreeVector so build it: 00341 G4ThreeVector aPosition(0.0, 0.0, radius); 00342 G4double density = theDencity->GetDensity(aPosition); 00343 delete theDencity; 00344 00345 return coeff_kaon * density; 00346 */ 00347 00348 return 0.0; 00349 }
G4double G4RKFieldIntegrator::GetNeutronPotential | ( | G4ThreeVector & | aPosition | ) | [inline, virtual] |
Implements G4FieldPropagation.
Definition at line 55 of file G4RKFieldIntegrator.hh.
References GetNeutronPotential().
00055 {return GetNeutronPotential(aPosition.mag());}
Implements G4FieldPropagation.
Definition at line 234 of file G4RKFieldIntegrator.cc.
Referenced by GetNeutronPotential().
00235 { 00236 /* 00237 const G4double Mn = 939.56563 * MeV; // mass of nuetron 00238 00239 G4VNuclearDensity *theDencity; 00240 if(theA < 17) theDencity = new G4NuclearShellModelDensity(theA, theZ); 00241 else theDencity = new G4NuclearFermiDensity(theA, theZ); 00242 00243 // GetDencity() accepts only G4ThreeVector so build it: 00244 G4ThreeVector aPosition(0.0, 0.0, radius); 00245 G4double density = theDencity->GetDensity(aPosition); 00246 delete theDencity; 00247 00248 G4FermiMomentum *fm = new G4FermiMomentum(); 00249 fm->Init(theA, theZ); 00250 G4double fermiMomentum = fm->GetFermiMomentum(density); 00251 delete fm; 00252 00253 return sqr(fermiMomentum)/(2 * Mn) 00254 + G4CreateNucleus::GetBindingEnergy(theZ, theA)/theA; 00255 //+ G4NucleiProperties::GetBindingEnergy(theZ, theA)/theA; 00256 */ 00257 00258 return 0.0; 00259 }
G4double G4RKFieldIntegrator::GetPionPotential | ( | G4ThreeVector & | aPosition | ) | [inline, virtual] |
Implements G4FieldPropagation.
Definition at line 67 of file G4RKFieldIntegrator.hh.
References GetPionPotential().
00067 {return GetPionPotential(aPosition.mag());}
Implements G4FieldPropagation.
Definition at line 351 of file G4RKFieldIntegrator.cc.
Referenced by GetPionPotential().
00352 { 00353 /* 00354 //G4double theM = G4NucleiProperties::GetAtomicMass(theA, theZ); 00355 G4double theM = theZ * G4Proton::Proton()->GetPDGMass() 00356 + (theA - theZ) * G4Neutron::Neutron()->GetPDGMass() 00357 + G4CreateNucleus::GetBindingEnergy(theZ, theA); 00358 00359 const G4double Mpi = 139. * MeV; // mass of "pion" 00360 G4double mu = (theM * Mpi)/(theM + Mpi); 00361 00362 // pion's potential coefficient 00363 // V = coeff_pion * nucleus_density 00364 G4double coeff_pion = -2.*pi/mu * (1. + Mpi) * a_pion; 00365 00366 G4VNuclearDensity *theDencity; 00367 if(theA < 17) theDencity = new G4NuclearShellModelDensity(theA, theZ); 00368 else theDencity = new G4NuclearFermiDensity(theA, theZ); 00369 00370 // GetDencity() accepts only G4ThreeVector so build it: 00371 G4ThreeVector aPosition(0.0, 0.0, radius); 00372 G4double density = theDencity->GetDensity(aPosition); 00373 delete theDencity; 00374 00375 return coeff_pion * density; 00376 */ 00377 00378 return 0.0; 00379 }
G4double G4RKFieldIntegrator::GetProtonPotential | ( | G4ThreeVector & | aPosition | ) | [inline, virtual] |
Implements G4FieldPropagation.
Definition at line 58 of file G4RKFieldIntegrator.hh.
References GetProtonPotential().
00058 {return GetProtonPotential(aPosition.mag());}
Implements G4FieldPropagation.
Definition at line 261 of file G4RKFieldIntegrator.cc.
Referenced by GetProtonPotential().
00262 { 00263 /* 00264 // calculate Coulomb barrier value 00265 G4double theCoulombBarrier = coulomb * theZ/(1. + std::pow(theA, 1./3.)); 00266 const G4double Mp = 938.27231 * MeV; // mass of proton 00267 00268 G4VNuclearDensity *theDencity; 00269 if(theA < 17) theDencity = new G4NuclearShellModelDensity(theA, theZ); 00270 else theDencity = new G4NuclearFermiDensity(theA, theZ); 00271 00272 // GetDencity() accepts only G4ThreeVector so build it: 00273 G4ThreeVector aPosition(0.0, 0.0, radius); 00274 G4double density = theDencity->GetDensity(aPosition); 00275 delete theDencity; 00276 00277 G4FermiMomentum *fm = new G4FermiMomentum(); 00278 fm->Init(theA, theZ); 00279 G4double fermiMomentum = fm->GetFermiMomentum(density); 00280 delete fm; 00281 00282 return sqr(fermiMomentum)/ (2 * Mp) 00283 + G4CreateNucleus::GetBindingEnergy(theZ, theA)/theA; 00284 //+ G4NucleiProperties::GetBindingEnergy(theZ, theA)/theA 00285 + theCoulombBarrier; 00286 */ 00287 00288 return 0.0; 00289 }
int G4RKFieldIntegrator::operator!= | ( | const G4RKFieldIntegrator & | ) | const [inline] |
const G4RKFieldIntegrator& G4RKFieldIntegrator::operator= | ( | const G4RKFieldIntegrator & | ) | [inline] |
int G4RKFieldIntegrator::operator== | ( | const G4RKFieldIntegrator & | ) | const [inline] |
void G4RKFieldIntegrator::Transport | ( | G4KineticTrackVector & | theActive, | |
const G4KineticTrackVector & | theSpectators, | |||
G4double | theTimeStep | |||
) | [virtual] |