ó
~ÇTc           @   sì   d  d l  Z  d  d l Z d  d l Td „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d	 „  Z d
 „  Z	 d „  Z
 d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d S(   iÿÿÿÿN(   t   *c         C   s  d } | | } | |  | | | ƒ |  | | | ƒ d } } d }	 x· | d } | | d }
 } x4 |
 | k  r˜ | |  |
 | | ƒ } |
 d | }
 qe W| d | | } d | | d } t  | | ƒ | d t  | ƒ k  rå | S| } | } |	 d }	 qG d  S(   Ng-Cëâ6?g       @i    i   i   g      @i   (   t   abs(   t   funct   at   bt
   Wavelengtht   Mirror_diametert   TOLt   ht   old2t   oldt   countt   xt   sumt   newt   new2(    (    s-   /users/jheidt/cgi-bin/calculator/functions.pyt   closedpoints   s"    
.
$c         C   sm  d } d } d } d } d } d } d } | t  |  ƒ k d k  r¹ |  |  } |  d | d | d | d | d | d } d	 | d
 | d | d | d | d } | | } n° d | } | | } | d } d | d | d | d | d } d | d | d | d | d } t d | ƒ t | ƒ | | t | ƒ | } |  d k  ri| } n  | S(   Ng        g       @g  ØÝ%Ù0Bg  0²PiýÁg333j]å¬Agé&1¸á­FÁg†8ÖÅ=¬Î@g À)>Àg  ÍÝ%Ù@Bg  @1ì#áAg=
×‹ð¸qAgÇkñvGø@g*úèyü�w@g      ð?gâN|Ù@gý‚‚÷úÿ]?gÓ\Ñ¢ o¿gß |�Ä>g�Mcõ �¾g�’ÿÿÿ§?g€CW\ê?*¿gC¦Ø!¸á>gñx8ñÏš­¾g"�CÕ§e|>gdC—m0_ä?(   t   fabst   sqrtt   cost   sin(   R   t   axt   zt   xxt   yt   anst   ans1t   ans2(    (    s-   /users/jheidt/cgi-bin/calculator/functions.pyt
   bessel_low   s*    
2.


&&0
c         C   s`  d } d } d } d } d } d } d } d } d }	 d }
 d } d } d } d } d d |  } | | } d } d } d	 d |  } d
 | } xo| d } | | | } | d } | | | } |
 | }
 | | } | d } | | } | d } | |
 | } d | d | | d | d | d |  | d | d | d |  } | | } t  | ƒ | k rmPn  t  | ƒ } | | } | | | d | } | | | d | d | d |  } | | | d | d | d |  } | d } | | k  r“ Pq“ q“ t } | } t d | |  ƒ }	 |	 | t |  d | d ƒ | t |  d | d ƒ } | S(   Ng        g:Œ0âŽyE>i    i   g    €„.Aiÿÿÿÿg      ð?g       @g      ð¿g      Ài   i   i   g       @i   g      @(   R   t   piR   R   R   (   R   t   et   e3t   J0t   J1t   nR   t   a1t   a2R   t   ct   e1t   e2t   e4t   mt   x1t   m1t   m2t   n1t   n2(    (    s-   /users/jheidt/cgi-bin/calculator/functions.pyt   bessel_high2   s`    








J

