KaliVeda
Toolkit for HIC analysis
Loading...
Searching...
No Matches
KVNucleus Class Reference

Detailed Description

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:126
static Double_t kAMU
atomic mass unit in MeV
Definition KVNucleus.h:170
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
TArc 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 c(i)
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t b

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, ExampleAnalysis_KVEventMixerN_3Body.cpp, ExampleINDRAAnalysis.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 126 of file KVNucleus.h.

#include <KVNucleus.h>

Inheritance diagram for KVNucleus:

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 *);.
 
 KVNucleus (const KVNucleus &)
 copy ctor
 
 KVNucleus (Int_t z, Double_t t, const TVector3 &p)
 
 KVNucleus (Int_t z, Int_t a, const 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".
 
Double_t DeduceEincFromBrho (Double_t Brho, Int_t ChargeState=0)
 TH2F* GetKnownNucleiChart(KVString method="GetBindingEnergyPerNucleon");.
 
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.
 
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
 
Int_t GetMostAbundantA (Int_t z=-1) const
 
Int_t GetN () const
 Return the number of neutron.
 
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.
 
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.
 
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.
 
KVNucleus operator- (const KVNucleus &rhs)
 
KVNucleusoperator-= (const KVNucleus &rhs)
 KVNucleus subtraction and assignment operator.
 
KVNucleusoperator= (const KVNucleus &rhs)
 KVNucleus assignment operator.
 
virtual void Print (Option_t *t="") const
 Display nucleus parameters.
 
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.
 
void SetZandA (Int_t z, Int_t a)
 Set atomic number and mass number.
 
void SetZandN (Int_t z, Int_t n)
 Set atomic number and mass number.
 
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
 
 KVParticle (Double_t m, const TVector3 &p)
 create particle with given mass and momentum vector
 
 KVParticle (Double_t m, Double_t px, Double_t py, Double_t pz)
 create particle with given mass and momentum vector
 
virtual ~KVParticle ()
 Info("~KVParticle","%p",this);.
 
void AddGroup (const Char_t *groupname, const Char_t *from="") const
 
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
 
const KVParticleGetCurrentDefaultKinematics () 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
 
Double_t GetKE () const
 
KVListGetListOfFrames () const
 
Double_t GetLongitudinalEnergy () const
 
Double_t GetMass () const
 
TVector3 GetMomentum () const
 
const Char_tGetName () const
 return the field fName
 
Int_t GetNumberOfDefinedFrames () const
 
Int_t GetNumberOfDefinedGroups () const
 
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
 
Double_t GetVpar () const
 
Double_t GetVperp () const
 
Double_t GetWaveLength () const
 
Bool_t HasFrame (const Char_t *frame) const
 
KVParticle InFrame (const KVFrameTransform &)
 
void init ()
 default initialisation
 
Bool_t IsDefaultKinematics () const
 
Bool_t IsDetected () const
 
Bool_t IsOK () const
 
void ListGroups () const
 List all stored groups.
 
void ls (Option_t *option="") const
 
KVParticleoperator= (const KVParticle &rhs)
 KVParticle assignment operator.
 
void RemoveAllGroups ()
 Remove all groups.
 
void RemoveGroup (const Char_t *groupname)
 Remove group from list of groups.
 
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 (Double_t px, Double_t py, Double_t pz, Option_t *opt="cart")
 
void SetMomentum (Double_t T, const TVector3 &dir)
 
void SetName (const Char_t *nom)
 Set Name of the particle.
 
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)
 
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)
 
 ~TLorentzVector () override
 
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
 
TClassIsA () const override
 
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
 
 operator ROOT::Math::PxPyPzEVector () 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
 
void Print (Option_t *option="") const override
 
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)
 
void Streamer (TBuffer &) override
 
void StreamerNVirtual (TBuffer &ClassDef_StreamerNVirtual_b)
 
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=nullptr)
 
virtual void Execute (TMethod *method, TObjArray *params, Int_t *error=nullptr)
 
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)
 
Bool_t IsDestructed () const
 
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, void *vp)
 
void operator delete[] (void *ptr)
 
void operator delete[] (void *ptr, void *vp)
 
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)
 
void StreamerNVirtual (TBuffer &ClassDef_StreamerNVirtual_b)
 
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=nullptr, Int_t option=0, Int_t bufsize=0)
 
