KaliVeda  1.12/06
Heavy-Ion Analysis Toolkit
List of all members | Public Types | Public Member Functions | Static Public Member Functions | Static Public Attributes | Protected Member Functions | Private Types | Private Attributes | Static Private Attributes | List of all members
KVNucleus Class Reference

Description of properties and kinematics of atomic nuclei.

Examples of use:

Create an alpha particle, and find its binding energy, mass, and mass excess:

KVNucleus n(2,4); // create nucleus with Z=2 and A=4
cout << "Binding energy of alpha = " << n.GetBindingEnergy() << " MeV" << endl;
cout << "Mass = " << n.GetMass() << " = 4 * " << KVNucleus::kAMU << " + " << n.GetMassExcess() << endl;
Description of properties and kinematics of atomic nuclei.
Definition: KVNucleus.h:125
static Double_t kAMU
atomic mass unit in MeV
Definition: KVNucleus.h:172
const Int_t n

Using the same object we can also obtain binding energies and mass excesses for all other nuclei:

n.GetBindingEnergy(1,2);//binding energy of deuteron
n.GetMassExcess(0,1);//mass excess of neutron

Nuclear masses

We can also create nuclei by only specifying the atomic number Z. In this case the mass number A is calculated from Z:

KVNucleus nuc(82);//create Pb nucleus
nuc.GetA();//by default this is the A corresponding to beta-stability, i.e. 208
nuc.SetMassFormula(KVNucleus::kVedaMass);//change the mass formula used for this nucleus
nuc.GetA();//now the value is that calculated according to the Veda formula, 202
nuc.SetMassFormula(KVNucleus::kEALMass);//Evaporation Attractor Line from R.J. Charity
nuc.GetA();//gives 186
nuc.SetMassFormula(KVNucleus::kBetaMass);//restore the default mass formula

Z and A can be specified separately:

KVNucleus a;//no A or Z specified
a.SetZ(10);//at this moment the nucleus' mass number is 20 (beta-stability)
a.SetA(24);//now this represents a 24Ne nucleus
auto * a
Note
be careful not to use SetZ() AFTER SetA(), because the mass number is always automatically calculated from Z after a call to SetZ().

The value of the atomic mass unit, u, is given by KVNucleus::kAMU or KVNucleus::u() It is 931.494 043 x 10**6 eV, as per the 2002 CODATA recommended values (Reviews of Modern Physics 77, 1-107 (2005)).

Nuclear Arithmetic & Calorimetry

The '+', '-' and '=' operators have been redefined for the KVNucleus class. One can therefore perform "nuclear arithmetic". Example:

KVNucleus c = a + b; //'a' and 'b' are also KVNucleus objects
#define b(i)
#define c(i)

The Z, A, momentum and excitation energy of 'c' are calculated from the appropriate conservation laws. The mass excesses of the 3 nuclei are obviously taken into consideration.

If 'a' and 'b' are projectile and target, 'c' is the compound nucleus after fusion.

In order to perform calorimetry (calculation of source characteristics from daughter nuclei) one need only sum all nuclei associated with the source. The resulting nucleus is the source nucleus with its Z, A, momentum and excitation energy.

Note
if one defines an excitation energy for a nucleus using the SetExcitEnergy() method, the mass and the total energy is modified (M = Mgs + Ex) when excitation energy is set, one can access to the ground state mass via GetMassGS()

The subtraction operator allows to perform energy balance for a binary splitting of a nucleus. Example:

KVNucleus d = c - b;
#define d(i)

In this case, the resulting nucleus 'd' should be identical to 'a' in the first example. One could also imagine

KVNucleus e = c - alpha;
#define e(i)

where 'alpha' is a KVNucleus alpha-particle, for which we specify the momentum after emission. The resulting nucleus 'e' is the residue of the fusion compound after evaporation of an alpha particle.

Note
It is the user's responsiblitly to handle excitation energy sharing between the outgoing nuclei.

The operators '+=' and '-=' also exist. 'a+=b' means 'a = a + b' etc.

Mass Excess Table

Different mass tables can be implemented using classes derived from KVMassTable. The mass table to be used is defined by environment variable

KVNucleus.MassExcessTable: MyMassExcessTable

where 'MyMassExcessTable' must be defined in terms of a KVNuclDataTable plugin:

+Plugin.KVNuclDataTable: MyMassExcessTable MyMassExcessTable MyMassExcessTable.cpp+ " MyMassExcessTable()"
Examples
ClassTraj.cpp, ExampleINDRAAnalysis.cpp, ExampleReconAnalysis.cpp, ExampleSimDataAnalysis.cpp, KVEvent_iterator_example.C, KVGenPhaseSpace_example.C, KVGenPhaseSpace_example2.C, MicroStat_example.C, MicroStat_example2.C, and globvars_kvzmax.C.

Definition at line 125 of file KVNucleus.h.

Public Types

enum  {
  kBetaMass , kVedaMass , kEALMass , kEALResMass ,
  kEPAXMass
}
 
enum  { kLDModel , kEMPFunc , kELTON }
 
enum  {
  kDefaultFormula , kItkis1998 , kHinde1987 , kViola1985 ,
  kViola1966
}
 
enum  { kNN , knn , kpp , knp }
 
- Public Types inherited from KVParticle
enum  { kIsOK = BIT(14) , kIsOKSet = BIT(15) , kIsDetected = BIT(16) }
 
- Public Types inherited from TLorentzVector
typedef Double_t Scalar
 
- Public Types inherited from TObject
enum  EDeprecatedStatusBits
 
enum  EStatusBits
 

Public Member Functions

 KVNucleus ()
 
 KVNucleus (const Char_t *, Double_t EperA=0)
 KVNucleus(const Char_t *);. More...
 
 KVNucleus (const KVNucleus &)
 copy ctor More...
 
 KVNucleus (Int_t z, Double_t t, TVector3 &p)
 
 KVNucleus (Int_t z, Int_t a, TVector3 p)
 
 KVNucleus (Int_t z, Int_t a=0, Double_t ekin=0)
 
virtual ~ KVNucleus ()
 
void CheckZAndA (Int_t &z, Int_t &a) const
 
virtual void Clear (Option_t *opt="")
 
Int_t Compare (const TObject *obj) const
 
virtual void Copy (TObject &) const
 Copy this KVNucleus into the KVNucleus object referenced by "obj". More...
 
Double_t DeduceEincFromBrho (Double_t Brho, Int_t ChargeState=0)
 TH2F* GetKnownNucleiChart(KVString method="GetBindingEnergyPerNucleon");. More...
 
Int_t GetA () const
 
Double_t GetAbundance (Int_t z=-1, Int_t a=-1) const
 
KVAbundanceGetAbundancePtr (Int_t z=-1, Int_t a=-1) const
 
Double_t GetAMeV () const
 
Double_t GetAsurZ () const
 
Double_t GetAtomicMass (Int_t zz=-1, Int_t aa=-1) const
 
Int_t GetAWithMaxBindingEnergy (Int_t z=-1)
 
Double_t GetBindingEnergy (Int_t z=-1, Int_t a=-1) const
 
Double_t GetBindingEnergyPerNucleon (Int_t z=-1, Int_t a=-1) const
 Returns binding energy in MeV/A for this nucleus. More...
 
Double_t GetChargeAsymetry () const
 
Double_t GetChargeRadius (Int_t z=-1, Int_t a=-1) const
 
KVChargeRadiusGetChargeRadiusPtr (Int_t z=-1, Int_t a=-1) const
 
Double_t GetEnergyPerNucleon () const
 
Double_t GetExcitEnergy () const
 
Double_t GetExtraChargeRadius (Int_t z=-1, Int_t a=-1, Int_t rct=2) const
 
Double_t GetExtraMassExcess (Int_t z=-1, Int_t a=-1) const
 
Double_t GetFissionTKE (const KVNucleus *nuc=0, Int_t formula=kDefaultFormula) const
 
Double_t GetFissionVelocity (KVNucleus *nuc=0, Int_t formula=kDefaultFormula)
 
const Char_tGetIsotopesList (Int_t zmin, Int_t zmax, Double_t tmin=0) const
 
KVNumberList GetKnownARange (Int_t z=-1, Double_t tmin=0) const
 
const Char_tGetLatexSymbol (Option_t *opt="") const
 
Double_t GetLifeTime (Int_t z=-1, Int_t a=-1) const
 
KVLifeTimeGetLifeTimePtr (Int_t z=-1, Int_t a=-1) const
 
