1
C @(#)rfotrfit.for 19.1 (ES0-DMD) 02/25/03 13:30:15
2
C===========================================================================
3
C Copyright (C) 1995 European Southern Observatory (ESO)
5
C This program is free software; you can redistribute it and/or
6
C modify it under the terms of the GNU General Public License as
7
C published by the Free Software Foundation; either version 2 of
8
C the License, or (at your option) any later version.
10
C This program is distributed in the hope that it will be useful,
11
C but WITHOUT ANY WARRANTY; without even the implied warranty of
12
C MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
C GNU General Public License for more details.
15
C You should have received a copy of the GNU General Public
16
C License along with this program; if not, write to the Free
17
C Software Foundation, Inc., 675 Massachusetss Ave, Cambridge,
20
C Corresponding concerning ESO-MIDAS should be addressed as follows:
21
C Internet e-mail: midas@eso.org
22
C Postal address: European Southern Observatory
23
C Data Management Division
24
C Karl-Schwarzschild-Strasse 2
25
C D 85748 Garching bei Muenchen
27
C===========================================================================
31
C.IDENTIFICATION: RFOTFIT
32
C.PURPOSE: Determine characteristics of object by non-linear fitting
33
C. Data and results are taken from and written the int. table
34
C.AUTHOR: R. Buonanno, G. Buscema, C. Corsi, I. Ferraro, G. Iannicola
35
C. Osservatorio Astronomico di Roma
36
C.VERSION: 05/14/87 date of creation
37
C.VERSION: 15/12/87 RHW implementation in MIDAS standard interfaces
38
C.VERSION: 10/03/88 RB new version
39
C.VERSION: 03/05/89 RHW change to ST interfaces and streamlining code
40
C.VERSION: 22/01/91 RHW all variables declared; implicit none added
43
INCLUDE 'MID_REL_INCL:RFOTDECL.INC'
59
PARAMETER (NCD=MBB-18)
60
PARAMETER (NTM=NCD/6.5)
62
PARAMETER (M12=NDXY*NDXY)
63
PARAMETER (IDP=(NTM*4)+3)
71
INTEGER IOBJ, IROW, IDUM
76
INTEGER IND, INK, INK1
77
INTEGER ISTZE(100),ISTUN(100),ISTMA(100)
78
INTEGER IVX(M12),IVY(M12)
79
INTEGER ISC(7), ISX, ISY
81
INTEGER IDI, IND1, IND2
84
INTEGER JL0, JL1, JL2, JIL4
85
INTEGER J5, JIL, JOLD, JQ4
89
INTEGER K3, KP, KG, KKL, KL, KTP, KTS, KRO, K13
90
INTEGER KAL, KSF, KPR1, KAS
91
INTEGER K6, K7, K9, K74
95
INTEGER L2, L3, L4, L5, L6, L7
99
INTEGER MASK(NDXY,NDXY)
100
INTEGER NCINT,NRINT,NSINT,NACINT,NARINT
101
INTEGER NOBJ, NGRP, NINT, NAXIS
106
INTEGER NITER, NC, NP, NCOM, NCO
107
INTEGER NCM, NUX, NRFR
108
INTEGER NHL, NCP, NCOMM, NCAL
115
INTEGER PREVET,PREMAS,FRASUZ,RIPVET,CALINT,AZZMAS,CONPAR
117
DOUBLE PRECISION START(3),STEP(3)
118
DOUBLE PRECISION TDNULL,TDTRUE,TDFALS,DDUM
120
REAL A, ALAL, ABC, ALT1
122
REAL B, BET,BETA, BEBE
123
REAL D, D1, D2, D3, D4, D6
126
REAL FOG, FON, FON1, FOG1, FAT
129
REAL P(IDP),PES(7),SIGP(1000),RIA(NDXY)
134
REAL RK4, RMIY, RKN, RR, RINTQ, RMAY
135
REAL SAT, SIGMA, SOFOT, SIGG, SCAP, SAT1
136
REAL SLU, SQM , SIGQ, SQMS, SMT, SIGMA1
139
REAL USC(NTM),USE(NTM)
142
REAL VEZE(MPA),VEUN(MPA),VEMA(MPA)
146
CHARACTER FITMET*20,CBETA*80,FITOPT*4,MOF*1,WE*1,AVEOPT*1
148
CHARACTER FRAME*60,IDENT*72,CUNIT*72
153
CHARACTER SIGFI*1,SKYFI*1,POSFI*1,IUT*1,TILT*1
158
INCLUDE 'MID_INCLUDE:ST_DEF.INC'
160
INCLUDE 'MID_INCLUDE:ST_DAT.INC'
162
DATA PES/1.,1.,2.,2.,1.,1.,2./
169
9001 FORMAT('Frame: ',A40)
170
9002 FORMAT('Intermediate table: ',A40)
171
9003 FORMAT('Sigma: ', G13.6,'; Saturation: ', G13.6)
172
9004 FORMAT('Tolerance: ', G13.6,'; # Iterations: ', I5)
173
9005 FORMAT('Fit method: MOFFET, UNIFORM weighting; BETA: ',G13.6)
174
9006 FORMAT('Fit method: MOFFET, 1/N weighting; BETA: ', G13.6)
175
9007 FORMAT('Fix sigma, fix position, fix sky, tilt sky plane: ',A)
177
9011 FORMAT('Too few pixel in this window')
178
9012 FORMAT('Window identification: ',I6,2X,
179
2 ' Components: ',I2,2X,' Iterations: ',I2)
180
9013 FORMAT('Fit errors: ',4F9.4)
184
9022 FORMAT('Components not examined: ',I6)
185
9023 FORMAT('Total Mag. index Histogram')
186
9024 FORMAT(1X,I5,2X,F5.1,1X,F11.0,1X,'I',A50)
187
9025 FORMAT(1X,I5,2X,F5.1,1X,F11.0,1X,'I')
188
9026 FORMAT('Components succesfully fitted: ',I6)
189
9027 FORMAT('Components with no convergency: ',I6)
191
9031 FORMAT('Iteration: ',I6,'; Added star: ',I6)
192
9032 FORMAT('Component below the photometric threshold')
193
9035 FORMAT('N O C O N V E R G E N C E on ',I3,' components')
194
9036 FORMAT(1X,I6,' Component Parameters: ',F15.1,2F9.1,F7.2)
195
9037 FORMAT('N O C O N V E R G E N C E')
198
C *** Start the program *****************************************************
200
CALL TBMNUL(TINULL,TRNULL,TDNULL)
201
CALL TBMCON(TBLSEL,TDTRUE,TDFALS)
210
CALL STKRDC('IN_A',1,1,60,IAC,FRAME,KUN,KNUL,ISTAT)
211
CALL STIGET(FRAME,D_R4_FORMAT,F_I_MODE,F_IMA_TYPE,3,NAXIS,
212
2 NPIX,START,STEP,IDENT,CUNIT,IPNTR,IMF,ISTAT)
216
C *** read the intermediate file
217
CALL STKRDC('IN_B',1,1,60,IAC,STRING,KUN,KNUL,ISTAT) ! intermediate file
218
IFLG = INDEX(INTFIL,'/') ! look for the flag
223
INTFIL = STRING(1:IFLG-1)
225
CALL STECNT('GET',EC,ED,EL)
226
CALL STECNT('PUT',1,0,0)
227
CALL TBTOPN(INTFIL,F_IO_MODE,TIDINT,ISTAT)
229
STRING = '*** FATAL: Problems with opening intermediate'//
231
CALL STTPUT(STRING,ISTAT)
236
CALL TBIGET(TIDINT,NCINT,NRINT,NSINT,NACINT,NARINT,ISTAT)
238
STRING = '*** FATAL: Problems with getting info for '//
239
2 ' intermediate table; Try again ... '
240
CALL STTPUT(STRING,ISTAT)
244
STRING = '*** FATAL: No data points in intermediate table'
245
CALL STTPUT(STRING,ISTAT)
248
CALL STECNT('PUT',EC,ED,EL)
250
C *** read table descriptor
251
CALL INTDRD(TIDINT,NGRP,NOBJ,NINT,
252
2 SAT,FAT,SIGMA,BETA,SOFOT,AIN,FOG)
254
C *** get threshold, sky background
255
CALL STKRDR('INPUTR',1,2,IAC,RVAL,KUN,KNUL,ISTAT) !thresh., sky backgr
256
IF (RVAL(1) .GT. 0.0) THEN
262
IF (FON1.NE.0.0) THEN
270
C IF (FOG1.NE.0.0 .OR. FON1.NE.0.0 .OR. A1.NE.0.0) THEN
277
C *** get sigma, sateration, tolerance, max. number of iterations
278
CALL STKRDR('INPUTR',3,4,IAC,RVAL,KUN,KNUL,ISTAT)
281
IF (SIGMA1.NE.0. .OR. SAT1.NE.0.) THEN
292
C *** get fitting method
293
CALL STKRDC('INPUTC',1,1,20,IAC,FITMET,KUN,KNUL,ISTAT) !fit method
294
CALL UPCAS(FITMET,FITMET)
295
IF (FITMET(1:2) .EQ.'MU') THEN
298
NCOMM = INDEX(FITMET,',')
299
CBETA = FITMET(NCOMM+1:20)
301
CALL GENCNV(CBETA,2,1,IDUM,BETA,DDUM,ISTAT)
302
C CALL USRINP(BETA,1,'R',CBETA)
303
IF (ABS(BETA).LT.1.0E-30) THEN
308
ELSE IF (FITMET(1:2).EQ.'MI') THEN
311
NCOMM = INDEX(FITMET,',')
312
CBETA = FITMET(NCOMM+1:20)
314
CALL GENCNV(CBETA,2,1,IDUM,BETA,DDUM,ISTAT)
315
C CALL USRINP(BETA,1,'R',CBETA)
316
IF (ABS(BETA).LT.1.0E-30) THEN
321
ELSE IF (FITMET(1:2).EQ.'GU') THEN
326
ELSE IF (FITMET(1:2).EQ.'GI') THEN
338
CALL STKRDC('INPUTC',1,21,4,IAC,FITOPT,KUN,KNUL,ISTAT) !fit option
339
CALL UPCAS(FITOPT,FITOPT)
345
C *** get the fix option, sigma, position, sky background, sky tilt
347
IF (SKYFI.EQ.'Y' .AND. POSFI.EQ.'Y') THEN
348
CALL STTPUT('*** WARNING: Illegal combination, '//
349
2 '... try again',ISTAT)
351
CALL STKWRC('INPUTC',1,FITOPT,21,4,KUN,ISTAT)
352
CALL STKPRC(STRING,'INPUTC',1,21,4,IAC,FITOPT,KUN,KNUL,ISTAT)
353
CALL UPCAS(FITOPT,FITOPT)
361
IF (SIGFI.NE.'N') SIGFI = 'Y'
362
IF (POSFI.NE.'Y') POSFI = 'N'
363
IF (SKYFI.NE.'Y') THEN
365
IF (POSFI.NE.'Y') THEN
368
IF (TILT.NE.'Y') THEN
373
CALL STKRDC('INPUTC',1,41,1,IAC,AVEOPT,KUN,KNUL,ISTAT) ! aver. option
374
CALL UPCAS(AVEOPT,AVEOPT)
377
CALL STKRDC('INPUTC',1,61,1,IAC,DIS,KUN,KNUL,ISTAT) ! display
385
C *** write the info to the screen
386
WRITE(STRING,9001) FRAME
387
CALL STTPUT(STRING,ISTAT)
388
WRITE(STRING,9002) INTFIL
389
CALL STTPUT(STRING,ISTAT)
390
WRITE(STRING,9003) SIGMA, SAT
391
CALL STTPUT(STRING,ISTAT)
392
WRITE(STRING,9004) PSA,TNIT
393
CALL STTPUT(STRING,ISTAT)
395
IF (FITMET(1:2).EQ.'MU') THEN
396
WRITE(STRING,9005) BETA
397
ELSE IF (FITMET(1:2).EQ.'MI') THEN
398
WRITE(STRING,9006) BETA
399
ELSE IF (FITMET(1:2).EQ.'GU') THEN
400
STRING = 'Fit method: GAUSS, UNIFORM weighting'
401
ELSE IF (FITMET(1:2).EQ.'GI') THEN
402
STRING = 'Fit method: GAUSS, 1/N weighting'
404
CALL STTPUT(STRING,ISTAT)
406
WRITE(STRING,9007) FITOPT
407
CALL STTPUT(STRING,ISTAT)
409
IF (AVEOPT.EQ.'S') THEN
410
STRING = 'Trial values: mean sigma'
411
ELSE IF (AVEOPT.EQ.'B') THEN
412
STRING = 'Trial values: mean sky background'
413
ELSE IF (AVEOPT.EQ.'A') THEN
414
STRING = 'Trial values: mean sigma and mean sky background'
416
STRING = 'Trial values: none'
418
CALL STTPUT(STRING,ISTAT)
420
C *** set the display flag
421
CALL STKRDI('LOG',4,1,IAC,ODISPL,KUN,KNUL,ISTAT)
422
CALL STKWRI('LOG',NDISPL,4,1,KUN,ISTAT)
424
CALL STTPUT(STRING,ISTAT)
425
C *** do the work *****************************************************
436
CALL INTWRD(TIDINT,IROW,NCP,NHL) ! read the window
437
CALL TBSGET(TIDINT,IROW,SFLAG,ISTAT)
455
P((IS-1)*4+4) = FITCMP((IS-1)*6+1)
456
P((IS-1)*4+5) = FITCMP((IS-1)*6+2)
457
P((IS-1)*4+6) = FITCMP((IS-1)*6+3)
458
P((IS-1)*4+7) = FITCMP((IS-1)*6+4)
459
USC(IS) = FITCMP((IS-1)*6+5)
460
USE(IS) = FITCMP((IS-1)*6+6)
464
PB((IH-1)*3+1) = FITHOL((IH-1)*3+1)
465
PB((IH-1)*3+2) = FITHOL((IH-1)*3+2)
466
PB((IH-1)*3+3) = FITHOL((IH-1)*3+3)
469
DO 1013 K3 = 1,NTM ! initialize the flag array
470
IF (FLGCMP(K3).GE.2) THEN
473
NONF(K3) = FLGCMP(K3)
479
IF (TILT.EQ.'N') THEN
484
IF (FON1.GT.0 .OR. (INME.EQ.'B' .OR. INME.EQ.'A')) THEN
501
ASSIGN 30011 TO PREVET ! PREPARA VETTORE
505
IF (NCOM.GT.0 .AND. FL.EQ.0) THEN
507
ASSIGN 30012 TO PREMAS ! PREPARA MASCHERA
515
DO 1014 J5 = LJ3,LJ3+NC-1
517
CALL REALIN(NPL,NL,J5,LJ1,NP,MADRID(IPNTR),RIA)
519
IF (MASK(JOLD,I).EQ.0) THEN
521
IF (VAL.LT.SAT.AND.VAL.GT.0.) THEN
538
IF (KP.GT.NCOM*4+3) THEN
539
ASSIGN 30013 TO FRASUZ !FRASER SUZUKI
548
WRITE (STRING,9012) IDNGRP,NCP,NITER
549
CALL STTPUT(STRING,ISTAT)
551
ASSIGN 30014 TO RIPVET !ripristina vettore
557
FLGCMP(K3) = NONF(K3)
562
ASSIGN 30015 TO CALINT !calcola interquartile
568
IKKL = KTP+(KKL-1)*KTS
570
2 (SIGP(KL),KL=IKKL+1,IKKL+KTS)
573
WRITE(STRING(53:),9014)
574
2 (SIGP(KL),KL=1,KTP)
577
CALL STTPUT(STRING,ISTAT)
579
CALL STTPUT(' ',ISTAT)
584
CALL STTPUT(STRING,ISTAT)
587
C *** write the output row for this window
593
PARINT(6) = FLOAT(NP)
594
PARINT(7) = FLOAT(NC)
600
PARINT(13) = FLOAT(NITER)
601
PARINT(14) = FLOAT(GR)
604
FITCMP((IS-1)*6+1) = P((IS-1)*4+4)
605
FITCMP((IS-1)*6+2) = P((IS-1)*4+5)
606
FITCMP((IS-1)*6+3) = P((IS-1)*4+6)
607
FITCMP((IS-1)*6+4) = P((IS-1)*4+7)
608
FITCMP((IS-1)*6+5) = USC(IS)
609
FITCMP((IS-1)*6+6) = USE(IS)
613
FITHOL((IH-1)*3+1) = PB((IH-1)*3+1)
614
FITHOL((IH-1)*3+3) = PB((IH-1)*3+2)
615
FITHOL((IH-1)*3+3) = PB((IH-1)*3+3)
618
CALL INTWWR(TIDINT,IROW,NCP,NHL)
621
IF (FLGCMP(KRO).EQ.0) THEN
624
VEZE(JL0) = -2.5*ALOG10(RK4)
628
RMAY = AMAX1(RMAY,VEZE(JL0))
629
RMIY = AMIN1(RMIY,VEZE(JL0))
631
ELSE IF (FLGCMP(KRO).EQ.1) THEN
634
VEUN(JL1) = -2.5*ALOG10(RK4)
638
RMAY = AMAX1(RMAY,VEUN(JL1))
639
RMIY = AMIN1(RMIY,VEUN(JL1))
641
ELSE IF (FLGCMP(KRO).GT.1)THEN
644
VEMA(JL2) = -2.5*ALOG10(RK4)
648
RMAY = AMAX1(RMAY,VEMA(JL2))
649
RMIY = AMIN1(RMIY,VEMA(JL2))
653
CALL INTDWR(TIDINT,NGRP,NOBJ,NINT,SAT,FAT,SIGMA,
654
2 BETA,SOFOT,AIN,FOG)
656
ASSIGN 30016 TO AZZMAS !AZZERA MASCHERA
662
IROW = IROW + NCP + NHL
663
IF (IROW.LE.NRINT) THEN
667
C *** display the histogram
671
NCAL = (RMAY-VEZE(I))/PAS+1
672
IF (NCAL.GT.100) NCAL=100
673
ISTZE(NCAL) = ISTZE(NCAL)+1
674
MAXX = MAX0(MAXX,ISTZE(NCAL))
678
NCAL = (RMAY-VEUN(I))/PAS+1
679
IF (NCAL.GT.100) NCAL=100
680
ISTUN(NCAL) = ISTUN(NCAL)+1
681
MAXX = MAX0(MAXX,ISTUN(NCAL))
685
NCAL = (RMAY-VEMA(I))/PAS+1
686
IF (NCAL.GT.100) NCAL=100
687
ISTMA(NCAL) = ISTMA(NCAL)+1
688
MAXX = MAX0(MAXX,ISTMA(NCAL))
691
NCM = (RMAY-RMIY)/PAS+1
694
CALL STTPUT(STRING,ISTAT)
695
WRITE(STRING,9022) JL0
696
CALL STTPUT(STRING,ISTAT)
697
CALL STTPUT(' ',ISTAT)
699
CALL STTPUT(STRING,ISTAT)
700
CALL STTPUT(' ',ISTAT)
703
NUX = 50.*ISTZE(I)/MAXX
711
WRITE(STRING,9024) ISTZE(I),ANC,HH,XXX
712
CALL STTPUT(STRING,ISTAT)
714
WRITE(STRING,9025) ISTZE(I),ANC,HH
715
CALL STTPUT(STRING,ISTAT)
722
CALL STTPUT(STRING,ISTAT)
723
WRITE(STRING,9026) JL1
724
CALL STTPUT(STRING,ISTAT)
725
CALL STTPUT(' ',ISTAT)
727
NUX = 50.*ISTUN(I)/MAXX
735
WRITE(STRING,9024) ISTUN(I),ANC,HH,XXX
736
CALL STTPUT(STRING,ISTAT)
738
WRITE(STRING,9025) ISTUN(I),ANC,HH
739
CALL STTPUT(STRING,ISTAT)
746
CALL STTPUT(STRING,ISTAT)
747
WRITE(STRING,9027) JL2
748
CALL STTPUT(STRING,ISTAT)
749
CALL STTPUT(' ',ISTAT)
751
NUX = 50.*ISTMA(I)/MAXX
760
WRITE(STRING,9024) ISTMA(I),ANC,HH,XXX
761
CALL STTPUT(STRING,ISTAT)
763
WRITE(STRING,9025) ISTMA(I),ANC,HH
764
CALL STTPUT(STRING,ISTAT)
769
CALL TBTCLO(TIDINT,ISTAT)
770
CALL STKWRI('LOG',ODISPL,4,1,KUN,ISTAT)
773
C ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
777
C-------------------------------------------------------------------------------
784
IF (FLGCMP(LI).GE.1) THEN
789
IF (INME.EQ.'S' .OR. INME.EQ.'A') THEN
796
PA(IDI+LLI) = P(IDE+LLI)
798
PA(IDI+1) = PA(IDI+1)*ALT1
805
C ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
809
C-------------------------------------------------------------------------------
810
30002 CONTINUE !PREPARA MASCHERA
814
L4 = AMAX1(1.,PB(ICB+3)-PB(ICB+1))
815
L5 = AMIN1(FLOAT(NC),PB(ICB+3)+PB(ICB+1)+.99)
816
L6 = AMAX1(1.,PB(ICB+2)-PB(ICB+1))
817
L7 = AMIN1(FLOAT(NP),PB(ICB+2)+PB(ICB+1)+.99)
820
DELT = (FLOAT(L2)-PB(ICB+2))**2 +
821
2 (FLOAT(L3)-PB(ICB+3))**2
830
C ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
834
C-------------------------------------------------------------------------------
835
30003 CONTINUE ! TO FRASER SUZUKI
844
IF (POSFI.EQ.'Y' .AND. SIGFI.EQ.'Y') THEN
845
CALL ELMRPF(IVX,IVY,VZ,KP,PA,D,PES,NCOM,BETA,
846
2 SQM,LFLAG,WEI,SIGP)
850
NONF(K9) = FLGCMP(K9)
859
IF (LFLAG.NE.0) GO TO 39903
861
RTELOG = ABS(US).LE.SLU .OR. NITER.GE.TNIT .OR.
863
IF (RTELOG) GO TO 39603
866
IF (NITER.LE.50.) THEN
868
ELSE IF (NITER.GT.50. .AND. NITER.LE.80.) THEN
875
IF (NITER.LE.1.) PES(4)=.1
878
IF (SIGFI.EQ.'Y' .AND. SKYFI.EQ.'Y' .AND.
880
CALL ELMRF(IVX,IVY,VZ,KP,PA,D,PES,NCOM,BETA,
881
2 SQM,LFLAG,WEI,SIGP)
885
ELSE IF (SIGFI.EQ.'N' .AND. SKYFI.EQ.'Y' .AND.
887
CALL ELMRFV(IVX,IVY,VZ,KP,PA,D,PES,NCOM,BETA,
888
2 SQM,LFLAG,WEI,SIGP)
892
ELSE IF (SIGFI.EQ.'Y' .AND. TILT.EQ.'N' .AND.
894
CALL ELMRR(IVX,IVY,VZ,KP,PA,D,PES,NCOM,BETA,
895
2 SQM,LFLAG,WEI,SIGP)
899
ELSE IF (SIGFI.EQ.'Y' .AND. TILT.EQ.'Y' .AND.
901
CALL ELMRX(IVX,IVY,VZ,KP,PA,D,PES,NCOM,BETA,
902
2 SQM,LFLAG,WEI,SIGP)
906
ELSE IF (SIGFI.EQ.'N' .AND. TILT.EQ.'N' .AND.
908
CALL ELMRRV(IVX,IVY,VZ,KP,PA,D,PES,NCOM,BETA,
909
2 SQM,LFLAG,WEI,SIGP)
913
ELSE IF (SIGFI.EQ.'N' .AND. TILT.EQ.'Y' .AND.
915
CALL ELMRV(IVX,IVY,VZ,KP,PA,D,PES,NCOM,BETA,
916
2 SQM,LFLAG,WEI,SIGP)
920
ELSE IF(SIGFI.EQ.'N' .AND. POSFI.EQ.'Y') THEN
921
CALL ELMRPV(IVX,IVY,VZ,KP,PA,D,PES,NCOM,BETA,
922
2 SQM,LFLAG,WEI,SIGP)
932
ASSIGN 30017 TO CONPAR
938
IF (NRFR.GT.0 .AND. LFLAG.EQ.0) THEN
942
IF (KFR(K3).GT.0) THEN
944
IF (P(IND).GT.HGU) THEN
956
ABC = ((PA(K6+1)-P(IND))**2 +
957
2 (PA(K6+2)-P(IND+1))**2)/PA(K6+3)**2
958
IF (ABS(BETA).LT.1.0E-30) THEN
959
ABC = PA(K6)*EXP(-ABC*4*ALOG(2.))
961
ABC = PA(K6)*(1.+ABC)**(-BETA)
966
WRITE (STRING,9031) NITER,NPSG
967
CALL STTPUT(STRING,ISTAT)
969
IF (HGU.GT.SOFOT) THEN
978
IF (NPSG.LE.IND) GO TO 30503
979
IF (FLGCMP(IND).GE.1) IND2=IND2+1
983
IF (IND2.LT.NCOM) THEN
984
DO 30603 LI = NCOM,IND2+1,-1
986
DO 30703 K3 = IND,IND+3
994
DO 30803 K3 = IND,IND+3
995
PA(K3) = P(IND1+K3-IND)
999
CALL STTPUT(STRING,ISTAT)
1001
KFR(NPSG)=-KFR(NPSG)
1003
IF (LFLAG.EQ.0) THEN
1012
C ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1016
C-------------------------------------------------------------------------------
1017
30004 CONTINUE !RIPRISTINA VETTORE
1022
IF (INME.EQ.'B'.OR.INME.EQ.'A') THEN
1025
FON = (FON+PA(3)*RKN)/(1+RKN)
1030
IF (NONF(LI).GE.1) THEN
1034
IF (NONF(LI).EQ.1) THEN
1037
ALT1 = (ALT1+PA(IDI+1)/P(IDE+1)*KAS)/(1.+KAS)
1039
P(IDE+LLI) = PA(IDI+LLI)
1041
IF (SIGFI.EQ.'N' .AND.
1042
2 (INME.EQ.'S'.OR.INME.EQ.'A')) THEN
1045
SIGG = (SIGG+PA(IDI+4)*RKN)/(1+RKN)
1052
C ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1056
C-------------------------------------------------------------------------------
1057
30005 CONTINUE ! CALCOLA INTERQUARTILE
1058
IF (BETA.GT.0.0) BEBE=-1./BETA
1060
DO 30105 JIL = 1,NCP
1064
IF (FLGCMP(JIL).EQ.1) THEN
1066
IF (ABS(BETA).LT.1.0E-30) THEN
1068
SMT = AIN*EXP((1./SIGQ)*ALAL)
1069
IF (P(JIL4).GE.SMT) THEN
1070
RAG(JIL) = P(JIL4+3)**2*
1071
2 (-ALOG(AIN/P(JIL4))/ALAL)
1077
SMT = AIN*((1./SIGQ)+1.)**BETA
1078
IF (P(JIL4).GE.SMT) THEN
1079
RAG(JIL) = P(JIL4+3)**2*
1080
2 ((AIN/P(JIL4))**BEBE-1.)
1090
IF (FLGCMP(K7).EQ.1) THEN
1097
DPS = (IVX(IQ)-P(K74+1))**2 +
1098
2 (IVY(IQ)-P(K74+2))**2
1099
IF (DPS.LE.RAG(K7) .AND. VZ(IQ).LT.SAT) THEN
1104
IF (FLGCMP(JQ).EQ.1) THEN
1106
EEE = ((P(JQ4+1)-IVX(IQ))**2 +
1107
2 (P(JQ4+2) - IVY(IQ))**2)/GIG
1108
IF (ABS(BETA).LT.1.0E-30) THEN
1109
VG = VG+P(JQ4)*EXP(-EEE*ALAL)
1111
VG = VG+P(JQ4)*(1.+EEE)**(-BETA)
1116
SQMS = SQMS+(VZ(IQ)-VG)**2*WEI(IQ)
1117
VALME(NPS) = (VZ(IQ)-VG)/SQRT(VG)
1123
DO 30605 JS = IQ-1,1,-1
1124
IF (VALME(JS) .LE. A) THEN
1127
VALME(JS+1) = VALME(JS)
1135
IRINT = FLOAT(NPS)/4. + 0.5
1136
RINTQ = VALME(IRINT*3)-VALME(IRINT)
1141
SQMS = SQMS/FLOAT(NPS-4)
1145
IF (RINTQ.LT.0) THEN
1154
C ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1158
C-------------------------------------------------------------------------------
1159
30006 CONTINUE !AZZERA MASCHERA
1162
L4 = AMAX1(1.,PB(ICB+3)-PB(ICB+1))
1163
L5 = AMIN1(FLOAT(NC),PB(ICB+3)+PB(ICB+1)+.99)
1164
L6 = AMAX1(1.,PB(ICB+2)-PB(ICB+1))
1165
L7 = AMIN1(FLOAT(NP),PB(ICB+2)+PB(ICB+1)+.99)
1174
C ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1178
C-------------------------------------------------------------------------------
1179
30007 CONTINUE !CONTROLLA PARAMETRI
1185
DO 30107 K3 = 1,NCOM
1188
NONF(IPA) = FLGCMP(IPA)
1190
IF (FLGCMP(IPA).NE.0 .OR. IPA.GE.NCP) THEN
1194
NONF(IPA) = FLGCMP(IPA)
1199
IF (PA(INK+4).LT.0) THEN
1202
NONF(IPA) = 3 ! Altezza neagtive
1204
IF (PA(INK+7).LT.0. .OR. PA(INK+7).GT.100.) THEN
1207
NONF(IPA) = 5 !Sigma errato
1209
IF (PA(INK+4).GT.1.E10) THEN
1212
NONF(IPA) = 3 !Alt. magg. di 10.000.000
1214
DXY2 = (PA(INK+5) - P(INK1+5))**2 +
1215
2 (PA(INK+6) - P(INK1+6))**2
1216
IF (DXY2.GT.PSAS) THEN
1219
NONF(IPA) = 4 !La posizione del massimo
1220
END IF !si e' spostata piu' di PSA pixels
1222
IF (LFLAG.EQ.2) THEN
1223
IF (KFR(IPA).EQ.0) THEN
1236
IF (KPR1.EQ.1 .AND. LFL2.EQ.0) THEN
1238
WRITE (STRING,9035) NRFR
1239
CALL STTPUT(STRING,ISTAT)
1241
STRING = 'No convergence on 1 star'
1242
CALL STTPUT(STRING,ISTAT)
1251
ASSIGN 30018 TO PREVET ! #PREPARA VETTORE
1260
DO 30407 K3 = 1,NCOM
1270
CALL STTPUT(STRING,ISTAT)
1271
DO 30408 K3 = 1,NCOM
1273
WRITE(STRING,9036) K3,(PA(INK+JIL),JIL=4,7)
1274
CALL STTPUT(STRING,ISTAT)