virtual Int_t Write (const char *name=nullptr, 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.
 
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).
 
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).
 
static Double_t u (void)
 
- Static Public Member Functions inherited from KVParticle
static Double_t C ()
 
- Static Public Member Functions inherited from TLorentzVector
static TClassClass ()
 
static const char * Class_Name ()
 
static constexpr Version_t Class_Version ()
 
static const char * DeclFileName ()
 
- Static Public Member Functions inherited from TObject
static TClassClass ()
 
static const char * Class_Name ()
 
static constexpr Version_t Class_Version ()
 
static const char * DeclFileName ()
 
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
 
static Double_t hbar = TMath::Hbarcgs() * TMath::Ccgs() / TMath::Qe()
 hbar*c in MeV.fm
 
static Double_t kAMU = 9.31494043e02
 atomic mass unit in MeV
 
static Double_t kMe = 0.510998
 electron mass in MeV/c2
 

Private Types

enum  { kIsHeavy = BIT(17) }
 

Private Attributes

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

Static Private Attributes

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

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 Member Functions inherited from TObject
virtual void DoError (int level, const char *location, const char *fmt, va_list va) const
 
void MakeZombie ()
 
- Protected Attributes inherited from TObject
 kOnlyPrepStep
 

Member Enumeration Documentation

◆ anonymous enum

anonymous enum
private
Enumerator
kIsHeavy 

Definition at line 137 of file KVNucleus.h.

◆ anonymous enum

anonymous enum
Enumerator
kBetaMass 
kVedaMass 
kEALMass 
kEALResMass 
kEPAXMass 

Definition at line 142 of file KVNucleus.h.

◆ anonymous enum

anonymous enum
Enumerator
kLDModel 
kEMPFunc 
kELTON 

Definition at line 149 of file KVNucleus.h.

◆ anonymous enum

anonymous enum
Enumerator
kDefaultFormula 
kItkis1998 
kHinde1987 
kViola1985 
kViola1966 

Definition at line 155 of file KVNucleus.h.

◆ anonymous enum

anonymous enum
Enumerator
kNN 
knn 
kpp 
knp 

Definition at line 163 of file KVNucleus.h.

Constructor & Destructor Documentation

◆ KVNucleus() [1/6]

KVNucleus::KVNucleus ( )

Default constructor.

Definition at line 270 of file KVNucleus.cpp.

◆ KVNucleus() [2/6]

KVNucleus::KVNucleus ( const KVNucleus obj)

copy ctor

Definition at line 284 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 319 of file KVNucleus.cpp.

◆ KVNucleus() [4/6]