Double_t GetLiquidDropBindingEnergy (Int_t z=-1, Int_t a=-1) const
 
Double_t GetMassExcess (Int_t z=-1, Int_t a=-1) const
 
KVMassExcessGetMassExcessPtr (Int_t z=-1, Int_t a=-1) const
 
Int_t GetMassFormula () const
 
Double_t GetMassGS () const
 
KVNumberList GetMeasuredARange (Int_t z=-1) const
 returns range of a measured mass for a given element More...
 
Int_t GetMostAbundantA (Int_t z=-1) const
 
Int_t GetN () const
 Return the number of neutron. More...
 
Double_t GetNaturalA (Int_t zz=-1) const
 
Int_t GetNpairs (Int_t type=kNN) const
 
Double_t GetNsurZ () const
 
Double_t GetParity (Int_t z=-1, Int_t a=-1) const
 
Double_t GetQFasymTKE (KVNucleus *target)
 
Double_t GetRelativeVelocity (KVNucleus *nuc)
 Return the reltive velocity between nuc and this in cm/ns. More...
 
Double_t GetSpin (Int_t z=-1, Int_t a=-1) const
 
KVSpinParityGetSpinParityPtr (Int_t z=-1, Int_t a=-1) const
 
const Char_tGetSymbol (Option_t *opt="") const
 
Double_t GetWidth () const
 
Int_t GetZ () const
 Return the number of proton / atomic number. More...
 
void init ()
 
Bool_t IsDefined () const
 
Bool_t IsElement (Int_t Z) const
 
Bool_t IsIsotope (Int_t Z, Int_t A) const
 
Bool_t IsKnown (int z=-1, int a=-1) const
 
Bool_t IsResonance () const
 
Bool_t IsSortable () const
 
Bool_t IsStable (Double_t min_lifetime=1.0e+15) const
 
Double_t LiquidDrop_Weizsacker ()
 
KVNucleus operator+ (const KVNucleus &rhs)
 
KVNucleusoperator+= (const KVNucleus &rhs)
 KVNucleus addition and assignment operator. More...
 
KVNucleus operator- (const KVNucleus &rhs)
 
KVNucleusoperator-= (const KVNucleus &rhs)
 KVNucleus subtraction and assignment operator. More...
 
KVNucleusoperator= (const KVNucleus &rhs)
 KVNucleus assignment operator. More...
 
virtual void Print (Option_t *t="") const
 Display nucleus parameters. More...
 
void Set (const Char_t *)
 
void SetA (Int_t a)
 
void SetExcitEnergy (Double_t e)
 
void SetMassFormula (UChar_t mt)
 
void SetN (Int_t n)
 
void SetZ (Int_t z, Char_t mt=-1)
 
void SetZAandE (Int_t z, Int_t a, Double_t ekin)
 Set atomic number, mass number, and kinetic energy in MeV. More...
 
void SetZandA (Int_t z, Int_t a)
 Set atomic number and mass number. More...
 
void SetZandN (Int_t z, Int_t n)
 Set atomic number and mass number. More...
 
int SetZFromSymbol (const Char_t *)
 
Double_t ShimaChargeState (Int_t) const
 
Double_t ShimaChargeStatePrecision () const
 
- Public Member Functions inherited from KVParticle
 KVParticle ()
 
 KVParticle (const KVParticle &)
 copy ctor More...
 
 KVParticle (Double_t m, Double_t px, Double_t py, Double_t pz)
 create particle with given mass and momentum vector More...
 
 KVParticle (Double_t m, TVector3 &p)
 create particle with given mass and momentum vector More...
 
virtual ~ KVParticle ()
 
void AddGroup (const Char_t *groupname, const Char_t *from="")
 
void AddGroup (const Char_t *groupname, KVParticleCondition *)
 
Bool_t BelongsToGroup (const Char_t *groupname) const
 
void ChangeDefaultFrame (const Char_t *, const Char_t *defname="")
 
void ChangeFrame (const KVFrameTransform &, const KVString &="")
 
Double_t GetCosTheta () const
 
Double_t GetE () const
 
Double_t GetElong () const
 
Double_t GetEnergy () const
 
Double_t GetEtran () const
 
KVParticle const * GetFrame (const Char_t *frame, Bool_t warn_and_return_null_if_unknown=kTRUE) const
 
const Char_tGetFrameName (void) const
 
KVUniqueNameListGetGroups () const
 return the KVUniqueNameList pointeur where list of groups are stored More...
 
Double_t GetKE () const
 
KVListGetListOfFrames (void)
 
Double_t GetLongitudinalEnergy () const
 
Double_t GetMass () const
 
TVector3 GetMomentum () const
 
const Char_tGetName () const
 return the field fName More...
 
Int_t GetNumberOfDefinedFrames (void)
 
Int_t GetNumberOfDefinedGroups (void)
 return the number of defined groups for the particle More...
 
KVNameValueListGetParameters () const
 
Double_t GetPhi () const
 
TVector3GetPInitial () const
 
Double_t GetREtran () const
 
Double_t GetRTransverseEnergy () const
 
Double_t GetThermalWaveLength (Double_t temp) const
 
Double_t GetTheta () const
 
Double_t GetTransverseEnergy () const
 
TVector3 GetTransverseMomentum () const
 
TVector3 GetV () const
 
TVector3 GetVelocity () const
 returns velocity vector in cm/ns units More...
 
Double_t GetVpar () const
 
Double_t GetVperp () const
 
Double_t GetWaveLength () const
 
Bool_t HasFrame (const Char_t *frame)
 
KVParticle InFrame (const KVFrameTransform &)
 
void init ()
 default initialisation More...
 
Bool_t IsDetected ()
 
virtual Bool_t IsOK ()
 
void ListGroups (void) const
 List all stored groups. More...
 
void ls (Option_t *option="") const
 
KVParticleoperator= (const KVParticle &rhs)
 KVParticle assignment operator. More...
 
void RemoveAllGroups ()
 
void RemoveGroup (const Char_t *groupname)
 
void ResetEnergy ()
 
void ResetIsOK ()
 
void Set4Mom (const TLorentzVector &p)
 
void SetE (Double_t a)
 
void SetE0 (TVector3 *e=0)
 
void SetEnergy (Double_t e)
 
void SetFrame (const Char_t *frame, const KVFrameTransform &)
 
void SetFrame (const Char_t *newframe, const Char_t *oldframe, const KVFrameTransform &)
 
void SetFrameName (const Char_t *framename)
 
void SetIsDetected ()
 
void SetIsOK (Bool_t flag=kTRUE)
 
void SetKE (Double_t ecin)
 
virtual void SetMass (Double_t m)
 
void SetMomentum (const TVector3 &v)
 
void SetMomentum (const TVector3 *v)
 
void SetMomentum (Double_t px, Double_t py, Double_t pz, Option_t *opt="cart")
 
void SetMomentum (Double_t T, TVector3 dir)
 
void SetName (const Char_t *nom)
 Set Name of the particle. More...
 
template<typename ValType >
void SetParameter (const Char_t *name, ValType value) const
 
void SetPhi (Double_t phi)
 
void SetRandomMomentum (Double_t T, Double_t thmin, Double_t thmax, Double_t phmin, Double_t phmax, Option_t *opt="isotropic")
 
void SetTheta (Double_t theta)
 
void SetVelocity (const TVector3 &)
 Set velocity of particle (in cm/ns units) More...
 
void UpdateAllFrames ()
 
- Public Member Functions inherited from TLorentzVector
 TLorentzVector ()
 
 TLorentzVector (const Double_t *carray)
 
 TLorentzVector (const Float_t *carray)
 
 TLorentzVector (const TLorentzVector &lorentzvector)
 
 TLorentzVector (const TVector3 &vector3, Double_t t)
 
 TLorentzVector (Double_t x, Double_t y, Double_t z, Double_t t)
 
virtual ~TLorentzVector ()
 
Double_t Angle (const TVector3 &v) const
 
Double_t Beta () const
 
void Boost (const TVector3 &)
 
void Boost (Double_t, Double_t, Double_t)
 
TVector3 BoostVector () const
 
Double_t CosTheta () const
 
Double_t DeltaPhi (const TLorentzVector &) const
 
Double_t DeltaR (const TLorentzVector &, Bool_t useRapidity=kFALSE) const
 
Double_t Dot (const TLorentzVector &) const
 
Double_t DrEtaPhi (const TLorentzVector &) const
 
Double_t DrRapidityPhi (const TLorentzVector &) const
 
