radsafer

CRAN status

Overview

The radsafer package was developed to provide:

Families of functions

Related functions are identified as members of these families:

Decay Correction Functions

Radsafer includes several functions to manage radioactive decay corrections:

dk_correct provides decay-correction of single radionuclides. (Radioactive in-growth is not accounted for.)

Usage Examples

Use the radionuclide library to find the half-life
dk_correct(RN_select = "Sr-90",
           date1 = "2015-01-01", #Original activity date
           date2 = c("2025-01-01","2035-01-01"), #Decay to these dates
           A1 = 10000) #Original activity (arbitrary units)
#>     RN half_life units decay_mode
#>  Sr-90     28.79     y         B-
#> 
#>     RN RefValue    RefDate   TargDate dk_value
#>  Sr-90    10000 2015-01-01 2025-01-01 7860.079
#>  Sr-90    10000 2015-01-01 2035-01-01 6178.491
Enter your own half-life
dk_correct(half_life = 10, #10 something - need unit
           time_unit = "y",#unit is years
           date1 = "2010-01-01") #original date is identified 
#>  half_life RefValue    RefDate   TargDate  dk_value
#>         10        1 2010-01-01 2026-07-14 0.3179556
# Since date2 is not identified, it defaults to the computer's system date "today".
Reverse usage is no problem - find out activity at a past date
dk_correct(RN_select = "Cs-137", 
           date1 = "2026-01-01", #known activity on this date
           date2 = c("2016-01-01","2006-01-01"), #find activity on these earlier dates
           A1 = 3000) #original activity (arbitrary units)
#>      RN half_life units decay_mode
#>  Cs-137   30.1671     y         B-
#> 
#>      RN RefValue    RefDate   TargDate dk_value
#>  Cs-137     3000 2026-01-01 2016-01-01 3775.032
#>  Cs-137     3000 2026-01-01 2006-01-01 4749.991
Other decay functions:
dk_time(half_life = 5730, A0 = 14, A1 = 1)
#> [1] 21816.14
  
RN_find_parent("Po-210")
#>       RN
#> 1 At-210
#> 2 Bi-210

Extract radionuclide data from RadData

Plot an emission spectrum

RN_plot_spectrum(
  desired_RN = c("Pu-238", "Pu-239", "Am-241"), rad_type = "A",
  photon = FALSE, prob_cut = 0.01, log_plot = 0)


RN_plot_spectrum(
     desired_RN = c("Sr-90", "Y-90"), rad_type = "B-")


RN_plot_spectrum(desired_RN = c("Co-60", "Ba-137m"), rad_type = "G")

Search by alpha, beta, photon or use the general screen option.

# tight energy limits around 1 MeV
search_results <- RN_search_phot_by_E(E_min = 0.99, 
                    E_max = 1.01, 
# half-life between 13 and 15 minutes (convert from seconds)
                    min_half_life_seconds = 13 * 60, 
                    max_half_life_seconds = 15 * 60, 
# only branches with probabilities >= 10%
                    min_prob = 0.1)

RN_plot_spectrum(desired_RN = search_results$RN, rad_type = "G", prob_cut = 0.1)
#> [1] "No matches"

radiation monitoring

disk_to_disk_solid_angle(r.source = 45/2, gap = 20, r.detector = 12.5, runs = 1e4, plot.opt = "2d")

#>    mean_eff         SEM
#>  0.05132699 0.002208406

scaler_sim(true_bkg = 50, true_samp = 10, ct_time = 20, trials = 1e5)


rate_meter_sim(cpm_equilibrium = 270, meter_scale_increments = seq(100, 1000, 20))

functions to help with radiation transport modeling

mcnp_sdef_erg_line("Co-60", photon = TRUE, cut = 0.01, erg.dist = 13)
#> # A tibble: 6 × 6
#>   RN    code_AN E_MeV     prob code_num is_photon
#>   <chr> <chr>   <dbl>    <dbl>    <dbl> <lgl>    
#> 1 Co-60 G       0.347 0.000075        1 TRUE     
#> 2 Co-60 G       0.826 0.000076        1 TRUE     
#> 3 Co-60 G       1.17  0.998           1 TRUE     
#> 4 Co-60 G       1.33  1.000           1 TRUE     
#> 5 Co-60 G       2.16  0.000012        1 TRUE     
#> # ℹ 1 more row

mcnp_matrix_rotations("z", 30)
#> [1]  0.8660254  0.5000000  0.0000000 -0.5000000  0.8660254  0.0000000
#> [7]  0.0000000  0.0000000  1.0000000

Getting help

If you encounter a clear bug, please file an issue with a minimal reproducible example on GitHub.