source: sans/Dev/trunk/NCNR_User_Procedures/Analysis/Models/NewModels_2006/Vesicle_UL_and_Struct_v40.ipf @ 510

Last change on this file since 510 was 510, checked in by srkline, 14 years ago

Simple change in all of the model function files to include the name of the parameter wave in the Keyword=list that is generated when a model is plotted. This is becoming an issue where the proper parameter wave can't be deduced from just the suffix, then there is nothing to put in the table.

I should have added this when I initially wrote the wrapper...

File size: 18.3 KB
Line 
1#pragma rtGlobals=1             // Use modern global access method.
2#pragma IgorVersion = 6.0
3
4
5// the "scale" or "volume fraction" factor is the "material" volume fraction
6// - i.e. the volume fraction of surfactant added. NOT the excluded volume
7// of the vesicles, which can be much larger. See the Vesicle_Volume_N_Rg macro
8//
9// this excluded volume is accounted for in the structure factor calculations.
10//
11
12#include "Vesicle_UL_v40"
13
14#include "HardSphereStruct_v40"
15#include "HPMSA_v40"
16#include "SquareWellStruct_v40"
17#include "StickyHardSphereStruct_v40"
18
19Proc PlotVesicle_HS(num,qmin,qmax)                                             
20        Variable num=256,qmin=0.001,qmax=0.7
21        Prompt num "Enter number of data points for model: "
22        Prompt qmin "Enter minimum q-value (A^-1) for model: "
23        Prompt qmax "Enter maximum q-value (A^-1) for model: "
24       
25        //make the normal model waves
26        Make/O/D/n=(num) xwave_ves_HS,ywave_ves_HS                                     
27        xwave_ves_HS =  alog(log(qmin) + x*((log(qmax)-log(qmin))/num))                                 
28        Make/O/D coef_ves_HS = {0.1,100,30,6.36e-6,0.5e-6,0}                                           
29        make/o/t parameters_ves_HS = {"Volume fraction","core radius (A)","shell thickness (A)","Core and Solvent SLD (A-2)","Shell SLD (A-2)","bkg (cm-1)"}           
30        Edit/K=1 parameters_ves_HS,coef_ves_HS
31       
32        Variable/G root:g_ves_HS
33        g_ves_HS := Vesicle_HS(coef_ves_HS,ywave_ves_HS,xwave_ves_HS)                   
34        Display/K=1 ywave_ves_HS vs xwave_ves_HS                                                       
35        ModifyGraph log=1,marker=29,msize=2,mode=4                     
36        Label bottom "q (A\\S-1\\M)"
37        Label left "Intensity (cm\\S-1\\M)"                                     
38
39        AutoPositionWindow/M=1/R=$(WinName(0,1)) $WinName(0,2)
40       
41        AddModelToStrings("Vesicle_HS","coef_ves_HS","parameters_ves_HS","ves_HS")
42End
43
44// - sets up a dependency to a wrapper, not the actual SmearedModelFunction
45Proc PlotSmearedVesicle_HS(str)                                                         
46        String str
47        Prompt str,"Pick the data folder containing the resolution you want",popup,getAList(4)
48       
49        // if any of the resolution waves are missing => abort
50        if(ResolutionWavesMissingDF(str))               //updated to NOT use global strings (in GaussUtils)
51                Abort
52        endif
53       
54        SetDataFolder $("root:"+str)
55       
56        // Setup parameter table for model function
57        Make/O/D smear_coef_ves_HS = {0.1,100,30,6.36e-6,0.5e-6,0}                                     
58        make/o/t smear_parameters_ves_HS = {"Volume fraction","core radius (A)","shell thickness (A)","Core and Solvent SLD (A-2)","Shell SLD (A-2)","bkg (cm-1)"}             
59        Edit smear_parameters_ves_HS,smear_coef_ves_HS                                 
60       
61        // output smeared intensity wave, dimensions are identical to experimental QSIG values
62        // make extra copy of experimental q-values for easy plotting
63        Duplicate/O $(str+"_q") smeared_ves_HS,smeared_qvals                           
64        SetScale d,0,0,"1/cm",smeared_ves_HS                                                   
65                                       
66        Variable/G gs_ves_HS=0
67        gs_ves_HS := fSmearedVesicle_HS(smear_coef_ves_HS,smeared_ves_HS,smeared_qvals) //this wrapper fills the STRUCT
68       
69        Display smeared_ves_HS vs smeared_qvals                                                                 
70        ModifyGraph log=1,marker=29,msize=2,mode=4
71        Label bottom "q (A\\S-1\\M)"
72        Label left "Intensity (cm\\S-1\\M)"
73
74        AutoPositionWindow/M=1/R=$(WinName(0,1)) $WinName(0,2)
75       
76        SetDataFolder root:
77        AddModelToStrings("SmearedVesicle_HS","smear_coef_ves_HS","smear_parameters_ves_HS","ves_HS")
78End
79
80
81Function Vesicle_HS(w,yw,xw) : FitFunc
82        Wave w,yw,xw
83       
84        Variable inten
85       
86        //setup form factor coefficient wave
87        Make/O/D/N=6 form_ves_HS
88        form_ves_HS[0] = 1
89        form_ves_HS[1] = w[1]
90        form_ves_HS[2] = w[2]
91        form_ves_HS[3] = w[3]
92        form_ves_HS[4] = w[4]
93        form_ves_HS[5] = 0
94       
95        // calculate the excluded volume of the vesicles
96        Variable totvol,core,shell,exclVol,nden
97        totvol=4*pi/3*(w[1]+w[2])^3
98        core=4*pi/3*(w[1])^3
99        shell = totVol-core
100        //      nden = phi/(shell volume) or phi/Vtotal
101        nden = w[0]/shell
102        exclVol = nden*totvol
103
104        //setup structure factor coefficient wave
105        Make/O/D/N=2 struct_ves_HS
106        struct_ves_HS[0] = w[1] + w[2]
107        struct_ves_HS[1] = exclVol
108       
109        //calculate each and combine
110        Duplicate/O xw tmp_ves_HS_PQ,tmp_ves_HS_SQ
111        VesicleForm(form_ves_HS,tmp_ves_HS_PQ,xw)
112        HardSphereStruct(struct_ves_HS,tmp_ves_HS_SQ,xw)
113        yw = tmp_ves_HS_PQ * tmp_ves_HS_SQ
114        yw *= w[0]
115        yw += w[5]
116       
117        //cleanup waves
118        //Killwaves/Z form_ves_HS,struct_ves_HS
119       
120        return (0)
121End
122
123/////////////////////////////////
124Proc PlotVesicle_SW(num,qmin,qmax)                                             
125        Variable num=256,qmin=0.001,qmax=0.7
126        Prompt num "Enter number of data points for model: "
127        Prompt qmin "Enter minimum q-value (A^-1) for model: "
128        Prompt qmax "Enter maximum q-value (A^-1) for model: "
129       
130        ///
131        Make/O/D/N=4 form_ves_SW
132        Make/O/D/N=4 struct_ves_SW
133        ///
134        Make/O/D/n=(num) xwave_ves_SW,ywave_ves_SW                                     
135        xwave_ves_SW =  alog(log(qmin) + x*((log(qmax)-log(qmin))/num))                                 
136        Make/O/D coef_ves_SW = {0.1,100,30,6.36e-6,0.5e-6,1,1.2,0}                                             
137        make/o/t parameters_ves_SW = {"Volume fraction","core radius (A)","shell thickness (A)","Core and Solvent SLD (A-2)","Shell SLD (A-2)","well depth (kT)","well width (diam.)","bkgd (cm-1)"}           
138        Edit/K=1 parameters_ves_SW,coef_ves_SW                                                         
139
140        Variable/G root:g_ves_SW
141        g_ves_SW := Vesicle_SW(coef_ves_SW,ywave_ves_SW,xwave_ves_SW)                   
142        Display/K=1 ywave_ves_SW vs xwave_ves_SW                                                       
143        ModifyGraph log=1,marker=29,msize=2,mode=4                     
144        Label bottom "q (A\\S-1\\M)"
145        Label left "Intensity (cm\\S-1\\M)"                                     
146
147        AutoPositionWindow/M=1/R=$(WinName(0,1)) $WinName(0,2)
148        AddModelToStrings("Vesicle_SW","coef_ves_SW","parameters_ves_SW","ves_SW")
149End
150
151// - sets up a dependency to a wrapper, not the actual SmearedModelFunction
152Proc PlotSmearedVesicle_SW(str)                                                         
153        String str
154        Prompt str,"Pick the data folder containing the resolution you want",popup,getAList(4)
155       
156        // if any of the resolution waves are missing => abort
157        if(ResolutionWavesMissingDF(str))               //updated to NOT use global strings (in GaussUtils)
158                Abort
159        endif
160       
161        SetDataFolder $("root:"+str)
162       
163        // Setup parameter table for model function
164        Make/O/D smear_coef_ves_SW = {0.1,100,30,6.36e-6,0.5e-6,1,1.2,0}                                               
165        make/o/t smear_parameters_ves_SW = {"Volume fraction","core radius (A)","shell thickness (A)","Core and Solvent SLD (A-2)","Shell SLD (A-2)","well depth (kT)","well width (diam.)","bkgd (cm-1)"}             
166        Edit smear_parameters_ves_SW,smear_coef_ves_SW                                 
167       
168        // output smeared intensity wave, dimensions are identical to experimental QSIG values
169        // make extra copy of experimental q-values for easy plotting
170        Duplicate/O $(str+"_q") smeared_ves_SW,smeared_qvals                           
171        SetScale d,0,0,"1/cm",smeared_ves_SW                                                   
172                                       
173        Variable/G gs_ves_SW=0
174        gs_ves_SW := fSmearedVesicle_SW(smear_coef_ves_SW,smeared_ves_SW,smeared_qvals) //this wrapper fills the STRUCT
175       
176        Display smeared_ves_SW vs smeared_qvals                                                                 
177        ModifyGraph log=1,marker=29,msize=2,mode=4
178        Label bottom "q (A\\S-1\\M)"
179        Label left "Intensity (cm\\S-1\\M)"
180
181        AutoPositionWindow/M=1/R=$(WinName(0,1)) $WinName(0,2)
182       
183        SetDataFolder root:
184        AddModelToStrings("SmearedVesicle_SW","smear_coef_ves_SW","smear_parameters_ves_SW","ves_SW")
185End
186
187       
188
189Function Vesicle_SW(w,yw,xw) : FitFunc
190        Wave w,yw,xw
191       
192        Variable inten
193       
194        //setup form factor coefficient wave
195        Make/O/D/N=6 form_ves_SW
196        form_ves_SW[0] = 1
197        form_ves_SW[1] = w[1]
198        form_ves_SW[2] = w[2]
199        form_ves_SW[3] = w[3]
200        form_ves_SW[4] = w[4]
201        form_ves_SW[5] = 0
202       
203        // calculate the excluded volume of the vesicles
204        Variable totvol,core,shell,exclVol,nden
205        totvol=4*pi/3*(w[1]+w[2])^3
206        core=4*pi/3*(w[1])^3
207        shell = totVol-core
208        //      nden = phi/(shell volume) or phi/Vtotal
209        nden = w[0]/shell
210        exclVol = nden*totvol
211       
212        //setup structure factor coefficient wave
213        Make/O/D/N=4 struct_ves_SW
214        struct_ves_SW[0] = w[1] + w[2]
215        struct_ves_SW[1] = exclVol
216        struct_ves_SW[2] = w[5]
217        struct_ves_SW[3] = w[6]
218       
219        //calculate each and combine
220        Duplicate/O xw tmp_ves_SW_PQ,tmp_ves_SW_SQ
221        VesicleForm(form_ves_SW,tmp_ves_SW_PQ,xw)
222        SquareWellStruct(struct_ves_SW,tmp_ves_SW_SQ,xw)
223        yw = tmp_ves_SW_PQ * tmp_ves_SW_SQ
224        yw *= w[0]
225        yw += w[7]
226       
227        //cleanup waves
228        //Killwaves/Z form_ves_SW,struct_ves_SW
229       
230        return (0)
231End
232
233/////////////////////////////////
234Proc PlotVesicle_SC(num,qmin,qmax)                                             
235        Variable num=256,qmin=0.001,qmax=0.7
236        Prompt num "Enter number of data points for model: "
237        Prompt qmin "Enter minimum q-value (A^-1) for model: "
238        Prompt qmax "Enter maximum q-value (A^-1) for model: "
239       
240        if(!DataFolderExists(":HayPenMSA"))
241                NewDataFolder :HayPenMSA
242        endif
243        Make/O/D/N=17 :HayPenMSA:gMSAWave
244       
245        ///
246        Make/O/D/n=(num) xwave_ves_SC,ywave_ves_SC                                     
247        xwave_ves_SC =  alog(log(qmin) + x*((log(qmax)-log(qmin))/num))                         
248        Make/O/D coef_ves_SC = {0.1,100,30,6.36e-6,0.5e-6,20,0,298,78,0}                                               
249        make/o/t parameters_ves_SC = {"Volume fraction","core radius (A)","shell thickness (A)","Core and Solvent SLD (A-2)","Shell SLD (A-2)","charge","movalent salt(M)","Temperature (K)","dielectric const","bkgd (cm-1)"}         
250        Edit/K=1 parameters_ves_SC,coef_ves_SC
251                                                                       
252        Variable/G root:g_ves_SC
253        g_ves_SC := Vesicle_SC(coef_ves_SC,ywave_ves_SC,xwave_ves_SC)                   
254        Display/K=1 ywave_ves_SC vs xwave_ves_SC                                                       
255        ModifyGraph log=1,marker=29,msize=2,mode=4                     
256        Label bottom "q (A\\S-1\\M)"
257        Label left "Intensity (cm\\S-1\\M)"                                     
258
259        AutoPositionWindow/M=1/R=$(WinName(0,1)) $WinName(0,2)
260        AddModelToStrings("Vesicle_SC","coef_ves_SC","parameters_ves_SC","ves_SC")
261End
262
263// - sets up a dependency to a wrapper, not the actual SmearedModelFunction
264Proc PlotSmearedVesicle_SC(str)                                                         
265        String str
266        Prompt str,"Pick the data folder containing the resolution you want",popup,getAList(4)
267       
268        // if any of the resolution waves are missing => abort
269        if(ResolutionWavesMissingDF(str))               //updated to NOT use global strings (in GaussUtils)
270                Abort
271        endif
272       
273        SetDataFolder $("root:"+str)
274       
275        if(!DataFolderExists(":HayPenMSA"))
276                NewDataFolder :HayPenMSA
277        endif
278        Make/O/D/N=17 :HayPenMSA:gMSAWave
279       
280        // Setup parameter table for model function
281        Make/O/D smear_coef_ves_SC = {0.1,100,30,6.36e-6,0.5e-6,20,0,298,78,0}                                         
282        make/o/t smear_parameters_ves_SC = {"Volume fraction","core radius (A)","shell thickness (A)","Core and Solvent SLD (A-2)","Shell SLD (A-2)","charge","movalent salt(M)","Temperature (K)","dielectric const","bkgd (cm-1)"}           
283        Edit smear_parameters_ves_SC,smear_coef_ves_SC                                 
284       
285        // output smeared intensity wave, dimensions are identical to experimental QSIG values
286        // make extra copy of experimental q-values for easy plotting
287        Duplicate/O $(str+"_q") smeared_ves_SC,smeared_qvals                           
288        SetScale d,0,0,"1/cm",smeared_ves_SC                                                   
289                                       
290        Variable/G gs_ves_SC=0
291        gs_ves_SC := fSmearedVesicle_SC(smear_coef_ves_SC,smeared_ves_SC,smeared_qvals) //this wrapper fills the STRUCT
292       
293        Display smeared_ves_SC vs smeared_qvals                                                                 
294        ModifyGraph log=1,marker=29,msize=2,mode=4
295        Label bottom "q (A\\S-1\\M)"
296        Label left "Intensity (cm\\S-1\\M)"
297
298        AutoPositionWindow/M=1/R=$(WinName(0,1)) $WinName(0,2)
299       
300        SetDataFolder root:
301        AddModelToStrings("SmearedVesicle_SC","smear_coef_ves_SC","smear_parameters_ves_SC","ves_SC")
302End
303       
304
305Function Vesicle_SC(w,yw,xw) : FitFunc
306        Wave w,yw,xw
307       
308//      Variable timer=StartMSTimer
309        Variable inten
310       
311        //setup form factor coefficient wave
312        Make/O/D/N=6 form_ves_SC
313        form_ves_SC[0] = 1
314        form_ves_SC[1] = w[1]
315        form_ves_SC[2] = w[2]
316        form_ves_SC[3] = w[3]
317        form_ves_SC[4] = w[4]
318        form_ves_SC[5] = 0
319       
320        // calculate the excluded volume of the vesicles
321        Variable totvol,core,shell,exclVol,nden
322        totvol=4*pi/3*(w[1]+w[2])^3
323        core=4*pi/3*(w[1])^3
324        shell = totVol-core
325        //      nden = phi/(shell volume) or phi/Vtotal
326        nden = w[0]/shell
327        exclVol = nden*totvol
328       
329        //setup structure factor coefficient wave
330        Make/O/D/N=6 struct_ves_SC
331        struct_ves_SC[0] = 2*(w[1]+w[2])                //diameter
332        struct_ves_SC[1] = w[5]
333        struct_ves_SC[2] = exclVol
334        struct_ves_SC[3] = w[7]
335        struct_ves_SC[4] = w[6]
336        struct_ves_SC[5] = w[8]
337       
338        //calculate each and combine
339        Duplicate/O xw tmp_ves_SC_PQ,tmp_ves_SC_SQ
340        VesicleForm(form_ves_SC,tmp_ves_SC_PQ,xw)
341        HayterPenfoldMSA(struct_ves_SC,tmp_ves_SC_SQ,xw)
342        yw = tmp_ves_SC_PQ * tmp_ves_SC_SQ
343        yw *= w[0]
344        yw += w[9]
345       
346        //cleanup waves
347        //Killwaves/Z form_ves_SC,struct_ves_SC
348        //Print "ps elapsed time = ",StopMSTimer(timer)
349        return (0)
350End
351
352/////////////////////////////////
353Proc PlotVesicle_SHS(num,qmin,qmax)                                             
354        Variable num=256,qmin=0.001,qmax=0.7
355        Prompt num "Enter number of data points for model: "
356        Prompt qmin "Enter minimum q-value (A^-1) for model: "
357        Prompt qmax "Enter maximum q-value (A^-1) for model: "
358       
359        ///
360        Make/O/D/N=4 form_ves_SHS
361        Make/O/D/N=4 struct_ves_SHS
362        ///
363        Make/O/D/n=(num) xwave_ves_SHS,ywave_ves_SHS                                   
364        xwave_ves_SHS =  alog(log(qmin) + x*((log(qmax)-log(qmin))/num))                                       
365        Make/O/D coef_ves_SHS = {0.1,100,30,6.36e-6,0.5e-6,0.05,0.2,0}                                                 
366        make/o/t parameters_ves_SHS = {"Volume fraction","core radius (A)","shell thickness (A)","Core and Solvent SLD (A-2)","Shell SLD (A-2)","perturbation parameter (0.1)","stickiness, tau","bkgd (cm-1)"}         
367        Edit/K=1 parameters_ves_SHS,coef_ves_SHS                                                               
368
369        Variable/G root:g_ves_SHS
370        g_ves_SHS := Vesicle_SHS(coef_ves_SHS,ywave_ves_SHS,xwave_ves_SHS)                     
371        Display/K=1 ywave_ves_SHS vs xwave_ves_SHS                                                     
372        ModifyGraph log=1,marker=29,msize=2,mode=4                     
373        Label bottom "q (A\\S-1\\M)"
374        Label left "Intensity (cm\\S-1\\M)"                                     
375
376        AutoPositionWindow/M=1/R=$(WinName(0,1)) $WinName(0,2)
377        AddModelToStrings("Vesicle_SHS","coef_ves_SHS","parameters_ves_SHS","ves_SHS")
378End
379
380// - sets up a dependency to a wrapper, not the actual SmearedModelFunction
381Proc PlotSmearedVesicle_SHS(str)                                                               
382        String str
383        Prompt str,"Pick the data folder containing the resolution you want",popup,getAList(4)
384       
385        // if any of the resolution waves are missing => abort
386        if(ResolutionWavesMissingDF(str))               //updated to NOT use global strings (in GaussUtils)
387                Abort
388        endif
389       
390        SetDataFolder $("root:"+str)
391       
392        // Setup parameter table for model function
393        Make/O/D smear_coef_ves_SHS = {0.1,100,30,6.36e-6,0.5e-6,0.05,0.2,0}                                                   
394        make/o/t smear_parameters_ves_SHS = {"Volume fraction","core radius (A)","shell thickness (A)","Core and Solvent SLD (A-2)","Shell SLD (A-2)","perturbation parameter (0.1)","stickiness, tau","bkgd (cm-1)"}           
395        Edit smear_parameters_ves_SHS,smear_coef_ves_SHS                                       
396       
397        // output smeared intensity wave, dimensions are identical to experimental QSIG values
398        // make extra copy of experimental q-values for easy plotting
399        Duplicate/O $(str+"_q") smeared_ves_SHS,smeared_qvals                           
400        SetScale d,0,0,"1/cm",smeared_ves_SHS                                                   
401                                       
402        Variable/G gs_ves_SHS=0
403        gs_ves_SHS := fSmearedVesicle_SHS(smear_coef_ves_SHS,smeared_ves_SHS,smeared_qvals)     //this wrapper fills the STRUCT
404       
405        Display smeared_ves_SHS vs smeared_qvals                                                                       
406        ModifyGraph log=1,marker=29,msize=2,mode=4
407        Label bottom "q (A\\S-1\\M)"
408        Label left "Intensity (cm\\S-1\\M)"
409
410        AutoPositionWindow/M=1/R=$(WinName(0,1)) $WinName(0,2)
411       
412        SetDataFolder root:
413        AddModelToStrings("SmearedVesicle_SHS","smear_coef_ves_SHS","smear_parameters_ves_SHS","ves_SHS")
414End
415
416       
417
418Function Vesicle_SHS(w,yw,xw) : FitFunc
419        Wave w,yw,xw
420       
421        Variable inten
422       
423        //setup form factor coefficient wave
424        Make/O/D/N=6 form_ves_SHS
425        form_ves_SHS[0] = 1
426        form_ves_SHS[1] = w[1]
427        form_ves_SHS[2] = w[2]
428        form_ves_SHS[3] = w[3]
429        form_ves_SHS[4] = w[4]
430        form_ves_SHS[5] = 0
431       
432        // calculate the excluded volume of the vesicles
433        Variable totvol,core,shell,exclVol,nden
434        totvol=4*pi/3*(w[1]+w[2])^3
435        core=4*pi/3*(w[1])^3
436        shell = totVol-core
437        //      nden = phi/(shell volume) or phi/Vtotal
438        nden = w[0]/shell
439        exclVol = nden*totvol
440       
441        //setup structure factor coefficient wave
442        Make/O/D/N=4 struct_ves_SHS
443        struct_ves_SHS[0] = w[1]+w[2]
444        struct_ves_SHS[1] = exclVol
445        struct_ves_SHS[2] = w[5]
446        struct_ves_SHS[3] = w[6]
447       
448        //calculate each and combine
449        Duplicate/O xw tmp_ves_SHS_PQ,tmp_ves_SHS_SQ
450        VesicleForm(form_ves_SHS,tmp_ves_SHS_PQ,xw)
451        StickyHS_Struct(struct_ves_SHS,tmp_ves_SHS_SQ,xw)
452        yw = tmp_ves_SHS_PQ * tmp_ves_SHS_SQ
453        yw *= w[0]
454        yw += w[7]
455       
456        //cleanup waves
457        //Killwaves/Z form_ves_SHS,struct_ves_SHS
458       
459        return (0)
460End
461
462
463
464// this is all there is to the smeared calculation!
465Function SmearedVesicle_HS(s) :FitFunc
466        Struct ResSmearAAOStruct &s
467
468//      the name of your unsmeared model (AAO) is the first argument
469        Smear_Model_20(Vesicle_HS,s.coefW,s.xW,s.yW,s.resW)
470
471        return(0)
472End
473
474// this is all there is to the smeared calculation!
475Function SmearedVesicle_SW(s) :FitFunc
476        Struct ResSmearAAOStruct &s
477
478//      the name of your unsmeared model (AAO) is the first argument
479        Smear_Model_20(Vesicle_SW,s.coefW,s.xW,s.yW,s.resW)
480
481        return(0)
482End
483
484// this is all there is to the smeared calculation!
485Function SmearedVesicle_SC(s) :FitFunc
486        Struct ResSmearAAOStruct &s
487
488//      the name of your unsmeared model (AAO) is the first argument
489        Smear_Model_20(Vesicle_SC,s.coefW,s.xW,s.yW,s.resW)
490
491        return(0)
492End
493
494// this is all there is to the smeared calculation!
495Function SmearedVesicle_SHS(s) :FitFunc
496        Struct ResSmearAAOStruct &s
497
498//      the name of your unsmeared model (AAO) is the first argument
499        Smear_Model_20(Vesicle_SHS,s.coefW,s.xW,s.yW,s.resW)
500
501        return(0)
502End
503
504//wrapper to calculate the smeared model as an AAO-Struct
505// fills the struct and calls the ususal function with the STRUCT parameter
506//
507// used only for the dependency, not for fitting
508//
509Function fSmearedVesicle_HS(coefW,yW,xW)
510        Wave coefW,yW,xW
511       
512        String str = getWavesDataFolder(yW,0)
513        String DF="root:"+str+":"
514       
515        WAVE resW = $(DF+str+"_res")
516       
517        STRUCT ResSmearAAOStruct fs
518        WAVE fs.coefW = coefW   
519        WAVE fs.yW = yW
520        WAVE fs.xW = xW
521        WAVE fs.resW = resW
522       
523        Variable err
524        err = SmearedVesicle_HS(fs)
525       
526        return (0)
527End
528
529
530//wrapper to calculate the smeared model as an AAO-Struct
531// fills the struct and calls the ususal function with the STRUCT parameter
532//
533// used only for the dependency, not for fitting
534//
535Function fSmearedVesicle_SW(coefW,yW,xW)
536        Wave coefW,yW,xW
537       
538        String str = getWavesDataFolder(yW,0)
539        String DF="root:"+str+":"
540       
541        WAVE resW = $(DF+str+"_res")
542       
543        STRUCT ResSmearAAOStruct fs
544        WAVE fs.coefW = coefW   
545        WAVE fs.yW = yW
546        WAVE fs.xW = xW
547        WAVE fs.resW = resW
548       
549        Variable err
550        err = SmearedVesicle_SW(fs)
551       
552        return (0)
553End
554
555//wrapper to calculate the smeared model as an AAO-Struct
556// fills the struct and calls the ususal function with the STRUCT parameter
557//
558// used only for the dependency, not for fitting
559//
560Function fSmearedVesicle_SC(coefW,yW,xW)
561        Wave coefW,yW,xW
562       
563        String str = getWavesDataFolder(yW,0)
564        String DF="root:"+str+":"
565       
566        WAVE resW = $(DF+str+"_res")
567       
568        STRUCT ResSmearAAOStruct fs
569        WAVE fs.coefW = coefW   
570        WAVE fs.yW = yW
571        WAVE fs.xW = xW
572        WAVE fs.resW = resW
573       
574        Variable err
575        err = SmearedVesicle_SC(fs)
576       
577        return (0)
578End
579
580//wrapper to calculate the smeared model as an AAO-Struct
581// fills the struct and calls the ususal function with the STRUCT parameter
582//
583// used only for the dependency, not for fitting
584//
585Function fSmearedVesicle_SHS(coefW,yW,xW)
586        Wave coefW,yW,xW
587       
588        String str = getWavesDataFolder(yW,0)
589        String DF="root:"+str+":"
590       
591        WAVE resW = $(DF+str+"_res")
592       
593        STRUCT ResSmearAAOStruct fs
594        WAVE fs.coefW = coefW   
595        WAVE fs.yW = yW
596        WAVE fs.xW = xW
597        WAVE fs.resW = resW
598       
599        Variable err
600        err = SmearedVesicle_SHS(fs)
601       
602        return (0)
603End
Note: See TracBrowser for help on using the repository browser.