Double_t E () const
 
Double_t Energy () const
 
Double_t Et () const
 
Double_t Et (const TVector3 &) const
 
Double_t Et2 () const
 
Double_t Et2 (const TVector3 &) const
 
Double_t Eta () const
 
TVector2 EtaPhiVector ()
 
Double_t Gamma () const
 
void GetXYZT (Double_t *carray) const
 
void GetXYZT (Float_t *carray) const
 
Double_t M () const
 
Double_t M2 () const
 
Double_t Mag () const
 
Double_t Mag2 () const
 
Double_t Minus () const
 
Double_t Mt () const
 
Double_t Mt2 () const
 
Bool_t operator!= (const TLorentzVector &) const
 
Double_toperator() (int i)
 
Double_t operator() (int i) const
 
Double_t operator* (const TLorentzVector &) const
 
TLorentzVector operator* (Double_t a) const
 
TLorentzVectoroperator*= (const TLorentzRotation &)
 
TLorentzVectoroperator*= (const TRotation &)
 
TLorentzVectoroperator*= (Double_t a)
 
TLorentzVector operator+ (const TLorentzVector &) const
 
TLorentzVectoroperator+= (const TLorentzVector &)
 
TLorentzVector operator- () const
 
TLorentzVector operator- (const TLorentzVector &) const
 
TLorentzVectoroperator-= (const TLorentzVector &)
 
TLorentzVectoroperator= (const TLorentzVector &)
 
Bool_t operator== (const TLorentzVector &) const
 
Double_toperator[] (int i)
 
Double_t operator[] (int i) const
 
Double_t P () const
 
Double_t Perp () const
 
Double_t Perp (const TVector3 &v) const
 
Double_t Perp2 () const
 
Double_t Perp2 (const TVector3 &v) const
 
Double_t Phi () const
 
Double_t Plus () const
 
Double_t PseudoRapidity () const
 
Double_t Pt () const
 
Double_t Pt (const TVector3 &v) const
 
Double_t Px () const
 
Double_t Py () const
 
Double_t Pz () const
 
Double_t Rapidity () const
 
Double_t Rho () const
 
void Rotate (Double_t, const TVector3 &)
 
void RotateUz (const TVector3 &newUzVector)
 
void RotateX (Double_t angle)
 
void RotateY (Double_t angle)
 
void RotateZ (Double_t angle)
 
void SetE (Double_t a)
 
void SetPerp (Double_t)
 
void SetPhi (Double_t phi)
 
void SetPtEtaPhiE (Double_t pt, Double_t eta, Double_t phi, Double_t e)
 
void SetPtEtaPhiM (Double_t pt, Double_t eta, Double_t phi, Double_t m)
 
void SetPx (Double_t a)
 
void SetPxPyPzE (Double_t px, Double_t py, Double_t pz, Double_t e)
 
void SetPy (Double_t a)
 
void SetPz (Double_t a)
 
void SetRho (Double_t rho)
 
void SetT (Double_t a)
 
void SetTheta (Double_t theta)
 
void SetVect (const TVector3 &vect3)
 
void SetVectM (const TVector3 &spatial, Double_t mass)
 
void SetVectMag (const TVector3 &spatial, Double_t magnitude)
 
void SetX (Double_t a)
 
void SetXYZM (Double_t x, Double_t y, Double_t z, Double_t m)
 
void SetXYZT (Double_t x, Double_t y, Double_t z, Double_t t)
 
void SetY (Double_t a)
 
void SetZ (Double_t a)
 
Double_t T () const
 
Double_t Theta () const
 
TLorentzVectorTransform (const TLorentzRotation &)
 
TLorentzVectorTransform (const TRotation &)
 
TVector3 Vect () const
 
Double_t X () const
 
Double_t Y () const
 
Double_t Z () const
 
- Public Member Functions inherited from TObject
 TObject ()
 
 TObject (const TObject &object)
 
virtual ~TObject ()
 
void AbstractMethod (const char *method) const
 
virtual void AppendPad (Option_t *option="")
 
virtual void Browse (TBrowser *b)
 
ULong_t CheckedHash ()
 
virtual const char * ClassName () const
 
virtual TObjectClone (const char *newname="") const
 
virtual void Delete (Option_t *option="")
 
virtual Int_t DistancetoPrimitive (Int_t px, Int_t py)
 
virtual void Draw (Option_t *option="")
 
virtual void DrawClass () const
 
virtual TObjectDrawClone (Option_t *option="") const
 
virtual void Dump () const
 
virtual void Error (const char *method, const char *msgfmt,...) const
 
virtual void Execute (const char *method, const char *params, Int_t *error=0)
 
virtual void Execute (TMethod *method, TObjArray *params, Int_t *error=0)
 
virtual void ExecuteEvent (Int_t event, Int_t px, Int_t py)
 
virtual void Fatal (const char *method, const char *msgfmt,...) const
 
virtual TObjectFindObject (const char *name) const
 
virtual TObjectFindObject (const TObject *obj) const
 
virtual Option_tGetDrawOption () const
 
virtual const char * GetIconName () const
 
virtual char * GetObjectInfo (Int_t px, Int_t py) const
 
virtual Option_tGetOption () const
 
virtual const char * GetTitle () const
 
virtual UInt_t GetUniqueID () const
 
virtual Bool_t HandleTimer (TTimer *timer)
 
virtual ULong_t Hash () const
 
Bool_t HasInconsistentHash () const
 
virtual void Info (const char *method, const char *msgfmt,...) const
 
virtual Bool_t InheritsFrom (const char *classname) const
 
virtual Bool_t InheritsFrom (const TClass *cl) const
 
virtual void Inspect () const
 
void InvertBit (UInt_t f)
 
virtual Bool_t IsEqual (const TObject *obj) const
 
virtual Bool_t IsFolder () const
 
R__ALWAYS_INLINE Bool_t IsOnHeap () const
 
R__ALWAYS_INLINE Bool_t IsZombie () const
 
void MayNotUse (const char *method) const
 
virtual Bool_t Notify ()
 
void Obsolete (const char *method, const char *asOfVers, const char *removedFromVers) const
 
void operator delete (void *ptr)
 
void operator delete[] (void *ptr)
 
voidoperator new (size_t sz)
 
voidoperator new (size_t sz, void *vp)
 
voidoperator new[] (size_t sz)
 
voidoperator new[] (size_t sz, void *vp)
 
TObjectoperator= (const TObject &rhs)
 
virtual void Paint (Option_t *option="")
 
virtual void Pop ()
 
virtual Int_t Read (const char *name)
 
virtual void RecursiveRemove (TObject *obj)
 
void ResetBit (UInt_t f)
 
virtual void SaveAs (const char *filename="", Option_t *option="") const
 
virtual void SavePrimitive (std::ostream &out, Option_t *option="")
 
void SetBit (UInt_t f)
 
void SetBit (UInt_t f, Bool_t set)
 
virtual void SetDrawOption (Option_t *option="")
 
virtual void SetUniqueID (UInt_t uid)
 
virtual void SysError (const char *method, const char *msgfmt,...) const
 
R__ALWAYS_INLINE Bool_t TestBit (UInt_t f) const
 
Int_t TestBits (UInt_t f) const
 
virtual void UseCurrentStyle ()
 
virtual void Warning (const char *method, const char *msgfmt,...) const
 
virtual Int_t Write (const char *name=0, Int_t option=0, Int_t bufsize=0)
 
virtual Int_t Write (const char *name=0, Int_t option=0, Int_t bufsize=0) const
 

Static Public Member Functions

static Int_t GetAFromZ (Double_t, Char_t mt)
 
static Int_t GetNFromZ (Double_t, Char_t mt)
 Calculate neutron number from the element's atomic number Z. More...
 
static Double_t GetRealAFromZ (Double_t, Char_t mt)
 
static Double_t GetRealNFromZ (Double_t, Char_t mt)
 
static Int_t GetZFromSymbol (const Char_t *)
 
static Int_t IsMassGiven (const Char_t *)
 
static Double_t LiquidDrop_BrackGuet (UInt_t A, UInt_t Z)
 
static Double_t TKE_Hinde1987 (Double_t z1, Double_t a1, Double_t z2, Double_t a2)
 
static Double_t TKE_Itkis1998 (Double_t z, Double_t a)
 
static Double_t TKE_Kozulin2014 (Double_t zp, Double_t zt, Double_t ap, Double_t at)
 
