From caf836a73c8c96af5dcbe532d1f1defd77e73180 Mon Sep 17 00:00:00 2001 From: Luke Simons <luke.simons@epfl.ch> Date: Fri, 18 Oct 2024 16:31:52 +0200 Subject: [PATCH] Added tcv_get_ids_soft_x_rays.m --- matlab/TCV_IMAS/tcv_get_ids_soft_x_rays.m | 159 ++++++++++++++++++++++ 1 file changed, 159 insertions(+) create mode 100644 matlab/TCV_IMAS/tcv_get_ids_soft_x_rays.m diff --git a/matlab/TCV_IMAS/tcv_get_ids_soft_x_rays.m b/matlab/TCV_IMAS/tcv_get_ids_soft_x_rays.m new file mode 100644 index 00000000..0263b543 --- /dev/null +++ b/matlab/TCV_IMAS/tcv_get_ids_soft_x_rays.m @@ -0,0 +1,159 @@ +function [ids_soft_x_rays,ids_soft_x_rays_description] = ... + tcv_get_ids_soft_x_rays(shot, ids_soft_x_rays_empty, gdat_params,varargin) +% +% [ids_soft_x_rays,ids_soft_x_rays_description] = ... +% tcv_get_ids_soft_x_rays(shot, ids_soft_x_rays_empty,varargin); +% +% Get the RADCAM Soft X-Ray (SXR) diagnostics data +% +% ids_soft_x_rays_empty should at least be the empty Soft X-Ray ids +% structure in input +% +% gdat_params: gdat_data.gdat_params to get all params passed from original +% call, in particular error_bar options +% +% Date: 20/09/24 +% Author: L. Simons + +% Initialise structure with default ids_properties +% shot=70777; gdat_params=[]; varargin={}; +% aa=gdat([],'ids','source','soft_x_rays'); +% ids_soft_x_rays_empty=aa.soft_x_rays; +if exist('gdat_params') + [ids_soft_x_rays, ~] = tcv_ids_headpart(shot, ids_soft_x_rays_empty, ... + 'soft_x_rays','homogeneous_time',1,'gdat_params',gdat_params, ... + varargin{:}); +else + [ids_soft_x_rays, ~] = tcv_ids_headpart(shot, ids_soft_x_rays_empty, ... + 'soft_x_rays','homogeneous_time',0,varargin{:}); +end + +ids_soft_x_rays_description = struct(); + +% Load the soft_x_rays geometry +sxr_geom=sxr_load_geometry(); +sxr_data=rc_load_diodes(shot,'diag_name','sxr'); +status=numel(sxr_data.data)>0; +if status + nchannel = sum(rc_n_chn(shot,'sxr')); + ids_soft_x_rays.channel(1:nchannel) = ids_soft_x_rays.channel(1); + for ii = 1:nchannel + + ids_soft_x_rays.channel{ii}.name = sxr_geom.channel{ii}.name; + ids_soft_x_rays_description.channel{ii}.name = ... + ['RADCAM Soft X-Ray (SXR) detector name, from camera labels and ' ... + 'number VT: Vertical Top, UL: Upper Lateral, ML: Middle Lateral, ' ... + 'DIV: Divertor, VB: Vertical bottom. Matches cabling.']; + + ids_soft_x_rays.channel{ii}.identifier = ... + sxr_geom.channel{ii}.identifier; + ids_soft_x_rays_description.channel{ii}.identifier = ... + ['RADCAM Soft X-Ray (SXR) system, global index from clock-wise ' ... + 'ordering from inboard side']; + + ids_soft_x_rays.channel{ii}.detector.geometry_type= ... + sxr_geom.channel{ii}.detector.geometry_type; + ids_soft_x_rays.channel{ii}.detector.centre.phi= ... + sxr_geom.channel{ii}.detector.centre.phi; + ids_soft_x_rays.channel{ii}.detector.centre.r= ... + sxr_geom.channel{ii}.detector.centre.r; + ids_soft_x_rays.channel{ii}.detector.centre.z= ... + sxr_geom.channel{ii}.detector.centre.z; + ids_soft_x_rays.channel{ii}.detector.x1_unit_vector.x= ... + sxr_geom.channel{ii}.detector.x1_unit_vector.x; + ids_soft_x_rays.channel{ii}.detector.x1_unit_vector.y= ... + sxr_geom.channel{ii}.detector.x1_unit_vector.y; + ids_soft_x_rays.channel{ii}.detector.x1_unit_vector.z= ... + sxr_geom.channel{ii}.detector.x1_unit_vector.z; + ids_soft_x_rays.channel{ii}.detector.x2_unit_vector.x= ... + sxr_geom.channel{ii}.detector.x2_unit_vector.x; + ids_soft_x_rays.channel{ii}.detector.x2_unit_vector.y= ... + sxr_geom.channel{ii}.detector.x2_unit_vector.y; + ids_soft_x_rays.channel{ii}.detector.x2_unit_vector.z= ... + sxr_geom.channel{ii}.detector.x2_unit_vector.z; + ids_soft_x_rays.channel{ii}.detector.x3_unit_vector.x= ... + sxr_geom.channel{ii}.detector.x3_unit_vector.x; + ids_soft_x_rays.channel{ii}.detector.x3_unit_vector.y= ... + sxr_geom.channel{ii}.detector.x3_unit_vector.y; + ids_soft_x_rays.channel{ii}.detector.x3_unit_vector.z= ... + sxr_geom.channel{ii}.detector.x3_unit_vector.z; + ids_soft_x_rays.channel{ii}.detector.x1_width= ... + sxr_geom.channel{ii}.detector.x1_width; + ids_soft_x_rays.channel{ii}.detector.x2_width= ... + sxr_geom.channel{ii}.detector.x2_width; + ids_soft_x_rays.channel{ii}.detector.surface= ... + sxr_geom.channel{ii}.detector.surface; + + ids_soft_x_rays.channel{ii}.aperture{1}.geometry_type= ... + sxr_geom.channel{ii}.aperture{1}.geometry_type; + ids_soft_x_rays.channel{ii}.aperture{1}.centre.r= ... + sxr_geom.channel{ii}.aperture{1}.centre.r; + ids_soft_x_rays.channel{ii}.aperture{1}.centre.z= ... + sxr_geom.channel{ii}.aperture{1}.centre.z; + ids_soft_x_rays.channel{ii}.aperture{1}.x1_unit_vector.x= ... + sxr_geom.channel{ii}.aperture{1}.x1_unit_vector.x; + ids_soft_x_rays.channel{ii}.aperture{1}.x1_unit_vector.y= ... + sxr_geom.channel{ii}.aperture{1}.x1_unit_vector.y; + ids_soft_x_rays.channel{ii}.aperture{1}.x1_unit_vector.z= ... + sxr_geom.channel{ii}.aperture{1}.x1_unit_vector.z; + ids_soft_x_rays.channel{ii}.aperture{1}.x2_unit_vector.x= ... + sxr_geom.channel{ii}.aperture{1}.x2_unit_vector.x; + ids_soft_x_rays.channel{ii}.aperture{1}.x2_unit_vector.y= ... + sxr_geom.channel{ii}.aperture{1}.x2_unit_vector.y; + ids_soft_x_rays.channel{ii}.aperture{1}.x2_unit_vector.z= ... + sxr_geom.channel{ii}.aperture{1}.x2_unit_vector.z; + ids_soft_x_rays.channel{ii}.aperture{1}.x3_unit_vector.x= ... + sxr_geom.channel{ii}.aperture{1}.x3_unit_vector.x; + ids_soft_x_rays.channel{ii}.aperture{1}.x3_unit_vector.y= ... + sxr_geom.channel{ii}.aperture{1}.x3_unit_vector.y; + ids_soft_x_rays.channel{ii}.aperture{1}.x3_unit_vector.z= ... + sxr_geom.channel{ii}.aperture{1}.x3_unit_vector.z; + ids_soft_x_rays.channel{ii}.aperture{1}.x1_width= ... + sxr_geom.channel{ii}.aperture{1}.x1_width; + ids_soft_x_rays.channel{ii}.aperture{1}.x2_width= ... + sxr_geom.channel{ii}.aperture{1}.x2_width; + ids_soft_x_rays.channel{ii}.aperture{1}.surface= ... + sxr_geom.channel{ii}.aperture{1}.surface; + + ids_soft_x_rays.channel{ii}.etendue = sxr_geom.channel{ii}.etendue; + ids_soft_x_rays.channel{ii}.etendue_method.name = ... + sxr_geom.channel{ii}.etendue_method.name; + ids_soft_x_rays.channel{ii}.etendue_method.description = ... + sxr_geom.channel{ii}.etendue_method.description; + + ids_soft_x_rays.channel{ii}.filter_window{1}.identifier = 1; + ids_soft_x_rays.channel{ii}.filter_window{1}.material.name = 'Be'; + ids_soft_x_rays.channel{ii}.filter_window{1}.material.index = 10; + ids_soft_x_rays.channel{ii}.filter_window{1}.material.description = ''; + ids_soft_x_rays.channel{ii}.filter_window{1}.thickness = '47e-6'; + + ids_soft_x_rays.channel{ii}.line_of_sight.first_point.phi = ... + sxr_geom.channel{ii}.line_of_sight.first_point.phi; + ids_soft_x_rays.channel{ii}.line_of_sight.first_point.r = ... + sxr_geom.channel{ii}.line_of_sight.first_point.r; + ids_soft_x_rays.channel{ii}.line_of_sight.first_point.z = ... + sxr_geom.channel{ii}.line_of_sight.first_point.z; + + ids_soft_x_rays.channel{ii}.line_of_sight.second_point.phi = ... + sxr_geom.channel{ii}.line_of_sight.second_point.phi; + ids_soft_x_rays.channel{ii}.line_of_sight.second_point.r = ... + sxr_geom.channel{ii}.line_of_sight.second_point.r; + ids_soft_x_rays.channel{ii}.line_of_sight.second_point.z = ... + sxr_geom.channel{ii}.line_of_sight.second_point.z; + + ids_soft_x_rays.channel{ii}.brightness.data = sxr_data.data(ii,:); + ids_soft_x_rays.channel{ii}.brightness.time = sxr_data.time; + ids_soft_x_rays_description.channel{ii}.brightness.data = ... + ['From ATLAS::SYSTEM:SXR:CHANNEL_ data, Radiance measured by ' ... + 'Each SXR diode in arbitrary units of [counts]']; + + ids_soft_x_rays.channel{ii}.validity = 0; % FIXME: Always valid data + ids_soft_x_rays.channel{ii}.validity = 0*ones(1,nchannel); + end + + ids_soft_x_rays.time = sxr_data.time; +else + warning('Failed to load data for shot %d',shot); +end + +end -- GitLab