- Timestamp:
- Dec 1, 2015, 8:39:25 PM (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/eam_branches/ipp-20151113/Ohana/src/uniphot/doc/galmotion.sh
r39206 r39208 4 4 5 5 ## FEAST-HIP 6 if ( 1)6 if (0) 7 7 $A_oort = +14.82; # km/sec/kpc 8 8 $B_oort = -12.37; # km/sec/kpc … … 13 13 14 14 ## ROESSER: 15 if ( 0)15 if (1) 16 16 $A_oort = +14.50; # km/sec/kpc 17 17 $B_oort = -13.00; # km/sec/kpc … … 37 37 $trans_sin_Xo = dsin($trans_Xo); 38 38 39 $disk_radius = 10; # 10 kpc radius disk 40 $disk_scale = 0.5; # 200 pc scale height 41 42 $halo_scale = 2.0; # 2000 pc scale height 43 39 44 # generate a collection of stars in R,D [L,B] with a range of distances 40 45 # generate the predicted proper motions 46 47 macro mkstars_halo 48 if ($0 != 4) 49 echo "USAGE: mkstars_disk (Nstars) (Dm_err) (Nsample)" 50 break 51 end 52 53 local Nstars dDm_o Nsample 54 55 $Nstars = $1 56 $dDm_o = $2 57 $Nsample = $3 58 59 # halo stars are uniformly sampled in a gaussian halo 60 gaussdev Dhalo $Nstars 0.0 $halo_scale 61 set Dm = 5*log(Dhalo * 100) 62 63 create seq 0 $Nstars 64 set phi = 2*rnd(seq) - 1 65 66 set L = 360*rnd(seq) 67 set B = dasin(phi) 68 end 69 70 macro mkstars_disk 71 if ($0 != 5) 72 echo "USAGE: mkstars_disk (Nstars) (Dm_err) (Nsample) (minDm)" 73 break 74 end 75 76 local Nstars dDm_o Nsample minDm 77 78 $Nstars = $1 79 $dDm_o = $2 80 $Nsample = $3 81 $minDm = $4 82 83 gaussdev Zgal $Nstars 0.0 $disk_scale 84 set rgal = $disk_radius * rnd(Zgal) 85 86 set B = atan2(Zgal , rgal) 87 set L = 360*rnd(Zgal) 88 89 set d_kpc_o = sqrt(rgal^2 + Zgal^2) 90 91 set Dm = 5*log(d_kpc_o * 100) 92 93 subset Bs = B if (Dm > $minDm) 94 subset Ls = L if (Dm > $minDm) 95 subset Dms = Dm if (Dm > $minDm) 96 97 mkmotion_dmerr Ls Bs Dms $dDm_o $Nsample 98 end 41 99 42 100 macro mkstars_uniform … … 61 119 set B = dasin(phi) 62 120 63 set R = L 64 set D = B 121 mkmotion_dmerr L B Dm $3 $4 122 end 123 124 macro mkstars_single_dm 125 if ($0 != 5) 126 echo "USAGE: mkstars (Nstars) (Dm) (Dm_err) (Nsample)" 127 break 128 end 129 130 create seq 0 $1 131 set phi = 2*rnd(seq) - 1 132 133 set d_kpc = ten(0.2*$2 - 2) + zero(seq) 134 set Dm = 5*log(d_kpc * 100) 135 136 set L = 360*rnd(seq) 137 set B = dasin(phi) 138 139 mkmotion_dmerr L B Dm $3 $4 140 end 141 142 # given L,B,Dm and a Dm_err value, find duL, duB 143 macro mkmotion_dmerr 144 if ($0 != 6) 145 echo "USAGE: mkmotion (L) (B) (Dm) (Dm_err) (Nsample)" 146 break 147 end 148 149 local i Dm_err Nstars 150 151 set _L = $1 152 set _B = $2 153 set _Dm = $3 154 $Dm_err = $4 155 $Nsample = $5 156 157 $Nstars = _L[] 158 159 set d_kpc_o = ten(0.2*_Dm - 2) 160 161 set R = _L 162 set D = _B 65 163 csystem G C R D 66 164 67 set uL_gal = ($A_oort * dcos(2.0* L) + $B_oort) * dcos(B*1.0) * $iFkap;68 set uB_gal = -0.5*$A_oort * dsin(2.0* L) * dsin(B*2.0) * $iFkap;69 70 set uL_sol = ($U_sol * dsin( L) - $V_sol * dcos(L))* $iFkap / d_kpc_o;71 set uB_sol = (($U_sol * dcos( L) + $V_sol * dsin(L))*dsin(B) - $W_sol*dcos(B)) * $iFkap / d_kpc_o;165 set uL_gal = ($A_oort * dcos(2.0*_L) + $B_oort) * dcos(_B*1.0) * $iFkap; 166 set uB_gal = -0.5*$A_oort * dsin(2.0*_L) * dsin(_B*2.0) * $iFkap; 167 168 set uL_sol = ($U_sol * dsin(_L) - $V_sol * dcos(_L)) * $iFkap / d_kpc_o; 169 set uB_sol = (($U_sol * dcos(_L) + $V_sol * dsin(_L))*dsin(_B) - $W_sol*dcos(_B)) * $iFkap / d_kpc_o; 72 170 73 171 set uL_o = uL_gal + uL_sol … … 78 176 79 177 # create a buffer to store the results : results for each star are in the y-dir, 80 mcreate resultsL $Nstars $ 481 mcreate resultsB $Nstars $ 4178 mcreate resultsL $Nstars $Nsample 179 mcreate resultsB $Nstars $Nsample 82 180 83 181 # now MC a number of distances 84 for i 0 $4 85 echo $i 86 87 gaussdev dDm $Nstars 0.0 $dDm_o 88 set Dm_x = Dm + dDm 89 182 for i 0 $Nsample 183 gaussdev dDm $Nstars 0.0 $Dm_err 184 set Dm_x = _Dm + dDm 90 185 set d_kpc = ten(0.2*Dm_x - 2) 91 186 92 set uL_sol = ($U_sol * dsin( L) - $V_sol * dcos(L))* $iFkap / d_kpc;93 set uB_sol = (($U_sol * dcos( L) + $V_sol * dsin(L))*dsin(B) - $W_sol*dcos(B)) * $iFkap / d_kpc;187 set uL_sol = ($U_sol * dsin(_L) - $V_sol * dcos(_L)) * $iFkap / d_kpc; 188 set uB_sol = (($U_sol * dcos(_L) + $V_sol * dsin(_L))*dsin(_B) - $W_sol*dcos(_B)) * $iFkap / d_kpc; 94 189 95 190 set duL = uL_sol - uL_sol_o … … 120 215 end 121 216 122 macro mkstars_dmerr123 if ($0 != 5)124 echo "USAGE: mkstars (Nstars) (Dm) (Dm_err) (Nsample)"125 break126 end127 128 create seq 0 $1129 set phi = 2*rnd(seq) - 1130 131 set d_kpc = ten(0.2*$2 - 2)132 133 set L = 360*rnd(seq)134 set B = dasin(phi)135 136 set R = L137 set D = B138 csystem G C R D139 140 set uL_gal = ($A_oort * dcos(2.0*L) + $B_oort) * dcos(B*1.0) * $iFkap;141 set uB_gal = -0.5*$A_oort * dsin(2.0*L) * dsin(B*2.0) * $iFkap;142 143 set uL_sol = ($U_sol * dsin(L) - $V_sol * dcos(L)) * $iFkap / $d_kpc;144 set uB_sol = (($U_sol * dcos(L) + $V_sol * dsin(L))*dsin(B) - $W_sol*dcos(B)) * $iFkap / $d_kpc;145 146 set uL_o = uL_gal + uL_sol147 set uB_o = uB_gal + uB_sol148 149 set uL_sol_o = uL_sol150 set uB_sol_o = uB_sol151 152 # create a buffer to store the results : results for each star are in the y-dir,153 mcreate resultsL $1 $4154 mcreate resultsB $1 $4155 156 # now MC a number of distances157 for i 0 $4158 echo $i159 gaussdev Dm_x $1 $2 $3160 set d_kpc = ten(0.2*Dm_x - 2)161 162 set uL_sol = ($U_sol * dsin(L) - $V_sol * dcos(L)) * $iFkap / d_kpc;163 set uB_sol = (($U_sol * dcos(L) + $V_sol * dsin(L))*dsin(B) - $W_sol*dcos(B)) * $iFkap / d_kpc;164 165 set duL = uL_sol - uL_sol_o166 set duB = uB_sol - uB_sol_o167 168 mset resultsL duL -x $i169 mset resultsB duB -x $i170 end171 172 set duL = zero(uL_o)173 set duB = zero(uB_o)174 set uLoff = zero(uL_o)175 set uBoff = zero(uB_o)176 177 for i 0 $1178 mget resultsL tmp -y $i179 vstat -q tmp180 181 uLoff[$i] = $MEAN182 duL[$i] = $SIGMA183 184 mget resultsB tmp -y $i185 vstat -q tmp186 187 uBoff[$i] = $MEAN188 duB[$i] = $SIGMA189 end190 end191 192 217 macro mkstars 193 218 if ($0 != 3)
Note:
See TracChangeset
for help on using the changeset viewer.
