![]() |
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) 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:
You can obtain informations on the angular, energy, and (Rutherford) cross-section distributions of either the outgoing projectile- or target-like nucleus, using the methods:
#include <KV2Body.h>

Classes | |
| class | KinematicSolutions |
| Maybe single- or double-valued. More... | |
Public Types | |
| enum | kinematic_solution { high_E_branch , low_E_branch , both_branches } |
| enum | nucleus_of_interest { projectile = 1 , target , projectile_like , target_like } |
Public Types inherited from KVBase | |
| enum | EKaliVedaBits { kIsKaliVedaObject = BIT(23) } |
| enum class | GetX_status { ok , above_maximum , below_minimum , at_maximum , at_minimum } |
Public Types inherited from TObject | |
| enum | EDeprecatedStatusBits |
| enum | EStatusBits |
Public Member Functions | |
| KV2Body () | |
| default ctor More... | |
| 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. More... | |
| 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. More... | |
| Double_t | GetCMEnergy (nucleus_of_interest i) const |
| Double_t | GetCMGamma () const |
| TVector3 | GetCMVelocity () const |
| Return vector velocity of centre of mass of reaction (units: cm/ns) More... | |
| Double_t | GetCMVelocity (nucleus_of_interest i) const |
| Double_t | GetEDiss () const |
| Double_t | GetELab (Double_t ThetaCM, nucleus_of_interest OfNucleus) const |
| KinematicSolutions_v | GetELab (nucleus_of_interest OfNucleus, Double_t ThetaLab, std::optional< nucleus_of_interest > AngleNucleus={}) const |
| KVDrawable< TF1 > | GetELabVsThetaCMFunc (nucleus_of_interest OfNucleus) const |
| KVDrawable< TF1 > | GetELabVsThetaLabFunc (nucleus_of_interest OfNucleus, kinematic_solution kine_sol=kinematic_solution::high_E_branch) const |
| KVDrawable< TF1 > | GetEqbmChargeStateFunc () const |
| Double_t | GetExcitEnergy () const |
| KVDrawable< TGraph > | GetGraphELabVsThetaLab (nucleus_of_interest OfNucleus=projectile_like, int npoints=50) 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, nucleus_of_interest OfNucleus=projectile_like) |
| KVDrawable< TF1 > | GetKoxReactionXSecFunc () const |
| Double_t | GetLabGrazingAngle (nucleus_of_interest i=projectile) const |
| Double_t | GetMaxAngleLab (nucleus_of_interest i) const |
| Double_t | GetMinAngleLab (nucleus_of_interest i) const |
| KVNucleus * | GetNucleus (nucleus_of_interest i) const |
| Double_t | GetQGroundStates () const |
| Calculate Q-value for reaction, assuming all nuclei in ground state. More... | |
| Double_t | GetQReaction () const |
| Calculate Q-value for reaction, including dissipated (excitation) energy. More... | |
| TString | GetReactionEquation () const |
| KVDrawable< TF1 > | GetShiwietzEqbmChargeStateFuncForGasTargets () const |
| KVDrawable< TF1 > | GetShiwietzEqbmChargeStateFuncForSolidTargets () const |
| Double_t | GetSphereDureReactionXSec (Double_t r0=1.05) |
| KinematicSolutions_v | GetThetaCM (Double_t ThetaLab, nucleus_of_interest OfNucleus) const |
| std::optional< double > | GetThetaCM (Double_t ThetaLab, nucleus_of_interest OfNucleus, kinematic_solution kine_sol) const |
| Double_t | GetThetaCM (nucleus_of_interest OfNucleus, Double_t theta, nucleus_of_interest OtherNucleus) const |
| Double_t | GetThetaLab (Double_t ThetaCM, nucleus_of_interest OfNucleus) const |
| KinematicSolutions_v | GetThetaLab (nucleus_of_interest OfNucleus, Double_t ThetaLab, nucleus_of_interest AngleNucleus) const |
| KVDrawable< TF1 > | GetThetaLabVsThetaCMFunc (nucleus_of_interest OfNucleus) const |
| KinematicSolutions_v | GetVLab (nucleus_of_interest OfNucleus, Double_t ThetaLab, std::optional< nucleus_of_interest > AngleNucleus={}) const |
| Double_t | GetXSecRuthCM (Double_t ThetaLab, nucleus_of_interest OfNucleus=projectile_like, kinematic_solution kineSol=high_E_branch) const |
| KVDrawable< TF1 > | GetXSecRuthCMFunc (nucleus_of_interest OfNucleus=projectile_like, Double_t theta_cm_min=1., Double_t theta_cm_max=179.) const |
| Double_t | GetXSecRuthLab (Double_t ThetaLab, nucleus_of_interest OfNucleus=projectile_like, kinematic_solution kineSol=high_E_branch) const |
| KVDrawable< TF1 > | GetXSecRuthLabFunc (nucleus_of_interest OfNucleus=projectile_like, kinematic_solution kineSol=high_E_branch, Double_t theta_min=1., Double_t theta_max=179.) const |
| KVDrawable< TF1 > | GetXSecRuthLabIntegralFunc (nucleus_of_interest OfNucleus=projectile_like, Double_t theta_min=1., Double_t theta_max=179., kinematic_solution kineSol=high_E_branch) const |
| void | init () |
| Default initialisations. More... | |
| Bool_t | IsInverseKinematics () const |
| Double_t | KoxReactionXSec (Double_t *, Double_t *) |
| void | Print (Option_t *opt="") const override |
| 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. More... | |
| void | SetProjectile (Int_t z, Int_t a=0) |
| Set projectile for reaction. More... | |
| void | SetTarget (const KVNucleus &) |
| Set target for reaction. More... | |
| void | SetTarget (Int_t z, Int_t a=0) |
| Set target for reaction. More... | |
Public Member Functions inherited from KVBase | |
| KVBase () | |
| Default constructor. More... | |
| KVBase (const Char_t *name, const Char_t *title="") | |
| Ctor for object with given name and type. More... | |
| KVBase (const KVBase &) | |
| copy ctor More... | |
| void | Clear (Option_t *opt="") override |
| Clear object properties : name, type/title, number, label. More... | |
| void | Copy (TObject &) const override |
| Make a copy of this object. More... | |
| void | Error (const char *method, const char *msgfmt,...) const override |
| const Char_t * | GetLabel () const |
| UInt_t | GetNumber () 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 More... | |
| void | SetLabel (const Char_t *lab) |
| virtual void | SetNumber (UInt_t num) |
| virtual void | SetType (const Char_t *str) |
| void | Warning (const char *method, const char *msgfmt,...) const override |
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 () |
| TObject * | Clone (const char *newname="") const override |
| Int_t | Compare (const TObject *obj) 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) |
| 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 | 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 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. More... | |
| 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 KVString &class_name, KVString &imp_file, KVString &dec_file, const KVString &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="") |
| template<typename ValType > | |
| static ValType | GetDataSetEnv (const KVString &dataset, const KVString &type, const ValType &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.) More... | |
| static const Char_t * | GetINCDIRFilePath (const Char_t *namefile="") |
| static const Char_t * | GetKVBuildDate () |
| Returns KaliVeda build date. More... | |
| static const Char_t * | GetKVBuildDir () |
| Returns top-level directory used for build. More... | |
| static const Char_t * | GetKVBuildTime () |
| Returns KaliVeda build time. More... | |
| static const Char_t * | GetKVBuildType () |
| Returns KaliVeda build type (cmake build: Release, Debug, RelWithDebInfo, ...) More... | |
| static const Char_t * | GetKVBuildUser () |
| Returns username of person who performed build. More... | |
| static int | GetKVMajorVersion () |
| static int | GetKVMinorVersion () |
| static int | GetKVPatchVersion () |
| static const Char_t * | GetKVSourceDir () |
| Returns top-level directory of source tree used for build. More... | |
| static const Char_t * | GetKVVersion () |
| Returns KaliVeda version string. More... | |
| 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. More... | |
| static const Char_t * | gitCommit () |
| Returns last git commit of sources. More... | |
| static void | InitEnvironment () |
| static bool | is_gnuinstall () |
| static Bool_t | IsEnvInit () |
| 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. More... | |
| static Double_t | ProtectedGetX (const TF1 &func, Double_t val, GetX_status &status, std::optional< Double_t > xmin={}, std::optional< Double_t > xmax={}) |
| static Double_t | ProtectedGetX (const TF1 *func, Double_t val, GetX_status &status, std::optional< Double_t > xmin={}, std::optional< Double_t > xmax={}) |
| 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 Types | |
| using | KinematicSolutions_v = std::optional< KinematicSolutions > |
Private Member Functions | |
| Double_t | ELabVsThetaCM (Double_t *, Double_t *) |
| Function calculating lab energy of nucleus par[0] for any CM angle x[0]. More... | |
| Double_t | ELabVsThetaLab (Double_t *, Double_t *) |
| KinematicSolutions_v | FindRoots (TF1 *, 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 More... | |
| Double_t | EC [5] |
| cm energies More... | |
| Double_t | fEDiss |
| dissipated energy, 0 means elastic scattering More... | |
| TF1 * | fELabVsThetaCM [5] |
| TF1 * | fELabVsThetaLab [5] |
| TF1 * | fEqbmChargeState |
| function equilibrium charge state of projectile vs. E/A projectile (Leon et al) More... | |
| TF1 * | fEqbmChargeStateShGas |
| function equilibrium charge state of projectile vs. E/A projectile (Shiwietz et al gas) More... | |
| TF1 * | fEqbmChargeStateShSol |
| function equilibrium charge state of projectile vs. E/A projectile (Shiwietz et al solid) More... | |
| Double_t | fIntPrec |
| Precision of the TF1::Integral method. More... | |
| TF1 * | fKoxReactionXSec |
| function Kox reaction cross-section [barns] vs. E/A projectile More... | |
| std::vector< KVNucleus > | fNuclei |
| nuclei involved in calculation More... | |
| Bool_t | fSetOutgoing |
| = kTRUE if SetOutgoing is called before CalculateKinematics More... | |
| 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 More... | |
| Double_t | TETAMAX [5] |
| defined only for nuclei 3 et 4 More... | |
| Double_t | TETAMIN [5] |
| defined only for nuclei 3 et 4 More... | |
| Double_t | VC [5] |
| cm velocities More... | |
| TVector3 | VCM |
| velocity of centre of mass More... | |
| Double_t | WC [5] |
| cm energy of each nucleus More... | |
| Double_t | WCT |
| total cm energy More... | |
| Double_t | WLT |
| total lab energy More... | |
Additional Inherited Members | |
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 | |
|
private |
| 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]@[Incident_Energy]MeV [Projectile_Symbol]+[Target_Symbol]
Any spaces will be ignored.
Valid examples:
129Xe+119Sn@50.0MeV/A 58Ni + 64Ni @ 32 MeV/u 12C + 1H @ 132 MeV U+U@5MeV/A Ta+Zn
If the format is not respected, this object will be a zombie (IsZombie() returns kTRUE)
Definition at line 89 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 210 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 256 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 296 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 166 of file KV2Body.cpp.
|
virtual |
| 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 693 of file KV2Body.cpp.
Function calculating lab energy of nucleus par[0] for any CM angle x[0].
Definition at line 1111 of file KV2Body.cpp.
Function calculating lab energy of nucleus par[0] for any lab angle x[0]
par[1] is choice of kinematic solution
Definition at line 1094 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 1971 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 1911 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 1819 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 val > maximum of fonc between xmin and xmax, there is no solution
Testing and using returned value:
Definition at line 2150 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 1733 of file KV2Body.cpp.
| Double_t KV2Body::GetCMEnergy | ( | ) | const |
Return available kinetic energy in centre of mass.
Definition at line 532 of file KV2Body.cpp.
| Double_t KV2Body::GetCMEnergy | ( | nucleus_of_interest | i | ) | const |
Returns kinetic energy of nucleus in the centre of mass of the reaction
| [in] | i | nucleus_of_interest::projectile or nucleus_of_interest::target (entrance channel), or nucleus_of_interest::projectile_like or nucleus_of_interest::target_like (exit channel) |
Definition at line 856 of file KV2Body.cpp.
| TVector3 KV2Body::GetCMVelocity | ( | ) | const |
Return vector velocity of centre of mass of reaction (units: cm/ns)
Definition at line 583 of file KV2Body.cpp.
| Double_t KV2Body::GetCMVelocity | ( | nucleus_of_interest | i | ) | const |
Return velocity of nucleus in the centre of mass of the reaction
| [in] | i | nucleus_of_interest::projectile or nucleus_of_interest::target (entrance channel), or nucleus_of_interest::projectile_like or nucleus_of_interest::target_like (exit channel) |
Definition at line 598 of file KV2Body.cpp.
|
inline |
|
inline |
Calculate lab energy of nucleus OfNucleus as a function of CM angle
| [in] | OfNucleus | nucleus_of_interest::projectile or nucleus_of_interest::target (entrance channel), or nucleus_of_interest::projectile_like or nucleus_of_interest::target_like (exit channel) |
| KV2Body::KinematicSolutions_v KV2Body::GetELab | ( | nucleus_of_interest | OfNucleus, |
| Double_t | ThetaLab, | ||
| std::optional< nucleus_of_interest > | AngleNucleus = {} |
||
| ) | const |
| [in] | AngleNucleus | if given, ThetaLab is AngleNucleus' lab angle calculate CM angle(s) |
Definition at line 1004 of file KV2Body.cpp.
| KVDrawable< TF1 > KV2Body::GetELabVsThetaCMFunc | ( | nucleus_of_interest | OfNucleus | ) | const |
Return TF1 giving lab energy of nucleus as function of CM angle
| [in] | OfNucleus | nucleus_of_interest::projectile or nucleus_of_interest::target (entrance channel), or nucleus_of_interest::projectile_like or nucleus_of_interest::target_like (exit channel) |
Definition at line 1166 of file KV2Body.cpp.
| KVDrawable< TF1 > KV2Body::GetELabVsThetaLabFunc | ( | nucleus_of_interest | OfNucleus, |
| kinematic_solution | kine_sol = kinematic_solution::high_E_branch |
||
| ) | const |
Return TF1 giving lab energy of nucleus as function of its lab angle
| [in] | OfNucleus | nucleus_of_interest::projectile or nucleus_of_interest::target (entrance channel), or nucleus_of_interest::projectile_like or nucleus_of_interest::target_like (exit channel) |
| [in] | kine_sol | in case of multiple solutions, choose either high- or low-energy branch |
Definition at line 1198 of file KV2Body.cpp.
| KVDrawable< 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 1882 of file KV2Body.cpp.
|
inline |
| KVDrawable< TGraph > KV2Body::GetGraphELabVsThetaLab | ( | nucleus_of_interest | OfNucleus = projectile_like, |
| int | npoints = 50 |
||
| ) | const |
Fill and return TGraph with complete correlation between lab energy [MeV] and angle [deg]
| ofNuc | index of outgoing nucleus for which to draw correlation:
|
| npoints | number of points in graph [default=50] |
-> operator: or with a chain of instructions to define the colour, style, etc. of the lines, points: See Example_KV2Body.C for a full example of use.
Definition at line 1319 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 1752 of file KV2Body.cpp.
| Double_t KV2Body::GetIntegratedXSecRuthLab | ( | Float_t | th1, |
| Float_t | th2, | ||
| Float_t | phi1 = -1, |
||
| Float_t | phi2 = -1, |
||
| nucleus_of_interest | OfNucleus = projectile_like |
||
| ) |
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 1604 of file KV2Body.cpp.
| KVDrawable< 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 1771 of file KV2Body.cpp.
| Double_t KV2Body::GetLabGrazingAngle | ( | nucleus_of_interest | i = projectile | ) | const |
Calculate laboratory grazing angle.
| [in] | i | nucleus_of_interest::projectile or nucleus_of_interest::target |
Definition at line 613 of file KV2Body.cpp.
| Double_t KV2Body::GetMaxAngleLab | ( | nucleus_of_interest | i | ) | const |
Returns maximum scattering angle in lab
| [in] | i | either nucleus_of_interest::projectile_like or nucleus_of_interest::target_like |
Definition at line 546 of file KV2Body.cpp.
| Double_t KV2Body::GetMinAngleLab | ( | nucleus_of_interest | i | ) | const |
Returns minimum scattering angle in lab
| [in] | i | either nucleus_of_interest::projectile_like or nucleus_of_interest::target_like |
Definition at line 565 of file KV2Body.cpp.
| KVNucleus * KV2Body::GetNucleus | ( | nucleus_of_interest | i | ) | const |
Return pointer to nucleus
| [in] | i | nucleus_of_interest::projectile or nucleus_of_interest::target (entrance channel), or nucleus_of_interest::projectile_like or nucleus_of_interest::target_like (exit channel) |
Will return nullptr if any nucleus is undefined
Definition at line 468 of file KV2Body.cpp.
| Double_t KV2Body::GetQGroundStates | ( | ) | const |
Calculate Q-value for reaction, assuming all nuclei in ground state.
Definition at line 509 of file KV2Body.cpp.
| Double_t KV2Body::GetQReaction | ( | ) | const |
Calculate Q-value for reaction, including dissipated (excitation) energy.
Definition at line 490 of file KV2Body.cpp.
| TString KV2Body::GetReactionEquation | ( | ) | const |
If dissipated/excitation energy is non-zero, we add \(E_{X}=...\) at the end.
Definition at line 815 of file KV2Body.cpp.
| KVDrawable< 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 2003 of file KV2Body.cpp.
| KVDrawable< 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 1942 of file KV2Body.cpp.
calculate Reaction Cross Section with the "Sphere Dure" approximation
Definition at line 1712 of file KV2Body.cpp.
| KV2Body::KinematicSolutions_v KV2Body::GetThetaCM | ( | Double_t | ThetaLab, |
| nucleus_of_interest | OfNucleus | ||
| ) | const |
In all other cases, there are two \(\theta_{cm}\) values for each \(\theta_{lab}\), up to the maximum lab scattering angle which corresponds to a single \(\theta_{cm}\).
If ThetaLab>max lab scattering angle for nucleus, no solution exists.
In all cases, the solution with the smallest \(\theta_{cm}\) corresponds to the largest \(E_{lab}\).
Definition at line 1045 of file KV2Body.cpp.
| std::optional< double > KV2Body::GetThetaCM | ( | Double_t | ThetaLab, |
| nucleus_of_interest | OfNucleus, | ||
| kinematic_solution | kine_sol | ||
| ) | const |
Definition at line 1072 of file KV2Body.cpp.
|
inline |
|
inline |
Calculate lab angle of nucleus OfNucleus as a function of CM angle
| [in] | OfNucleus | nucleus_of_interest::projectile or nucleus_of_interest::target (entrance channel), or nucleus_of_interest::projectile_like or nucleus_of_interest::target_like (exit channel) |
| KV2Body::KinematicSolutions_v KV2Body::GetThetaLab | ( | nucleus_of_interest | OfNucleus, |
| Double_t | ThetaLab, | ||
| nucleus_of_interest | AngleNucleus | ||
| ) | const |
Definition at line 1251 of file KV2Body.cpp.
| KVDrawable< TF1 > KV2Body::GetThetaLabVsThetaCMFunc | ( | nucleus_of_interest | OfNucleus | ) | const |
| [in] | OfNucleus | nucleus_of_interest::projectile or nucleus_of_interest::target (entrance channel), or nucleus_of_interest::projectile_like or nucleus_of_interest::target_like (exit channel) |
Definition at line 1282 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 394 of file KV2Body.cpp.
| KV2Body::KinematicSolutions_v KV2Body::GetVLab | ( | nucleus_of_interest | OfNucleus, |
| Double_t | ThetaLab, | ||
| std::optional< nucleus_of_interest > | AngleNucleus = {} |
||
| ) | const |
| [in] | AngleNucleus | if given, ThetaLab is AngleNucleus' lab angle |
Definition at line 1230 of file KV2Body.cpp.
| Double_t KV2Body::GetXSecRuthCM | ( | Double_t | ThetaLab, |
| nucleus_of_interest | OfNucleus = projectile_like, |
||
| kinematic_solution | kineSol = high_E_branch |
||
| ) | const |
Calculate Rutherford cross-section (b/sr) in the CM as a function of projectile_like or target_like lab scattering angle
For multi-valued kinematics, we return by default the high energy branch
Definition at line 1463 of file KV2Body.cpp.
| KVDrawable< TF1 > KV2Body::GetXSecRuthCMFunc | ( | nucleus_of_interest | OfNucleus = projectile_like, |
| 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_like or target_like CM scattering angle By default, theta_min = 1 degree & theta_max = 179 degrees
Definition at line 1382 of file KV2Body.cpp.
| Double_t KV2Body::GetXSecRuthLab | ( | Double_t | ThetaLab, |
| nucleus_of_interest | OfNucleus = projectile_like, |
||
| kinematic_solution | kineSol = high_E_branch |
||
| ) | const |
Calculate Rutherford cross-section (b/sr) in the Lab as a function of projectile_like or target_like lab scattering angle
For multi-valued kinematics, we return by default the high energy branch
Definition at line 1524 of file KV2Body.cpp.
| KVDrawable< TF1 > KV2Body::GetXSecRuthLabFunc | ( | nucleus_of_interest | OfNucleus = projectile_like, |
| kinematic_solution | kineSol = high_E_branch, |
||
| 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_like or target_like lab scattering angle
By default, theta_min = 1 degree & theta_max = 179 degrees
Definition at line 2035 of file KV2Body.cpp.
| KVDrawable< TF1 > KV2Body::GetXSecRuthLabIntegralFunc | ( | nucleus_of_interest | OfNucleus = projectile_like, |
| Double_t | theta_min = 1., |
||
| Double_t | theta_max = 179., |
||
| kinematic_solution | kineSol = high_E_branch |
||
| ) | 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 2084 of file KV2Body.cpp.
Default initialisations.
Definition at line 32 of file KV2Body.cpp.
|
inline |
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 1674 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 874 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 436 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 411 of file KV2Body.cpp.
Set projectile for reaction.
Definition at line 353 of file KV2Body.cpp.
Set projectile for reaction.
Definition at line 365 of file KV2Body.cpp.
Set target for reaction.
Definition at line 328 of file KV2Body.cpp.
Set target for reaction.
Definition at line 340 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 1130 of file KV2Body.cpp.
Calculate Rutherford cross-section (b/sr) in the CM as a function of projectile_like or target_like lab scattering angle
x[0]: lab angle par[0]: nucleus_of_interest par[1]: kinematic_solution
If no kinematic solution exists (angle > max lab angle), return 0
If low energy branch is requested but does not exist, return 0
Definition at line 1422 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 1360 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
x[0]: lab angle par[0]: nucleus_of_interest par[1]: kinematic_solution
Checked with LISE++ calculations: Jacobian is correct for both branches (1+K*Cos(Theta_cm) can become negative for low E branch (Theta_cm>90), correct cross-section is absolute value of DSIDTB*RLC)
Definition at line 1488 of file KV2Body.cpp.
Rutherford cross-section (b/sr) function in the Lab as a function of projectile_like or target_like lab scattering angle x[0] including 'sin theta' factor needed for integrating over solid angles.
x[0]: lab angle par[0]: nucleus_of_interest par[1]: kinematic_solution
Definition at line 1546 of file KV2Body.cpp.
|
private |
|
mutableprivate |
|
mutableprivate |
|
mutableprivate |
|
private |
Precision of the TF1::Integral method.
|
mutableprivate |
|
private |
|
private |
|
private |
|
private |
|
private |