TkN 2.1
Toolkit for Nuclei

Explore B(E2) values

This example macro prints all known B(E2) in Weisskopf unit from ADOPTED and XUNDL datasets.

Start tkn-root, compile and execute this macro :

tkn-root
_____ _ _ | Documentation: https://tkn.in2p3.fr/
(_ _) | \ | | | Source: https://gitlab.in2p3.fr/tkn/tkn-lib
| |_ _| \| | |
| | |/ / | | Version 1.0
| | <| |\ | |
|_|_|\_\_| \_| | Database: TkN_ensdf_221101_xundl_210701_v1.0.db
tkn [0] .L list_BE2_WU.C+
tkn [1] list_BE2_WU()
10Be [ENSDF] 3.4e+03 E2 2+ (3368.0) --> 0+ (0.0) BE2W = 8.00 (0.76 ) Weisskopf
10Be [XUNDL] 3370.00 E2 2+ (3370.0) --> 0+ (0.0) BE2W = 0.000718848 (0.000023441) Weisskopf [converted]
12Be [ENSDF] 2109.00 E2 2+ (2109.0) --> 0+ (0.0) BE2W = 8.5 (1.7 ) Weisskopf
10C [ENSDF] 3353.60 E2 2+ (3353.7) --> 0+ (0.0) BE2W = 9.5 (1.5 ) Weisskopf
10C [XUNDL] 3354.00 E2 2+ (3354.0) --> 0+ (0.0) BE2W = 0.000687593 (0.000023441) Weisskopf [converted]
12C [ENSDF] 4438.94 E2 2+ (4439.8) --> 0+ (0.0) BE2W = 4.65 (0.26 ) Weisskopf
14C [ENSDF] 7010.00 [E2] 2+ (7012.0) --> 0+ (0.0) BE2W = 1.8 (0.3 ) Weisskopf
16C [XUNDL] 1766.00 E2 2+ (1766.0) --> 0+ (0.0) BE2W = 1.08 (0.30 ) Weisskopf
16C [XUNDL] 1758.00 [E2] 2+ (1758.0) --> 0+ (0.0) BE2W = 1.73 (0.30 ) Weisskopf
20C [ENSDF] 1618.00 E2 2+ (1618.0) --> 0+ (0.0) BE2W = 0.000232561 (-0.000062016 ; +0.000099226) Weisskopf [converted]
16O [ENSDF] 6915.50 [E2] 2+ (6917.1) --> 0+ (0.0) BE2W = 3.1 (0.1 ) Weisskopf
18O [ENSDF] 1982.00 E2 2+ (1982.1) --> 0+ (0.0) BE2W = 3.32 (0.09 ) Weisskopf
20O [ENSDF] 1673.60 [E2] 2+ (1673.7) --> 0+ (0.0) BE2W = 1.80 (0.07 ) Weisskopf
22O [ENSDF] 3199.00 E2 2+ (3199.0) --> 0+ (0.0) BE2W = 1.2 (0.5 ) Weisskopf
18Ne [ENSDF] 1887.00 E2 2+ (1887.3) --> 0+ (0.0) BE2W = 17.7 (1.8 ) Weisskopf
20Ne [ENSDF] 1633.60 [E2] 2+ (1633.7) --> 0+ (0.0) BE2W = 20.3 (1.0 ) Weisskopf
[...]

It also produces the following plot:

Source code :

#include "TH2F.h"
#include "TStyle.h"
#include "tkmanager.h"
#include "tknuclear_chart.h"
using namespace tkn;
void list_BE2_WU()
{
// to remove warning of emty datasets
glog.set_warnings(false);
// creation of a 2D histogram to plot the BE2 values on a nuclear chart view
tknuclear_chart* nn = nullptr;
nn = new tknuclear_chart("B(E2) (in Weisskopf unit)",tknuclear_chart::kEven,0,true);
std::cout << "*-----------------------------------------*" << std::endl;
std::cout << "* List of known B(E2) in Weisskopf unit *" << std::endl;
std::cout << "*-----------------------------------------*" << std::endl;
cout << left << setw(7) << "Nuc" << "Data " << setw(15) << "E gamma (keV)" << setw(6) << "mult" << setw(28) << "E from -> E to (keV)" << "Transition probability" << endl;
// loop on all the even-even nuclei using a lambda function as parameter of the get_nuclei method
for(const auto &nuc : gmanager->get_nuclei([](auto nuc) {return (nuc->get_z()%2==0 && nuc->get_n()%2==0);})) {
// loop on all the datasets available on the ENSDF database
for(const auto &dataset: nuc->get_level_scheme()->get_datasets()) {
// Here we ask only data comming from the aggregated adopted datasets from ensdf, and the non evaluated XUNDL datasets
bool xundl = dataset.second->get_name().contains("XUNDL");
bool adopted = dataset.second->get_name().contains("ADOPTED");
if(!(adopted || xundl)) continue;
// we extract the pointer to the level scheme
auto lev_scheme = nuc->get_level_scheme();
// and we select the selected dataset
lev_scheme->select_dataset(dataset.first);
// here we ask for (if existing) the gamma transition from the first 2+ state to the ground state
auto gamma = lev_scheme->get_decay<tkgammadecay>("2+1->0+1",false);
if(!gamma) continue;
// here we ask, if known, the BE2 value (1: electric, 2:L, 1: Weisskopf units)
auto BE2W = gamma->get_trans_prob(true,2,true);
if(BE2W<=0||std::isnan(BE2W)) continue;
// the following lines are for printing in the terminal some informations on the transition
cout << setw(6) << nuc->get_symbol();
if(xundl) cout << " [XUNDL] ";
else cout << " [ENSDF] ";
cout << setw(15) << setprecision(2) << gamma->get_energy();
cout << setw(6) <<gamma->get_multipolarity();
tkstring transname = tkstring::Form("%-4s (%-6.1f) --> %s (%2.1f)",
gamma->get_level_from()->get_spin_parity()->get_jpi_str().data(),
gamma->get_level_from()->get_energy(),
gamma->get_level_to()->get_spin_parity_str().data(),
gamma->get_level_to()->get_energy());
cout << setw(28) << transname << " :" << BE2W;
cout<<endl;
// and finally we fill the histogram with the given BE2 value in Weisskopf unit
if(adopted) nn->set_value(nuc->get_z(),nuc->get_n(),BE2W);
}
}
// we plot the 2D histogram
nn->draw();
nn->save_as("list_BE2_WU.png");
}
Stores information on a gamma-ray decay.
Definition: tkdecay.h:131
double get_trans_prob(bool _elec, int _L, bool _WU)
returns the gamma gamma transition probability value (ex: BE2 in Weiksopf units, get_trans_prob(1,...
Definition: tkdecay.cpp:262
nuclear chart plot with ROOT
void draw(bool _update_only=false)
draw the tknucleus chart
void save_as(const char *file_name)
save the nuclear chart in the file file_name
void set_value(int _zz, int _nn, double _val)
set the bin value for a given nucleus
std::string with usefull tricks from TString (ROOT) and KVString (KaliVeda) and more....
Definition: tkstring.h:54
Definition: tklog.cpp:39