static Double_t TKE_Viola1966 (Double_t z, Double_t a)
 from: V. E. Viola, Jr., Nuclear Data Sheets. Section A 1, 391 (1965). More...
 
static Double_t TKE_Viola1985 (Double_t z, Double_t a)
 from: V. E. Viola, K. Kwiatkowski, and M. Walker, Physical Review C 31, 1550 (1985). More...
 
static Double_t u (void)
 
- Static Public Member Functions inherited from KVParticle
static Double_t C ()
 
- Static Public Member Functions inherited from TObject
static Longptr_t GetDtorOnly ()
 
static Bool_t GetObjectStat ()
 
static void SetDtorOnly (void *obj)
 
static void SetObjectStat (Bool_t stat)
 

Static Public Attributes

static Double_t e2 = KVNucleus::hbar / 137.035999074
 e^2/(4.pi.epsilon_0) in MeV.fm More...
 
static Double_t hbar = TMath::Hbarcgs() * TMath::Ccgs() / TMath::Qe()
 hbar*c in MeV.fm More...
 
static Double_t kAMU = 9.31494043e02
 atomic mass unit in MeV More...
 
static Double_t kMe = 0.510998
 electron mass in MeV/c2 More...
 

Protected Member Functions

virtual void AddGroup_Withcondition (const Char_t *groupname, KVParticleCondition *)
 
- Protected Member Functions inherited from KVParticle
virtual void AddGroup_Sanscondition (const Char_t *groupname, const Char_t *from="")
 
void AddGroups (KVUniqueNameList *un)
 list of groups added to the current one More...
 
void CreateGroups ()
 
void SetGroups (KVUniqueNameList *un)
 
- Protected Member Functions inherited from TObject
virtual void DoError (int level, const char *location, const char *fmt, va_list va) const
 
void MakeZombie ()
 

Private Types

enum  { kIsHeavy = BIT(17) }
 

Private Attributes

UChar_t fA
 nuclear mass number More...
 
UChar_t fMassFormula
 mass formula for calculating A from Z More...
 
TString fSymbolName
 
UChar_t fZ
 nuclear charge number (atomic number) More...
 

Static Private Attributes

static Char_t fElements [][3]
 symbols of chemical elements More...
 
static UInt_t fNb_nuc = 0
 counts number of existing KVNucleus objects More...
 

Additional Inherited Members

- Public Attributes inherited from TLorentzVector
 kNUM_COORDINATES
 
 kSIZE
 
 kT
 
 kX
 
 kY
 
 kZ
 
- Public Attributes inherited from TObject
 kBitMask
 
 kCanDelete
 
 kCannotPick
 
 kHasUUID
 
 kInconsistent
 
 kInvalidObject
 
 kIsOnHeap
 
 kIsReferenced
 
 kMustCleanup
 
 kNoContextMenu
 
 kNotDeleted
 
 kObjInCanvas
 
 kOverwrite
 
 kSingleKey
 
 kWriteDelete
 
 kZombie
 
- Protected Attributes inherited from KVParticle
TVector3fE0
 the momentum of the particle before it is slowed/stopped by an absorber More...
 
KVNameValueList fParameters
 a general-purpose list of parameters associated with this particle More...
 
- Protected Attributes inherited from TObject
 kOnlyPrepStep
 

#include <KVNucleus.h>

Inheritance diagram for KVNucleus:
Inheritance graph
[legend]

Member Enumeration Documentation

◆ anonymous enum

anonymous enum
private
Enumerator
kIsHeavy 

Definition at line 136 of file KVNucleus.h.

◆ anonymous enum

anonymous enum
Enumerator
kBetaMass 
kVedaMass 
kEALMass 
kEALResMass 
kEPAXMass 

Definition at line 144 of file KVNucleus.h.

◆ anonymous enum

anonymous enum
Enumerator
kLDModel 
kEMPFunc 
kELTON 

Definition at line 151 of file KVNucleus.h.

◆ anonymous enum

anonymous enum
Enumerator
kDefaultFormula 
kItkis1998 
kHinde1987 
kViola1985 
kViola1966 

Definition at line 157 of file KVNucleus.h.

◆ anonymous enum

anonymous enum
Enumerator
kNN 
knn 
kpp 
knp 

Definition at line 165 of file KVNucleus.h.

Constructor & Destructor Documentation

◆ KVNucleus() [1/6]

KVNucleus::KVNucleus ( )

Default constructor.

Definition at line 267 of file KVNucleus.cpp.

◆ KVNucleus() [2/6]

KVNucleus::KVNucleus ( const KVNucleus obj)

copy ctor

Definition at line 281 of file KVNucleus.cpp.

◆ KVNucleus() [3/6]

KVNucleus::KVNucleus ( Int_t  z,
Int_t  a = 0,
Double_t  ekin = 0 
)

Create a nucleus with atomic number Z. If the mass number A is not given, A is calculated using the parametrisation determined by the value of fMassFormula (see KVNucleus::GetAFromZ). ekin is the kinetic energy in MeV

Definition at line 316 of file KVNucleus.cpp.

◆ KVNucleus() [4/6]

KVNucleus::KVNucleus ( Int_t  z,
Double_t  t,
TVector3 p 
)

Create nucleus with given Z, kinetic energy t and direction p (p is a unit vector in the desired direction. See KVPosition for methods for generating such vectors). The mass number A is calculated from Z. See KVNucleus::GetAFromZ.

Definition at line 365 of file KVNucleus.cpp.

◆ KVNucleus() [5/6]

KVNucleus::KVNucleus ( Int_t  z,
Int_t  a,
TVector3  p 
)

Create nucleus with given Z, A, and 3-momentum p

Definition at line 386 of file KVNucleus.cpp.

◆ KVNucleus() [6/6]

KVNucleus::KVNucleus ( const Char_t symbol,
Double_t  EperA = 0 
)

KVNucleus(const Char_t *);.

Create a nucleus defined by symbol e.g. "12C", "34Mg", "42Si" etc. etc.

If symbol is not valid, will be made a zombie (IsZombie() returns kTRUE)

The second argument is the kinetic energy per nucleon (E/A) in MeV/A unit

Definition at line 343 of file KVNucleus.cpp.

◆ ~ KVNucleus()

virtual KVNucleus::~ KVNucleus ( )
virtual

Member Function Documentation

◆ AddGroup_Withcondition()

void KVNucleus::AddGroup_Withcondition ( const Char_t groupname,
KVParticleCondition pc 
)
protectedvirtual

implementation of AddGroup(const Char_t* groupname,KVParticleCondition* pc) Can be overriden in child classes [unlike KVParticle::AddGroup(const Char_t* groupname,KVParticleCondition* pc), which cannot]

Reimplemented from KVParticle.

Definition at line 1507 of file KVNucleus.cpp.

◆ CheckZAndA()

void KVNucleus::CheckZAndA ( Int_t z,
Int_t a 
) const

Definition at line 852 of file KVNucleus.cpp.

◆ Clear()

void KVNucleus::Clear ( Option_t opt = "")
virtual

Reset nucleus' properties: set A and Z to zero. For other properties, see KVParticle::Clear

Reimplemented from KVParticle.

Reimplemented in KVINDRAReconNuc, KVFAZIAReconNuc, and KVReconstructedNucleus.

Definition at line 298 of file KVNucleus.cpp.

◆ Compare()

Int_t KVNucleus::Compare ( const TObject obj) const
virtual

For sorting lists of nuclei according to their Z Largest Z appears first in list

Reimplemented from TObject.

Definition at line 1707 of file KVNucleus.cpp.

◆ Copy()

void KVNucleus::Copy ( TObject obj) const
virtual

Copy this KVNucleus into the KVNucleus object referenced by "obj".

Reimplemented from KVParticle.

Reimplemented in KVSimNucleus, KVReconstructedNucleus, KVINDRAReconNuc, and KVFAZIAReconNuc.

Definition at line 834 of file KVNucleus.cpp.

◆ DeduceEincFromBrho()

Double_t KVNucleus::DeduceEincFromBrho ( Double_t  Brho,
Int_t  ChargeState = 0 
)

TH2F* GetKnownNucleiChart(KVString method="GetBindingEnergyPerNucleon");.

Retourne l'energie cintetique totale (MeV) du noyau pour une valeur de Brho et d'etat de charge (Si 0-> Etat de charge=Z)

Definition at line 1783 of file KVNucleus.cpp.

◆ GetA()

Int_t KVNucleus::GetA ( ) const

Returns mass number (A) of nucleus.

