scipp / scipp/ess

Flipper efficiencies assumed to be scalar

Open
#410 3 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

esspolarization
Dominant language
Python
Stars
1
Forks
3
Avg merge
2d 11h
Merged PRs (30d)
17

Description

The FlipperEfficiency.value member is a float, and it's assumed that it is a float when we use it here.

Is it physically correct that the flipper efficiency cannot depend on wavelength?

In the case of polarization correction for reflectometry that I'm currently working on this becomes a problem. The problem happens because the calibration step doesn't produce a flipper efficiency $f$ directly. Instead it produces two polarization efficiencies, called $P_{+}$ and $P_{-}$ one for each of the two flipper states, for the combined effect of the polarizing component and the associated flipper.

That is, instead of representing the polarization efficiency of the component using the two variables $P, f$ we use the two variables $P_{\pm}$.
In principle we can translate between the two different ways of viewing it, like this:

$$
P_{+} = P
$$
$$
P_{-} = P(2f-1)
$$

$$
\implies f = (P_{+} + P_{-}) / 2 P_{+}
$$

$P_\pm$ are dependent on wavelength and potentially on detector pixel, and if we use the above expression to compute $f$ it will also depend on wavelength and detector pixel.

How to solve?

  • If it is the case that the flipper efficiency is independent of wavelength and other event coordinates then it might make sense to try to determine the flipper efficiency from $P_{\pm}$ averaging (in some way) $(P_{+} + P_{-}) / 2 P_{+}$ over wavelength and detector pixel. I've checked this with the IDS, the flipper efficiency can be wavelength dependent.
  • If it is reasonable that the flipper efficiency is wavelength dependent then we should change the code to reflect that.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with src/ess/polarization/correction.py at the use of FlipperEfficiency.value around lines 42-44, then trace how calibration represents the wavelength- and detector-dependent P+ and P- values. The work is done when the polarization correction can represent the documented dependence without assuming a scalar flipper efficiency, with behavior checked against the stated calibration relationship.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
data
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.