~ubuntu-branches/ubuntu/wily/eso-midas/wily-proposed

« back to all changes in this revision

Viewing changes to stdred/spec/proc/spemerge.prg

  • Committer: Package Import Robot
  • Author(s): Ole Streicher
  • Date: 2014-04-22 14:44:58 UTC
  • Revision ID: package-import@ubuntu.com-20140422144458-okiwi1assxkkiz39
Tags: upstream-13.09pl1.2+dfsg
ImportĀ upstreamĀ versionĀ 13.09pl1.2+dfsg

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
! @(#)spemerge.prg      19.1 (ES0-DMD) 02/25/03 14:29:21
 
2
!+++++++++++++++++++++++++++++++++++++++++++++++++++++++
 
3
!
 
4
!.COPYRIGHT   (C) 1992 European Southern Observatory
 
5
!.IDENT       spemerge.prg
 
6
!.AUTHOR      Pascal Ballester,  ESO - Garching
 
7
!.KEYWORDS    Spectroscopy, Echelle,
 
8
!.PURPOSE     Command MERGE/SPECTRUM
 
9
!.VERSION     1.0    Creation  12-AUG-1992
 
10
!
 
11
!-------------------------------------------------------
 
12
!
 
13
DEFINE/PARAM  P1  ?         IMA   "Spectrum 1:"
 
14
DEFINE/PARAM  P2  ?         IMA   "Spectrum 2:"
 
15
DEFINE/PARAM  P3  ?         IMA   "Output name:"
 
16
DEFINE/PARAM  P4  5         NUM   "Interval (in pixels):"
 
17
DEFINE/PARAM  P5  CONSTANT  CHAR  "Merging mode (RAMP, CONSTANT, OPTIMAL):"
 
18
DEFINE/PARAM  P8  CCODE     CHAR  "Option for Optimal: CCODE or PROC"
 
19
!
 
20
IF P5(1:1) .EQ. "O" .AND. P8(1:1) .EQ. "C" THEN
 
21
   WRITE/KEY IN_A {P1}
 
22
   WRITE/KEY IN_B {P2}
 
23
   WRITE/KEY OUT_A {P6}
 
24
   WRITE/KEY OUT_B {P7}
 
25
   WRITE/KEY INPUTC {P3}
 
26
   INPUTI(1) = {P4}
 
27
   RUN STD_EXE:spmerge
 
28
   RETURN
 
29
ENDIF
 
30
!
 
31
DEFINE/LOCAL  STEP/D/1/2    0.,0.
 
32
DEFINE/LOCAL  START/D/1/2   0.,0.
 
33
DEFINE/LOCAL  END/D/1/2     0.,0.
 
34
DEFINE/LOCAL  NPIX/I/1/3    0,0,0
 
35
DEFINE/LOCAL  TEMPD/D/1/1   0.
 
36
DEFINE/LOCAL  TEMPI/I/1/1   0
 
37
DEFINE/LOCAL  TEMPC/C/1/60  XXX
 
38
DEFINE/LOCAL  SPEC1/C/1/60  {P1}
 
39
DEFINE/LOCAL  SPEC2/C/1/60  {P2}
 
40
DEFINE/LOCAL  INTERV/I/1/1  {P4}
 
41
!
 
42
COPY/DK {P1}  STEP/D/1/1    STEP/D/1/1
 
43
COPY/DK {P2}  STEP/D/1/1    STEP/D/2/1
 
44
COPY/DK {P1}  START/D/1/1   START/D/1/1
 
45
COPY/DK {P2}  START/D/1/1   START/D/2/1
 
46
COPY/DK {P1}  NPIX/I/1/1    NPIX/I/1/1
 
47
COPY/DK {P2}  NPIX/I/1/1    NPIX/I/2/1
 
48
 
 
49
IF STEP(1) .NE. STEP(2) THEN
 
50
   WRITE/OUT "Error: Spectra {P1} and {P2} must have the same step"
 
51
   RETURN/EXIT
 
52
ENDIF
 
53
 
 
54
IF START(2) .LT. START(1) THEN
 
55
   TEMPD    = START(2)
 
56
   START(2) = START(1)
 
57
   START(1) = TEMPD
 
58
   TEMPI    = NPIX(2)
 
59
   NPIX(2)  = NPIX(1)
 
60
   NPIX(1)  = TEMPI
 
61
   WRITE/KEYW  TEMPC  {SPEC2}
 
62
   WRITE/KEYW  SPEC2  {SPEC1}
 
63
   WRITE/KEYW  SPEC1  {TEMPC}
 
64
ENDIF
 
65
 
 
66
END(1)   = START(1) + (NPIX(1)-1)*STEP(1)
 
67
END(2)   = START(2) + (NPIX(2)-1)*STEP(2)
 
68
NPIX(3) = (END(2) - START(1))/STEP(1) + 1
 
69
CREATE/IMAGE {P3}  1,{NPIX(3)}  {START(1)},{STEP(1)}
 
70
 
 
71
DEFINE/LOCAL  LIMIT/I/1/2  0.,0.
 
72
LIMIT(1) = INTERV
 
73
LIMIT(2) = {{SPEC1},NPIX(1)}   - INTERV
 
74
EXTRACT/IMAGE  &a = {SPEC1}[@{LIMIT(1)}:@{LIMIT(2)}]
 
75
INSERT/IMAGE &a {P3}
 
76
 
 
77
LIMIT(2) = {{SPEC2},NPIX(1)}  - INTERV
 
78
EXTRACT/IMAGE  &b = {SPEC2}[@{LIMIT(1)}:@{LIMIT(2)}]
 
79
INSERT/IMAGE &b {P3}
 
80
 
 
81
IF START(2) .GE. END(1) THEN
 
82
   WRITE/OUT "Warning: No overlap between the spectra"
 
83
ELSE
 
84
   IF P5(1:1) .EQ. "R" THEN   ! Method RAMP
 
85
      COMPUTE/IMAGE  &o = &a+&b
 
86
      CREATE/IMAGE   &r   1,{&o,NPIX(1)}  {&o,START(1)},{&o,STEP(1)} POLY  0.,1.
 
87
      COMPUTE/IMAGE  &r   = &r - {&r[@1]}
 
88
      COMPUTE/IMAGE  &r   = &r / {&r[@{&r,NPIX(1)}]}
 
89
      COMPUTE/IMAGE  &o = &a*(1.-&r) + &b*&r
 
90
   ENDIF
 
91
   IF P5(1:1) .EQ. "O" THEN   ! Method OPTIMAL
 
92
      COMPUTE/IMAGE &v = {P6}*{P6}
 
93
      COMPUTE/IMAGE &w = {P7}*{P7}
 
94
      COMPUTE/IMAGE &o = (&a*&v + &b*&w)/(&v+&w)
 
95
   ENDIF
 
96
   IF P5(1:1) .EQ. "C" THEN   ! Method CONSTANT
 
97
      COMPUTE/IMAGE &o = (&a+&b)/2.
 
98
   ENDIF
 
99
   INSERT/IMAGE   &o   {P3}
 
100
ENDIF
 
101
 
 
102
RETURN
 
103
 
 
104
!********************************************************** 
 
105
 
 
106
ENTRY histo
 
107
 
 
108
DEFINE/PARAM P1  ?  IMA  "Enter input/output image"
 
109
DEFINE/PARAM P2  0   N   "Reference order"
 
110
DEFINE/PARAM P3  ?   N   "Bin size"
 
111
 
 
112
DEFINE/LOCAL NORD/I/1/1   {{P1},NPIX(2)}
 
113
DEFINE/LOCAL ORD/I/1/1    0
 
114
DEFINE/LOCAL ORD1/I/1/1   0
 
115
DEFINE/LOCAL FACTOR/D/1/1 0.
 
116
DEFINE/LOCAL LOOP/I/1/1   0
 
117
DEFINE/LOCAL BIN/R/1/1    {P3}
 
118
 
 
119
DEFINE/LOCAl POSMAX/I/1/1 0
 
120
DEFINE/LOCAl POS0/I/1/1 0
 
121
DEFINE/LOCAl POS1/I/1/1 0
 
122
DEFINE/LOCAL COEF0/R/1/1  0
 
123
DEFINE/LOCAL COEFM/R/1/1  0
 
124
DEFINE/LOCAL COEF1/R/1/1  0
 
125
DEFINE/LOCAL SCOEF/R/1/1  0
 
126
DEFINE/LOCAL POSGRAV/R/1/1 0
 
127
DEFINE/LOCAL CORD/I/1/1   {P2}
 
128
 
 
129
IF NORD .EQ. 1   RETURN 
 
130
 
 
131
 
 
132
IF CORD .EQ. 0    CORD = NORD/2
 
133
COPY/IT   {P1}   &t
 
134
 
 
135
! SET/GRAPH  yaxis  xaxis=0.,2.
 
136
 
 
137
DO ORD =  1 {NORD}
 
138
 
 
139
   IF ORD .NE. CORD  THEN
 
140
 
 
141
   COMP/TABLE  &t  :AUX = #{ORD}/#{CORD}
 
142
   COMP/HISTO &a = middummt.tbl  :AUX  {BIN}  0.1  10.
 
143
   STAT/IMAGE   &a
 
144
   POSMAX = OUTPUTI(3)
 
145
   POS0   = POSMAX - 1
 
146
   IF POS0 .LT. 1  POS0 = 1
 
147
   POS1   = POSMAX + 1
 
148
   COEF0  = {&a[@{POS0}]}
 
149
   COEFM  = {&a[@{POSMAX}]}
 
150
   COEF1  = {&a[@{POS1}]}
 
151
   SCOEF  = COEF0 + COEFM + COEF1
 
152
   POSGRAV = (POS0*COEF0+POSMAX*COEFM+POS1*COEF1)/SCOEF
 
153
   FACTOR = (POSGRAV-1)*{middumma,STEP(1)}+{middumma,START(1)}
 
154
   WRITE/OUT "Order {ORD}. Normalization {FACTOR}"
 
155
   COMP/TABLE   &t  #{ORD} = #{ORD} / {FACTOR}
 
156
 
 
157
   
 
158
   ENDIF
 
159
 
 
160
ENDDO
 
161
 
 
162
DELETE/COLUMN &t  :AUX
 
163
COPY/TI  &t   &u
 
164
COPY/DD  {P1}  *,1  &u
 
165
COPY/II  &u    {P1}
 
166
COPY/DD  &u    *,1  {P1}
 
167
 
 
168
RETURN
 
169