KaliVeda
Toolkit for HIC analysis
|
Relativistic binary kinematics calculator.
This class calculates various useful characteristics of binary nuclear reactions. It is based on a Fortran programme by Jean-Luc Charvet (cibi.for
).
It allows to calculate:
The values are calculated using relativistic kinematics.
There are 3 ways in which KV2Body can be used.
Note on use of KV2Body constructors.
The arguments used to define the different nuclei are of type
(const KVNucleus&)
. This means that you can use either(1) a normal KVNucleus object instantiated before calling the constructor:
KVNucleus xe("129Xe", 50.); // 129Xe nucleus with 50MeV/A kinetic energy KVNucleus sn(50,119); // 119Sn nucleus at rest KV2Body kin(xe, sn); // define kinematics of 129Xe+119Sn@50AMeV collision(2) a temporary KVNucleus object instantiated in the argument list:
KV2Body kin(KVNucleus("129Xe", 50.), KVNucleus(50,119)); // define kinematics of 129Xe+119Sn@50AMeV collision(3) a string giving the symbol and mass of the nucleus.
KV2Body kin(KVNucleus("129Xe", 50.), "119Sn"); // define kinematics of 129Xe+119Sn@50AMeV collision(4) [ONLY WITH C++11/ROOT6]: any KVNucleus constructor through uniform initialization:
KV2Body kin({"129Xe", 50.}, {50,119}); // define kinematics of 129Xe+119Sn@50AMeV collision
Calculate kinematics for either elastic or inelastic A + B -> A + B
collisions.
Either use the constructor with arguments to specify projectile and target, and optionally the dissipated/excitation energy, or the constructor which takes as single argument a formatted name for the colliding system defining projectile, target and beam energy:
or use specific methods to define the entrance channel after using the default constructor (without arguments):
Calculate kinematics for A + B -> C + D
reactions.
Either use one of the constructors shown above to define the entrance channel then use the method below to define the outgoing fragment, or use the specific constructor with arguments to specify projectile, target, outgoing fragment, and optionally the dissipated/excitation energy:
or use specific methods as above to define the entrance channel after using the default constructor (without arguments):
Note that the partner of the outgoing fragment in the exit channel is deduced from conservation laws.
Calculate kinematics for A -> C + D
decays.
Define the compound nucleus and its excitation energy with the constructor
(if Exx
is not given, the excitation energy of compound
is used) and then define the decay channel with
Once the entrance channel (and, if necessary, the exit channel) is(are) defined, the kinematical calculation is carried out by:
For a general print-out of the reaction characteristics:
#include <KV2Body.h>
Public Member Functions | |
KV2Body () | |
default ctor | |
KV2Body (const Char_t *systemname) | |
KV2Body (const KVNucleus &compound, double Exx=0.0) | |
KV2Body (const KVNucleus &proj, const KVNucleus &targ, const KVNucleus &outgoing, double Ediss=0.0) | |
KV2Body (const KVNucleus &proj, const KVNucleus &targ, double Ediss=0.0) | |
KV2Body (KVNucleus *, KVNucleus *=nullptr, KVNucleus *=nullptr, Double_t=0.0) | |
Deprecated. Do not use. | |
virtual | ~KV2Body () |
Double_t | BassIntBarrier () |
void | CalculateKinematics () |
Double_t | eqbm_charge_state_shiwietz_gas (Double_t *t, Double_t *) |
Double_t | eqbm_charge_state_shiwietz_solid (Double_t *t, Double_t *) |
Double_t | EqbmChargeState (Double_t *t, Double_t *) |
Double_t | GetBmaxFromReactionXSec (Double_t ReacXsec) |
Double_t | GetCMEnergy () const |
Return available kinetic energy in centre of mass. | |
Double_t | GetCMEnergy (Int_t i) const |
Double_t | GetCMGamma () const |
TVector3 | GetCMVelocity () const |
Return vector velocity of centre of mass of reaction (units: cm/ns) | |
Double_t | GetCMVelocity (Int_t i) const |
Double_t | GetEDiss () const |
Double_t | GetELab (Double_t ThetaCM, Int_t OfNucleus) const |
Int_t | GetELab (Int_t OfNucleus, Double_t ThetaLab, Int_t AngleNucleus, Double_t &e1, Double_t &e2) const |
TF1 * | GetELabVsThetaCMFunc (Int_t OfNucleus) const |
TF1 * | GetELabVsThetaLabFunc (Int_t OfNucleus) const |
TF1 * | GetEqbmChargeStateFunc () const |
Double_t | GetExcitEnergy () const |
Double_t | GetIntegralPrecision () |
Double_t | GetIntegratedXsec (Double_t b1, Double_t b2) |
Double_t | GetIntegratedXSecRuthLab (Float_t th1, Float_t th2, Float_t phi1=-1, Float_t phi2=-1, Int_t OfNucleus=3) |
TF1 * | GetKoxReactionXSecFunc () const |
Double_t | GetLabGrazingAngle (Int_t i=1) const |
Double_t | GetMaxAngleLab (Int_t i) const |
Double_t | GetMinAngleLab (Int_t i) const |
Double_t | GetMinThetaCMFromThetaLab (Int_t OfNucleus, Double_t theta, Int_t OtherNucleus) const |
KVNucleus * | GetNucleus (Int_t i) const |
Double_t | GetQGroundStates () const |
Calculate Q-value for reaction, assuming all nuclei in ground state. | |
Double_t | GetQReaction () const |
Calculate Q-value for reaction, including dissipated (excitation) energy. | |
TF1 * | GetShiwietzEqbmChargeStateFuncForGasTargets () const |
TF1 * | GetShiwietzEqbmChargeStateFuncForSolidTargets () const |
Double_t | GetSphereDureReactionXSec (Double_t r0=1.05) |
Int_t | GetThetaCM (Double_t ThetaLab, Int_t OfNucleus, Double_t &t1, Double_t &t2) const |
Double_t | GetThetaCM (Int_t OfNucleus, Double_t theta, Int_t OtherNucleus) const |
Double_t | GetThetaLab (Double_t ThetaCM, Int_t OfNucleus) const |
Int_t | GetThetaLab (Int_t OfNucleus, Double_t ThetaLab, Int_t AngleNucleus, Double_t &e1, Double_t &e2) const |
TF1 * | GetThetaLabVsThetaCMFunc (Int_t OfNucleus) const |
Int_t | GetVLab (Int_t OfNucleus, Double_t ThetaLab, Int_t AngleNucleus, Double_t &e1, Double_t &e2) const |
Double_t | GetXSecRuthCM (Double_t ThetaLab_Proj, Int_t OfNucleus=3) const |
TF1 * | GetXSecRuthCMFunc (Int_t OfNucleus=3, Double_t theta_cm_min=1., Double_t theta_cm_max=179.) const |
Double_t | GetXSecRuthLab (Double_t ThetaLab_Proj, Int_t OfNucleus=3) const |
TF1 * | GetXSecRuthLabFunc (Int_t OfNucleus=3, Double_t theta_min=1., Double_t theta_max=179.) const |
TF1 * | GetXSecRuthLabIntegralFunc (Int_t OfNucleus=3, Double_t theta_min=1., Double_t theta_max=179.) const |
void | init () |
Default initialisations. | |
Double_t | KoxReactionXSec (Double_t *, Double_t *) |
void | Print (Option_t *opt="") const |
void | SetEDiss (Double_t ex) |
void | SetExcitEnergy (Double_t ex) |
void | SetIntegralPrecision (Double_t precision) |
void | SetOutgoing (const KVNucleus &proj_out) |
void | SetProjectile (const KVNucleus &) |
Set projectile for reaction. | |
void | SetProjectile (Int_t z, Int_t a=0) |
Set projectile for reaction. | |
void | SetTarget (const KVNucleus &) |
Set target for reaction. | |
void | SetTarget (Int_t z, Int_t a=0) |
Set target for reaction. | |
Public Member Functions inherited from KVBase | |
KVBase () | |
Default constructor. | |
KVBase (const Char_t *name, const Char_t *title="") | |
Ctor for object with given name and type. | |
KVBase (const KVBase &) | |
copy ctor | |
virtual | ~KVBase () |
virtual void | Clear (Option_t *opt="") |
Clear object properties : name, type/title, number, label. | |
virtual void | Copy (TObject &) const |
Make a copy of this object. | |
const Char_t * | GetLabel () const |
UInt_t | GetNumber () const |
UInt_t | GetNumberOfObjects () const |
virtual TObject * | GetObject () const |
virtual const Char_t * | GetType () const |
Bool_t | HasLabel () const |
virtual Bool_t | IsCalled (const Char_t *name) const |
Bool_t | IsLabelled (const Char_t *l) const |
virtual Bool_t | IsType (const Char_t *typ) const |
virtual void | List () |
KVBase & | operator= (const KVBase &) |
copy assignment operator | |
Double_t | ProtectedGetX (const TF1 *func, Double_t val, int &status, Double_t xmin=0.0, Double_t xmax=0.0) const |
void | SetLabel (const Char_t *lab) |
virtual void | SetNumber (UInt_t num) |
virtual void | SetType (const Char_t *str) |
Public Member Functions inherited from TNamed | |
TNamed () | |
TNamed (const char *name, const char *title) | |
TNamed (const TNamed &named) | |
TNamed (const TString &name, const TString &title) | |
virtual | ~TNamed () |
void | Clear (Option_t *option="") override |
TObject * | Clone (const char *newname="") const override |
Int_t | Compare (const TObject *obj) const override |
void | Copy (TObject &named) const override |
virtual void | FillBuffer (char *&buffer) |
const char * | GetName () const override |
const char * | GetTitle () const override |
ULong_t | Hash () const override |
TClass * | IsA () const override |
Bool_t | IsSortable () const override |
void | ls (Option_t *option="") const override |
TNamed & | operator= (const TNamed &rhs) |
void | Print (Option_t *option="") const override |
virtual void | SetName (const char *name) |
virtual void | SetNameTitle (const char *name, const char *title) |
virtual void | SetTitle (const char *title="") |
virtual Int_t | Sizeof () const |
void | Streamer (TBuffer &) override |
void | StreamerNVirtual (TBuffer &ClassDef_StreamerNVirtual_b) |
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 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 TObject * | DrawClone (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 TObject * | FindObject (const char *name) const |
virtual TObject * | FindObject (const TObject *obj) const |
virtual Option_t * | GetDrawOption () const |
virtual const char * | GetIconName () const |
virtual char * | GetObjectInfo (Int_t px, Int_t py) const |
virtual Option_t * | GetOption () const |
virtual UInt_t | GetUniqueID () const |
virtual Bool_t | HandleTimer (TTimer *timer) |
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) |
void * | operator new (size_t sz) |
void * | operator new (size_t sz, void *vp) |
void * | operator new[] (size_t sz) |
void * | operator new[] (size_t sz, void *vp) |
TObject & | operator= (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 Double_t | GetVelocity (Double_t mass, Double_t E) |
Static Public Member Functions inherited from KVBase | |
static Bool_t | AreEqual (Double_t x, Double_t y, Long64_t maxdif=1) |
Comparison between two 64-bit floating-point values. | |
static void | BackupFileWithDate (const Char_t *path) |
static void | CombineFiles (const Char_t *file1, const Char_t *file2, const Char_t *newfilename, Bool_t keep=kTRUE) |
static void | Deprecated (const char *method, const char *advice) |
static Bool_t | FindClassSourceFiles (const Char_t *class_name, KVString &imp_file, KVString &dec_file, const Char_t *dir_name=".") |
static Bool_t | FindExecutable (TString &exec, const Char_t *path="$(PATH)") |
static const Char_t * | FindFile (const Char_t *search, TString &wfil) |
static const Char_t * | GetBINDIRFilePath (const Char_t *namefile="") |
static const Char_t * | GetDATABASEFilePath () |
static const Char_t * | GetDATADIRFilePath (const Char_t *namefile="") |
static Bool_t | GetDataSetEnv (const Char_t *dataset, const Char_t *type, Bool_t defval) |
static const Char_t * | GetDataSetEnv (const Char_t *dataset, const Char_t *type, const Char_t *defval) |
static Double_t | GetDataSetEnv (const Char_t *dataset, const Char_t *type, Double_t defval) |
static const Char_t * | GetETCDIRFilePath (const Char_t *namefile="") |
static const Char_t * | GetExampleFilePath (const Char_t *library, const Char_t *namefile) |
Return full path to example file for given library (="KVMultiDet", "BackTrack", etc.) | |
static const Char_t * | GetINCDIRFilePath (const Char_t *namefile="") |
static const Char_t * | GetKVBuildDate () |
Returns KaliVeda build date. | |
static const Char_t * | GetKVBuildDir () |
Returns top-level directory used for build. | |
static const Char_t * | GetKVBuildTime () |
Returns KaliVeda build time. | |
static const Char_t * | GetKVBuildType () |
Returns KaliVeda build type (cmake build: Release, Debug, RelWithDebInfo, ...) | |
static const Char_t * | GetKVBuildUser () |
Returns username of person who performed build. | |
static const Char_t * | GetKVSourceDir () |
Returns top-level directory of source tree used for build. | |
static const Char_t * | GetKVVersion () |
Returns KaliVeda version string. | |
static const Char_t * | GetLIBDIRFilePath (const Char_t *namefile="") |
static const Char_t * | GetListOfPlugins (const Char_t *base) |
static const Char_t * | GetListOfPluginURIs (const Char_t *base) |
static const Char_t * | GetPluginURI (const Char_t *base, const Char_t *plugin) |
static void | GetTempFileName (TString &base) |
static const Char_t * | GetTEMPLATEDIRFilePath (const Char_t *namefile="") |
static const Char_t * | GetWORKDIRFilePath (const Char_t *namefile="") |
static const Char_t * | gitBranch () |
Returns git branch of sources. | |
static const Char_t * | gitCommit () |
Returns last git commit of sources. | |
static void | InitEnvironment () |
static bool | is_gnuinstall () |
static Bool_t | IsThisAPlugin (const TString &uri, TString &base) |
static TPluginHandler * | LoadPlugin (const Char_t *base, const Char_t *uri="0") |
static Bool_t | OpenContextMenu (const char *method, TObject *obj, const char *alt_method_name="") |
static void | OpenTempFile (TString &base, std::ofstream &fp) |
static void | PrintSplashScreen () |
Prints welcome message and infos on version etc. | |
static Bool_t | SearchAndOpenKVFile (const Char_t *name, KVSQLite::database &dbfile, const Char_t *kvsubdir="") |
static Bool_t | SearchAndOpenKVFile (const Char_t *name, std::ifstream &file, const Char_t *kvsubdir="", KVLockfile *locks=0) |
static Bool_t | SearchAndOpenKVFile (const Char_t *name, std::ofstream &file, const Char_t *kvsubdir="", KVLockfile *locks=0) |
static Bool_t | SearchKVFile (const Char_t *name, TString &fullpath, const Char_t *kvsubdir="") |
static const Char_t * | WorkingDirectory () |
Static Public Member Functions inherited from TNamed | |
static TClass * | Class () |
static const char * | Class_Name () |
static constexpr Version_t | Class_Version () |
static const char * | DeclFileName () |
Static Public Member Functions inherited from TObject | |
static TClass * | Class () |
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) |
Private Member Functions | |
Double_t | ELabVsThetaCM (Double_t *, Double_t *) |
Function calculating lab energy of nucleus par[0] for any CM angle x[0]. | |
Double_t | ELabVsThetaLab (Double_t *, Double_t *) |
Function calculating lab energy of nucleus par[0] for any lab angle x[0]. | |
Int_t | FindRoots (TF1 *, Double_t, Double_t, Double_t, Double_t &, Double_t &) const |
void | Set4thNucleus () |
Double_t | ThetaLabVsThetaCM (Double_t *, Double_t *) |
Double_t | XSecRuthCM (Double_t *, Double_t *) |
Double_t | XSecRuthCMVsThetaCM (Double_t *, Double_t *) |
Double_t | XSecRuthLab (Double_t *, Double_t *) |
Double_t | XSecRuthLabInt (Double_t *, Double_t *) |
Private Attributes | |
Double_t | BCM |
beta of centre of mass | |
Double_t | EC [5] |
cm energies | |
Double_t | fEDiss |
dissipated energy, 0 means elastic scattering | |
TF1 * | fELabVsThetaCM [5] |
TF1 * | fELabVsThetaLab [5] |
TF1 * | fEqbmChargeState |
function equilibrium charge state of projectile vs. E/A projectile (Leon et al) | |
TF1 * | fEqbmChargeStateShGas |
function equilibrium charge state of projectile vs. E/A projectile (Shiwietz et al gas) | |
TF1 * | fEqbmChargeStateShSol |
function equilibrium charge state of projectile vs. E/A projectile (Shiwietz et al solid) | |
Double_t | fIntPrec |
Precision of the TF1::Integral method. | |
TF1 * | fKoxReactionXSec |
function Kox reaction cross-section [barns] vs. E/A projectile | |
std::vector< KVNucleus > | fNuclei |
nuclei involved in calculation | |
Bool_t | fSetOutgoing |
= kTRUE if SetOutgoing is called before CalculateKinematics | |
TF1 * | fThetaLabVsThetaCM [5] |
TF1 * | fXSecRuthLab [5] |
TF1 * | fXSecRuthLabIntegral [5] |
Double_t | K [5] |
ratio of c.m. velocity to velocity of nucleus in c.m. v_cm/v_i_cm | |
Double_t | TETAMAX [5] |
defined only for nuclei 3 et 4 | |
Double_t | TETAMIN [5] |
defined only for nuclei 3 et 4 | |
Double_t | VC [5] |
cm velocities | |
TVector3 | VCM |
velocity of centre of mass | |
Double_t | WC [5] |
cm energy of each nucleus | |
Double_t | WCT |
total cm energy | |
Double_t | WLT |
total lab energy | |
Additional Inherited Members | |
Public Types inherited from KVBase | |
enum | EKaliVedaBits { kIsKaliVedaObject = BIT(23) } |
Public Types inherited from TObject | |
enum | EDeprecatedStatusBits |
enum | EStatusBits |
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 TNamed | |
TString | fName |
TString | fTitle |
Protected Attributes inherited from TObject | |
kOnlyPrepStep | |
KV2Body::KV2Body | ( | ) |
default ctor
Definition at line 61 of file KV2Body.cpp.
KV2Body::KV2Body | ( | const Char_t * | systemname | ) |
Set up calculation defining entrance channel following this prescription:
[Projectile_Symbol]+[Target_Symbol]@[Incident_Energy]MeV/A [Projectile_Symbol]+[Target_Symbol]@[Incident_Energy]MeV/u [Projectile_Symbol]+[Target_Symbol]
Any spaces will be ignored.
Valid examples:
129Xe.nosp@m.+119.nosp@m.Sn@50.nosp@m..0Me.nosp@m.V/A 58Ni + 64Ni @ 32 MeV/u U+U@5MeV/A Ta+Zn
If the format is not respected, this object will be a zombie (IsZombie() returns kTRUE)
Definition at line 87 of file KV2Body.cpp.
KV2Body::KV2Body | ( | const KVNucleus & | compound, |
double | Exx = 0.0 |
||
) |
Set up kinematics of binary decay of compound nucleus.
The excitation energy of the CN (in MeV) is either given:
Usage:
Definition at line 196 of file KV2Body.cpp.
Set up calculation of basic binary reaction for given projectile and target.
By default the dissipated energy Ediss is zero (elastic reaction).
Usage:
Definition at line 242 of file KV2Body.cpp.
KV2Body::KV2Body | ( | const KVNucleus & | proj, |
const KVNucleus & | targ, | ||
const KVNucleus & | outgoing, | ||
double | Ediss = 0.0 |
||
) |
Set up calculation of basic binary reaction for given projectile and target with definition of exit channel (outgoing projectile- or target-like fragment).
By default the dissipated energy is zero (elastic reaction).
Any excitation energy of the outgoing fragment will be taken into account, e.g. for quasi-elastic scattering leaving the target in an excited state.
Usage:
Definition at line 282 of file KV2Body.cpp.
KV2Body::KV2Body | ( | KVNucleus * | , |
KVNucleus * | cib = nullptr , |
||
KVNucleus * | proj_out = nullptr , |
||
Double_t | = 0.0 |
||
) |
Deprecated. Do not use.
Definition at line 152 of file KV2Body.cpp.
|
virtual |
Definition at line 362 of file KV2Body.cpp.
Double_t KV2Body::BassIntBarrier | ( | ) |
void KV2Body::CalculateKinematics | ( | ) |
Called to make kinematics calculation for all nuclei, use once properties of entrance-channel (and, if necessary, exit-channel) nuclei have been defined.
If a compound decay is to be calculated (only 1 nucleus in entrance channel), outgoing (decay) product must be defined before calling this method.
For a 2-body entrance channel, if no exit-channel nuclei are defined, we assume elastic scattering (i.e. identical outgoing nuclei)
Definition at line 677 of file KV2Body.cpp.
Function calculating lab energy of nucleus par[0] for any CM angle x[0].
Definition at line 1006 of file KV2Body.cpp.
Function calculating lab energy of nucleus par[0] for any lab angle x[0].
Definition at line 989 of file KV2Body.cpp.
G. Shiwietz et al Nucl. Instr. and Meth. in Phys. Res. B 175-177 (2001) 125-131 for gas targets
Definition at line 1787 of file KV2Body.cpp.
G. Shiwietz et al Nucl. Instr. and Meth. in Phys. Res. B 175-177 (2001) 125-131 for solid targets
Definition at line 1727 of file KV2Body.cpp.
Calculate the mean charge state of the projectile after passage through the target, assuming that the equilibrium charge state distribution is achieved*. t[0] = energy of projectile after the target (in MeV/nucleon)
We use the empirical parameterization of Leon et al., At. Dat. and Nucl. Dat. Tab. 69, 217 (1998) developed for heavy ions in the GANIL energy range (it represents a fit to data measured using GANIL beams).
*N.B. Concerning equilibrium charge state distributions, it is not easy to know whether, for a given combination of projectile, projectile energy, target, and target thickness, the equilibrium distribution is reached or not. Here are some comments from the paper cited above which may give some guidelines:
"The energies available at the GANIL accelerator range from 24 to 95 MeV/u. Within this energy range, the equilibrium charge state is reached only for fairly thick targets (~1 mg/cm2 for C foils)."
"Mean Charge State as a Function of the Target Thickness A typical example of the variation of the mean charge as a function of the foil thickness is shown ... It is seen that the mean charge initially increases due to the ionization process. Then, the equilibrium state is reached at a certain thickness, the so-called equilibrium thickness, due to the equilibration of electron loss and capture processes. Finally, for foils thicker than the equilibrium thickness, the mean charge decreases due to the slowing down of the ions in matter leading to higher capture cross sections."
It should be noted that, according to the data published in this and other papers, the equilibrium thickness decreases with increasing atomic number of the target, and increases with increasing energy of the projectile.
Definition at line 1635 of file KV2Body.cpp.
|
private |
Find at most two solutions x1 and x2 between xmin and xmax for which fonc->Eval(x) = val i.e. we use TF1::GetX for a function which may be (at most) double-valued in range (xmin, xmax) This is adapted to the case of the lab angle vs. CM angle of scattered particles. if fonc has a maximum between xmin and xmax, and if val < max, we look for x1 between xmin and the maximum, and x2 between the maximum and xmax. If not (single-valued function) we look for x1 between xmin and xmax. This method returns the number of roots found. If val > maximum of fonc between xmin and xmax, there is no solution: we return 0.
Definition at line 1944 of file KV2Body.cpp.
Deduce the maximum impact parameter (in fm) from a given reaction cross section (in barn) in the approximation Xsec = \int(0,bmax) 2Pi b db
Definition at line 1549 of file KV2Body.cpp.
Double_t KV2Body::GetCMEnergy | ( | ) | const |
Return available kinetic energy in centre of mass.
Definition at line 522 of file KV2Body.cpp.
Returns kinetic energy of nucleus "i" in the centre of mass of the reaction Entrance channel nuclei ..... i=1 : projectile i=2 : target Exit channel nuclei ..... i=3 : projectile-like i=4 : target-like
Definition at line 795 of file KV2Body.cpp.
TVector3 KV2Body::GetCMVelocity | ( | ) | const |
Return vector velocity of centre of mass of reaction (units: cm/ns)
Definition at line 572 of file KV2Body.cpp.
Return velocity of nucleus "i" in the centre of mass of the reaction Entrance channel nuclei ..... i=1 : projectile i=2 : target Exit channel nuclei ..... i=3 : projectile-like i=4 : target-like
Definition at line 587 of file KV2Body.cpp.
Int_t KV2Body::GetELab | ( | Int_t | OfNucleus, |
Double_t | ThetaLab, | ||
Int_t | AngleNucleus, | ||
Double_t & | e1, | ||
Double_t & | e2 | ||
) | const |
Calculate laboratory kinetic energy of nucleus OfNucleus as a function of the lab angle of nucleus AngleNucleus.
In general there may be two solutions for a given angle, therefore we return the number of solutions (0 if ThetaLab > max lab angle for nucleus in question).
Definition at line 945 of file KV2Body.cpp.
Return TF1 giving lab energy of nucleus as function of CM angle OfNucleus = 1 or 2 (entrance channel) or 3 or 4 (exit channel)
Definition at line 1044 of file KV2Body.cpp.
Return TF1 giving lab energy of nucleus as function of its lab angle OfNucleus = 1 or 2 (entrance channel) or 3 or 4 (exit channel)
Definition at line 1064 of file KV2Body.cpp.
TF1 * KV2Body::GetEqbmChargeStateFunc | ( | ) | const |
Return pointer to TF1 giving mean charge state of the projectile after passage through the target, assuming that the equilibrium charge state distribution is achieved, as a function of projectile energy after the target (in MeV/nucleon). We use the empirical parameterization of Leon et al., At. Dat. and Nucl. Dat. Tab. 69, 217 (1998) (see EqbmChargeState(Double_t t,Double_t) for details)
By default the range of the function is [5,100] MeV/nucleon. Change with TF1::SetRange.
Definition at line 1698 of file KV2Body.cpp.
|
inline |
Precision of the TF1::Integral() method
Integrate the cross section between two impact parameter (in fm) and give the result in barn
Definition at line 1568 of file KV2Body.cpp.
Double_t KV2Body::GetIntegratedXSecRuthLab | ( | Float_t | th1, |
Float_t | th2, | ||
Float_t | phi1 = -1 , |
||
Float_t | phi2 = -1 , |
||
Int_t | OfNucleus = 3 |
||
) |
Calculate Integrated Rutherford cross-section (barns) in the Lab using polar and azimuthal angular range expressed in degree if (OfNucleus==3) This angular range is considered to be the scattered projectile one if (OfNucleus==4) This angular range is considered to be the scattered target one
If phi1 ou phi2 ==-1 the azimuthal width is set to 2pi Else if phi1=phi2 the azimuthal width is set to 1 ie the integral is only on theta
The returned value is in barns
Definition at line 1387 of file KV2Body.cpp.
TF1 * KV2Body::GetKoxReactionXSecFunc | ( | ) | const |
Return pointer to TF1 with Kox reaction X-section in barns as a function of projectile lab energy (in Mev/nucleon) for this reaction. By default the range of the function is [20,100] MeV/nucleon. Change with TF1::SetRange.
Definition at line 1587 of file KV2Body.cpp.
Calculate laboratory grazing angle. i = 1 (default) : projectile i = 2 : target
Definition at line 603 of file KV2Body.cpp.
Returns maximum scattering angle in lab for nuclei i=3 (quasiproj) and i=4 (quasitarget)
Definition at line 536 of file KV2Body.cpp.
Returns minimum scattering angle in lab for nuclei i=3 (quasiproj) and i=4 (quasitarget)
Definition at line 554 of file KV2Body.cpp.
Double_t KV2Body::GetMinThetaCMFromThetaLab | ( | Int_t | OfNucleus, |
Double_t | theta, | ||
Int_t | OtherNucleus | ||
) | const |
Return the smallest (i.e. most forward) CM angle of nucleus OfNucleus corresponding to laboratory angle theta of nucleus OtherNucleus
If theta>max lab angle for nucleus, returns -1.0
Definition at line 1224 of file KV2Body.cpp.
Return pointer to nucleus i (1 <= i <= 4)
Entrance channel nuclei ..... i=1 : projectile i=2 : target
Exit channel nuclei ..... i=3 : projectile-like i=4 : target-like
Will return nullptr
if any nucleus is undefined
Definition at line 456 of file KV2Body.cpp.
Double_t KV2Body::GetQGroundStates | ( | ) | const |
Calculate Q-value for reaction, assuming all nuclei in ground state.
Definition at line 499 of file KV2Body.cpp.
Double_t KV2Body::GetQReaction | ( | ) | const |
Calculate Q-value for reaction, including dissipated (excitation) energy.
Definition at line 480 of file KV2Body.cpp.
TF1 * KV2Body::GetShiwietzEqbmChargeStateFuncForGasTargets | ( | ) | const |
Return pointer to TF1 giving mean charge state of the projectile after passage through the target, assuming that the equilibrium charge state distribution is achieved, as a function of projectile energy after the target (in MeV/nucleon). G. Shiwietz et al Nucl. Instr. and Meth. in Phys. Res. B 175-177 (2001) 125-131 This formula is valid for gas targets.
By default the range of the function is [5,100] MeV/nucleon. Change with TF1::SetRange.
Definition at line 1819 of file KV2Body.cpp.
TF1 * KV2Body::GetShiwietzEqbmChargeStateFuncForSolidTargets | ( | ) | const |
Return pointer to TF1 giving mean charge state of the projectile after passage through the target, assuming that the equilibrium charge state distribution is achieved, as a function of projectile energy after the target (in MeV/nucleon). G. Shiwietz et al Nucl. Instr. and Meth. in Phys. Res. B 175-177 (2001) 125-131 This formula is valid for solid targets.
By default the range of the function is [5,100] MeV/nucleon. Change with TF1::SetRange.
Definition at line 1758 of file KV2Body.cpp.
calculate Reaction Cross Section with the "Sphere Dure" approximation
Definition at line 1528 of file KV2Body.cpp.
Int_t KV2Body::GetThetaCM | ( | Double_t | ThetaLab, |
Int_t | OfNucleus, | ||
Double_t & | t1, | ||
Double_t & | t2 | ||
) | const |
Calculate CM angle of nucleus OfNucleus as a function of its lab angle. Returns number of solutions (there may be <=2 solutions).
Definition at line 972 of file KV2Body.cpp.
Int_t KV2Body::GetThetaLab | ( | Int_t | OfNucleus, |
Double_t | ThetaLab, | ||
Int_t | AngleNucleus, | ||
Double_t & | t1, | ||
Double_t & | t2 | ||
) | const |
Calculate laboratory angle of nucleus OfNucleus as a function of the laboratory angle of nucleus AngleNucleus.
In general there may be two solutions for a given angle, therefore we return the number of solutions (0 if ThetaLab > max lab angle for nucleus in question).
Definition at line 1117 of file KV2Body.cpp.
Return TF1 giving lab angle of nucleus as function of CM angle OfNucleus = 1 or 2 (entrance channel) or 3 or 4 (exit channel)
Definition at line 1149 of file KV2Body.cpp.
Static function, calculates relativistic velocity (in cm/ns) from rest mass and total energy (i.e. KE + mass) 'E' for any particle
Definition at line 380 of file KV2Body.cpp.
Int_t KV2Body::GetVLab | ( | Int_t | OfNucleus, |
Double_t | ThetaLab, | ||
Int_t | AngleNucleus, | ||
Double_t & | v1, | ||
Double_t & | v2 | ||
) | const |
Calculate laboratory velocity of nucleus OfNucleus as a function of the lab angle of nucleus AngleNucleus.
In general there may be two solutions for a given angle, therefore we return the number of solutions (0 if ThetaLab > max lab angle for nucleus in question).
Definition at line 1088 of file KV2Body.cpp.
Calculate Rutherford cross-section (b/sr) in the CM as a function of projectile (OfNucleus=3) or target (OfNucleus=4) lab scattering angle
WARNING: in inverse kinematics, projectile lab angles generally have two corresponding CM angles. We only use the most forward (smallest) CM angle.
Definition at line 1172 of file KV2Body.cpp.
TF1 * KV2Body::GetXSecRuthCMFunc | ( | Int_t | OfNucleus = 3 , |
Double_t | theta_cm_min = 1. , |
||
Double_t | theta_cm_max = 179. |
||
) | const |
Double_t GetIntegratedXSecRuthLab(KVTelescope* tel, Int_t OfNucleus = 3); Double_t GetIntegratedXSecRuthLab(KVDetector* det, Int_t OfNucleus = 3);
Return pointer to TF1 giving Rutherford cross-section (b/sr) in the CM as a function of projectile (OfNucleus=3) or target (OfNucleus=4) CM scattering angle By default, theta_min = 1 degree & theta_max = 179 degrees
Definition at line 1428 of file KV2Body.cpp.
Calculate Rutherford cross-section (b/sr) in the Lab as a function of projectile (OfNucleus=3) or target (OfNucleus=4) lab scattering angle
WARNING: in inverse kinematics, projectile lab angles generally have two corresponding CM angles. We only use the most forward (smallest) CM angle.
Definition at line 1279 of file KV2Body.cpp.
TF1 * KV2Body::GetXSecRuthLabFunc | ( | Int_t | OfNucleus = 3 , |
Double_t | theta_min = 1. , |
||
Double_t | theta_max = 179. |
||
) | const |
Return pointer to TF1 giving Rutherford cross-section (b/sr) in the Lab as a function of projectile (OfNucleus=3) or target (OfNucleus=4) lab scattering angle By default, theta_min = 1 degree & theta_max = 179 degrees
Definition at line 1850 of file KV2Body.cpp.
TF1 * KV2Body::GetXSecRuthLabIntegralFunc | ( | Int_t | OfNucleus = 3 , |
Double_t | theta_min = 1. , |
||
Double_t | theta_max = 179. |
||
) | const |
Return pointer to TF1 giving Rutherford cross-section (b/sr) in the Lab as a function of projectile (OfNucleus=3) or target (OfNucleus=4) lab scattering angle
This function is equal to sin(theta)*dsigma/domega, i.e. it is the integrand needed for calculating total cross-sections integrated over solid angle.
WARNING: when integrating this function using TF1::Integral, the result must be multiplied by TMath::DegToRad(), because 'x' is in degrees rather than radians, e.g. the integrated cross-section in barns is given by
GetXSecRuthLabIntegralFunc(OfNucleus)->Integral(theta_min, theta_max)*TMathDegToRad()
Definition at line 1896 of file KV2Body.cpp.
void KV2Body::init | ( | ) |
Default initialisations.
Definition at line 32 of file KV2Body.cpp.
calculate Kox reaction X-section (in barns) for a given lab energy of projectile (in MeV/nucleon)
c parameter fitted with Landau function vs. Log10(E/A) (see Fig. 12 of PRC Kox 87) by imposing c=0.1 at E/A=10 MeV (goes to 0 as E/A->0)
Definition at line 1490 of file KV2Body.cpp.
Print out characteristics of reaction.
If a two-body exit channel has been defined, you can use the following options: opt = "ruth" : list Rutherford scattering cross-sections as a function of angle in laboratory frame opt = "lab" : list energies and angles in laboratory frame
Reimplemented from KVBase.
Definition at line 813 of file KV2Body.cpp.
|
private |
Private method, used to deduce 4th nucleus (target-like) from projectile, target and outgoing projectile using conservation of mass, momentum and energy.
if the outgoing nucleus set by the user is equal to the compound nucleus formed by projectile and target, but the excitation energy of the CN was not set by the user, we calculate it here.
Definition at line 422 of file KV2Body.cpp.
Set the precision of the TF1::Integral() method
Set outgoing projectile-like nucleus properties.
The properties of the outgoing target-like nucleus will be deduced from mass, charge and momentum/energy conservation.
Definition at line 397 of file KV2Body.cpp.
Set projectile for reaction.
Definition at line 339 of file KV2Body.cpp.
Set projectile for reaction.
Definition at line 351 of file KV2Body.cpp.
Set target for reaction.
Definition at line 314 of file KV2Body.cpp.
Set target for reaction.
Definition at line 326 of file KV2Body.cpp.
Calculate Lab angle of nucleus as function of CM angle x[0] par[0] = index of nucleus = 1, 2, 3, 4
Definition at line 1025 of file KV2Body.cpp.
Calculate Rutherford cross-section (b/sr) in the CM as a function of projectile (OfNucleus=3) or target (OfNucleus=4) lab scattering angle
WARNING: in inverse kinematics, projectile lab angles generally have two corresponding CM angles. We only use the most forward (smallest) CM angle.
Definition at line 1193 of file KV2Body.cpp.
Calculate CM Rutherford cross-section (b/sr) in the CM as a function of scattering angle in the CM frame for nucleus par[0]
Definition at line 1251 of file KV2Body.cpp.
Calculate Rutherford cross-section (b/sr) in the Lab as a function of projectile (OfNucleus=3) or target (OfNucleus=4) lab scattering angle
WARNING: in inverse kinematics, projectile lab angles generally have two corresponding CM angles. We only use the most forward (smallest) CM angle.
Definition at line 1300 of file KV2Body.cpp.
Rutherford cross-section (b/sr) function in the Lab as a function of projectile (OfNucleus=3) or target (OfNucleus=4) lab scattering angle x[0] including 'sin theta' factor needed for integrating over solid angles.
Definition at line 1333 of file KV2Body.cpp.
|
private |
|
mutableprivate |
|
mutableprivate |
|
mutableprivate |
|
private |
Precision of the TF1::Integral method.
|
mutableprivate |
|
private |
|
private |
|
private |
|
private |
|
private |