def RR_histogram(X,Y,Xr,Yr,distance,th_min,th_max,theta_bins,cat_number=3):
    
    n_points=len(X)
    #Xmin=1.0*np.floor( np.amin(X) )
    #Xmax=1.0*np.ceil( np.amax(X) )
    #Ymin=1.0*np.floor( np.amin(Y) )
    #Ymax=1.0*np.ceil( np.amax(Y) )
    

    #Xr= Xmin +  ( Xmax - Xmin )*np.random.random_sample(n_points*cat_number)
    #Yr=Ymin +   ( Ymax - Ymin )*np.random.random_sample(n_points*cat_number)
    d_arr=[]

    for m in range(cat_number):
        print "random cat=",m
        for i in range(n_points):
            for j in range(i+1,n_points):
                
                d=(Xr[i + n_points*m ] - Xr[j + n_points*m ])*(Xr[i + n_points*m ] - Xr[j + n_points*m ]) + (Yr[i + n_points*m ] - Yr[j + n_points*m ])*(Yr[i + n_points*m ] - Yr[j + n_points*m ])
                d=np.sqrt(d)/distance
                d_arr=np.append(d_arr,d)
                
    theta=206265*d_arr 
    
    RR,bins=np.histogram(theta,bins=theta_bins, range=(th_min,th_max))
    
    N=1.0*n_points*(1.0*n_points-1.0)/2.0
    N=N*cat_number
    RR=RR/N            
    
    return RR,bins
def DR_histogram(X,Y,Xr,Yr,distance,th_min,th_max,theta_bins,cat_number=3):
    n_points=len(X)
    #Xmin=1.0*np.floor( np.amin(X) )
    #Xmax=1.0*np.ceil( np.amax(X) )
    #Ymin=1.0*np.floor( np.amin(Y) )
    #Ymax=1.0*np.ceil( np.amax(Y) )
    

    #Xr= Xmin +  ( Xmax - Xmin )*np.random.random_sample(n_points*cat_number)
    #Yr=Ymin +   ( Ymax - Ymin )*np.random.random_sample(n_points*cat_number)
    d_arr=[]
    print "number of LAEs=" + str(n_points)
    for m in range(cat_number): 
        for i in range(n_points):
	    if(i%100==0):
            	print "LAE_"+str(i)
            for j in range(n_points):
                d=( X[i] - Xr[j + n_points*m] )*( X[i] - Xr[j + n_points*m] ) + ( Y[i] - Yr[j + n_points*m] )*( Y[i] - Yr[j + n_points*m] )
                d=np.sqrt(d)/distance
                d_arr=np.append(d_arr,d)
    theta=206265*d_arr 
    
    DR,bins=np.histogram(theta,bins=theta_bins, range=(th_min,th_max))
    
    N=1.0*n_points*(n_points)
    N=(N*cat_number)            
    DR=DR/N
    
    return DR,bins
def DD_histogram(X,Y,distance,th_min,th_max,theta_bins):

    n_points=len(X)
    d_arr=[]
    print "number of LAEs=" + str(n_points)
    for i in range(n_points):
        
        if(i%100==0):
            print "LAE_"+str(i)
        for j in range(i+1,n_points):
            d=(X[i] - X[j])*(X[i] - X[j]) + (Y[i] - Y[j])*(Y[i] - Y[j])
            d=np.sqrt(d)/distance
            d_arr=np.append(d_arr,d)
            
            
    theta=206265.0*d_arr         
    
    
    DD,bins=np.histogram(theta,bins=theta_bins, range=(th_min,th_max))
    
    N=1.0*n_points*(1.0*n_points-1.0)/2.0
    DD=DD/N
    
    return DD,bins