IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Dec 1, 2015, 8:39:25 PM (11 years ago)
Author:
eugene
Message:

move mkmotion into a new function

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/eam_branches/ipp-20151113/Ohana/src/uniphot/doc/galmotion.sh

    r39206 r39208  
    44
    55## FEAST-HIP
    6 if (1)
     6if (0)
    77  $A_oort = +14.82; # km/sec/kpc
    88  $B_oort = -12.37; # km/sec/kpc
     
    1313
    1414## ROESSER:
    15 if (0)
     15if (1)
    1616  $A_oort = +14.50; # km/sec/kpc
    1717  $B_oort = -13.00; # km/sec/kpc
     
    3737$trans_sin_Xo         = dsin($trans_Xo);
    3838
     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
    3944# generate a collection of stars in R,D [L,B] with a range of distances
    4045# generate the predicted proper motions
     46
     47macro 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)
     68end
     69
     70macro 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
     98end
    4199
    42100macro mkstars_uniform
     
    61119  set B = dasin(phi)
    62120
    63   set R = L
    64   set D = B
     121  mkmotion_dmerr L B Dm $3 $4
     122end
     123
     124macro 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
     140end
     141
     142# given L,B,Dm and a Dm_err value, find duL, duB
     143macro 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
    65163  csystem G C R D
    66164
    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;
    72170
    73171  set uL_o = uL_gal + uL_sol
     
    78176
    79177  # create a buffer to store the results : results for each star are in the y-dir,
    80   mcreate resultsL $Nstars $4
    81   mcreate resultsB $Nstars $4
     178  mcreate resultsL $Nstars $Nsample
     179  mcreate resultsB $Nstars $Nsample
    82180
    83181  # 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
    90185    set d_kpc = ten(0.2*Dm_x - 2)
    91186   
    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;
    94189
    95190    set duL = uL_sol - uL_sol_o
     
    120215end
    121216
    122 macro mkstars_dmerr
    123   if ($0 != 5)
    124     echo "USAGE: mkstars (Nstars) (Dm) (Dm_err) (Nsample)"
    125     break
    126   end
    127 
    128   create seq 0 $1
    129   set phi   = 2*rnd(seq) - 1
    130 
    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 = L
    137   set D = B
    138   csystem G C R D
    139 
    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_sol
    147   set uB_o = uB_gal + uB_sol
    148 
    149   set uL_sol_o = uL_sol
    150   set uB_sol_o = uB_sol
    151 
    152   # create a buffer to store the results : results for each star are in the y-dir,
    153   mcreate resultsL $1 $4
    154   mcreate resultsB $1 $4
    155 
    156   # now MC a number of distances
    157   for i 0 $4
    158     echo $i
    159     gaussdev Dm_x $1 $2 $3
    160     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_o
    166     set duB = uB_sol - uB_sol_o
    167 
    168     mset resultsL duL -x $i   
    169     mset resultsB duB -x $i   
    170   end
    171    
    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 $1
    178     mget resultsL tmp -y $i
    179     vstat -q tmp
    180    
    181     uLoff[$i] = $MEAN
    182     duL[$i] = $SIGMA
    183 
    184     mget resultsB tmp -y $i
    185     vstat -q tmp
    186    
    187     uBoff[$i] = $MEAN
    188     duB[$i] = $SIGMA 
    189   end
    190 end
    191 
    192217macro mkstars
    193218  if ($0 != 3)
Note: See TracChangeset for help on using the changeset viewer.