#include <G4Fancy3DNucleus.hh>
Definition at line 54 of file G4Fancy3DNucleus.hh.
◆ G4Fancy3DNucleus() [1/2]
G4Fancy3DNucleus::G4Fancy3DNucleus |
( |
| ) |
|
Definition at line 53 of file G4Fancy3DNucleus.cc.
std::vector< G4ThreeVector > momentum
std::vector< G4double > fermiM
G4double excitationEnergy
std::vector< G4Fancy3DNucleusHelper > testSums
std::vector< G4ThreeVector > places
std::vector< G4Nucleon > theNucleons
const G4double nucleondistance
static const double fermi
G4VNuclearDensity * theDensity
◆ ~G4Fancy3DNucleus()
G4Fancy3DNucleus::~G4Fancy3DNucleus |
( |
| ) |
|
◆ G4Fancy3DNucleus() [2/2]
◆ AddExcitationEnergy()
◆ BindingEnergy()
G4double G4Fancy3DNucleus::BindingEnergy |
( |
| ) |
|
|
private |
Definition at line 161 of file G4Fancy3DNucleus.cc.
static G4double GetBindingEnergy(const G4int A, const G4int Z)
◆ CenterNucleons()
void G4Fancy3DNucleus::CenterNucleons |
( |
| ) |
|
Definition at line 238 of file G4Fancy3DNucleus.cc.
void DoTranslation(const G4ThreeVector &theShift)
std::vector< G4Nucleon > theNucleons
◆ ChooseFermiMomenta()
void G4Fancy3DNucleus::ChooseFermiMomenta |
( |
| ) |
|
|
private |
Definition at line 357 of file G4Fancy3DNucleus.cc.
366 for (
G4int ntry=0; ntry<1 ; ntry ++ )
368 for (i=0; i <
myA; i++ )
377 if ( eMax >
theNucleons[i].GetDefinition()->GetPDGMass() )
380 fermiM[i] = std::sqrt(pmax2);
381 while ( mom.
mag2() > pmax2 )
387 G4cerr <<
"G4Fancy3DNucleus: difficulty finding proton momentum" <<
G4endl;
405 for ( i=0; i<
myA ; i++ )
407 energy =
theNucleons[i].GetParticleType()->GetPDGMass()
std::vector< G4ThreeVector > momentum
CLHEP::Hep3Vector G4ThreeVector
G4double CoulombBarrier()
G4double GetDensity(const G4ThreeVector &aPosition) const
std::vector< G4double > fermiM
std::vector< G4Nucleon > theNucleons
G4double GetFermiMomentum(G4double density)
static G4Proton * Proton()
G4ThreeVector GetMomentum(G4double density, G4double maxMomentum=-1.)
G4VNuclearDensity * theDensity
G4GLOB_DLL std::ostream G4cerr
◆ ChooseNucleons()
void G4Fancy3DNucleus::ChooseNucleons |
( |
| ) |
|
|
private |
Definition at line 267 of file G4Fancy3DNucleus.cc.
269 G4int protons=0,nucleons=0;
271 while (nucleons <
myA )
278 else if ( (nucleons-protons) < (
myA-
myZ) )
282 else G4cout <<
"G4Fancy3DNucleus::ChooseNucleons not efficient" <<
G4endl;
G4GLOB_DLL std::ostream G4cout
std::vector< G4Nucleon > theNucleons
static G4Proton * Proton()
static G4Neutron * Neutron()
◆ ChoosePositions()
void G4Fancy3DNucleus::ChoosePositions |
( |
| ) |
|
|
private |
Definition at line 287 of file G4Fancy3DNucleus.cc.
302 while ( (i <
myA) && (--interationsLeft>0))
309 G4RandFlat::shootArray(jr,prand);
314 aPos.
set((2*arand[jx]-1.), (2*arand[jy]-1.), (2*arand[--jr]-1.));
315 }
while (aPos.
mag2() > 1. );
321 std::vector<G4ThreeVector>::iterator iplace;
322 for( iplace=
places.begin(); iplace!=
places.end() && freeplace;++iplace)
324 delta = *iplace - aPos;
325 freeplace= delta.
mag2() > nd2;
350 if (interationsLeft<=0) {
352 "Problem to place nucleons");
void set(double x, double y, double z)
G4double CoulombBarrier()
G4double GetDensity(const G4ThreeVector &aPosition) const
std::vector< G4ThreeVector > places
std::vector< G4Nucleon > theNucleons
virtual G4double GetRelativeDensity(const G4ThreeVector &aPosition) const =0
G4double GetFermiMomentum(G4double density)
static G4Proton * Proton()
G4double GetNuclearRadius()
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
const G4double nucleondistance
G4VNuclearDensity * theDensity
◆ CoulombBarrier()
G4double G4Fancy3DNucleus::CoulombBarrier |
( |
| ) |
|
|
virtual |
◆ DoLorentzBoost() [1/2]
◆ DoLorentzBoost() [2/2]
void G4Fancy3DNucleus::DoLorentzBoost |
( |
const G4ThreeVector & |
theBeta | ) |
|
|
virtual |
◆ DoLorentzContraction() [1/2]
void G4Fancy3DNucleus::DoLorentzContraction |
( |
const G4LorentzVector & |
theBoost | ) |
|
|
virtual |
◆ DoLorentzContraction() [2/2]
void G4Fancy3DNucleus::DoLorentzContraction |
( |
const G4ThreeVector & |
theBeta | ) |
|
|
virtual |
◆ DoTranslation()
void G4Fancy3DNucleus::DoTranslation |
( |
const G4ThreeVector & |
theShift | ) |
|
|
virtual |
◆ GetCharge()
G4int G4Fancy3DNucleus::GetCharge |
( |
| ) |
|
|
inlinevirtual |
◆ GetExcitationEnergy()
G4double G4Fancy3DNucleus::GetExcitationEnergy |
( |
void |
| ) |
|
|
inline |
◆ GetMass()
◆ GetMassNumber()
G4int G4Fancy3DNucleus::GetMassNumber |
( |
| ) |
|
|
inlinevirtual |
◆ GetNextNucleon()
G4Nucleon * G4Fancy3DNucleus::GetNextNucleon |
( |
| ) |
|
|
virtual |
◆ GetNuclearDensity()
◆ GetNuclearRadius() [1/2]
G4double G4Fancy3DNucleus::GetNuclearRadius |
( |
| ) |
|
|
virtual |
◆ GetNuclearRadius() [2/2]
G4double G4Fancy3DNucleus::GetNuclearRadius |
( |
const G4double |
maxRelativeDensity | ) |
|
|
virtual |
Implements G4V3DNucleus.
Definition at line 172 of file G4Fancy3DNucleus.cc.
virtual G4double GetRadius(const G4double maxRelativeDenisty) const =0
G4VNuclearDensity * theDensity
◆ GetNucleons()
const std::vector< G4Nucleon > & G4Fancy3DNucleus::GetNucleons |
( |
| ) |
|
|
virtual |
◆ GetOuterRadius()
G4double G4Fancy3DNucleus::GetOuterRadius |
( |
| ) |
|
|
virtual |
◆ Init()
void G4Fancy3DNucleus::Init |
( |
G4int |
theA, |
|
|
G4int |
theZ |
|
) |
| |
|
virtual |
Implements G4V3DNucleus.
Definition at line 77 of file G4Fancy3DNucleus.cc.
110 for (
G4int aNucleon=0; aNucleon <
myA; aNucleon++)
void ChooseFermiMomenta()
G4double excitationEnergy
std::vector< G4Nucleon > theNucleons
void Init(G4int anA, G4int aZ)
G4VNuclearDensity * theDensity
◆ operator!=()
◆ operator=()
◆ operator==()
◆ ReduceSum()
G4bool G4Fancy3DNucleus::ReduceSum |
( |
| ) |
|
|
private |
Definition at line 418 of file G4Fancy3DNucleus.cc.
427 if ( sum.
mag() <= PFermi )
439 for (
G4int aNucleon=0; aNucleon < myA-1; aNucleon++) {
440 delta = 2.*((
momentum[aNucleon]*testDir)*testDir);
442 testSums[aNucleon].Fill(delta, delta.
mag(), aNucleon);
449 while ( (sum-
testSums[--index].Vector).mag()>PFermi && index>0)
454 sum-=testSums[
index].Vector;
458 if ( (sum-
testSums[index].Vector).mag() <= PFermi )
462 for (
G4int aNucleon=0; aNucleon<=
index; aNucleon++)
467 && std::abs(
momentum[myA-1].mag() - pTry ) < pBest )
469 pBest=std::abs(
momentum[myA-1].mag() - pTry );
475 G4String text =
"G4Fancy3DNucleus.cc: Logic error in ReduceSum()";
479 momentum[myA-1]=testSums[best].Vector-sum;
489 if (
fermiM[++swapit] > PFermi )
break;
491 if (swapit == myA-1 )
return false;
std::vector< G4ThreeVector > momentum
std::vector< G4double > fermiM
std::vector< G4Fancy3DNucleusHelper > testSums
std::vector< G4Nucleon > theNucleons
◆ SortNucleonsDecZ()
void G4Fancy3DNucleus::SortNucleonsDecZ |
( |
| ) |
|
|
virtual |
◆ SortNucleonsIncZ()
void G4Fancy3DNucleus::SortNucleonsIncZ |
( |
| ) |
|
|
virtual |
Implements G4V3DNucleus.
Definition at line 144 of file G4Fancy3DNucleus.cc.
std::vector< G4Nucleon > theNucleons
bool G4Fancy3DNucleusHelperForSortInZ(const G4Nucleon &nuc1, const G4Nucleon &nuc2)
◆ StartLoop()
G4bool G4Fancy3DNucleus::StartLoop |
( |
| ) |
|
|
virtual |
◆ currentNucleon
G4int G4Fancy3DNucleus::currentNucleon |
|
private |
◆ excitationEnergy
G4double G4Fancy3DNucleus::excitationEnergy |
|
private |
◆ fermiM
std::vector<G4double> G4Fancy3DNucleus::fermiM |
|
private |
◆ momentum
◆ myA
G4int G4Fancy3DNucleus::myA |
|
private |
◆ myZ
G4int G4Fancy3DNucleus::myZ |
|
private |
◆ nucleondistance
const G4double G4Fancy3DNucleus::nucleondistance |
|
private |
◆ places
◆ testSums
◆ theDensity
◆ theFermi
◆ theNucleons
std::vector<G4Nucleon> G4Fancy3DNucleus::theNucleons |
|
private |
The documentation for this class was generated from the following files: