code changes for release 3.1.0: SciLog, DA30-PShell data files
This commit is contained in:
@@ -2,7 +2,7 @@
|
||||
#pragma rtGlobals=3 // Use modern global access method and strict wave access.
|
||||
#pragma IgorVersion = 8.00
|
||||
#pragma ModuleName = PearlPShellImport
|
||||
#pragma version = 2.1
|
||||
#pragma version = 2.2
|
||||
#if IgorVersion() < 9.00
|
||||
#include <HDF5 Browser>
|
||||
#endif
|
||||
@@ -10,7 +10,7 @@
|
||||
#include "pearl-gui-tools"
|
||||
#include "pearl-area-import"
|
||||
|
||||
// copyright (c) 2013-22 Paul Scherrer Institut
|
||||
// copyright (c) 2013-25 Paul Scherrer Institut
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
@@ -63,7 +63,7 @@ strconstant kDataDimLabel = "data"
|
||||
strconstant kPreviewDatasets = "ImageEnergyDistribution;ScientaSpectrum;ScientaImage;Counts;SampleCurrent;"
|
||||
|
||||
/// List of datasets that must be loaded to determine the axis scaling of a Scienta image
|
||||
strconstant kScientaScalingDatasets = "LensMode;ScientaChannelBegin;ScientaChannelEnd;ScientaSliceBegin;ScientaSliceEnd;Eph;"
|
||||
strconstant kScientaScalingDatasets = "LensMode;ScientaChannelBegin;ScientaChannelEnd;ScientaSliceBegin;ScientaSliceEnd;Eph;ScientaHighEnergy;ScientaHighThetaX;ScientaLowEnergy;ScientaLowThetaX;"
|
||||
|
||||
/// List of diagnostic datasets that are normally loaded with a scan
|
||||
strconstant kEssentialDiagnostics = "ManipulatorX;ManipulatorY;ManipulatorZ;ManipulatorTheta;ManipulatorTilt;ManipulatorPhi;MonoEnergy;"
|
||||
@@ -2202,6 +2202,10 @@ end
|
||||
/// where the first folder in the list takes precedence.
|
||||
/// it may fall back to more or less reasonable default values if no data is not found.
|
||||
/// @arg `LensMode`
|
||||
/// @arg `ScientaLowEnergy`
|
||||
/// @arg `ScientaHighEnergy`
|
||||
/// @arg `ScientaLowThetaX`
|
||||
/// @arg `ScientaHighThetaX`
|
||||
/// @arg `ScientaChannelBegin`
|
||||
/// @arg `ScientaChannelEnd`
|
||||
/// @arg `ScientaSliceBegin`
|
||||
@@ -2260,6 +2264,10 @@ function ps_detect_scale(data_df, ax, lo, hi, un)
|
||||
ax[%$kDataDimLabel] = "value"
|
||||
|
||||
wave /T /Z LensMode = ps_find_scale_wave("LensMode", data_df, scan_df, attr_df)
|
||||
wave /Z LowEnergy = ps_find_scale_wave("ScientaLowEnergy", data_df, scan_df, attr_df)
|
||||
wave /Z HighEnergy = ps_find_scale_wave("ScientaHighEnergy", data_df, scan_df, attr_df)
|
||||
wave /Z LowThetaX = ps_find_scale_wave("ScientaLowThetaX", data_df, scan_df, attr_df)
|
||||
wave /Z HighThetaX = ps_find_scale_wave("ScientaHighThetaX", data_df, scan_df, attr_df)
|
||||
wave /Z ChannelBegin = ps_find_scale_wave("ScientaChannelBegin", data_df, scan_df, attr_df)
|
||||
wave /Z ChannelEnd = ps_find_scale_wave("ScientaChannelEnd", data_df, scan_df, attr_df)
|
||||
wave /Z SliceBegin = ps_find_scale_wave("ScientaSliceBegin", data_df, scan_df, attr_df)
|
||||
@@ -2268,35 +2276,30 @@ function ps_detect_scale(data_df, ax, lo, hi, un)
|
||||
|
||||
// lens mode can give more detail
|
||||
if (waveexists(LensMode) && (numpnts(LensMode) >= 1))
|
||||
strswitch(LensMode[0])
|
||||
case "Angular45":
|
||||
lo[%$kAngleDimLabel] = -45/2
|
||||
hi[%$kAngleDimLabel] = +45/2
|
||||
un[%$kAngleDimLabel] = "°"
|
||||
ax[%$kAngleDimLabel] = "angle"
|
||||
break
|
||||
case "Angular60":
|
||||
lo[%$kAngleDimLabel] = -60/2
|
||||
hi[%$kAngleDimLabel] = +60/2
|
||||
un[%$kAngleDimLabel] = "°"
|
||||
ax[%$kAngleDimLabel] = "angle"
|
||||
break
|
||||
case "Transmission":
|
||||
un[%$kAngleDimLabel] = "arb."
|
||||
ax[%$kAngleDimLabel] = "offset"
|
||||
break
|
||||
endswitch
|
||||
if (stringmatch(LensMode[0], "*Transmission*"))
|
||||
un[%$kAngleDimLabel] = "mm"
|
||||
ax[%$kAngleDimLabel] = "position"
|
||||
else
|
||||
un[%$kAngleDimLabel] = "°"
|
||||
ax[%$kAngleDimLabel] = "angle"
|
||||
endif
|
||||
endif
|
||||
|
||||
// best option if scales are explicit in separate waves
|
||||
if (waveexists(ChannelBegin) && waveexists(ChannelEnd) && (numpnts(ChannelBegin) >= 1) && (numpnts(ChannelEnd) >= 1))
|
||||
if (waveexists(LowEnergy) && waveexists(HighEnergy) && (numpnts(LowEnergy) >= 1) && (numpnts(HighEnergy) >= 1))
|
||||
lo[%$kEnergyDimLabel] = LowEnergy[0]
|
||||
hi[%$kEnergyDimLabel] = HighEnergy[0]
|
||||
elseif (waveexists(ChannelBegin) && waveexists(ChannelEnd) && (numpnts(ChannelBegin) >= 1) && (numpnts(ChannelEnd) >= 1))
|
||||
lo[%$kEnergyDimLabel] = ChannelBegin[0]
|
||||
hi[%$kEnergyDimLabel] = ChannelEnd[0]
|
||||
elseif (waveexists(ScientaChannels) && (numpnts(ScientaChannels) >= 1))
|
||||
lo[%$kEnergyDimLabel] = ScientaChannels[0]
|
||||
hi[%$kEnergyDimLabel] = ScientaChannels[numpnts(ScientaChannels)-1]
|
||||
endif
|
||||
if (waveexists(SliceBegin) && waveexists(SliceEnd) && (numpnts(SliceBegin) >= 1) && (numpnts(SliceEnd) >= 1))
|
||||
if (waveexists(LowThetaX) && waveexists(HighThetaX) && (numpnts(LowThetaX) >= 1) && (numpnts(HighThetaX) >= 1))
|
||||
lo[%$kAngleDimLabel] = LowThetaX[0]
|
||||
hi[%$kAngleDimLabel] = HighThetaX[0]
|
||||
elseif (waveexists(SliceBegin) && waveexists(SliceEnd) && (numpnts(SliceBegin) >= 1) && (numpnts(SliceEnd) >= 1))
|
||||
lo[%$kAngleDimLabel] = SliceBegin[0]
|
||||
hi[%$kAngleDimLabel] = SliceEnd[0]
|
||||
endif
|
||||
|
||||
Reference in New Issue
Block a user