aboutsummaryrefslogtreecommitdiff
path: root/noao/astcat/src/awcs/ccqseq.x
blob: 542ea05e772d43049a026b7458ecb02f7d370aa1 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
# CCGSEQ -- Routine for computing RA and Dec for a given X,Y pixel
# position on a GSSS image. Adapted from stsdas$pkg/analysis/gasp/gasplib/.
# See stsdas$copyright.stdas for copyright restrictions.

procedure ccgseq (plate_centre_ra, plate_centre_dec, plate_centre_x,
	plate_centre_y, x_pixel_size, y_pixel_size, plate_scale, amd_x,
	amd_y, object_x, object_y, object_mag, object_col, object_ra,
	object_dec)

double	plate_centre_ra		#I plate Right Ascension (radians)
double	plate_centre_dec	#I plate Declination     (radians)
double	plate_centre_x		#I x position used in solution (microns)
double	plate_centre_y		#I y position used in solution (microns) 
double	x_pixel_size		#I scan pixel size in x (microns)
double	y_pixel_size		#I scan pixel size in y (microns)  
double	plate_scale		#I plate scale (arcsec / mm)
double	amd_x[ARB]		#I ra plate model coefficients
double	amd_y[ARB]		#I dec plate model coefficinets
double	object_x		#I x pixel position for object
double	object_y		#I y pixel positions for objects 
double	object_mag		#I object magnitude 
double	object_col		#I object colour
double	object_ra		#O object ra (radians)	
double	object_dec		#O object dec (radians)

double	x			# position from center (mm)
double	y			# position from center (mm)
double	xi_object		# xi standard coordinate (arcsec)
double	eta_object		# eta standard coordinate (arcsec)
double  p1,p2,p3,p4

begin
	# Convert x,y from pixels to mm measured from the plate centre

	x = (plate_centre_x - object_x * x_pixel_size) / 1000.0d0
	y = (object_y * y_pixel_size - plate_centre_y) / 1000.0d0

	# Compute standard coordinates from x,y and plate model coefficients

	p1 = 	  amd_x(1)	*x		       		+
     		  amd_x(2)	*y		       		+
     		  amd_x(3)			       		+
     		  amd_x(4)	*x**2		       		+
     		  amd_x(5)	*x*y		       		+
     		  amd_x(6)	*y**2		       		

        p2 = 	  amd_x(7)	*(x**2+y**2)	       		+
     		  amd_x(8)	*x**3    	       		+
     		  amd_x(9) 	*x**2*y		       		+
     		  amd_x(10)	*x*y**2		       		+
     		  amd_x(11)  	*y**3		       		

     	p3 = 	  amd_x(12)	*x*(x**2+y**2)	       		+
     		  amd_x(13)	*x*(x**2+y**2)**2  		+
     		  amd_x(14)	*object_mag			+
     		  amd_x(15)	*object_mag**2			+
     		  amd_x(16)	*object_mag**3			

     	p4 =	  amd_x(17)	*object_mag*x			+
     		  amd_x(18)	*object_mag*(x**2+y**2)	        +
     		  amd_x(19)	*object_mag*x*(x**2+y**2)	+
     		  amd_x(20)	*object_col

	xi_object = p1 + p2 + p3 + p4

	p1 =       amd_y(1)	*y		       		+
     		   amd_y(2)	*x		       		+
     		   amd_y(3)			       		+
     		   amd_y(4)	*y**2		       		+
     		   amd_y(5)	*x*y		       		+
     		   amd_y(6)	*x**2				

     	p2 = 	   amd_y(7)	*(x**2+y**2) 	 		+
     		   amd_y(8)	*y**3    	       		+
     		   amd_y(9) 	*y**2*x				+
     		   amd_y(10)	*y*x**2				+
     		   amd_y(11)  	*x**3				

     	p3 = 	   amd_y(12)	*y*(x**2+y**2)			+
     		   amd_y(13)	*y*(x**2+y**2)**2		+
     		   amd_y(14)	*object_mag			+
     		   amd_y(15)	*object_mag**2			+
     		   amd_y(16)	*object_mag**3			

     	p4 = 	   amd_y(17)	*object_mag*y			+
     		   amd_y(18)	*object_mag*(x**2+y**2)		+
     		   amd_y(19)	*object_mag*y*(x**2+y**2)	+
     		   amd_y(20)	*object_col  

	eta_object = p1 + p2 + p3 + p4

	call trsteq (plate_centre_ra, plate_centre_dec,
     	             xi_object, eta_object, object_ra, object_dec)

end