The actual member variable (fA) is a UChar_t and so limited to values 0-255. In case nuclei with larger A are needed (for example in calculations of 2-body scattering, a temporary nucleus corresponding to the sum of the entrance channel nuclei is used in order to find the outgoing target-like from the outgoing projectile-like) the flag "kIsHeavy" is set and GetA returns the value (fA+255). For this reason you should always use GetA and not fA.

Examples
ExampleE789ReconAnalysis.cpp.

Definition at line 799 of file KVNucleus.cpp.

◆ GetAbundance()

Double_t KVNucleus::GetAbundance ( Int_t  z = -1,
Int_t  a = -1 
) const

Returns relative abundance value (see KVAbundance class for unit details). If optional arguments (z,a) are given we return the value for the required nucleus.

Definition at line 1212 of file KVNucleus.cpp.

◆ GetAbundancePtr()

KVAbundance * KVNucleus::GetAbundancePtr ( Int_t  z = -1,
Int_t  a = -1 
) const

Returns the pointeur of the abundance object associated to this nucleus If optional arguments (z,a) are given we return the object for the required nucleus.

Definition at line 1259 of file KVNucleus.cpp.

◆ GetAFromZ()

Int_t KVNucleus::GetAFromZ ( Double_t  Z,
Char_t  mt 
)
static

Calculate nuclear mass number from the element's atomic number Z. Used by default to set fA and fMass if fA not given. For light nuclei (Z<6) the values are given (not calculated) and correspond to: p, alpha, 7Li, 9Be, 11B. For heavier nuclei, several prescriptions are available by giving one of the following values to argument mt:

mt = KVNucleus::kVedaMass


Veda - A calculated using the formula fA = TMath::Nint(1.867*fZ+.016*fZ*fZ-1.07E-4*fZ*fZ*fZ); This corresponds to the amass.f subroutine of the old INDRA Veda calibration programme. These are the masses used in the first INDRA campaigns. For light nuclei (Z<6) the values are given (not calculated) and correspond to: p, alpha, 6Li, 8Be, 10B.

mt = KVNucleus::kBetaMass


Beta (default) - An improved parametrisation of the beta-stability valley, correct even for heavy nuclei up to 238U. The formula is the result of a fit to 8 stable nuclear masses from Ne20 up to U238. From carbon-12 onwards, the mass is calculated using fA = (Int_t) (.2875 + 1.7622 *Z + .013879 * Z * Z - .000054875 * Z * Z * Z) + 1;

mt = KVNucleus::kEALMass


EAL - parametrisation of the Evaporation Attractor Line (residue corridor) due to R.J. Charity (PRC 58(1998)1073). fA = (Int_t)(2.072*Z + 2.32E-03 * Z*Z) + 1; (eq 2)

mt = KVNucleus::kEALResMass


EALRes - R.J. Charity -— improvement of EAL parametrisation for Heavy Residues (QP for instance) (PRC 58(1998)1073) (eq 7) fA = (Int_t)(2.045*Z + 3.57E-03 * Z*Z) + 1 ;

mt = any other value: A=2*Z

Definition at line 564 of file KVNucleus.cpp.

◆ GetAMeV()

Double_t KVNucleus::GetAMeV ( ) const

Returns kinetic energy of nucleus per nucleon (in MeV/nucleon, donc)

Definition at line 1381 of file KVNucleus.cpp.

◆ GetAsurZ()

Double_t KVNucleus::GetAsurZ ( ) const
inline

Definition at line 240 of file KVNucleus.h.

◆ GetAtomicMass()

Double_t KVNucleus::GetAtomicMass ( Int_t  zz = -1,
Int_t  aa = -1 
) const

Returns the mass of an isotope in unified atomic mass units (KVNucleus::u() MeV/c**2). This number is also the mass in grammes of 1 mole of this isotope.

Definition at line 929 of file KVNucleus.cpp.

◆ GetAWithMaxBindingEnergy()

Int_t KVNucleus::GetAWithMaxBindingEnergy ( Int_t  z = -1)

Definition at line 1481 of file KVNucleus.cpp.

◆ GetBindingEnergy()

Double_t KVNucleus::GetBindingEnergy ( Int_t  z = -1,
Int_t  a = -1 
) const

Returns ground state binding energy in MeV for this nucleus. The convention is : binding energy is positive if nucleus is bound. If optional arguments (z,a) are given we return the binding energy for the required nucleus. If the nucleus is not included in the mass table, an extrapolated value using KVNucleus::LiquidDrop_BrackGuet is returned.

Definition at line 1302 of file KVNucleus.cpp.

◆ GetBindingEnergyPerNucleon()

Double_t KVNucleus::GetBindingEnergyPerNucleon ( Int_t  z = -1,
Int_t  a = -1 
) const

Returns binding energy in MeV/A for this nucleus.

Definition at line 1348 of file KVNucleus.cpp.

◆ GetChargeAsymetry()

Double_t KVNucleus::GetChargeAsymetry ( ) const
inline

The charge asymertry = (neutrons-protons)/nucleons

Definition at line 248 of file KVNucleus.h.

◆ GetChargeRadius()

Double_t KVNucleus::GetChargeRadius ( Int_t  z = -1,
Int_t  a = -1 
) const

Returns charge radius in fm for tabulated nuclei if not tabulated returns the extrapolated radius calculate in GetExtraChargeRadius If optional arguments (z,a) are given we return the value for the required nucleus.

Definition at line 1095 of file KVNucleus.cpp.

◆ GetChargeRadiusPtr()

KVChargeRadius * KVNucleus::GetChargeRadiusPtr ( Int_t  z = -1,
Int_t  a = -1 
) const

Returns the pointeur of charge radius object associated to this nucleus If optional arguments (z,a) are given we return object for the required nucleus.

Definition at line 1193 of file KVNucleus.cpp.

◆ GetEnergyPerNucleon()

Double_t KVNucleus::GetEnergyPerNucleon ( ) const

Returns kinetic energy of nucleus per nucleon (in MeV/nucleon, donc)

Definition at line 1365 of file KVNucleus.cpp.

◆ GetExcitEnergy()

Double_t KVNucleus::GetExcitEnergy ( ) const
inline

Return the excitation energy of the nucleus in MeV. This is the difference between the (relativistic) rest mass and the ground state mass of the nucleus

Definition at line 285 of file KVNucleus.h.

◆ GetExtraChargeRadius()

Double_t KVNucleus::GetExtraChargeRadius ( Int_t  z = -1,
Int_t  a = -1,
Int_t  rct = 2 
) const

Calculate the extrapoled charge radius Three formulae taken from Atomic Data and Nuclear Data Tables 87 (2004) 185-201 are proposed: rct=2 (kELTON)take into account the finite surfacethickness This rct=2 is set by default because it has the best reproduction of exp data

rct=1 (kEMPFunc) is a purely emperical function re*A**ee rct=0 (kLDModel) is the standard Liquid Drop model approximation

Those formulae are valid for nuclei near the stability valley other parametrization for xotic nuclei are proposed in the same reference but needed extrapolation from given nuclei and I don't have time to do it now

If optional arguments (z,a) are given we return the value for the required nucleus.

Definition at line 1133 of file KVNucleus.cpp.

◆ GetExtraMassExcess()

Double_t KVNucleus::GetExtraMassExcess ( Int_t  z = -1,
Int_t  a = -1 
) const

Calculate the extrapoled mass excess value from the LiquidDrop_BrackGuet formula If optional arguments (z,a) are given we return the value for the required nucleus.

Definition at line 910 of file KVNucleus.cpp.

◆ GetFissionTKE()

Double_t KVNucleus::GetFissionTKE ( const KVNucleus nuc = 0,
Int_t  formula = kDefaultFormula 
) const

Average or most probable Total Kinetic Energy [MeV] expected for fission based on various systematics for fission of highly-excited nuclei produced in heavy-ion reactions. If nuc=0, this method returns the TKE for symmetric fission of this nucleus. Else, it returns the expected TKE considering that nuc and the current nucleus arise from the fisson of a compound nucleus.

  • kItkis1998: M.G. Itkis & A. Ya. Rusanov, Phys. Part. Nucl. 29, 160 (1998)
  • kDefaultFormula = kHinde1987: D. Hinde, J. Leigh, J. Bokhorst, J. Newton, R. Walsh, and J. Boldeman, Nuclear Physics A 472, 318 (1987).
  • kViola1985: V. E. Viola, K. Kwiatkowski, and M. Walker, Physical Review C 31, 1550 (1985).
  • kViola1966: V. E. Viola, Jr. , Nuclear Data Sheets. Section A 1, 391 (1965).

