## Bug #2416

### Polarization: Fix treatment of imperfect analyzers

Status: | Backlog | Start date: | 20 Nov 2019 | |
---|---|---|---|---|

Priority: | Normal | Due date: | ||

Assignee: | - | % Done: | 0% | |

Category: | Reflectometry & GISAS | |||

Target version: | - |

**Description**

Currently the analyzer operator used in BornAgain is written (in latex notation) as

a = t (1 + \xi \sigma p).

Here t is the transmission, \xi - efficiency, p - vector of analyzer direction, \sigma - vector of Pauli matrices.

However, only the combination of t = 1/2, \xi = 1 and |p| = 1 is meaningful and corresponds

to a perfect analyzer (i.e. the one always selecting a particular polarization state).

According to the section 4 of this internal report

(note that login to jugit is required to access the document), the analyzer operator should look like

a = \frac{t}{2} (2 - |p| + \sigma p).

Then |p| <= 1 corresponds to the efficiency of the analyzer and 0 <= t <= 1 - to the transmission.

The formula above for sure works for specular reflectivity, but before modifying the code it is necessary

to check that it holds true in the case of GISAS. The description of polarized DWBA by Walter Van Herck can provide some insight in how DWBA is applied in BornAgain.

The analyzer operator is computed in **DetectionProperties::analyzerOperator**.

One will also need to change the signature of the method **setAnalyzerProperties** in **Simulation** class, and correspondingly amend polarization-related classes in the GUI.

**Related issues**

### History

#### #2 Updated by dmitry 17 days ago

**Related to***Envelope task #2419: Polarized reflectivity*added