From 9e9d14928edae2885e157b1f8b9423748df011b5 Mon Sep 17 00:00:00 2001
From: Luke Simons <luke.simons@epfl.ch>
Date: Fri, 18 Oct 2024 14:07:43 +0200
Subject: [PATCH] Updates to tcv_get_ids_bolometer.m to make data structure
 match ids_empty_bolometer.m

---
 matlab/TCV_IMAS/tcv_get_ids_bolometer.m | 105 +++++++++++++++++++++++-
 1 file changed, 101 insertions(+), 4 deletions(-)

diff --git a/matlab/TCV_IMAS/tcv_get_ids_bolometer.m b/matlab/TCV_IMAS/tcv_get_ids_bolometer.m
index 7e4ceec6..0ded6b68 100644
--- a/matlab/TCV_IMAS/tcv_get_ids_bolometer.m
+++ b/matlab/TCV_IMAS/tcv_get_ids_bolometer.m
@@ -18,9 +18,14 @@ function [ids_bolometer,ids_bolometer_description] =  ...
 % Initialise structure with default ids_properties
 % shot=70777; gdat_params=[]; varargin={};
 % aa=gdat([],'ids','source','bolometer'); ids_bolometer_empty=aa.bolometer;
-[ids_bolometer, ~] = tcv_ids_headpart(shot, ids_bolometer_empty, ...
-  'bolometer','homogeneous_time',1,'gdat_params',gdat_params, ...
-   varargin{:});
+if exist('gdat_params')
+  [ids_bolometer, ~] = tcv_ids_headpart(shot, ids_bolometer_empty, ...
+    'bolometer','homogeneous_time',1,'gdat_params',gdat_params, ...
+     varargin{:});
+else
+  [ids_bolometer, ~] = tcv_ids_headpart(shot,ids_bolometer_empty,'bolometer','homogeneous_time',0,varargin{:});
+end
+
 ids_bolometer_description = struct();
 
 % Load the bolometer geometry
@@ -45,14 +50,103 @@ if status
   nchannel = numel(bolo_u_intensity.x);
   ids_bolometer.channel(1:nchannel) = ids_bolometer.channel(1);
   for ii = 1:nchannel
-    ids_bolometer.channel(ii) = bolo_geom.channel(ii);
+    
+    ids_bolometer.channel{ii}.name = bolo_geom.channel{ii}.name;
     ids_bolometer_description.channel{ii}.name = ...
         ['RADCAM bolometer detector name, from camera labels and number ' ...
         'VT: Vertical Top, UL: Upper Lateral, ML: Middle Lateral, ' ...
         'DIV: Divertor, VB: Vertical bottom. Matches cabling.'];
+    
+    ids_bolometer.channel{ii}.identifier = ...
+        bolo_geom.channel{ii}.identifier;
     ids_bolometer_description.channel{ii}.identifier = ...
         ['RADCAM bolometer system, global index from order in ' ...
         '\results::bolo_u tree'];