Definition at line 1826 of file KVNucleus.cpp.

◆ GetFissionVelocity()

Double_t KVNucleus::GetFissionVelocity ( KVNucleus nuc = 0,
Int_t  formula = kDefaultFormula 
)

Average/most probable relative velocity [cm/ns] expected for fission based on various systematics for fission of highly-excited nuclei produced in heavy-ion reactions. If nuc=0, this method returns the relative velocity expected for the symmetric fission of this nucleus. Else, it returns the expected relative velocity considering that nuc and the current nucleus arise from the fisson of a compound nucleus.

  • kItkis1998: M.G. Itkis & A. Ya. Rusanov, Phys. Part. Nucl. 29, 160 (1998)
  • kDefaultFormula = kHinde1987: D. Hinde, J. Leigh, J. Bokhorst, J. Newton, R. Walsh, and J. Boldeman, Nuclear Physics A 472, 318 (1987).
  • kViola1985: V. E. Viola, K. Kwiatkowski, and M. Walker, Physical Review C 31, 1550 (1985).
  • kViola1966: V. E. Viola, Jr. , Nuclear Data Sheets. Section A 1, 391 (1965).

Definition at line 1899 of file KVNucleus.cpp.

◆ GetIsotopesList()

const Char_t * KVNucleus::GetIsotopesList ( Int_t  zmin,
Int_t  zmax,
Double_t  tmin = 0 
) const

returns list of isotopes separated by commas for exemple 1H,2H,3H according to the charge range and the lifetime in seconds

Definition at line 1453 of file KVNucleus.cpp.

◆ GetKnownARange()

KVNumberList KVNucleus::GetKnownARange ( Int_t  zz = -1,
Double_t  tmin = 0 
) const

returns range of a known mass for a given element according to the lifetime in seconds tmin=0 (default) include all nuclei with known lifetime tmin=-1 include also nuclei for which lifetime is unknown

Definition at line 1398 of file KVNucleus.cpp.

◆ GetLatexSymbol()

const Char_t * KVNucleus::GetLatexSymbol ( Option_t opt = "") const

Returns symbol of isotope corresponding to this nucleus, suitable for latex format in ROOT TLatex type class i.e. "^{238}U", "^{12}C", "^{3}He" etc. Neutrons are represented by "^{1}n". In order to have also the charge printed like this : ^{12}_{6}C call with opt="ALL".

Definition at line 112 of file KVNucleus.cpp.

◆ GetLifeTime()

Double_t KVNucleus::GetLifeTime ( Int_t  z = -1,
Int_t  a = -1 
) const

Returns life time in seconds (see KVLifeTime class for unit details). For 'stable' nuclei (for which the abundance is known), if no lifetime exists in the table we return 1.e+100. For other "nuclei" with no known lifetime we return -1. For resonances (IsResonance() returns kTRUE) we calculate the lifetime from the width of the resonance, t = hbar/W. If optional arguments (z,a) are given we return the value for the required nucleus.

Definition at line 1040 of file KVNucleus.cpp.

◆ GetLifeTimePtr()

KVLifeTime * KVNucleus::GetLifeTimePtr ( Int_t  z = -1,
Int_t  a = -1 
) const

Returns the pointeur of the life time object associated to this nucleus If optional arguments (z,a) are given we return object for the required nucleus.

Definition at line 1074 of file KVNucleus.cpp.

◆ GetLiquidDropBindingEnergy()

Double_t KVNucleus::GetLiquidDropBindingEnergy ( Int_t  z = -1,
Int_t  a = -1 
) const

Returns ground state binding energy in MeV for this nucleus calculated from Brack & Guet liquid drop formula (see KVNucleus::LiquiDrop_BrackGuet). The convention is : binding energy is positive if nucleus is bound. If optional arguments (z,a) are given we return the binding energy for the required nucleus.

Definition at line 1327 of file KVNucleus.cpp.

◆ GetMassExcess()

Double_t KVNucleus::GetMassExcess ( Int_t  z = -1,
Int_t  a = -1 
) const

Returns mass excess value in MeV for this nucleus. If optional arguments (z,a) are given we return the value for the required nucleus. If the nucleus is not included in the mass table, an extrapolated value using KVNucleus::LiquidDrop_BrackGuet is returned.

Definition at line 883 of file KVNucleus.cpp.

◆ GetMassExcessPtr()

KVMassExcess * KVNucleus::GetMassExcessPtr ( Int_t  z = -1,
Int_t  a = -1 
) const

Returns pointer of corresponding KVMassExcess object 0 if the Z,A couple is not in the table If optional arguments (z,a) are given we return the value for the required nucleus.

Definition at line 947 of file KVNucleus.cpp.

◆ GetMassFormula()

Int_t KVNucleus::GetMassFormula ( ) const
inline

Definition at line 179 of file KVNucleus.h.

◆ GetMassGS()

Double_t KVNucleus::GetMassGS ( ) const
inline

Return the ground state mass of the nucleus in MeV.

Definition at line 292 of file KVNucleus.h.

◆ GetMeasuredARange()

KVNumberList KVNucleus::GetMeasuredARange ( Int_t  z = -1) const

returns range of a measured mass for a given element

Definition at line 1424 of file KVNucleus.cpp.

◆ GetMostAbundantA()

Int_t KVNucleus::GetMostAbundantA ( Int_t  z = -1) const

Returns for a the Z of the current nucleus (z=-1) or the given z most abundant A. return -1 if no isotope of the given z have an abundance

Definition at line 1230 of file KVNucleus.cpp.

◆ GetN()

Int_t KVNucleus::GetN ( ) const

Return the number of neutron.

Definition at line 781 of file KVNucleus.cpp.

◆ GetNaturalA()

Double_t KVNucleus::GetNaturalA ( Int_t  Z = -1) const

Calculate and return the effective mass number of element Z taking into account the abundance of naturally-occurring isotopes

Definition at line 2057 of file KVNucleus.cpp.

◆ GetNFromZ()

Int_t KVNucleus::GetNFromZ ( Double_t  Z,
Char_t  mt 
)
static

Calculate neutron number from the element's atomic number Z.

Definition at line 636 of file KVNucleus.cpp.

◆ GetNpairs()

Int_t KVNucleus::GetNpairs ( Int_t  type = kNN) const

Definition at line 818 of file KVNucleus.cpp.

◆ GetNsurZ()

Double_t KVNucleus::GetNsurZ ( ) const
inline

Definition at line 244 of file KVNucleus.h.

◆ GetParity()

Double_t KVNucleus::GetParity ( Int_t  z = -1,
Int_t  a = -1 
) const

Returns parity value (-1 or +1) for this nucleus. If optional arguments (z,a) are given we return the value for the required nucleus. If the nucleus is not included in the mass table, O is returned

Definition at line 1012 of file KVNucleus.cpp.

◆ GetQFasymTKE()

Double_t KVNucleus::GetQFasymTKE ( KVNucleus target)

<TKE> of asymmetric QuasiFission fragments (for the fragment mass where the QFasym yield is maximal) E.M. Kozulin et al PHYSICAL REVIEW C 90, 054608 (2014) This depends on the entrance channel: this nucleus is assumed to be the projectile, while the target is given as argument.

Definition at line 1876 of file KVNucleus.cpp.

◆ GetRealAFromZ()

Double_t KVNucleus::GetRealAFromZ ( Double_t  Z,
Char_t  mt 
)
static

Calculate nuclear mass number from the element's atomic number Z. This value is not rounded off, we just return the result of one of the following formulae:

mt = KVNucleus::kVedaMass


Veda - A calculated using the formula fA = (1.867*fZ+.016*fZ*fZ-1.07E-4*fZ*fZ*fZ); This corresponds to the amass.f subroutine of the old INDRA Veda calibration programme. This formula was supposed to represent the Z-dependence of isotope masses in the beta-stability valley, but is in fact a rather poor approximation, especially for large Z.

mt = KVNucleus::kBetaMass


Beta (default) - An improved parametrisation of the beta-stability valley, correct even for heavy nuclei up to 238U. The formula is the result of a fit to 8 stable nuclear masses from Ne20 up to U238. fA = (.2875 + 1.7622 *Z + .013879 * Z * Z - .000054875 * Z * Z * Z);

mt = KVNucleus::kEALMass


