Learn R Programming

Luminescence (version 1.3.0)

calc_OSLLxTxRatio: Calculate Lx/Tx ratio for CW-OSL curves

Description

Calculate Lx/Tx ratios from a given set of CW-OSL curves assuming late light background subtraction.

Usage

calc_OSLLxTxRatio(
  Lx.data,
  Tx.data = NULL,
  signal_integral = NULL,
  background_integral = NULL,
  signal_integral_Tx = NULL,
  background_integral_Tx = NULL,
  integral_input = c("channel", "measurement"),
  background.count.distribution = c("non-poisson", "poisson"),
  use_previousBG = FALSE,
  sigmab = NULL,
  od_rates = NULL,
  sig0 = 0,
  digits = NULL,
  ...
)

Value

Returns an S4 object of type RLum.Results.

Slot data contains a list with the following structure:

@data

$LxTx.table (data.frame)
.. $ LnLx
.. $ LnLx.BG
.. $ TnTx
.. $ TnTx.BG
.. $ Net_LnLx
.. $ Net_LnLx.Error
.. $ Net_TnTx
.. $ Net_TnTx.Error
.. $ SN_RATIO_LnLx,
.. $ SN_RATIO_TnTx,
.. $ LxTx
.. $ LxTx.Error
$calc.parameters (list)
.. $ sigmab.LnTx
.. $ sigmab.TnTx
.. $ k
.. $ od_rates

@info

$ call (original function call)

Arguments

Lx.data

RLum.Data.Curve, data.frame, list (required): requires a CW-OSL shine down curve (x = time, y = counts). Data can also be provided as a list.

Tx.data

RLum.Data.Curve or data.frame (optional): requires a CW-OSL shine down curve (x = time, y = counts). If no input is given the Tx.data will be treated as NA and no Lx/Tx ratio is calculated. When Lx.data is a list, it must be provided as a list of the same length.

signal_integral

integer (required): vector of channels for the signal integral. If set to NA (alternate mode), no integrals are taken into account and their settings are ignored.

background_integral

integer (required): vector of channels for the background integral. If set to NA, no background integral is subtracted; in this case, sigmab.LnLx (unless manually set) and the signal-to-noise ratio for Ln/Lx will be NA.

signal_integral_Tx

integer (optional): vector of channels for the signal integral for the Tx curve. If NULL, the signal_integral vector is used.

background_integral_Tx

integer (optional): vector of channels for the background integral for the Tx curve. If NULL, the background_integral vector is used. If set to NA, no background integral for the Tx curve is subtracted; in this case, sigmab.TxTx (unless manually set) and the signal-to-noise ratio for Tn/Tx will be NA.

integral_input

character (with default): input type for signal_integral, one of "channel" (default) or "measurement". If set to "measurement", the best matching channels corresponding to the given time/temperature range are selected.

background.count.distribution

character (with default): sets the count distribution assumed for the error calculation. Possible arguments are "poisson" or "non-poisson" (default). See details for further information. It is ignored if od_rates is provided.

use_previousBG

logical (with default): If set to TRUE the background of the Lx-signal is subtracted also from the Tx-signal. Please note that in this case separate signal integral limits for the Tx-signal are not allowed and will be reset.

sigmab

numeric (optional): option to set a manual value for the overdispersion (for LnTx and TnTx), used for the Lx/Tx error calculation. The value should be provided as absolute squared count values, e.g. sigmab = c(300,300). Despite its name it is an additional variance (above Poisson variance), not a dispersion. Note: If only one value is provided this value is taken for both (LnTx and TnTx) signals.

od_rates

numeric (optional): a vector of three elements: the dark count rate (or background count rate), the background count overdispersion, and the photon count overdispersion. If set, an alternative way of computing the overdispersion will be used (see details). It is ignored (with a warning) if sigmab is provided.

sig0

numeric (with default): allow adding an extra component of error to the final Lx/Tx error value (e.g., instrumental error, see details).

digits

integer (with default): round numbers to the specified digits. If set to NULL no rounding occurs.

...

currently not used.

Function version

0.9.8

How to cite

Kreutzer, S., Colombo, M., Bluszcz, A., 2026. calc_OSLLxTxRatio(): Calculate Lx/Tx ratio for CW-OSL curves. Function version 0.9.8. In: Kreutzer, S., Burow, C., Dietze, M., Fuchs, M.C., Schmidt, C., Fischer, M., Friedrich, J., Mercier, N., Philippe, A., Riedesel, S., Autzen, M., Mittelstrass, D., Gray, H.J., Galharret, J., Colombo, M., Steinbuch, L., Boer, A.d., Bluszcz, A., 2026. Luminescence: Comprehensive Luminescence Dating Data Analysis. R package version 1.3.0. https://r-lum.github.io/Luminescence/

Author

Sebastian Kreutzer, F2.1 Geophysical Parametrisation/Regionalisation, LIAG - Institute for Applied Geophysics (Germany)
Marco Colombo, Institute of Geography, Heidelberg University (Germany)
Andrzej Bluszcz, Silesian University of Technology, Gliwice (Poland)
, RLum Developer Team

Details

The function checks the integrity of the values chosen for the signal and background integrals; the signal integral limits have to be lower than the background integral limits. If a vector is given as input instead of a data.frame, an artificial data.frame is produced.

