-
Notifications
You must be signed in to change notification settings - Fork 42
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
verify and document up_frac_i and up_frac_f calculations for magnetic models (Trac #1086) #1137
Comments
Trac update at This code exists in |
Trac update at This analysis works regardless of whether selectivity is based on spin leakage in the polarizer/analyser or whether it is due to depolarization in the guide field. On the front end, leakage of down through the front polarizer can give the same |
Trac update at I spoke with Rob Dalgliesh about this earlier. We agree that we should be calculating intensities and not amplitudes, so we should not be taking the square roots. The square roots might make sense if we were calculating an amplitude and there was going to be interference between the spin states but
|
Trac update at
to:
The weights for the polarisation efficiencies of the instrument act on intensities, i.e. remove the square rooted weights from |
Trac update at Fixed for sasmodels in pr 69. I haven't touched this yet for sasview, because genicomXY is different from the primary scattering code and looks to be calculating an actual amplitude. I'm basing this mostly on the fact that it's calculating scattering from individual nuclei, so I'm guessing that we're on a length scale where interference will be important, so the amplitude will be necessary. Plus the fact that everything si complex and the amplitude is calculated at the end. In this case, I believe that we do need to keep the square root terms, since the amplitude is squared at the end of the function. I think that we would need a sqrt term, but not perhaps the fourth root that we currently have? |
Trac update at
to:
Still there is a unconventional definition of the weights not beeing expressed as polarisation, but in terms of fraction of UP spins before the sample (in_spin or up_i in the code) and after sample (out_spin). For half-polarised SANS (SANSPOL) without spin-state discrimination after the sample (A=0 or out_spin=0.5, I^+^=uu+ud and I^-^=dd+du), you end up with the well known result: That is another question, how to reparametrise the external field direction/Polarisation axis. |
Trac update at The use of spin fraction as the base value is certainly muddying the waters, but I think that I may still be misunderstanding something. I would have argued that the weights cannot be the polarisation because that would allow for negative weights when there is negative polarisation, which I would have thought to be non-physical. |
Trac update at
We probably should have a separate conf call to sort out this issue? At the moment it doesn't seem like it can be resolved for 4.2 so going to move it to 4.3 at this point. Should perhaps be noted in release notes for 4.2?
|
Trac update at At the end of the day, the weights serve to construct various magnet scattering cross sections, which are linear combinations of the spin-resolved cross sections. The efficiency weights and work on intensities not amplitudes.
and the intensity weights look like
No intensity weighting is needed on the incoming polariser side taking for granted that a user has normalised to the incoming flux with polariser in for SANSPOL and unpolarised beam, respectively. Tested and works for me. |
Trac update at In changeset 5e1875c4a542fb1755c98100e92d33fb7f9b43dc:
|
Trac update at
|
Trac update at
|
Trac update at
I done some testing and I think that the code in |
Trac update at In changeset b36e7c7:
|
This issue is fixed since March 2019. The weighting with incoming and outgoing polarised neutron allow to produce scattering cross section and any combination thereof consistently. |
The weights for each cross section computed from up_frac_i and up_frac_f need to be checked. The code uses:
If either up_i or up_f is not 0 or 1, then the sum of the weights does not equal one which does not sound correct. That is, if up_i/up_f represents leakage between channels, the total number of neutrons should be preserved.
Consider up_i = 0.9, which lets through 90% up and 10% down from the guides (so
up/(up+down)=0.9
, and similarly up_f=0.9, which lets through 90% up and 10% down after the sample. Tracing the individual channels:So weights should not use sqrt. Note that the false positive and false negative rates may be independent, and further, with He3 polarizers, may be time dependent, but we keep things simple by having only one number per polarizer rather than two.
Doing the same analysis with a partially polarized or unpolarized beam requires an additional factor of two intensity correction. In this case, with 90% efficiency on the front end and 50% on the back end:
For non-magnetic systems
Iuu=Idd
andIud=Idu=0
. In the first example, a correction of1/(up_i*up*f + (1-up_i)*(1-up_f))
is needed so thatI=Iuu=Iud
. In the second example the correction is2
.Update the user guide to contain complete details of the final implementation and how it is to be interpreted.
Migrated from http://trac.sasview.org/ticket/1086
The text was updated successfully, but these errors were encountered: