ReaclibRate
ReaclibRate Class Reference

A class inheriting from a TF1 that assists in the fitting of a reaction rate to the JINA REACLIB format. More...

#include <ReaclibRate.hpp>

Inheritance diagram for ReaclibRate:
Collaboration diagram for ReaclibRate:

Public Member Functions

 ReaclibRate (const char *name, const unsigned int numResonances, const unsigned int z1, const unsigned int z2, const float mu)
 Charged particle constructor. More...
 
void SetSFactor (const float s0_MeVb)
 Sets the best guess for the S-factor term S(0). More...
 
void SetResonance (const unsigned int resonanceId, const float energy, const float strength)
 Set parameters for the specified narrow resonance. More...
 
double Evaluate (double *t9, double *par)
 Evaluates the rate at the given temperature and parameters. More...
 
double GetSFactor ()
 Returns the S-factor, S(0), determined from the fit parameters. More...
 
double GetReducedMass ()
 Returns the reduced mass, determined from the fit parameters. More...
 
double GetResonanceEnergy (const unsigned int resosanceId)
 Returns the resonance energy of the specified resonance set. More...
 
double GetResonanceStrength (const unsigned int resosanceId)
 Returns the resonance strength of the specified resonance set. More...
 

Private Attributes

const unsigned int numResonances_
 The number of resonance sets for this rate.
 
const unsigned int z1_
 Atomic number of the target.
 
const unsigned int z2_
 Atomic number of the reactant.
 
const float mu_amu_
 

Static Private Attributes

static constexpr float b_ = 7.8318E9
 Constant used for non-resonant a0 term. In units of $ cm^3 s^{-1} mole^{-1} MeV^{-1} barn^{-1} $.
 
static constexpr float d_ = 1.5394E11
 Constant used for resonant a0 term. In units of $ cm^3 s^{-1} mole^{-1} MeV^{-1} $.
 

Detailed Description

A class inheriting from a TF1 that assists in the fitting of a reaction rate to the JINA REACLIB format.

Author
Karl Smith

The REACLIB format is a set of seven parameters that provide a functional form for a reaction rate. The expression is designed to provide terms that will fit both non-resonant, charge particle and neutron induced, as well as narrow resonances. This class will take physical parameters (reactant charges, reduced mass, S(0), number of resonances, resonance energies, and resonance strengths) and make educated guess about initial values. After the fit is performed the resulting physical parameters can be extracted.

Definition at line 21 of file ReaclibRate.hpp.

Constructor & Destructor Documentation

ReaclibRate::ReaclibRate ( const char *  name,
const unsigned int  numResonances,
const unsigned int  z1,
const unsigned int  z2,
const float  mu 
)

Charged particle constructor.

Parameters
[in]nameThe name given to the rate.
[in]numResonancesThe number of sets of resonance to add in addition to the non-resonant set.
[in]z1The atomic number of the target.
[in]z2The atomic number of the reactant.
[in]muThe reduced mass of the reactants in amu.

Constructor for charged particle reactions. Specifies the number of resonances as well as the charge and reduced mass of the reactants.

For charged particle reactions the non-resonant set of parameters has a0 fixed based on S(0) (See ReaclibRate::SetSFactor). The a1 term is set based on the charge and mass of the reactants in the following form:

\[ -4.2486 (Z_1^2 Z_2^2 \mu)^{1/3} \]

where $ Z_1 $ and $ Z_2 $ are the charge and $ \mu $ of the reaction reactants. The a3 through a5 terms are allowed to float and the a6 term is set to -2/3.

For narrow resonances the a0 and a1 term are set based on the resonance energy and strength (See ReaclibRate::SetResonance). The a2 through a5 terms are fixed to 0. Finally, a6 is set to -3/2.

Note
Neutron induced non-resonant reaction rates are not yet supported.

Definition at line 26 of file ReaclibRate.cpp.

Member Function Documentation

double ReaclibRate::Evaluate ( double *  t9,
double *  par 
)

Evaluates the rate at the given temperature and parameters.

Parameters
[in]t9Pointer to T9 values.
[in]parPointer to function parameters.
Returns
The reaction rate for the specified t9 value and parameters.

Evaluates the reaction by summing each set. The zeroth set is the non-resonant term while every additional set are resonant contributions. The terms are evaluated using the following equation:

\[ \sum_{n}exp\left[ a_{n,0} +\sum_{i=1}^5 a_{n,i} T_9^{2i-5/3} + a_{n,6} \ln T_9 \right] \]

where $ n $ is the set index. Typically a rate has one set for the non-resonant contribution and all subsequent sets are from narrow resonances.

Definition at line 150 of file ReaclibRate.cpp.

double ReaclibRate::GetReducedMass ( )

Returns the reduced mass, determined from the fit parameters.

Returns
The reduced mass in amu.

Extracts the reduced mass from the a2 term assuming that Z1 and Z2 are fixed.

Definition at line 109 of file ReaclibRate.cpp.

Here is the caller graph for this function:

double ReaclibRate::GetResonanceEnergy ( const unsigned int  resonanceId)

Returns the resonance energy of the specified resonance set.

Parameters
[in]resonanceIdThe ID of the resonance to query, starts at 0.
Returns
The resonance energy. If the resonance ID is invalid -1 is returned.

Extracts the resonance energy from the a1 term of the corresponding resonance set.

Definition at line 124 of file ReaclibRate.cpp.

double ReaclibRate::GetResonanceStrength ( const unsigned int  resonanceId)

Returns the resonance strength of the specified resonance set.

Parameters
[in]resonanceIdThe ID of the resonance to query, starts at 0.
Returns
The resonance strength. If the resonance ID is invalid -1 is returned.

Extracts the resonance strength from the a0 term of the corresponding resonance set using the reduced mass determined from the a2 term of the non-resonant set.

Definition at line 133 of file ReaclibRate.cpp.

Here is the call graph for this function:

double ReaclibRate::GetSFactor ( )

Returns the S-factor, S(0), determined from the fit parameters.

Returns
The S-factor in MeV-b.

Extracts the S-factor term at zero energy, S(0), from the term a0 using the reduced mass determined from a2.

Definition at line 116 of file ReaclibRate.cpp.

Here is the call graph for this function:

void ReaclibRate::SetResonance ( const unsigned int  resonanceId,
const float  energy,
const float  strength 
)

Set parameters for the specified narrow resonance.

Parameters
[in]resonanceIdThe ID of the associated resonance, begins at 0.
[in]energyThe resonance energy in MeV.
[in]strengthThe resonance strength.

Sets the terms for a resonance set. Specifically, a0 and a1 are set using the resonance strength and energy.

For narrow resonances the a0 term takes on the following form:

\[ ln[D \mu^{-3/2} \omega\gamma] \]

where $ D = 1.5394 \times 10^{11} cm^3 s^{-1} mole^{-1} MeV^{-1} $, $ \mu $ is the reactants reduced mass, and $ \omega \gamma $ is the narrow resonance strength.

The a1 term takes on the following form:

\[ -11.6045 E_r \]

where $ E_r $ is the resonance energy.

The corresponding parameters are fixed, but can be allowed to float by using the following:

ReaclibRate::SetParLimits(7 * (resonanceId + 1) + 0, 0, 0);
ReaclibRate::SetParLimits(7 * (resonanceId + 1) + 1, 0, 0);

Definition at line 98 of file ReaclibRate.cpp.

void ReaclibRate::SetSFactor ( const float  s0_MeVb)

Sets the best guess for the S-factor term S(0).

Parameters
[in]s0_MeVbThe value for the S-factor in MeV-b at energy zero, S(0).

Sets the term (a0) of the non-resonant set associated with the s-factor at energy zero, S(0). The a0 term takes the form

\[ ln[B (Z_1 Z_2 \mu)^{1/3} S(0)] \]

where $ B = 7.8318 \times 10^9 cm^3 s^{-1} mole^{-1} MeV^{-1} $, $ Z_1 $ and $ Z_2 $ are the charge of the reactants, $ \mu $ is the reduced mass of the reactants and $ S(0) $ is the value of the S-factor evaluated at an energy of zero.

The parameter is fixed, but can be allowed to float by using the following:

ReaclibRate::SetParLimits(0, 0, 0);

Definition at line 70 of file ReaclibRate.cpp.

Member Data Documentation

const float ReaclibRate::mu_amu_
private

Reduced mass of the reactants in amu.

Definition at line 78 of file ReaclibRate.hpp.


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