## ----setup, include=FALSE----------------------------------------------------- knitr::opts_chunk$set( collapse = TRUE, message = FALSE, comment = "#>", out.width = NULL ) ## ----packages----------------------------------------------------------------- library(gamma) ## ----import------------------------------------------------------------------- # Automatically skip the first channels # Import a CNF file cnf_test <- system.file("extdata/LaBr.CNF", package = "gamma") (spc_cnf <- read(cnf_test)) # Import a TKA file tka_test <- system.file("extdata/LaBr.TKA", package = "gamma") (spc_tka <- read(tka_test)) # Import all files in a given directory files_test <- system.file("extdata", package = "gamma") (spc <- read(files_test)) ## ----inspect, fig.width=7, fig.height=5, fig.align="center"------------------- # Plot CNF spectrum plot(spc_cnf) + ggplot2::theme_bw() ## ----slice-------------------------------------------------------------------- # Use a square root transformation sliced <- signal_slice(spc_tka) ## ----stabilize---------------------------------------------------------------- # Use a square root transformation transformed <- signal_stabilize(sliced, f = sqrt) ## ----smoothing---------------------------------------------------------------- # Use a 21 point Savitzky-Golay-Filter to smooth the spectrum smoothed <- signal_smooth(transformed, method = "savitzky", m = 21) ## ----baseline-estimate, fig.width=7, fig.height=5, fig.align="center"--------- # Estimate the baseline of a single file baseline <- signal_baseline(smoothed, method = "SNIP", decreasing = TRUE) # Plot spectrum + baseline plot(smoothed, baseline) + ggplot2::labs(title = "Spectrum + baseline") + ggplot2::theme_bw() ## ----baseline-remove, fig.width=7, fig.height=5, fig.align="center"----------- # Substract the estimated baseline corrected <- smoothed - baseline # Or, remove the baseline in one go # corrected <- removeBaseline(smoothed) # Plot the corrected spectrum plot(corrected) + ggplot2::labs(title = "Baseline-corrected spectrum") + ggplot2::theme_bw() ## ----baseline-remove-multi, eval=FALSE---------------------------------------- # # You can remove the baseline of multiple spectra in one go # # Note that the same parameters will be used for all spectra # clean <- signal_correct(spc) ## ----peak-detection----------------------------------------------------------- # Detect peaks in a single file peaks <- peaks_find(corrected) # Plot spectrum + peaks plot(corrected, peaks) + ggplot2::labs(title = "Peaks") + ggplot2::theme_bw() ## ----calibrate-fit, fig.width=7, fig.height=5, fig.align="center"------------- # Set the energy values (in keV) set_energy(peaks) <- c(238, NA, NA, NA, 1461, NA, NA, 2615) peaks # Calibrate the spectrum using the peak positions scaled <- energy_calibrate(spc_tka, peaks) # Plot the spectrum plot(scaled, xaxis = "energy") + ggplot2::labs(title = "Calibrated spectrum") + ggplot2::theme_bw() ## ----calibrate-fixed---------------------------------------------------------- # Create a list of channel-enegy pairs calib_lines <- list( channel = c(84, 492, 865), energy = c(238, 1461, 2615) ) # Calibrate the spectrum using these fixed lines scaled2 <- energy_calibrate(spc_tka, lines = calib_lines) ## ----pipe, fig.width=7, fig.height=5, fig.align="center", fig.show="hold"----- # Spectrum pre-processing and peak detection pks <- spc_tka |> signal_slice() |> signal_stabilize(f = sqrt) |> signal_smooth(method = "savitzky", m = 21) |> signal_correct(method = "SNIP", decreasing = TRUE, n = 100) |> peaks_find() # Set the energy values (in keV) set_energy(pks) <- c(238, NA, NA, NA, 1461, NA, NA, 2615) # Calibrate the energy scale cal <- energy_calibrate(spc_tka, pks) # Plot spectrum plot(cal, pks) + ggplot2::theme_bw() ## ----dose-rate-curves, eval=FALSE--------------------------------------------- # # Load one of the built-in curves # data(BDX_LaBr_1) # IRAMAT-CRP2A (Bordeaux) # data(AIX_NaI_1) # CEREGE (Aix-en-Provence)