## 2.2 Signal analyses

### 2.2.1 Curve Deconvolution

Before calculating the equivalent doses for each aliquot it may be useful to estimate the photoionisation cross sections of some of the OSL curves. The example `*.bin`

file includes standard continous-wave OSL curves as well as linearly modulated OSL curves. This allows us to use both the functions `fit_CWCurve()`

and `fit_LMCurve()`

and to compare their results.

First, we will begin with the LM-OSL curves, which are named “RBR” in the `*.bin`

file. For the sake of briefness we focus on one aliquot and one curve.

```
# LM-OSL curve of the second aliquot
lm_curve <- get_RLum(subset(rlum[[3]], LTYPE == "RBR"))
lm_fit <- fit_LMCurve(values = lm_curve,
n.components = 3,
fit.method = "LM",
LED.power = 30,
LED.wavelength = 470)
```

```
##
## [fit_LMCurve()]
##
## Fitting was done using a 3-component function:
##
## xm.1 xm.2 xm.3 Im.1 Im.2 Im.3
## 18.342407 146.914692 701.057433 162.076721 9.926817 60.606545
##
## (equation used for fitting according Kitis & Pagonis, 2008)
## ------------------------------------------------------------------------------
## (1) Corresponding values according the equation in Bulur, 1996 for b and n0:
##
## b1 = 2.972264e+00 +/- NA
## n01 = 4.901446e+03 +/- NA
##
## b2 = 4.633077e-02 +/- NA
## n02 = 2.404487e+03 +/- NA
##
## b3 = 2.034664e-03 +/- NA
## n03 = 7.005197e+04 +/- NA
##
## cs from component.1 = 4.187e-17 cm^2 >> relative: 1
## cs from component.2 = 6.527e-19 cm^2 >> relative: 0.0156
## cs from component.3 = 2.866e-20 cm^2 >> relative: 7e-04
##
## (stimulation intensity value used for calculation: 7.098105e+16 1/s 1/cm^2)
## (errors quoted as 1-sigma uncertainties)
## ------------------------------------------------------------------------------
##
## pseudo-R^2 = 0.8532
```

We can see the photoionisation cross-sections in the console output or get from the output object.

```
lm_df <- get_RLum(lm_fit)
cat(" cs1: ", lm_df$cs1, "\n",
"cs2: ", lm_df$cs2, "\n",
"cs3: ", lm_df$cs3)
```

```
## cs1: 4.187405e-17
## cs2: 6.527203e-19
## cs3: 2.86649e-20
```

We now want to compare these values with the cross sections obtained from fitting CW-OSL curves. Again, we will only focus on one randomly chosen OSL curve here.

```
# Fifth CW-OSL curve of the third aliquot
cw_curve <- get_RLum(subset(rlum[[3]], LTYPE == "OSL"))[[5]]
cw_fit <- fit_CWCurve(values = cw_curve,
n.components.max = 3,
fit.method = "LM",
LED.power = 30,
LED.wavelength = 470)
```

```
##
## [fit_CWCurve()]
##
## Fitting was finally done using a 3-component function (max=3):
## ------------------------------------------------------------------------------
## y ~ I0.1 * lambda.1 * exp(-lambda.1 * x) + I0.2 * lambda.2 * exp(-lambda.2 * x) + I0.3 * lambda.3 * exp(-lambda.3 * x)
##
## I0 I0.error lambda lambda.error cs cs.rel
## c1 3751.3428 NA 4.75949137 NA 6.705299e-17 1.0000
## c2 805.6833 NA 1.27070518 NA 1.790203e-17 0.2670
## c3 6856.1207 NA 0.01171049 NA 1.649805e-19 0.0025
## ------------------------------------------------------------------------------
## pseudo-R^2 = 0.9999
```

To compare the results side-by-side we do the following:

```
cw_df <- get_RLum(cw_fit)
fit_cmp <- data.frame(lm = c(lm_df$cs1, lm_df$cs2, lm_df$cs3),
cw = c(cw_df$cs1, cw_df$cs2, cw_df$cs3))
print(fit_cmp)
```

```
## lm cw
## 1 4.187405e-17 6.705299e-17
## 2 6.527203e-19 1.790203e-17
## 3 2.866490e-20 1.649805e-19
```

We can see that the estimated photoionisation cross-section differ significantly, but at least to a certain degree this is to be expected. We will conclude this section by calculating the cross-sections for **all** curves of the third aliquot to get an idea of the variation in cross-sections in relation to which OSL curve in the SAR sequence we choose.

```
cw_curves <- get_RLum(subset(rlum[[3]], LTYPE == "OSL"))
cw_fits <- lapply(cw_curves, function(x) {
fit_CWCurve(values = x,
n.components.max = 3,
LED.power = 30,
LED.wavelength = 470,
plot = FALSE,
output.terminal = FALSE)
})
cw_df <- do.call(rbind, lapply(cw_fits, get_RLum))
print(data.frame(cs1 = cw_df$cs1, cs2 = cw_df$cs2, cs3 = cw_df$cs3))
```