EAL - parametrisation of the Evaporation Attractor Line (residue corridor) due to R.J. Charity (PRC 58(1998)1073) (eq 2) fA = (2.072*Z + 2.32E-03 * Z*Z) ;

mt = KVNucleus::kEALResMass


EALRes - R.J. Charity -— improvement of EAL parametrisation for Heavy Residue (QP for instance) (PRC 58(1998)1073) (eq 7) fA = (2.045*Z + 3.57E-03 * Z*Z) ;

mt = any other value: A=2*Z

Definition at line 444 of file KVNucleus.cpp.

◆ GetRealNFromZ()

Double_t KVNucleus::GetRealNFromZ ( Double_t  Z,
Char_t  mt 
)
static

Calculate neutron number from the element's atomic number Z. This value is not rounded off, we just return the result obtain from the chosen mass formula (mt)

Definition at line 514 of file KVNucleus.cpp.

◆ GetRelativeVelocity()

Double_t KVNucleus::GetRelativeVelocity ( KVNucleus nuc)

Return the reltive velocity between nuc and this in cm/ns.

Definition at line 1806 of file KVNucleus.cpp.

◆ GetSpin()

Double_t KVNucleus::GetSpin ( Int_t  z = -1,
Int_t  a = -1 
) const

Returns spin value for this nucleus. If optional arguments (z,a) are given we return the value for the required nucleus. If the nucleus is not included in the mass table, -1 is returned

Definition at line 987 of file KVNucleus.cpp.

◆ GetSpinParityPtr()

KVSpinParity * KVNucleus::GetSpinParityPtr ( Int_t  z = -1,
Int_t  a = -1 
) const

Returns pointer of corresponding KVSpinParity object 0 if the Z,A couple is not in the table If optional arguments (z,a) are given we return the value for the required nucleus.

Definition at line 967 of file KVNucleus.cpp.

◆ GetSymbol()

const Char_t * KVNucleus::GetSymbol ( Option_t opt = "") const

Returns symbol of isotope corresponding to this nucleus, i.e. "238U", "12C", "3He" etc. Neutrons are represented by "n". In order to have just the symbol of the chemical element (e.g. "Pt", "Zn", "Fe"), call with opt="EL".

Examples
ClassTraj.cpp.

Definition at line 81 of file KVNucleus.cpp.

◆ GetWidth()

Double_t KVNucleus::GetWidth ( ) const

Returns width of resonance in MeV, if this nucleus is indeed a resonance (IsResonance() returns kTRUE).

Definition at line 2042 of file KVNucleus.cpp.

◆ GetZ()

Int_t KVNucleus::GetZ ( ) const

Return the number of proton / atomic number.

Examples
ExampleE789ReconAnalysis.cpp, ExampleFilteredSimDataAnalysis.cpp, ExampleINDRAAnalysis.cpp, and ExampleReconRawAnalysis.cpp.

Definition at line 770 of file KVNucleus.cpp.

◆ GetZFromSymbol()

Int_t KVNucleus::GetZFromSymbol ( const Char_t sym)
static

Returns Z of nucleus with given symbol i.e. "C" => Z=6, "U" => Z=92 if unknown, returns -1

Definition at line 206 of file KVNucleus.cpp.

◆ init()

void KVNucleus::init ( void  )

Default intialisations The mass formula is kBetaMass, i.e. the formula for the valley of beta-stability. Set up nuclear data table manager if not done already

Definition at line 245 of file KVNucleus.cpp.

◆ IsDefined()

Bool_t KVNucleus::IsDefined ( ) const
inline

Returns kTRUE if the Z and/or A of the nucleus have been set.

'Blank' nuclei created by the default constructor have Z=A=0 until a method such as SetZ() is called. In this case IsDefined() returns kFALSE.

Definition at line 204 of file KVNucleus.h.

◆ IsElement()

Bool_t KVNucleus::IsElement ( Int_t  Z) const
inline

Definition at line 332 of file KVNucleus.h.

◆ IsIsotope()

Bool_t KVNucleus::IsIsotope ( Int_t  Z,
Int_t  A 
) const
inline
Examples
ExampleE789ReconAnalysis.cpp.

Definition at line 336 of file KVNucleus.h.

◆ IsKnown()

Bool_t KVNucleus::IsKnown ( int  z = -1,
int  a = -1 
) const

Old method, the answer is only valid for the mass excess table Returns kTRUE if this nucleus or (z,a) is included in the mass table.

We kept it for backward compatibility :

Definition at line 1279 of file KVNucleus.cpp.

◆ IsMassGiven()

Int_t KVNucleus::IsMassGiven ( const Char_t isotope)
static

test if the given string corresponds to the name of an isotope/element, and whether or not a mass is specified. isotope = symbol for element isotope, "C", "natSn", "13N", etc. if the mass of the isotope is given ("13N", "233U") we return the given mass if this is a valid element but no mass is given we return 0 if this is not a valid isotope/element, we return -1

Definition at line 144 of file KVNucleus.cpp.

◆ IsResonance()

Bool_t KVNucleus::IsResonance ( ) const

Returns kTRUE if this nucleus is a resonance. In this case GetWidth() returns the width in MeV.

Definition at line 2027 of file KVNucleus.cpp.

◆ IsSortable()

Bool_t KVNucleus::IsSortable ( ) const
inlinevirtual

Reimplemented from TObject.

Definition at line 199 of file KVNucleus.h.

◆ IsStable()

Bool_t KVNucleus::IsStable ( Double_t  min_lifetime = 1.0e+15) const

Returns kTRUE if this nucleus is stable. Definition of stable: if the natural abundance is defined (look up in Abundance table) OR if lifetime is > min_lifetime

Definition at line 2008 of file KVNucleus.cpp.

◆ LiquidDrop_BrackGuet()

Double_t KVNucleus::LiquidDrop_BrackGuet ( UInt_t  aa,
UInt_t  zz 
)
static

Liquid drop mass formula used for nuclei not in mass table (extrapolation). Parameters are from Brack and Guet (copied from Simon code)

Definition at line 1639 of file KVNucleus.cpp.

◆ LiquidDrop_Weizsacker()

Double_t KVNucleus::LiquidDrop_Weizsacker ( )

Liquid drop mass formula used for nuclei not in mass table (extrapolation). Parameters are from Brack and Guet (copied from Simon code)

Definition at line 1675 of file KVNucleus.cpp.

◆ operator+()

KVNucleus KVNucleus::operator+ ( const KVNucleus rhs)

KVNucleus addition operator. Add two nuclei together to form a compound nucleus whose Z, A, momentum and excitation energy are calculated from energy and momentum conservation.

Definition at line 1543 of file KVNucleus.cpp.

◆ operator+=()

KVNucleus & KVNucleus::operator+= ( const KVNucleus rhs)

KVNucleus addition and assignment operator.

Definition at line 1608 of file KVNucleus.cpp.

◆ operator-()

KVNucleus KVNucleus::operator- ( const KVNucleus rhs)

KVNucleus subtraction operator. If the LHS is a compound nucleus and the RHS an emitted nucleus (which may or may not be excited) then the result of the subtraction is the residual nucleus, with recoil and residual excitation calculated by conservation laws.

Definition at line 1573 of file KVNucleus.cpp.

◆ operator-=()

KVNucleus & KVNucleus::operator-= ( const KVNucleus rhs)

KVNucleus subtraction and assignment operator.

Definition at line 1623 of file KVNucleus.cpp.

◆ operator=()

KVNucleus & KVNucleus::operator= ( const KVNucleus rhs)

KVNucleus assignment operator.

Definition at line 1525 of file KVNucleus.cpp.

◆ Print()

void KVNucleus::Print ( Option_t t = "") const
virtual

Display nucleus parameters.

Reimplemented from KVParticle.

Reimplemented in KVSimNucleus, KVReconstructedNucleus, KVINDRAReconNuc, and KVFAZIAReconNuc.

Examples
KVEvent_iterator_example.C, and globvars_kvzmax.C.

Definition at line 758 of file KVNucleus.cpp.

◆ Set()

void KVNucleus::Set ( const Char_t isotope)

Set nucleus' Z & A using chemical symbol e.g. Set("12C") or Set("233U") etc.

Any failure to deduce Z from the symbol will result in this object being made a zombie i.e. IsZombie() will return kTRUE

Definition at line 177 of file KVNucleus.cpp.

◆ SetA()

void KVNucleus::SetA ( Int_t  a)

Set mass number Be careful not to call SetZ() after SetA(), as SetZ() will reset the mass number according to one of the available parametrisations of A as a function of Z.

