Beispiel #1
0
def ellipsoidSecondaryLL(rays,R0,F,S,psi,zmax,zmin,dphi,coeff,axial,az):
    """
    Trace rays to the secondary of an ellipsoid-hyperboloid
    telescope. Add L-L distortions.
    Call at focus, just like with Wolter-I
    """
    #Compute ellipsoid parameters
    P,a,b,e,f = con.ellipsoidFunction(S,psi,R0,F)
    psi_eff = np.arctan(R0/P)/(np.arctan(R0/F)-np.arctan(R0/P))
    #Call secondary
    secondaryLL(rays,R0,F,psi_eff,zmax,zmin,dphi,coeff,axial,az)
    return
Beispiel #2
0
def ellipsoidSecondary(rays,R0,F,S,psi):
    """
    Trays rays to the secondary of an ellipsoid-hyperboloid
    telescope.
    Call at focus, just like with Wolter-I.
    Effective psi for secondary must be computed from
    ellipsoid parameters.
    """
    #Compute ellipsoid parameters
    P,a,b,e,f = con.ellipsoidFunction(S,psi,R0,F)
    psi_eff = np.arctan(R0/P)/(np.arctan(R0/F)-np.arctan(R0/P))
    #Call Wolter secondary
    woltersecondary(rays,R0,F,psi=psi_eff)
    return
Beispiel #3
0
def ellipsoidPrimary(rays,R0,F,S,psi):
    """
    Trace rays to the primary of an ellipsoid-hyperboloid
    telescope.
    Call at focus, just like with Wolter-I
    """
    #Compute ellipsoid parameters
    P,a,b,e,f = con.ellipsoidFunction(S,psi,R0,F)
    R = b**2/a

    #Move to vertex
    tran.transform(rays,0,0,F+f-P-a,0,0,0)
    #Call conic
    conic(rays,R,-e**2)
    #Go back to focus
    tran.itransform(rays,0,0,F+f-P-a,0,0,0)

    return