-
Notifications
You must be signed in to change notification settings - Fork 4
bdata.asym
Derek Fujimoto edited this page Sep 3, 2021
·
11 revisions
This function controls how the asymmetry is calculated.
Function signature:
asym(option="", omit="", rebin=1, hist_select='', nbm=False, deadtime=0, scan_repair_options='')Usage description:
| Input | Type | Description |
|---|---|---|
option |
string | Controls what kind of asymmetry is calculation. See below section for details. |
option |
string | Controls what kind of asymmetry is calculation. See below section for details. |
option |
string | Controls what kind of asymmetry is calculation. See below section for details. |
option: see below for details
omit: mode 1 bins to omit if space seperated string in
options is not feasible. See options
description below.
rebin: Weighted average over 'rebin' bins to
reduce array length by a factor of rebin.
hist_select: string to specify which histograms get combined
into making the asymmetry calculation.
Deliminate with [, ] or [;]. Histogram names
cannot therefore contain either of these
characters.
nbm: if True, use neutral beams in calculations
deadtime: detector deadtime used to correct counter values
(s)
scan_repair_options:string with format "%d:%s:%s"
dictates treatment options for scans. All values
are optional and the order is irrelevant.
possible ":"-deliminated values:
int: use this many bins on either end of
each scan to estimate the baseline
slope on a scan-by-scan basis. Apply
baseline slope correction.
default: don't correct the baseline
'omit': add this optional keyword to exclude
the last scan in the series, if
incomplete
default: include all scans
'overcorrect':add this optional keyword to
include an overcorrection to the
baseline slopes in order to ensure
that the final scan-combined
asymmetry has a flat baseline
default: flatten on a scan-by-scan
basis
'scan_sum' or 'scan_mean': dictate how
scans are combined. Functions are
applied to raw counts, not asym.
Default: scan_sum
Asymmetry calculation outline (with default detectors) ---------------
Split helicity (NMR): (F-B)/(F+B) for each
Combined helicity (NMR): (r-1)/(r+1)
where r = sqrt([(B+)(F-)]/[(F+)(B-)])
Split counter (NMR): (+ - -)/(+ + -) for each F, B
Split helicity (NQR): (R-L)/(R+L) for each
Combined helicity (NQR): (r-1)/(r+1)
where r = sqrt([(L+)(R-)]/[(R+)(L-)])
Split counter (NMR): (+ - -)/(+ + -) for each R, L
Alpha diffusion (NQR) sum(AL0)/sum(L+R)
Alpha tagged (NQR) same as NQR, but using the tagged counters
Histogram Selection ---------------------------------------------------
If we wished to do a simple asymmetry calculation in the form of
(F-B)/(F+B)
for each helicity, then
|--| |--| paired counter location
hist_select = 'F+, F-, B+, B-'
|-----| paired helicities
|-----|
for alpha diffusion calculations append the two alpha counters
hist_select = 'R+, R-, L+, L-, A+, A-
for alpha tagged calculations do the following
hist_select = 'R+, R-, L+, L-, TR+, TR-, TL+, TL-, nTR+, nTR-, nTL+, nTL-'
where TR is the right counter tagged (coincident) with alphas,
TL is the left counter tagged with alphas,
nTR is the right counter tagged with !alphas (absence of),
nLR is the right counter tagged with !alphas,
Status of Data Corrections --------------------------------------------
MODE 2 (TD):
Removes prebeam bins.
Provides the option of deadtime correction. Set to zero to disable.
Rebinning:
returned time is average time over rebin range
returned asym is weighted mean
MODE 1 (TI):
Allows manual removal of unwanted bins.
Provides the option of deadtime correction. Set to zero to disable.
Baseline correction:
Fit the baseline on a scan-by-scan basis with a linear line
and subtract from the data to flatten. Add back the
baseline average pre-flatten to keep baseline value
approximately the same. Requires removal of incomplete scans
Remove incomplete scans.
Scan Combination:
Multiscans are considered as a single scan with long
integration time. Histogram bins are summed according to
their frequency bin, errors are Poissonian.
In the case of split counter asymmetries, we take the mean
of the non-zero counts in each bin, with errors treated still
as Possionian.
2E:
Prebeam bin removal.
Postbeam bin removal. Assumes beamoff time is 0.
Splits saved 1D histograms into 2D.
Deadtime corrections are not yet available for this mode.
Asymmetry calculations:
raw: calculated through differences method (as described in
the asymmetry calculation outline)
dif: let 0 be the index of the centermost scan in time. dif
asymmetries are then calculated via raw[i+1]-raw[i-1],
where "raw" is as calculated in the above line, for each
of the three types: +, -, combined
sl: take a weighted least squares fit to the two bins prior
and the two bins after the center bin (in time). For
each find the value of the asymmetry at the center time
position. Take the difference: post-prior
Option List
MODE 2 DESCRIPTIONS -----------------------------------------------
"": dictionary of 2D numpy arrays keyed by
{"p", "n", "c", "time_s"} for each helicity and combination
(val, err). Default return state for unrecognized options
"h": dictionary 2D numpy arrays keyed by {"p", "n", "time_s"} for
each helicity (val, err).
"p": 2D np array of up helicity state [time_s, val, err].
"n": 2D np array of down helicity state [time_s, val, err].
"f": 2D np array of forward counter [time_s, val, err].
"b": 2D np array of backward counter [time_s, val, err].
"l": 2D np array of left counter [time_s, val, err].
"r": 2D np array of right counter [time_s, val, err].
"c": 2D np array of combined asymmetry [time_s, val, err].
"ad": 2D np array of alpha diffusion ratio [time_s, val, err].
"at": dictionary of alpha tagged asymmetries key:[val, err].
Keys:
'time_s' : 1D array of times in seconds
'p_wiA', 'n_wiA', 'c_wiA': coincident with alpha
'p_noA', 'n_noA', 'c_noA': coincident with no alpha
'p_noT', 'n_noT', 'c_noT': untagged
where p, n, c refer to pos helicity, neg helicity, combined
helicity respectively. Only in 2h mode.
MODE 1 DESCRIPTIONS -----------------------------------------------
all options can include a space deliminated list of bins or
ranges of bins which will be omitted. ex: "raw 1 2 5-20 3"
"": dictionary of 2D numpy arrays keyed by {p, n, c, freq} for each
helicity and combination [val, err]. Default return state
for unrecognized options.
"r": Dictionary of 2D numpy arrays keyed by {p, n} for each
helicity (val, err), but listed by bin, not combined by
frequency.
"rs": Dictionary of 2D numpy arrays keyed by {p, n} for each
helicity (val, err), but listed by bin, not combined by
frequency. Split into scans.
"h": get unshifted +/- helicity scan-combined asymmetries as a
dictionary {'p':(val, err), 'n':(val, err), 'freq'}
"p": get pos helicity states as tuple, combined by frequency
(freq, val, err)
"n": similar to p but for negative helicity states
"f": similar to p but for forward counter
"b": similar to p but for backward counter
"l": similar to p but for left counter
"r": similar to p but for right counter
"c": get combined helicity states as tuple (freq, val, err)
2E DESCRIPTIONS ---------------------------------------------------
"sc": get slope combined helicity states as tuple (freq, val, err)
"dc": get difference combined helicity states as tuple (freq, val, err)
"rc": get raw combined helicity states as tuple (freq, time, val, err)
If no options, returns a dictionary with the keys:
'dif_p': [val, err][frequency] of pos. helicity asymmetry
'dif_n': [ve][f] of negative helicity asymmetry
'dif_c': [ve][f] of combined helicity asymmetry
'raw_p': [ve][f][time] raw asymmetries of each time bin. Pos hel.
'raw_n': [ve][f][t] negative helicity.
'raw_c': [ve][f][t] combined helicity
'freq': [f] frequency values
'time': [t] time bin values
'sl_p': [ve][f] pos. hel. of asymmetry calcuated through slopes
of pre and post middle time bin. Slope method only
for >= 5 time bins, corresponds to >= 3 RF on delays
'sl_n': [ve][f] negative helicity.
'sl_c': [ve][f] combined helicity.
"""