```
## cs1 cs2 cs3
## 1 7.322933e-17 3.859775e-17 1.866048e-19
## 2 6.597191e-17 1.589718e-17 8.815001e-20
## 3 5.906354e-17 2.091400e-19 NA
## 4 6.820000e-17 2.434604e-17 1.128228e-19
## 5 6.188075e-17 3.535824e-19 NA
## 6 6.254661e-17 1.122788e-17 7.114983e-20
## 7 6.264612e-17 4.890416e-19 NA
## 8 5.723646e-17 1.483482e-19 NA
## 9 6.975882e-17 1.756716e-17 2.524862e-19
## 10 6.181046e-17 7.165776e-18 8.910884e-20
## 11 8.654528e-17 6.821781e-18 5.503551e-20
## 12 6.394950e-17 1.018651e-17 8.367138e-20
## 13 6.123000e-17 2.766032e-19 NA
## 14 6.860315e-17 1.751772e-17 9.999167e-20
```

```
plot(x = 1:nrow(cw_df), y = cw_df$cs1, col = "red", type = "l",
ylim = c(1e-22, 1e-16), log = "y")
points(x = 1:nrow(cw_df), y = cw_df$cs2, col = "green", type = "l")
points(x = 1:nrow(cw_df), y = cw_df$cs3, col = "blue", type = "l")
```

### 2.2.2 Fast ratio

Another way to characterise OSL curves is by calculating the fast ratio after Durcan & Duller (2011), which can easily be done using the function `calc_FastRatio()`

.

```
osl_curves <- subset(rlum[[3]], LTYPE == "OSL")
fr <- lapply(osl_curves, function(x) {
calc_FastRatio(object = x,
stimulation.power = 37,
wavelength = 470,
fitCW.sigma = TRUE,
plot = FALSE,
verbose = FALSE)
})
fr_df <- do.call(rbind, get_RLum(fr))
plot(x = 1:nrow(fr_df), y = fr_df$fast.ratio, type = "l")
```

### 2.2.3 NR(t) plots

A rarely used method to graphically visualise the relative rates of signal decay is to produce natural/regenerated signal vs time (NR(t)) plot after Steffen et al. 2009. Before using this function, however, we need to remove all the OSL curves of the test dose signals. Subsetting the `RLum.Analysis`

is not a viable option this time, however, as a `*.bin`

file does not contain the relevant information to properly identify the test dose curves (at least if not explicitly set in the Sequence Editor). The easier approach would be to just remove every second curve from the `RLum.Analysis`

object.

```
natreg <- get_RLum(osl_curves)[seq(from = 1, to = length(osl_curves), by = 2)]
str(natreg, max.level = 1)
```

```
## List of 7
## $ :Formal class 'RLum.Data.Curve' [package "Luminescence"] with 7 slots
## $ :Formal class 'RLum.Data.Curve' [package "Luminescence"] with 7 slots
## $ :Formal class 'RLum.Data.Curve' [package "Luminescence"] with 7 slots
## $ :Formal class 'RLum.Data.Curve' [package "Luminescence"] with 7 slots
## $ :Formal class 'RLum.Data.Curve' [package "Luminescence"] with 7 slots
## $ :Formal class 'RLum.Data.Curve' [package "Luminescence"] with 7 slots
## $ :Formal class 'RLum.Data.Curve' [package "Luminescence"] with 7 slots
```

With `get_RLum()`

we first extract all of the OSL curves in the `RLum.Analysis`

object. Inside of the `[]`

operator we select only the odd numbered curves by creating a sequence (`seq()`

) of odd numbers from 1 to the max number of stored OSL curves.

Note that the new variable `natreg`

is no longer an object of class `RLum.Analysis`

, but a `list`

of `RLum.Data.Curve`

^{3}. This is because we extracted (`get_RLum()`

) the curves rather than modifying the object in place. This is ok for us, as the details section in `plot_NRt()`

states that it will also accept a `list`

of `RLum.Data.Curve`

objects.

`plot_NRt(natreg, log = "x", smooth = "rmean", k = 3)`

In a NR(t) plot the signal of each channel of the natural curve is divided by the corresponding signal in the same channel of a regenerative dose. To account for the obvious difference in brightness (dose dependency) each curve is normalised to its initial signal, so the deviation from unity when dividing the signals per channel is a direct reflection of the differences in the decay rate. In this example each curve is follow the area below unity, which means that the natural signal decays faster than the regenerated signals.

An

`RLum.Analysis`

object is basically only a container for a number of`RLum.Data.Curve`

objects.↩