KVNucleus::KVNucleus ( Int_t  z,
Double_t  t,
const 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 368 of file KVNucleus.cpp.

◆ KVNucleus() [5/6]

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

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

Definition at line 389 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 346 of file KVNucleus.cpp.

◆ ~KVNucleus()

KVNucleus::~KVNucleus ( )
virtual

Definition at line 404 of file KVNucleus.cpp.

Member Function Documentation

◆ CheckZAndA()

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

Definition at line 855 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 KVReconstructedNucleus, KVFAZIAReconNuc, and KVINDRAReconNuc.

Definition at line 301 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 1691 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 KVFAZIAReconNuc, KVINDRAReconNuc, KVReconstructedNucleus, and KVSimNucleus.

Definition at line 837 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 1767 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, and ExampleReconAnalysis.cpp.

Definition at line 802 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 1215 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 1262 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 567 of file KVNucleus.cpp.

◆ GetAMeV()

Double_t KVNucleus::GetAMeV ( ) const

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

Definition at line 1384 of file KVNucleus.cpp.

◆ GetAsurZ()

Double_t KVNucleus::GetAsurZ ( ) const
inline

Definition at line 238 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 932 of file KVNucleus.cpp.

◆ GetAWithMaxBindingEnergy()

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

Definition at line 1484 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 1305 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 1351 of file KVNucleus.cpp.

◆ GetChargeAsymetry()

Double_t KVNucleus::GetChargeAsymetry ( ) const
inline

The charge asymertry = (neutrons-protons)/nucleons

Definition at line 246 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 1098 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 1196 of file KVNucleus.cpp.

◆ GetEnergyPerNucleon()

Double_t KVNucleus::GetEnergyPerNucleon ( ) const

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

Definition at line 1368 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

Examples
ExampleAnalysis_KVEventMixerN_3Body.cpp.

Definition at line 283 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 1136 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 913 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 1810 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 1883 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 1456 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 1401 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". if you need only the chemical symbol, set opt="EL"

Definition at line 113 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 1043 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 1077 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 1330 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 886 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 950 of file KVNucleus.cpp.

◆ GetMassFormula()

Int_t KVNucleus::GetMassFormula ( ) const
inline

Definition at line 177 of file KVNucleus.h.

◆ GetMassGS()

Double_t KVNucleus::GetMassGS ( ) const
inline

Return the ground state mass of the nucleus in MeV.

Definition at line 290 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 1427 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 1233 of file KVNucleus.cpp.

◆ GetN()

Int_t KVNucleus::GetN ( ) const

Return the number of neutron.

Definition at line 784 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 2041 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 639 of file KVNucleus.cpp.

◆ GetNpairs()

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

Definition at line 821 of file KVNucleus.cpp.

◆ GetNsurZ()

Double_t KVNucleus::GetNsurZ ( ) const
inline

Definition at line 242 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 1015 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 1860 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 447 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 517 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 1790 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 990 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 970 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 2026 of file KVNucleus.cpp.

◆ GetZ()

Int_t KVNucleus::GetZ ( ) const

◆ 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 209 of file KVNucleus.cpp.

◆ init()

void KVNucleus::init ( )

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 248 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 202 of file KVNucleus.h.

◆ IsElement()

Bool_t KVNucleus::IsElement ( Int_t  Z) const
inline

Definition at line 330 of file KVNucleus.h.

◆ IsIsotope()

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

Definition at line 334 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 1282 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 147 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 2011 of file KVNucleus.cpp.

◆ IsSortable()

Bool_t KVNucleus::IsSortable ( ) const
inlinevirtual

Reimplemented from TObject.

Definition at line 197 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 1992 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 1623 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 1659 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 1527 of file KVNucleus.cpp.

◆ operator+=()

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

KVNucleus addition and assignment operator.

Definition at line 1592 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 1557 of file KVNucleus.cpp.

◆ operator-=()

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

KVNucleus subtraction and assignment operator.

Definition at line 1607 of file KVNucleus.cpp.

◆ operator=()

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

KVNucleus assignment operator.

Definition at line 1509 of file KVNucleus.cpp.

◆ Print()

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

Display nucleus parameters.

Reimplemented from KVParticle.

Reimplemented in KVFAZIAReconNuc, KVINDRAReconNuc, KVReconstructedNucleus, and KVSimNucleus.

Examples
KVEvent_iterator_example.C, and globvars_kvzmax.C.

Definition at line 761 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 180 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 658 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 868 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 345 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 688 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 707 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 736 of file KVNucleus.cpp.

◆ SetZandA()

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

Set atomic number and mass number.

Definition at line 724 of file KVNucleus.cpp.

◆ SetZandN()

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

Set atomic number and mass number.

Definition at line 749 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 228 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 2065 of file KVNucleus.cpp.

◆ ShimaChargeStatePrecision()

Double_t KVNucleus::ShimaChargeStatePrecision ( ) const

Definition at line 2106 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 1918 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 1956 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 1974 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 1942 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 1930 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 1753 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 174 of file KVNucleus.h.

◆ fA

UChar_t KVNucleus::fA
private

nuclear mass number

Definition at line 130 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 51 of file KVNucleus.h.

◆ fMassFormula

UChar_t KVNucleus::fMassFormula
private

mass formula for calculating A from Z

Definition at line 132 of file KVNucleus.h.

◆ fNb_nuc

UInt_t KVNucleus::fNb_nuc = 0
staticprivate

counts number of existing KVNucleus objects

Definition at line 133 of file KVNucleus.h.

◆ fSymbolName

TString KVNucleus::fSymbolName
private

Definition at line 135 of file KVNucleus.h.

◆ fZ

UChar_t KVNucleus::fZ
private

nuclear charge number (atomic number)

Definition at line 131 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 173 of file KVNucleus.h.

◆ kAMU

Double_t KVNucleus::kAMU = 9.31494043e02
static

atomic mass unit in MeV

Examples
ClassTraj.cpp.

Definition at line 170 of file KVNucleus.h.

◆ kMe

Double_t KVNucleus::kMe = 0.510998
static

electron mass in MeV/c2

Definition at line 171 of file KVNucleus.h.