The error calculation is done according to Galbraith (2002, 2014) or to Bluszcz et a. (2015) depending on the presence of od_rates argument.

Please note: In cases where the calculation results in NaN values (for example due to zero-signal, and therefore a division of 0 by 0), these NaN values are replaced by 0.

background.count.distribution

This argument allows selecting the distribution assumption that is used for the error calculation. According to Galbraith (2002, 2014) the background counts may be overdispersed (i.e. not follow a Poisson distribution, which is assumed for the photomultiplier counts). In that case (might be the normal case) the overdispersion has to be accounted for by estimating \(\sigma_B^2\) (i.e. the overdispersion value). Therefore the relative standard error is calculated as:

  • poisson $$rse(\mu_{S}) \approx \sqrt{(Y_{0} + Y_{1}/k^2) / (Y_{0} - Y_{1}/k)} $$

  • non-poisson $$rse(\mu_{S}) \approx \sqrt{(Y_{0} + Y_{1}/k^2 + \sigma_B^2(1+1/k)) / (Y_{0} - Y_{1}/k)} $$

If background_integral = NA, then in both cases the relative standard error simplifies to:

$$rse(\mu_{S}) \approx \sqrt{Y_{0}} / Y_{0}$$

sigmab

The default value of sigmab (\(\sigma_B^2\)) is calculated assuming the background is constant and would not be applicable when the background varies, e.g., as observed for the early light subtraction method.

Note: When using the early background subtraction method in combination with the 'non-poisson' distribution argument, the corresponding Lx/Tx error may considerably increase due to a high sigmab value. Please check whether this is valid for your data set; if necessary, consider providing a custom value using the sigmab argument.

od_rates

Setting the od_rates argument activates the error calculation according to Bluszcz et al. (2015). The argument expects a 3-element vector:

  • B_DC is the PMT-specific dark count rate as pulses per second (not per channel)

  • k_DC is the PMT-specific dispersion excess factor for dark counts

  • k_ph is the PMT-specific dispersion excess factor for photon counts

The dark count rate and the dispersion excess factors have to be known in advance, and can be obtained by direct experiments performed in laboratory conditions, essentially the same as the routine measurement conditions (for examples see: Bluszcz et al. (2015), Carter et al. (2018)). The photon count overdispersion \(k_{ph}\) needs a photon source with a constant photon emission rate and independent photon emissions (so the number of photons emitted in a fixed time is a Poisson variable). Note that \(B_{DC}\) must be non-negative, while \(k_{DC}\) and \(k_{ph}\) must be positive (for readers with no pulse divider, they should be greater or equal to 1).

Under the assumption of statistically independent background (\(N_{DC}\)) and photon counts (\(N_{ph}\)), the total number of counts (say, a certain integral \(N\) of the OSL curve over time \(t\)) is:

$$N = N_{ph} + N_{DC}$$

and has the following variance:

$$ s^2(N) = k_{ph}^2 N_{ph} + K_{DC}^2 N_{DC} = k_{ph}^2 (N - B_{DC} t) + k_{DC}^2 B_{DC} t = k_{ph}^2 N + (k_{DC}^2 - k_{ph}^2) B_{DC} t $$

The LnLx.Error and TnTx.Error are computed as \(\sqrt{s^2(N)}\).

sig0

This argument allows adding an extra component of error to the final Lx/Tx error value. The input will be treated as a factor that is multiplied by the already calculated LxTx and the result is added according to:

$$se(LxTx) = \sqrt{se(LxTx)^2 + (LxTx * sig0)^2}$$

SN_RATIO_LnLx and SN_RATIO_TnTx

For convenience, the function returns the signal-to-noise ratio (SN_RATIO) for the LnLx and the TnTx curves. This is simply the signal divided by the background signal counts normalised to the k value (see below).

References

Duller, G., 2018. Analyst v4.57 - User Manual. https://users.aber.ac.uk/ggd

Galbraith, R.F., 2002. A note on the variance of a background-corrected OSL count. Ancient TL, 20 (2), 49-51. tools:::Rd_expr_doi("10.26034/la.atl.2002.348")

Galbraith, R.F., 2014. A further note on the variance of a background-corrected OSL count. Ancient TL, 31 (2), 1-3. tools:::Rd_expr_doi("10.26034/la.atl.2014.477")

Bluszcz, A., Adamiec, G., Herr, A., 2015. Estimation of equivalent dose and its uncertainty in the OSL SAR protocol when count numbers do not follow a Poisson distribution. Radiation Measurements 81, 46-54. tools:::Rd_expr_doi("10.1016/j.radmeas.2015.01.004")

Carter, J., Cresswell, A.J., Kinnaird, T.C., Carmichael, L.A., Murphy, S., Sanderson, D.C.W., 2018. Non-Poisson variations in photomultipliers and implications for luminescence dating. Radiation Measurements 120, 267-273. tools:::Rd_expr_doi("10.1016/j.radmeas.2018.05.010")

See Also

RLum.Data.Curve, fit_DoseResponseCurve, analyse_SAR.CWOSL

Examples

Run this code

##load data
data(ExampleData.LxTxOSLData, envir = environment())

##calculate Lx/Tx ratio
results <- calc_OSLLxTxRatio(
 Lx.data = Lx.data,
 Tx.data = Tx.data,
 signal_integral = 1:2,
 background_integral = 85:100)

##get results object
get_RLum(results)

Run the code above in your browser using DataLab