Changeset 6907
- Timestamp:
- Apr 19, 2006, 10:32:22 AM (20 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/psModules/src/objects/models/pmModel_GAUSS.c
r6511 r6907 35 35 } 36 36 37 psF64 pmModelFlux_GAUSS(const psVector *params)38 {39 psF64 A1 = PS_SQR(params->data.F32[4]);40 psF64 A2 = PS_SQR(params->data.F32[5]);41 psF64 A3 = PS_SQR(params->data.F32[6]);42 psF64 Area = 2.0 * M_PI / sqrt(A1*A2 - A3);43 // Area is equivalent to 2 pi sigma^244 45 psF64 Flux = params->data.F32[1] * Area;46 47 return(Flux);48 }49 50 // return the radius which yields the requested flux51 psF64 pmModelRadius_GAUSS (const psVector *params, psF64 flux)52 {53 54 if (flux <= 0)55 return (1.0);56 if (params->data.F32[1] <= 0)57 return (1.0);58 if (flux >= params->data.F32[1])59 return (1.0);60 61 psF64 sigma = sqrt(2.0) * hypot (1.0 / params->data.F32[4], 1.0 / params->data.F32[5]);62 psF64 radius = sigma * sqrt (2.0 * log(params->data.F32[1] / flux));63 return (radius);64 }65 66 37 // define the parameter limits 67 38 bool pmModelLimits_GAUSS (psVector **beta_lim, psVector **params_min, psVector **params_max) … … 76 47 77 48 beta_lim[0][0].data.F32[0] = 1000; 78 beta_lim[0][0].data.F32[1] = 10000;49 beta_lim[0][0].data.F32[1] = 3e6; 79 50 beta_lim[0][0].data.F32[2] = 5; 80 51 beta_lim[0][0].data.F32[3] = 5; … … 92 63 93 64 params_max[0][0].data.F32[0] = 1e5; 94 params_max[0][0].data.F32[1] = 1e 6;65 params_max[0][0].data.F32[1] = 1e8; 95 66 params_max[0][0].data.F32[2] = 1e4; // this should be set by image dimensions! 96 67 params_max[0][0].data.F32[3] = 1e4; // this should be set by image dimensions! … … 117 88 params[6] = 0.0; 118 89 return(true); 90 } 91 92 psF64 pmModelFlux_GAUSS(const psVector *params) 93 { 94 psF64 A1 = PS_SQR(params->data.F32[4]); 95 psF64 A2 = PS_SQR(params->data.F32[5]); 96 psF64 A3 = PS_SQR(params->data.F32[6]); 97 psF64 Area = 2.0 * M_PI / sqrt(A1*A2 - A3); 98 // Area is equivalent to 2 pi sigma^2 99 100 psF64 Flux = params->data.F32[1] * Area; 101 102 return(Flux); 103 } 104 105 // return the radius which yields the requested flux 106 // this function is never allowed to return <= 0 107 psF64 pmModelRadius_GAUSS (const psVector *params, psF64 flux) 108 { 109 110 if (flux <= 0) 111 return (1.0); 112 if (params->data.F32[1] <= 0) 113 return (1.0); 114 if (flux >= params->data.F32[1]) 115 return (1.0); 116 117 psF64 sigma = sqrt(2.0) * hypot (1.0 / params->data.F32[4], 1.0 / params->data.F32[5]); 118 psF64 radius = sigma * sqrt (2.0 * log(params->data.F32[1] / flux)); 119 return (radius); 119 120 } 120 121
Note:
See TracChangeset
for help on using the changeset viewer.
