Readers: polarization from miniCBF and d*TREK headers (RESULT-CHANGING)
No reader parsed a polarization, and ApplyRugnuxExperimentDefaults then set
P = 0.99 (an undulator value) unconditionally, so laboratory-source data were
corrected as if from a synchrotron. Every d*TREK (Rigaku Saturn/A200) header in
the open arm states SOURCE_POLARZ=0.5 1 0 0, i.e. unpolarized; at Cu K-alpha and
2 A the wrong factor puts a +-33% azimuthal modulation on the intensities.
- d*TREK SMV: SOURCE_POLARZ is the fraction f followed by the plane normal (as
dxtbx's FormatSMVRigaku reads it); stored as degree 2f - 1, negative where the
normal lies along lab x (plane containing y).
- miniCBF: "# Polarization f" is the fraction in the horizontal plane; stored as
2f - 1 ("None" or a missing line leave it unset).
- ApplyRugnuxExperimentDefaults sets 0.99 only where the file stated none;
--polarization still overrides. ADSC SMV, marCCD and NXmx state nothing and
keep 0.99.
- The "Header:" log line reports the stated polarization.
RESULT-CHANGING: d*TREK home-source sets (0.99 -> 0), one Rigaku miniCBF set
(0.99 -> 0), miniCBF sets stating 0.99 (0.99 -> 0.98).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PXc1zD1yxHqaR1DGdCTHL4
This commit is contained in:
1 parent
14ee27f362
commit
b17b643bd9
11 files changed
+84
-14
No files matched your search
@@ -131,9 +131,9 @@ float DiffractionGeometry::CalcAzIntSolidAngleCorr(float x, float y) const {
|
||||
//
|
||||
// A vertically polarized source is expressed by a NEGATIVE coeff: flipping the sign of the cos(2phi)
|
||||
// term is exactly a 90 degree rotation of the plane, since cos(2(phi+90 deg)) = -cos(2phi). That is
|
||||
// what the jfjoch_settings API means by "1.0 is horizontal polarization; -1.0 is vertical". It is
|
||||
// not autodetected: nothing in the files rugnux reads declares a polarization plane, so the sign has
|
||||
// to be given with --polarization if a beamline ever needs the other one.
|
||||
// what the jfjoch_settings API means by "1.0 is horizontal polarization; -1.0 is vertical". Of the
|
||||
// files rugnux reads only a d*TREK header states the plane (SOURCE_POLARZ); for every other one the
|
||||
// sign has to be given with --polarization if a beamline ever needs the other one.
|
||||
float DiffractionGeometry::CalcAzIntPolarizationCorr(float x, float y, float coeff) const {
|
||||
auto cos_2theta = cosf(TwoTheta_rad(x, y));
|
||||
float cos_2theta_2 = cos_2theta * cos_2theta;
|
||||
|
||||
Reference in new issue
Block a user