Bug #2416

Updated by dmitry 11 months ago

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":https://jugit.fz-juelich.de/mlz/intern/ba-intern/blob/master/theory/SpecularReflectivity/PolarizedSpecular.pdf
(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":https://jugit.fz-juelich.de/mlz/intern/ba-intern/blob/master/theory/NanoParticles/DWBAPolarized.pdf 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. class.