For A>255 the kIsHeavy flag is set. Then fA will equal A-255, and GetA will return fA+255. If A<=255 the flag is reset.

Definition at line 655 of file KVNucleus.cpp.

◆ SetExcitEnergy()

void KVNucleus::SetExcitEnergy ( Double_t  ex)

Define excitation energy of nucleus in MeV. The rest mass of the nucleus is changed: m0 -> m0 + E*

Examples
KVGenPhaseSpace_example.C.

Definition at line 865 of file KVNucleus.cpp.

◆ SetMassFormula()

void KVNucleus::SetMassFormula ( UChar_t  mt)
inline

Set mass formula used for calculating A from Z for this nucleus

Definition at line 347 of file KVNucleus.h.

◆ SetN()

void KVNucleus::SetN ( Int_t  n)

Set mass number Be careful not to call SetZ() after SetN(), as SetZ() will reset the neutron number according to one of the available parametrisations of A (N+Z) as a function of Z.

Definition at line 685 of file KVNucleus.cpp.

◆ SetZ()

void KVNucleus::SetZ ( Int_t  z,
Char_t  mt = -1 
)

Set atomic number The mass number fA is automatically calculated and set using GetAFromZ(). The optional EMassType argument allows to change the default parametrisation used for calculating A from Z.

Examples
KVEvent_iterator_example.C.

Definition at line 704 of file KVNucleus.cpp.

◆ SetZAandE()

void KVNucleus::SetZAandE ( Int_t  z,
Int_t  a,
Double_t  ekin 
)

Set atomic number, mass number, and kinetic energy in MeV.

Definition at line 733 of file KVNucleus.cpp.

◆ SetZandA()

void KVNucleus::SetZandA ( Int_t  z,
Int_t  a 
)

Set atomic number and mass number.

Definition at line 721 of file KVNucleus.cpp.

◆ SetZandN()

void KVNucleus::SetZandN ( Int_t  z,
Int_t  n 
)

Set atomic number and mass number.

Definition at line 746 of file KVNucleus.cpp.

◆ SetZFromSymbol()

int KVNucleus::SetZFromSymbol ( const Char_t sym)

Set Z of nucleus with given symbol i.e. "C" => Z=6, "U" => Z=92

Returns Z found, or -1 if symbol is unknown

Definition at line 225 of file KVNucleus.cpp.

◆ ShimaChargeState()

Double_t KVNucleus::ShimaChargeState ( Int_t  Ztarget) const

Nuclear Instruments and Methods 200 (1982) 605-608 Shima et al "The present formula is useful for the collision range" Zprojectile>=8 4<=Ztarget<=79 Eproj<=6 MeV/A Precision DeltaQ/Zproj <0.04.

v=sqrt((2*E*1.6022)/(A*1.66054))*10.; X=v/((3.6)*pow(Z,0.45));

Definition at line 2081 of file KVNucleus.cpp.

◆ ShimaChargeStatePrecision()

Double_t KVNucleus::ShimaChargeStatePrecision ( ) const

Definition at line 2122 of file KVNucleus.cpp.

◆ TKE_Hinde1987()

Double_t KVNucleus::TKE_Hinde1987 ( Double_t  z1,
Double_t  a1,
Double_t  z2,
Double_t  a2 
)
static

from: D. Hinde, J. Leigh, J. Bokhorst, J. Newton, R. Walsh, and J. Boldeman, Nuclear Physics A 472, 318 (1987) According to the authors, an extension to asymmetric fission based on TKE_Viola1985

Definition at line 1934 of file KVNucleus.cpp.

◆ TKE_Itkis1998()

Double_t KVNucleus::TKE_Itkis1998 ( Double_t  z,
Double_t  a 
)
static

from: M.G. Itkis & A. Ya. Rusanov, Phys. Part. Nucl. 29, 160 (1998) Compared to Viola systematics, only heavy-ion induced fission is considered A change of slope is observed for Z**2/A**1/3 > 900

Definition at line 1972 of file KVNucleus.cpp.

◆ TKE_Kozulin2014()

Double_t KVNucleus::TKE_Kozulin2014 ( Double_t  zp,
Double_t  zt,
Double_t  ap,
Double_t  at 
)
static

<TKE> of asymmetric QuasiFission fragments (for the fragment mass where the QFasym yield is maximal) E.M. Kozulin et al PHYSICAL REVIEW C 90, 054608 (2014)

Definition at line 1990 of file KVNucleus.cpp.

◆ TKE_Viola1966()

Double_t KVNucleus::TKE_Viola1966 ( Double_t  z,
Double_t  a 
)
static

from: V. E. Viola, Jr., Nuclear Data Sheets. Section A 1, 391 (1965).

Definition at line 1958 of file KVNucleus.cpp.

◆ TKE_Viola1985()

Double_t KVNucleus::TKE_Viola1985 ( Double_t  z,
Double_t  a 
)
static

from: V. E. Viola, K. Kwiatkowski, and M. Walker, Physical Review C 31, 1550 (1985).

Definition at line 1946 of file KVNucleus.cpp.

◆ u()

Double_t KVNucleus::u ( void  )
static

Atomic mass unit in MeV Reference: 2002 CODATA recommended values Reviews of Modern Physics 77, 1-107 (2005)

Examples
ClassTraj.cpp.

Definition at line 1769 of file KVNucleus.cpp.

Member Data Documentation

◆ e2

Double_t KVNucleus::e2 = KVNucleus::hbar / 137.035999074
static

e^2/(4.pi.epsilon_0) in MeV.fm

Definition at line 176 of file KVNucleus.h.

◆ fA

UChar_t KVNucleus::fA
private

nuclear mass number

Definition at line 129 of file KVNucleus.h.

◆ fElements

Char_t KVNucleus::fElements
staticprivate
Initial value:
= {
"n", "H", "He", "Li", "Be", "B", "C", "N", "O",
"F", "Ne", "Na", "Mg", "Al", "Si", "P", "S", "Cl", "Ar", "K", "Ca",
"Sc",
"Ti", "V", "Cr", "Mn", "Fe", "Co", "Ni", "Cu", "Zn", "Ga", "Ge", "As",
"Se", "Br",
"Kr", "Rb", "Sr", "Y", "Zr", "Nb", "Mo", "Tc", "Ru", "Rh", "Pd", "Ag",
"Cd",
"In", "Sn", "Sb", "Te", "I", "Xe", "Cs", "Ba", "La", "Ce", "Pr", "Nd",
"Pm",
"Sm", "Eu", "Gd", "Tb", "Dy", "Ho", "Er", "Tm", "Yb", "Lu", "Hf", "Ta",
"W",
"Re", "Os", "Ir", "Pt", "Au", "Hg", "Tl", "Pb", "Bi", "Po", "At", "Rn",
"Fr",
"Ra", "Ac", "Th", "Pa", "U", "Np", "Pu", "Am", "Cm", "Bk", "Cf", "Es",
"Fm", "Md",
"No", "Lr", "Rf", "Db", "Sg", "Bh", "Hs", "Mt", "Ds", "Rg", "Cn", "Ed",
"Fl", "Ef",
"Lv", "Eh", "Ei"
}

symbols of chemical elements

Definition at line 133 of file KVNucleus.h.

◆ fMassFormula

UChar_t KVNucleus::fMassFormula
private

mass formula for calculating A from Z

Definition at line 131 of file KVNucleus.h.

◆ fNb_nuc

UInt_t KVNucleus::fNb_nuc = 0
staticprivate

counts number of existing KVNucleus objects

Definition at line 132 of file KVNucleus.h.

◆ fSymbolName

TString KVNucleus::fSymbolName
private

Definition at line 134 of file KVNucleus.h.

◆ fZ

UChar_t KVNucleus::fZ
private

nuclear charge number (atomic number)

Definition at line 130 of file KVNucleus.h.

◆ hbar

Double_t KVNucleus::hbar = TMath::Hbarcgs() * TMath::Ccgs() / TMath::Qe()
static

hbar*c in MeV.fm

Examples
ClassTraj.cpp.

Definition at line 175 of file KVNucleus.h.

◆ kAMU

Double_t KVNucleus::kAMU = 9.31494043e02
static

atomic mass unit in MeV

Examples
ClassTraj.cpp.

Definition at line 172 of file KVNucleus.h.

◆ kMe

Double_t KVNucleus::kMe = 0.510998
static

electron mass in MeV/c2

Definition at line 173 of file KVNucleus.h.


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