&&
:c         C   s�   t  |  ƒ d k  rA |  d k rA t |  ƒ t t |  ƒ |  ƒ } n  t  |  ƒ d k rv t |  ƒ t t |  ƒ |  ƒ } n  |  d k r‹ d } n  | S(   Ng      ø?i    g        (   R   t   signR   R/   (   t   rt   Bessel(    (    s-   /users/jheidt/cgi-bin/calculator/functions.pyt   besselo   s    ##	c         C   s.   |  d k  r d } n  |  d k r* d } n  | S(   Ni    g      ð¿g      ð?(    (   R   t   Temp(    (    s-   /users/jheidt/cgi-bin/calculator/functions.pyR0   x   s
    		c   	      C   s³   t  | | } d t  d } | | t |  |  | | ƒ } t  | | d | | | | } |  d k r | d k r d } n& d t | ƒ | d t | ƒ | } | | } | S(   Ng       @g      ¬@g     €v@g      @g        g      ð?g    €Æ3A(   R   R   R3   (	   R   R   R   R   t	   Parametert   Arcsec_multiplierR1   t   NormalR4   (    (    s-   /users/jheidt/cgi-bin/calculator/functions.pyt   air_func   s     "	&
c         C   s‘   t  |  | ƒ d } |  } | } d }	 xd | | k  rŒ xA | | k  rx t | | | | ƒ }
 |	 |
 | | }	 | | } q8 W| } | | } q) W|	 S(   Ng      I@g        (   R   R8   (   t   Limit_x1t   Limit_x2t   Limit_y1t   Limit_y2R   R   t   StepR   R   t   Integralt   Value(    (    s-   /users/jheidt/cgi-bin/calculator/functions.pyt   air_func_int‹   s    c         C   s•   t  | | } d t  d } | | |  }  t  | | d | | | | } |  d k ra d } n& d t |  ƒ |  d t |  ƒ |  } | | } | S(   Ng       @g      ¬@g     €v@g      @g        g      ð?g    €Æ3A(   R   R3   (   R1   R   R   R5   R6   R7   R4   (    (    s-   /users/jheidt/cgi-bin/calculator/functions.pyt   airœ   s    "	&
c   
      C   s—   |  d } t  | | } d t  d } d } | } d } xX | |  k r’ t | | d | | ƒ }	 | |	 t  | | | | } | } | | } q; W| S(   Ng     @@g       @g      ¬@g     €v@g        g    €Æ3A(   R   RA   (
   R1   R   R   R=   R5   R6   t   r1t   r2R>   R?   (    (    s-   /users/jheidt/cgi-bin/calculator/functions.pyt   air_int¨   s    
c         C   s]   d } |  } d } xD | | k rX d } | | t  | | | | } | } | |  } q W| S(   Ng        i   (   R   (   R=   t   LimitRB   RC   R>   R?   (    (    s-   /users/jheidt/cgi-bin/calculator/functions.pyt   zyl¶   s    c         C   s]   | d t  t d d | ƒ d ƒ } | d t | | t d |  |  | | | ƒ } | S(   Ng       @i   i   (   R   t   powR   (   R1   t   Betat   Seeingt   Alphat   moffat(    (    s-   /users/jheidt/cgi-bin/calculator/functions.pyRK   Ø   s    %4c         C   s`   | } | d t  t d d | ƒ d ƒ } |  } d d t d | | | | | d ƒ } | S(   Ng       @i   i   g      ð?(   R   RG   (   R1   RH   RI   t   parameter_bt   parameter_at   parameter_ct   integral(    (    s-   /users/jheidt/cgi-bin/calculator/functions.pyt
   moffat_intÝ   s
    %+c         C   se   | d t  t d d | ƒ d ƒ } | d t | | t d |  |  | | | | | ƒ } | S(   Ng       @i   i   (   R   RG   R   (   R   R   RH   RI   RJ   RK   (    (    s-   /users/jheidt/cgi-bin/calculator/functions.pyt   moffat_funcö   s    %<c         C   s‘   t  | | ƒ d } | } | } d }	 xd | | k  rŒ xA | | k  rx t | | |  | ƒ }
 |	 |
 | | }	 | | } q8 W| } | | } q) W|	 S(   Ng      I@g        (   R   RQ   (   RH   R9   R:   R;   R<   RI   R=   R   R   R>   R?   (    (    s-   /users/jheidt/cgi-bin/calculator/functions.pyt   moffat_func_intû   s    c         C   s?   d d t  j | d t d |  d | d | d ƒ } | S(   Ng      ð?g       @i   g      à¿(   t   mathR   t   exp(   R   R   t   SigmaR4   (    (    s-   /users/jheidt/cgi-bin/calculator/functions.pyt
   gauss_func  s    ;c         C   s¬   t  |  | ƒ d } |  } | } d } x | | k  r§ x\ | | k  r“ | d t d t d ƒ ƒ }	 t | | |	 ƒ }
 | |
 | | } | | } q8 W| } | | } q) W| S(   Ng      I@g        i   (   R   R   t   logRV   (   R9   R:   R;   R<   RI   R=   R   R   R>   RU   R?   (    (    s-   /users/jheidt/cgi-bin/calculator/functions.pyt   gauss_func_int  s    c         C   s¬   t  |  | ƒ d } |  } | } d } x | | k  r§ x\ | | k  r“ | d t d t d ƒ ƒ }	 t | | |	 ƒ }
 | |
 | | } | | } q8 W| } | | } q) W| S(   Ng      $@g        i   (   R   R   RW   RV   (   R9   R:   R;   R<   RI   R=   R   R   R>   RU   R?   (    (    s-   /users/jheidt/cgi-bin/calculator/functions.pyt   gauss_func_int_lowres  s    c         C   sÕ   d } d } |  d } | d t  d t d ƒ ƒ } |  } |  } xŒ | |  k rÐ xh | |  k r» t j  | d | d ƒ |  k  r® t | | | ƒ | | } | | } | } n  | | } qT W|  } | | } qE W| S(   Ng        g      Y@i   (   R   RW   RS   RV   (   t   RadiusRI   R4   t   Temp1R=   RU   R   R   (    (    s-   /users/jheidt/cgi-bin/calculator/functions.pyt	   gauss_int-  s     
!
	c	         C   sÄ   t  | | ƒ d }	 | }
 | } d } x— |
 | k  r¿ xt | | k  r« t |
 | |  | ƒ } | d | | |	 |	 } t |
 | | | ƒ } | | | |	 |	 } | |	 } q8 W| } |
 |	 }
 q) W| S(   Ng      I@g        i   (   R   RQ   R8   (   RH   R9   R:   R;   R<   RI   R   R   t   StrehlR=   R   R   R>   t   Part_1t   Part_2(    (    s-   /users/jheidt/cgi-bin/calculator/functions.pyt   psf_func_intA  s    c         C   s2   d | t  | | | ƒ | t | | | ƒ } | S(   Ni   (   RP   RD   (   R1   RH   RI   R   R   R]   R>   (    (    s-   /users/jheidt/cgi-bin/calculator/functions.pyt   psf_intX  s    .c          C   sÿ  i  } i  } d } d } t  |  d ƒ }	 |	 j ƒ  }
 t j |
 ƒ } t | d ƒ } t | d ƒ | t | d ƒ } t | d ƒ | t | d ƒ } d | t | d ƒ } | d k rÃ | } n  |  | | | | g | |  <t | d | ƒ | d } | | k  r| | } n  t | d | ƒ | d | } | | k rJ| | } n  d | | | } t t | ƒ ƒ d } |  | d <| | d <| | d <| | d <| | d	 <d
 | | | | f } xi t | ƒ D][ } |	 j ƒ  }
 t j |
 ƒ } d t | d ƒ | t | d ƒ } t | d ƒ | | <qÇWx0 t | ƒ D]" } d | | | } d | | <q3Wd } d } d } | | k r©xqt d | ƒ D]} d | | | } | | | } | | | } d | } x, | | | d k  ró| d } | | } qÈWd | } xn | | | d k rn| | | d k rn| | k rn| | | } | d } | d } | | } d | } qW| d k rŒ| | | | <n  | d } d } d } q‡WnB| | k rëd } x-t d | ƒ D]} | | | } | d | | } d | | | } d | } | | | } d | } x¼ | | k rã| | k  rã| | k rã| | | | | | } | | | | } | | | | | <| d } | | | } | d | | } d | } d | } | | | } d | } q(WqËWn  |	 j ƒ  | | f S(   Nt    R1   i    i   i   i   gš™™™™™É?s   %.10fi   s   %d	%.5f	%.5f	%.5f
s   %.9fg        g       @(   t   opent   readlinet   stringt   splitt   intt   floatt   ranget   close(    t   Filenamet   Datacontainer_deft   Datacontainert   Wavelength_step_newt   Redshiftt   Table_1t   Table_1_deft   String_1t   String_2t   Fileobject_readt   Datat   Rowt   Number_of_datalinest   Wavelength_startt   Wavelength_endt   Wavelength_stept   Wavelength_start_newt   Wavelength_end_newt   Stringt   Number_of_datalines_newt   iR4   t   kt   jt   String_jt   Wavelength_jt   Wavelength_it   String_it   Wavelength_i_minus_1t   String_i_minus_1t   Mt   B(    (    s-   /users/jheidt/cgi-bin/calculator/functions.pyt   linear_interpolation`  s¤    ""	 




&


7





'



c   !      C   sÌ  g  } g  } g  }	 g  }
 g  } g  } d } d } d } d } d } d } d } d } | } t  | | | d ƒ } t d d	 ƒ } | j ƒ  } xu t d t | ƒ ƒ D]^ } t j | | ƒ } |
 j t | d ƒ ƒ | j t | d
 ƒ ƒ | j t | d ƒ ƒ q£ Wt | d	 ƒ } | j	 ƒ  } t | j ƒ  ƒ } | j
 ƒ  t | d	 ƒ } | j	 ƒ  } | j	 ƒ  } t j | ƒ } t | d ƒ } | | | | | g } d } d } x| r·| | d k rÆd } Pn  x– | | | k  r^| | k r^| |
 | k  rQ| t | d ƒ | | | | } | j	 ƒ  } | s/Pn  t j | ƒ } t | d ƒ } qÉ| d } qÉW| | k  r¨| r¨| j	 ƒ  } | r´t j | ƒ } t | d ƒ } q´q¦d | }	 d | | | t | d d ƒ t | | | d | | ƒ d } d | | | t | d d ƒ t | | | d | | ƒ d d }  | |  |	 d |  |	 | |  } | d | | | d | | d | d } d | } | | | <d } | | } q¦W| j
 ƒ  | | f S(   Ng        g     @o@g     ¨¶@g¥•¬9Š9g   ð
ß±AgUÊe=±0;i   s   background.iniR1   i   i   i    g•Ö&è.>s   %.9fg      @g    €„.Ai   g      ð?g      ^@g       @g  4&õküBg=Ñaý D2¿g4«-+½°?g˜4Fë¨êñ?g•q��çD¬?g      n@(   Rg   Rc   t	   readlinesRi   t   lenRe   Rf   t   appendRh   Rd   Rj   RG   RT   (!   t   Atmosphere_deft   AirmassRk   Rl   Rx   Ry   Rz   R4   t   ListR}   RE   t   Factort   Sumt   OHt   Atmosphere_temperaturet   Zodiacal_temperatureR   R%   R€   t   Intensity_tmpR   Rw   t   ini_readR   t   Rawt   DatabaseRu   t   Number_of_linesRv   Rm   R�   t   Blackbody_atmospheret   Blackbody_Zodiacal(    (    s-   /users/jheidt/cgi-bin/calculator/functions.pyt   background_theoretical¿  s€    
	$
EI".


(   Re   RS   R   R   R/   R3   R0   R8   R@   RA   RD   RF   RK   RP   RQ   RR   RV   RX   RY   R\   R`   Ra   RŠ   R�   (    (    (    s-   /users/jheidt/cgi-bin/calculator/functions.pyt   <module>   s.   
			=								"											_