+    
+    ids_bolometer.channel{ii}.detector.geometry_type= ...
+        bolo_geom.channel{ii}.detector.geometry_type;
+    ids_bolometer.channel{ii}.detector.centre.phi= ...
+        bolo_geom.channel{ii}.detector.centre.phi;
+    ids_bolometer.channel{ii}.detector.centre.r= ...
+        bolo_geom.channel{ii}.detector.centre.r;
+    ids_bolometer.channel{ii}.detector.centre.z= ...
+        bolo_geom.channel{ii}.detector.centre.z;
+    ids_bolometer.channel{ii}.detector.x1_unit_vector.x= ...
+        bolo_geom.channel{ii}.detector.x1_unit_vector.x;
+    ids_bolometer.channel{ii}.detector.x1_unit_vector.y= ...
+        bolo_geom.channel{ii}.detector.x1_unit_vector.y;
+    ids_bolometer.channel{ii}.detector.x1_unit_vector.z= ...
+        bolo_geom.channel{ii}.detector.x1_unit_vector.z;
+    ids_bolometer.channel{ii}.detector.x2_unit_vector.x= ...
+        bolo_geom.channel{ii}.detector.x2_unit_vector.x;
+    ids_bolometer.channel{ii}.detector.x2_unit_vector.y= ...
+        bolo_geom.channel{ii}.detector.x2_unit_vector.y;
+    ids_bolometer.channel{ii}.detector.x2_unit_vector.z= ...
+        bolo_geom.channel{ii}.detector.x2_unit_vector.z;
+    ids_bolometer.channel{ii}.detector.x3_unit_vector.x= ...
+        bolo_geom.channel{ii}.detector.x3_unit_vector.x;
+    ids_bolometer.channel{ii}.detector.x3_unit_vector.y= ...
+        bolo_geom.channel{ii}.detector.x3_unit_vector.y;
+    ids_bolometer.channel{ii}.detector.x3_unit_vector.z= ...
+        bolo_geom.channel{ii}.detector.x3_unit_vector.z;
+    ids_bolometer.channel{ii}.detector.x1_width= ...
+        bolo_geom.channel{ii}.detector.x1_width;
+    ids_bolometer.channel{ii}.detector.x2_width= ...
+        bolo_geom.channel{ii}.detector.x2_width;
+    ids_bolometer.channel{ii}.detector.surface= ...
+        bolo_geom.channel{ii}.detector.surface;
+    
+    ids_bolometer.channel{ii}.aperture{1}.geometry_type= ...
+        bolo_geom.channel{ii}.aperture{1}.geometry_type;
+    ids_bolometer.channel{ii}.aperture{1}.centre.r= ...
+        bolo_geom.channel{ii}.aperture{1}.centre.r;
+    ids_bolometer.channel{ii}.aperture{1}.centre.z= ...
+        bolo_geom.channel{ii}.aperture{1}.centre.z;
+    ids_bolometer.channel{ii}.aperture{1}.x1_unit_vector.x= ...
+        bolo_geom.channel{ii}.aperture{1}.x1_unit_vector.x;
+    ids_bolometer.channel{ii}.aperture{1}.x1_unit_vector.y= ...
+        bolo_geom.channel{ii}.aperture{1}.x1_unit_vector.y;
+    ids_bolometer.channel{ii}.aperture{1}.x1_unit_vector.z= ...
+        bolo_geom.channel{ii}.aperture{1}.x1_unit_vector.z;
+    ids_bolometer.channel{ii}.aperture{1}.x2_unit_vector.x= ...
+        bolo_geom.channel{ii}.aperture{1}.x2_unit_vector.x;
+    ids_bolometer.channel{ii}.aperture{1}.x2_unit_vector.y= ...
+        bolo_geom.channel{ii}.aperture{1}.x2_unit_vector.y;
+    ids_bolometer.channel{ii}.aperture{1}.x2_unit_vector.z= ...
+        bolo_geom.channel{ii}.aperture{1}.x2_unit_vector.z;
+    ids_bolometer.channel{ii}.aperture{1}.x3_unit_vector.x= ...
+        bolo_geom.channel{ii}.aperture{1}.x3_unit_vector.x;
+    ids_bolometer.channel{ii}.aperture{1}.x3_unit_vector.y= ...
+        bolo_geom.channel{ii}.aperture{1}.x3_unit_vector.y;
+    ids_bolometer.channel{ii}.aperture{1}.x3_unit_vector.z= ...
+        bolo_geom.channel{ii}.aperture{1}.x3_unit_vector.z;
+    ids_bolometer.channel{ii}.aperture{1}.x1_width= ...
+        bolo_geom.channel{ii}.aperture{1}.x1_width;
+    ids_bolometer.channel{ii}.aperture{1}.x2_width= ...
+        bolo_geom.channel{ii}.aperture{1}.x2_width;
+    ids_bolometer.channel{ii}.aperture{1}.surface= ...
+        bolo_geom.channel{ii}.aperture{1}.surface;
+    
+    ids_bolometer.channel{ii}.etendue = bolo_geom.channel{ii}.etendue;
+    ids_bolometer.channel{ii}.etendue_method.name = ...
+        bolo_geom.channel{ii}.etendue_method.name;
+    ids_bolometer.channel{ii}.etendue_method.description = ...
+        bolo_geom.channel{ii}.etendue_method.description;
+    
+    ids_bolometer.channel{ii}.line_of_sight.first_point.phi = ...
+        bolo_geom.channel{ii}.line_of_sight.first_point.phi;
+    ids_bolometer.channel{ii}.line_of_sight.first_point.r = ...
+        bolo_geom.channel{ii}.line_of_sight.first_point.r;
+    ids_bolometer.channel{ii}.line_of_sight.first_point.z = ...
+        bolo_geom.channel{ii}.line_of_sight.first_point.z;
+    
+    ids_bolometer.channel{ii}.line_of_sight.second_point.phi = ...
+        bolo_geom.channel{ii}.line_of_sight.second_point.phi;
+    ids_bolometer.channel{ii}.line_of_sight.second_point.r = ...
+        bolo_geom.channel{ii}.line_of_sight.second_point.r;
+    ids_bolometer.channel{ii}.line_of_sight.second_point.z = ...
+        bolo_geom.channel{ii}.line_of_sight.second_point.z;
+    
     ids_bolometer.channel{ii}.power.data = bolo_u_intensity.data(ii,:);
     ids_bolometer_description.channel{ii}.power.data = ...
         ['From results.bolo_u.intensity data, Radiance measured by ' ...
@@ -81,6 +175,9 @@ if status
 %         0.*bolo_u_prad_core.data;
     ids_bolometer.channel{ii}.power_radiated_validity = 0*bolo_u_prad.data;
     
+    ids_bolometer.power_radiated_inside_lcfs = bolo_u_prad_core.data;
+    ids_bolometer.power_radiated_total = bolo_u_prad.data;
+    ids_bolometer.power_radiated_validity = 0*bolo_u_prad.data;
   end
   ids_bolometer.code.name = 'rc_gti_prep';
   ids_bolometer.code.description = ...
-- 
GitLab