source: sans/Dev/trunk/NCNR_User_Procedures/Reduction/VSANS/Nexus_SANS_Write.ipf @ 960

Last change on this file since 960 was 960, checked in by srkline, 7 years ago

more work with SANS and VSANS Nexus files, still trying to organize the r/w routines for just the basic testing of the first pass of NICE-generated files. Ditched the idea of generating the files from Igor, since DAS_log is not included. Now the plan is to start from a NICE/Nexus template. All still EXTREMELY fluid at this point.

File size: 11.0 KB
Line 
1#pragma rtGlobals=1             // Use modern global access method.
2
3
4// AUG 2015 **************
5////////////
6// this needs to be connected to the "new" Nexus file
7// remove the VSANS references, match to SASCALC, write proper documentation, etc.
8///////////
9
10
11
12
13//
14// this is a test of the "new" SANS file structure that is supposed to be
15// NeXus compliant. It doesn't have the NICE logs, but has everything that I
16// can think of here.
17//
18
19///
20// for the simulator, routines to be able to write out a proper Nexus file
21// based on a template
22////
23
24
25
26// overwrites the dummy values as needed with SASCALC information
27//
28// TODO
29// issues here with the potential for Nexus to have data as INTEGER
30// where I'd rather have the data here in Igor be DP, so there are no
31// conversion/assignment issues
32//
33// simuation data from VCALC = DP, but I need to assign to an Integer wave...
34// - sometimes this works, sometimes not...
35// may need to Redimension/I
36//
37/// break this up into several smaller procedures as this is a VERY lengthy task to do
38
39        // TODO
40// set the "accessible" copies of the data (these are really to be links in the file!)
41
42
43
44//
45// A "template" VSANS Nexus file has been loaded and is then filled in with
46// the simulation results. Some of teh file, will therefor be garbage, but the
47// overall structure and attributes should be correct.
48//
49// Hopefully this will make the maintenance and testing of the file structure easier...
50// AUG 2015
51//
52///////////////////////////
53//
54// these are all of the VCALC changes to the simulated files. ADD to these as needed, making these changes to the
55// folder structure after the "default" values have been re-filled in the waves (to make sure something is really there)
56//
57////////////////////////
58
59// TODO:
60//      -- Need to write all of the "accessors" to r/w all of the simulated bits to the data file... lots to do
61// -- THIS DOES NOT MATCH THE CURRENT NICE_GENERATED FILE !!!!
62//
63
64
65
66//
67// this is NOT linked in any way with SASCALC, and I have no idea
68// of how to ever keep this in sync if the Nexus tree changes...
69//
70Proc H_Fill_SANS_Template_wSim()
71
72SetDataFolder  root:SANS_file           
73                file_name       = "SANSTest.h5"
74                file_time       = "2015-02-28T08:15:30-5:00"
75                facility        = "NCNR"
76                NeXus_version   = "Nexus 0.0"
77                hdf_version     = "hdf5.x"
78                file_history    = "history log"
79        SetDataFolder  root:SANS_file:entry1           
80                        title   = "title of entry1"
81                        experiment_identifier   = 684636
82                        experiment_description  = "description of expt"
83                        entry_identifier        = "S22-33"
84                        definition      = "NXsas"
85                        start_time      = "2015-02-28T08:15:30-5:00"
86                        end_time        = "2015-02-28T08:15:30-5:00"
87                        duration        = 300
88                        collection_time = 300
89                        run_cycle       = "S22-23"
90                        data_directory  = "[NG7SANS41]"
91                        program_name    = "runPoint={stuff}"
92                SetDataFolder  root:SANS_file:entry1:user               
93                                name    = "Dr. Pi"
94                                role    = "evil scientist"
95                                affiliation     = "NIST"
96                                address = "100 Bureau Drive"
97                                telephoneNumber = "301-999-9999"
98                                faxNumber       = "301-999-9999"
99                                email   = "sans@nist"
100                                facility_user_id        = 6937596
101                SetDataFolder  root:SANS_file:entry1:control           
102                                mode    = "timer"
103                                preset  = 555
104                                integral        = 555
105                                monitor_counts  = 666
106                                monitor_preset  = 1e8
107                                detector_counts = 100111222
108                                detector_preset = 1e5
109//                              type    = "monitor type"
110//                              efficiency      = 0.01
111//                              sampled_fraction        = 1
112                                count_start     = 1
113                                count_end       = 1
114                                count_time      = 1
115                                count_time_preset       = 1
116//              SetDataFolder  root:SANS_file:entry1:program_name               
117//                              data    = "program data"
118//                              description     = "acquisition"
119//                              file_name       = "NICE"
120//                              type    = "client"
121                SetDataFolder  root:SANS_file:entry1:sample             
122                                description     = "My Sample"
123                                group_id        = 12345
124//                              chemical_formula        = "C8H10N4O2"
125                        SetDataFolder  root:SANS_file:entry1:sample:temperature_1               
126                                        name    = "Sample temperature"
127                                        attached_to     = "block"
128                                        measurement     = "temperature"
129                                SetDataFolder  root:SANS_file:entry1:sample:temperature_1:value_log             
130                                                start   = "2015-02-28T08:15:30-5:00"
131                                                nx_time = p
132                                                value   = 2*p
133                        SetDataFolder  root:SANS_file:entry1:sample:temperature_2               
134                                        name    = "Sample temperature"
135                                        attached_to     = "block"
136                                        measurement     = "temperature"
137                                SetDataFolder  root:SANS_file:entry1:sample:temperature_2:value_log             
138                                                start   = "2015-02-28T08:15:30-5:00"
139                                                nx_time = p
140                                                value   = 3*p
141                        SetDataFolder  root:SANS_file:entry1:sample:electric_field             
142                                        name    = "electric meter"
143                                        attached_to     = "sample"
144                                        measurement     = "voltage"
145                                SetDataFolder  root:SANS_file:entry1:sample:electric_field:value_log           
146                                                start   = "2015-02-28T08:15:30-5:00"
147                                                nx_time = 2*p
148                                                value   = sin(p/10)
149                        SetDataFolder  root:SANS_file:entry1:sample:shear_field         
150                                        name    = "rheometer"
151                                        attached_to     = "sample"
152                                        measurement     = "stress"
153                                SetDataFolder  root:SANS_file:entry1:sample:shear_field:value_log               
154                                                start   = "2015-02-28T08:15:30-5:00"
155                                                nx_time = p
156                                                value   = cos(p/5)
157                        SetDataFolder  root:SANS_file:entry1:sample:pressure           
158                                        name    = "Sample pressure"
159                                        attached_to     = "pressure cell"
160                                        measurement     = "pressure"
161                                SetDataFolder  root:SANS_file:entry1:sample:pressure:value_log         
162                                                start   = "2015-02-28T08:15:30-5:00"
163                                                nx_time = p
164                                                value   = p/2
165                        SetDataFolder  root:SANS_file:entry1:sample:magnetic_field             
166                                        name    = "magnetic field (direction)"
167                                        attached_to     = "cryostat"
168                                        measurement     = "magnetic field"
169                                SetDataFolder  root:SANS_file:entry1:sample:magnetic_field:value_log           
170                                                start   = "2015-02-28T08:15:30-5:00"
171                                                nx_time = p
172                                                value   = 10*p
173                        SetDataFolder  root:SANS_file:entry1:sample             
174                                changer_position        = 5
175                                sample_holder_description       = "10CB"
176//                              mass    = 0.3
177//                              density = 1.02
178//                              molecular_weight        = 194.19
179//                              description     = "My Sample"
180//                              preparation_date        = "2015-02-28T08:15:30-5:00"
181//                              volume_fraction = 0.2
182//                              scattering_length_density       = 6.35e-6
183                                thickness       = 0.1
184                                rotation_angle  = 30
185                                transmission    = 0.888
186                                transmission_error      = 0.011
187//                              xs_incoh        = 5.5
188//                              xs_coh  = 22.2
189//                              xs_absorb       = 3.1
190                SetDataFolder  root:SANS_file:entry1:instrument         
191//                              location        = "NCNR"
192                                name    = "NGB30mSANS"
193                                type    = "30 m SANS"
194                                local_contact   = "Steve Kline"
195                        SetDataFolder  root:SANS_file:entry1:instrument:source         
196                                        name    = "NCNR"
197                                        type    = "Reactor Neutron Source"
198                                        probe   = "neutron"
199                                        power   = 20
200                        SetDataFolder root:SANS_file:entry1:instrument:beam_monitor             
201                                        data    = 1234567
202                                        type    = "monitor"
203                                        efficiency      = 0.01
204                                        nx_distance     = 16
205                                        saved_count     = 1e8
206                        SetDataFolder  root:SANS_file:entry1:instrument:monochromator           
207                                        wavelength      = 6
208                                        wavelength_spread       = 0.15
209                                        type    = "VS"
210                                SetDataFolder  root:SANS_file:entry1:instrument:monochromator:velocity_selector         
211                                                rotation_speed  = 5100
212                                                wavelength      = 6
213                                                wavelength_spread       = 0.15
214                                                vs_tilt = 3
215                                                nx_distance     = 18.8
216                                                //table
217                        SetDataFolder  root:SANS_file:entry1:instrument:polarizer               
218                                        type    = "supermirror"
219                                        composition     = "multilayer"
220                                        efficiency      = 0.95
221                                        status  = "in"
222                        SetDataFolder  root:SANS_file:entry1:instrument:flipper         
223                                        status  = "on"
224                                        driving_current = 42
225                                        waveform        = "sine"
226                                        frequency       = 400
227                                        transmitted_power       = 0.99
228                        SetDataFolder  root:SANS_file:entry1:instrument:polarizer_analyzer             
229                                        status  = "down"
230                                        guide_field_current_1   = 33
231                                        guide_field_current_2   = 32
232                                        solenoid_current        = 21
233                                        cell_index      = 1
234                                        cell_names      = {"Burgundy","Olaf","Jim","Bob","Joe"}
235                                        cell_parameters = 1
236                        SetDataFolder  root:SANS_file:entry1:instrument:chopper         
237                                        type    = "single"
238                                        status  = "in"
239                                        rotation_speed  = 12000
240                                        distance_from_source    = 400
241                                        distance_from_sample    = 1500
242                                        slits   = 2
243                                        angular_opening = 15
244                                        duty_cycle      = 0.25
245                        SetDataFolder  root:SANS_file:entry1:instrument:attenuator             
246                                        nx_distance     = 1500
247                                        type    = "PMMA"
248                                        thickness       = 0
249                                        attenuator_transmission = 1
250                                        status  = "in"
251                                        atten_number    = 0
252                                        index   = 1
253                        SetDataFolder  root:SANS_file:entry1:instrument:source_aperture         
254//                                      material        = "Gd"
255                                        description     = "source aperture"
256                                        diameter        = 1.27
257                                        nx_distance     = 13.0
258                                SetDataFolder  root:SANS_file:entry1:instrument:source_aperture:shape           
259                                                size    = 1.27
260                        SetDataFolder  root:SANS_file:entry1:instrument:sample_aperture         
261//                                      material        = "Gd"
262                                        description     = "sample aperture"
263                                        diameter        = 1.27
264                                        nx_distance     = 10
265                                SetDataFolder  root:SANS_file:entry1:instrument:sample_aperture:shape           
266                                                size    = 1.27
267                        SetDataFolder root:SANS_file:entry1:instrument:collimator               
268                                SetDataFolder root:SANS_file:entry1:instrument:collimator:geometry             
269                                        SetDataFolder root:SANS_file:entry1:instrument:collimator:geometry:shape               
270                                                        shape   = "box"
271                                                        size    = 11
272                                        nx_NumGuides    = 1
273                        SetDataFolder  root:SANS_file:entry1:instrument:lenses         
274                                        status  = "in"
275                                        lens_geometry   = "concave_lens"
276                                        focus_type      = "point"
277                                        number_of_lenses        = 28
278                                        number_of_prisms        = 7
279                                        curvature       = 1
280                                        lens_distance   = 123
281                                        prism_distance  = 123
282                                        lens_material   = "MgF2"
283                                        prism_material  = "MgF2"
284                        SetDataFolder  root:SANS_file:entry1:instrument:sample_table           
285                                        location        = "chamber"
286                                        offset_distance = 0
287                        SetDataFolder  root:SANS_file:entry1:instrument:beam_stop               
288                                        description     = "circular"
289                                        nx_distance     = 12.5
290                                        size    = 7.62
291                                        status  = "out"
292                                        xPos    = 66.4
293                                        yPos    = 64.4
294                                        x_motor_position        = 0.15
295                                        y_motor_position        = 0.55
296                        SetDataFolder  root:SANS_file:entry1:instrument:detector               
297                                        data    = trunc(abs(gnoise(p+q)))
298//                                      data_error      = 0.01*abs(gnoise(p+q))
299                                        nx_distance     = 13.1
300                                        description     = "Ordela 2660N"
301                                        settings        = "just right"
302                                        dead_time       = 5e-6
303                                        x_pixel_size    = 5.08
304                                        y_pixel_size    = 5.08
305                                        beam_center_x   = 65.55
306                                        beam_center_y   = 62.33
307                                        type    = "Ordela"
308//                                      flatfield_applied       = 0
309//                                      countrate_correction_applied    = 0
310                                        pixel_mask      = 0
311                                        integrated_count        = 100111222
312                                        lateral_offset  = 20
313                                        PixelNumX       = 128
314                                        PixelNumY       = 128
315                                        PixelFWHM       = 0.5
316                                        //calibration_method   
317                                        CALX    = {0.5,0.5,10000}
318                                        CALY    = {0.5,0.5,10000}
319                                        size    = 65
320                                        event_file_name ="something.hst"
321                SetDataFolder  root:SANS_file:entry1:data               
322                                data    = trunc(abs(gnoise(p+q)))
323//                              error   = 0.01*abs(gnoise(p+q))
324                                variables       = {128,128}
325                                data_image      = p
326                SetDataFolder  root:SANS_file:entry1:reduction         
327                                intent  = "SCATTER"
328                                transmission_file_name  = "SANSFile_TRN.h5"
329                                empty_beam_file_name    = "SANSFile_EB.h5"
330                                background_file_name    = "SANSFile_BKG.h5"
331                                empty_file_name = "SANSFile_EMP.h5"
332                                sensitivity_file_name   = "SANSFile_DIV.h5"
333                                mask_file_name  = "SANSFile_MASK.h5"
334                                sans_log_file_name      = "SANSFile_log.txt"
335                                whole_trans     = 0.888
336                                whole_trans_error       = 0.008
337                                box_count       = 23232
338                                box_count_error = 22
339                                box_coordinates = {50,80,45,75}
340                                comments        = "extra data comments"
341                                absolute_scaling        = {1,1,1e5,1}
342                        SetDataFolder  root:SANS_file:entry1:reduction:pol_sans         
343                                        pol_sans_purpose        = "name from the list"
344                                        cell_name       = "Burgundy"
345                                        cell_parameters = {1,2,3,4,5}
346                                               
347        SetDataFolder  root:SANS_file:DAS_Logs         
348                        //...multiple entries and levels... to add     
349
350
351        SetDataFolder root:
352
353End
354
355
356
Note: See TracBrowser for help on using the repository browser.