source: Sophya/trunk/FrEROS/AnaLC/fsvst.c@ 4036

Last change on this file since 4036 was 3308, checked in by ansari, 18 years ago

Creation du module AnaLC (lecture suivi EROS avec SOPHYA) dans la base
SOPHYA - cmv+reza 22/08/2007

  • Property svn:executable set to *
File size: 16.7 KB
Line 
1#include <stdlib.h>
2#include <stdio.h>
3#include <string.h>
4#include <math.h>
5
6#include "machdefs.h"
7#include "fmath.h"
8
9#include "convlim.h"
10#include "nomfits.h"
11#include "nomfits2.h"
12#include "datime.h"
13
14#include "fsvst.h"
15
16static float flog10(float x) { return (float)log10((double)x); }
17
18int COMPTE_FLUXCAL_BAD = 0;
19
20/* Nouvelle-Fonction */
21float FluxCalibre(float fluxb, int typcal, float *pcal)
22/* Calibration relative de flux */
23{
24float lfb,r,dlfb;
25double det;
26
27switch (typcal)
28 {
29 case 1:
30 case 10:
31 r = pcal[0]+pcal[1]*fluxb;
32 break;
33
34 case 11:
35 r = 0.;
36 if( fabsf(pcal[4]) < 1.e-19 ) {
37 if( fabsf((double) pcal[3]) < 1.e-19 ) break;
38 r = (fluxb-pcal[2])/pcal[3];
39 break;
40 }
41 lfb = pcal[0]+pcal[1]*fluxb;
42 det = pcal[3]*pcal[3]-4.*pcal[4]*(pcal[2]-fluxb);
43 if( det > 0 ) {
44 r = (-pcal[3]+sqrt(det))/(2.*pcal[4]);
45 dlfb = (-pcal[3]-sqrt(det))/(2.*pcal[4]);
46 if( fabsf(dlfb-lfb) < fabsf(r-lfb) ) r = dlfb;
47 } else if ( det == 0. ) r = -pcal[3]/pcal[4];
48 break;
49
50 case 20:
51 lfb = (fluxb>0.1) ? flog10(fluxb) : -1.0;
52 if (lfb > pcal[2])
53 r = pcal[0]+pcal[1]*lfb;
54 else
55 { dlfb = lfb-pcal[2];
56 r = pcal[0]+pcal[1]*pcal[2]+dlfb*(pcal[3]+dlfb*pcal[4]);
57 }
58 r *= fluxb;
59 break;
60
61 case 30:
62 r = pcal[0]+pcal[1]*fluxb;
63 dlfb = fluxb - pcal[2];
64 if (dlfb < 0.) r += pcal[3]*dlfb*dlfb;
65 break;
66
67 case 40:
68 lfb = (fluxb>1.) ? flog10(fluxb) : 0.;
69 if (lfb > pcal[2]) r = pcal[0]+lfb*pcal[1];
70 else
71 { dlfb = (lfb < pcal[5]) ? (pcal[5]-pcal[2])
72 : (lfb-pcal[2]) ;
73 r = pcal[4]+dlfb*pcal[3]; }
74 r *= fluxb;
75 break;
76
77 case 41:
78 lfb = (fluxb>1.) ? flog10(fluxb) : 0.;
79 lfb = (lfb > pcal[5]) ? lfb : pcal[5];
80 r = pcal[0]+lfb*pcal[1];
81 r *= fluxb;
82 break;
83
84 case 80:
85 r = pcal[0]+pcal[1]*fluxb;
86 break;
87
88 case 91:
89 r = 0.;
90 if(fluxb>=pcal[1]) {
91 /* cas des flux brillants */
92 if( pcal[4] <= 0. ) break;
93 r = (fluxb-pcal[1])/pcal[4] + pcal[0];
94 } else if(fluxb<=pcal[3]) {
95 /* cas des flux faibles */
96 if( pcal[7] <= 0. ) break;
97 r = (fluxb-pcal[3])/pcal[7] + pcal[2];
98 } else {
99 /* cas des flux moyens */
100 if( pcal[5] <= 0. ) break;
101 if( pcal[6] == 0.) {
102 /* pas de terme en x**2 */
103 r = (fluxb-pcal[3])/pcal[5] + pcal[2];
104 } else {
105 /* terme en x**2 non nul */
106 det = -4.*pcal[6]*(pcal[3]-fluxb)/(pcal[5]*pcal[5]);
107 if( fabs(det) < 0.0001 ) {
108 /* cas d'une correction x**2 petite, DL de sqrt() */
109 r = pcal[5]/(4.*pcal[6]) * det*(1.-det/4.) + pcal[2];
110 } else {
111 /* cas de la resolution normale de l'equation du 2sd */
112 det += 1.;
113 if(det<0.) break;
114 det = sqrt(det);
115 r = pcal[5]/(2.*pcal[6])*(-1.+det) + pcal[2];
116 if( r<pcal[2] || r>pcal[0] ) /* autre solution ?? */
117 r = pcal[5]/(2.*pcal[6])*(-1.-det) + pcal[2];
118 }
119 }
120 }
121 break;
122
123 default:
124 if( COMPTE_FLUXCAL_BAD < 50 )
125 printf("FluxCalibre_Erreur: Type calibration (%d) Non prevue !\n", typcal);
126 COMPTE_FLUXCAL_BAD++;
127 r = 0.;
128 break;
129
130 }
131
132 /* printf("FluxCalibre: fluxb=%g -> %g typcal=%d pcal=%g %g %g %g %g\n"
133 ,fluxb,r,typcal,pcal[0],pcal[1],pcal[2],pcal[3],pcal[4]); */
134
135return(r);
136
137}
138
139
140/* Nouvelle-Fonction */
141float ErrCalibre(float efluxb, float fluxb,float fluxc,float *pfite)
142/* Christophe 1/2/95 */
143/* Calibration de l'erreur sur le flux calibre */
144/* efluxb = erreur sur le flux brut */
145/* fluxb = flux brut */
146/* fluxc = flux calibre */
147/* pfite = tableau des fct erreurs externes et erreurs peida */
148/* RETURN: erreur sur le flux calibre */
149{
150float eflux,mfr,errext,errfit;
151double ex;
152
153eflux = 0.;
154
155if(efluxb==0.) return(0.);
156if(efluxb<0.) efluxb *= -1.;
157if( fluxb==0. || fluxc==0. ) return(efluxb);
158if( fluxb<0. || fluxc<0. ) {
159 eflux = efluxb * fluxc / fluxb;
160 if(eflux<0.) return(-eflux); else return(eflux);
161}
162
163mfr = 2.5*flog10(fluxc);
164
165errext = 0.;
166ex = pfite[0]-pfite[1]*mfr;
167if(pfite[1]>0. && ex<80.) errext += exp(ex)+pfite[2];
168if(errext<=0.) return (eflux);
169ex = pfite[3]-pfite[4]*mfr;
170if(pfite[4]>0. && ex<80.) errext += exp(ex);
171
172errfit = 0.;
173ex = pfite[5]-pfite[6]*mfr;
174if(pfite[6]>0. && ex<80.) errfit += exp(pfite[5]-pfite[6]*mfr)+pfite[7];
175if(errfit<=0.) return (eflux);
176ex = pfite[8]-pfite[9]*mfr;
177if(pfite[9]>0. && ex<80.) errfit += exp(ex);
178
179eflux = efluxb * fluxc/fluxb * errext/errfit;
180
181return (eflux);
182}
183
184
185/* Nouvelle-Fonction */
186float Erreur_Ext(float fluxc,float *pfite)
187/* Christophe 2/6/95 */
188/* Valeur de l'erreur externe */
189/* fluxc = flux calibre */
190/* pfite = tableau des fct erreurs externes */
191/* RETURN: erreur externe pour le flux calibre considere */
192{
193float errext,mfr;
194double ex;
195
196errext = 0.;
197if( fluxc<=0. ) return (errext);
198mfr = 2.5*flog10(fluxc);
199
200ex = pfite[0]-pfite[1]*mfr;
201if(pfite[1]>0. && ex<80.) errext += exp(ex)+pfite[2];
202if(errext<=0.) return (errext);
203ex = pfite[3]-pfite[4]*mfr;
204if(pfite[4]>0. && ex<80.) errext += exp(ex);
205return (errext);
206}
207
208
209/* Nouvelle-Fonction */
210void Calibre_F_E(MESUREU *mesu,TIMEINFOU *timu)
211/* Christophe 1/2/95 */
212/* remplissage de flux et errflux dans MESUREU */
213{
214int typcal;
215float efluxb,fluxb,fluxc,*pcal,*pfite;
216
217fluxb = mesu->FluxB;
218typcal = timu->FgCalib;
219pcal = &(timu->Calib[0]);
220mesu->Flux = fluxc = FluxCalibre(fluxb,typcal,pcal);
221
222efluxb = mesu->ErrFluxB;
223pfite = &(timu->PFitErr[0][0]);
224mesu->ErrFlux = ErrCalibre(efluxb,fluxb,fluxc,pfite);
225}
226
227/* Nouvelle-Fonction */
228MESUREU * DecodeMes( MESURE *mesc, MESUREU *mesu)
229
230/* Cette fonction decode les mesures de fichier de suivi type 10 */
231/* Retourne le pointeur sur la structure MESUREU fourni (mesu) */
232
233{
234float fv;
235
236if ((mesc == NULL) || (mesu == NULL) ) return(NULL);
237
238mesu->FluxB = mesc->Flux;
239mesu->Flux = mesu->FluxB;
240mesu->Xi2 = mesc->Xi2;
241mesu->Fond = (float)mesc->Fond;
242fv = (mesu->FluxB >= 0.) ? mesu->FluxB : (-mesu->FluxB);
243mesu->ErrFluxB = mesc->ErrFlux*fv/10000.;
244mesu->ErrFlux = mesu->ErrFluxB;
245
246mesu->Flx0 = (float)mesc->Flx0*10.0;
247mesu->Fnd0 = (float)mesc->Fnd0;
248mesu->Xi20 = (mesc->Xi20 < 0) ? (float)mesc->Xi20 :
249 (float)mesc->Xi20/100.0 ;
250mesu->S9Pix = (float)mesc->S9Pix*9.0;
251mesu->PixMax = (float)mesc->PixMax;
252mesu->X = (float)mesc->X/20.;
253mesu->Y = (float)mesc->Y/20.;
254mesu->SigX = (float)mesc->SigX/200.0;
255mesu->SigY = (float)mesc->SigY/200.0;
256
257return(mesu);
258}
259
260/* Nouvelle-Fonction */
261void Mes_a_zero(MESUREU *mesu)
262
263/* Cette fonction met a zero la structure mesu */
264{
265
266if ( mesu == NULL ) return;
267mesu->FluxB = mesu->Flux = mesu->Xi2 = mesu->Fond = 0.;
268mesu->ErrFluxB = mesu->ErrFlux = 0.;
269mesu->Flx0 = mesu->Fnd0 = mesu->Xi20 = 0.;
270mesu->S9Pix = mesu->PixMax = 0.;
271mesu->X = mesu->Y = mesu->SigX = mesu->SigY = 0.;
272
273return;
274}
275
276/* Nouvelle-Fonction */
277TIMEINFOU * DecodeTim( TIMEINFO *tim, TIMEINFOU *timu)
278
279/* Cette fonction decode les timeinfo de fichier de suivi type 10 */
280/* Retourne le pointeur sur la structure timeinfou fourni (timu) */
281
282{
283int i,j;
284
285if ((tim == NULL) || (timu == NULL) ) return(NULL);
286
287timu->NumPhoto = tim->NumPhoto;
288timu->TStart = tim->TStart;
289timu->Expose = tim->Expose;
290timu->Fond = tim->Fond;
291timu->SigFond = tim->SigFond;
292timu->SigX = tim->SigX;
293timu->SigY = tim->SigY;
294timu->Rho = tim->Rho;
295timu->DelX = tim->DelX;
296timu->DelY = tim->DelY;
297timu->Absorption = tim->Absorption;
298timu->AirMass = tim->AirMass;
299timu->FgCalib = tim->FgCalib;
300for(i=0;i<8;i++) timu->Calib[i] = tim->Calib[i];
301for(i=0;i<2;i++)
302 for(j=0;j<5;j++) timu->PFitErr[i][j] = tim->PFitErr[i][j];
303timu->PSF1D = tim->PSF1D;
304timu->PSF2D = tim->PSF2D;
305
306return(timu);
307}
308
309
310
311/* Nouvelle-Fonction */
312void GlobInfoToTransf(GLOBINFO *gli, TRANSFO *t1, TRANSFO *t2)
313{
314int i,j;
315
316for(i=0; i<50; i++)
317 t1->Polxy[0][0][i] = t2->Polxy[0][0][i]= 0.;
318
319for(i=0; i<2; i++)
320 {
321 t1->Polxy[0][0][i] = gli->PolxyBR[0][i];
322 t1->Polxy[0][1][i] = gli->PolxyBR[1][i];
323 t1->Polxy[1][0][i] = gli->PolxyBR[2][i];
324
325 t2->Polxy[0][0][i] = gli->PolxyRB[0][i];
326 t2->Polxy[0][1][i] = gli->PolxyRB[1][i];
327 t2->Polxy[1][0][i] = gli->PolxyRB[2][i];
328
329 t1->largx[i] = gli->LargX[i];
330 t1->largy[i] = gli->LargY[i];
331 t1->midx[i] = gli->MidX[i];
332 t1->midy[i] = gli->MidY[i];
333 t1->xmin[i] = gli->XMin[i];
334 t1->xmax[i] = gli->XMax[i];
335 t1->ymin[i] = gli->YMin[i];
336 t1->ymax[i] = gli->YMax[i];
337 j = (i == 0) ? 1 : 0;
338 t2->largx[j] = gli->LargX[i];
339 t2->largy[j] = gli->LargY[i];
340 t2->midx[j] = gli->MidX[i];
341 t2->midy[j] = gli->MidY[i];
342 t2->xmin[j] = gli->XMin[i];
343 t2->xmax[j] = gli->XMax[i];
344 t2->ymin[j] = gli->YMin[i];
345 t2->ymax[j] = gli->YMax[i];
346
347 }
348t1->DegPolxy = t2->DegPolxy = gli->DegPolTG;
349return;
350}
351
352
353/* Nouvelle-Fonction */
354void TimeInfoToTransf(TIMEINFO *tminf, TRANSFO *t1, TRANSFO *t2)
355{
356int i,j;
357
358for(i=0; i<50; i++)
359 t1->Polxy[0][0][i] = t2->Polxy[0][0][i]= 0.;
360
361for(i=0; i<2; i++)
362 {
363 t1->Polxy[0][0][i] = tminf->PolxyRC[0][i];
364 t1->Polxy[0][1][i] = tminf->PolxyRC[1][i];
365 t1->Polxy[1][0][i] = tminf->PolxyRC[2][i];
366
367 t2->Polxy[0][0][i] = tminf->PolxyCR[0][i];
368 t2->Polxy[0][1][i] = tminf->PolxyCR[1][i];
369 t2->Polxy[1][0][i] = tminf->PolxyCR[2][i];
370
371 t1->largx[i] = tminf->LargX[i];
372 t1->largy[i] = tminf->LargY[i];
373 t1->midx[i] = tminf->MidX[i];
374 t1->midy[i] = tminf->MidY[i];
375 t1->xmin[i] = tminf->XMin[i];
376 t1->xmax[i] = tminf->XMax[i];
377 t1->ymin[i] = tminf->YMin[i];
378 t1->ymax[i] = tminf->YMax[i];
379 j = (i == 0) ? 1 : 0;
380 t2->largx[j] = tminf->LargX[i];
381 t2->largy[j] = tminf->LargY[i];
382 t2->midx[j] = tminf->MidX[i];
383 t2->midy[j] = tminf->MidY[i];
384 t2->xmin[j] = tminf->XMin[i];
385 t2->xmax[j] = tminf->XMax[i];
386 t2->ymin[j] = tminf->YMin[i];
387 t2->ymax[j] = tminf->YMax[i];
388
389 }
390t1->DegPolxy = t2->DegPolxy = tminf->DegPolTG;
391return;
392}
393
394
395/* Nouvelle-Fonction */
396void PrtGlobInfo (GLOBINFO *glinf, int lp)
397/* Impression de la struture GlobInfo */
398{
399int i;
400TRANSFO t1,t2;
401char strg[32], s[5];
402
403if (!glinf->NumChamp)
404 printf("GLOBINFO: (Codage EROS-1) NumCCD=%d Couleur=%d\n"
405 ,glinf->NumCCD,glinf->Couleur);
406else
407 {
408 unsigned long numchamp = glinf->NumChamp;
409 dec2zeza(numchamp, strg, 32);
410 if( strlen(strg) < 5) for(i=(int) strlen(strg); i<5; i++) strg[i] = '?';
411
412 strg[5] = ' ';
413 strg[6] = '0' + glinf->Couleur%10;
414 dec2zeza((unsigned long) glinf->Couleur/10, s, 5);
415 if(strlen(s)>0) strg[9] = s[0]; else strg[9] = '?';
416
417 strg[7] = '0' + glinf->NumCCD%10;
418 dec2zeza((unsigned long) glinf->NumCCD/10, s, 5);
419 if(strlen(s)>0) strg[8] = s[0]; else strg[8] = '?';
420
421 strg[10] = '\0';
422
423 printf("GLOBINFO: (Codage EROS-2) %s ",strg);
424 HMStoStr(HtoHMS((double)glinf->AlphaHr),strg);
425 printf(" Alpha,Delta= %s ", strg);
426 HMStoStr(DtoDMS((double)glinf->DeltaDg),strg);
427 printf(" %s ", strg);
428 printf(" gain= %g e/ADU\n",glinf->GainCCD);
429 if (lp > 2) printf(" Codage Champ=%d Coul=%d CCD=%d\n",
430 glinf->NumChamp,glinf->Couleur,glinf->NumCCD);
431 }
432if (lp > 0)
433 {
434 printf(" IRes:");
435 for(i=0;i<4;i++) printf(" %d",glinf->IRes[i]);
436 putchar('\n');
437 printf(" FRes:");
438 for(i=0;i<2;i++) printf(" %g",glinf->FRes[i]);
439 putchar('\n');
440 }
441if (lp > 1)
442 {
443 GlobInfoToTransf(glinf,&t1,&t2);
444 printf(" Transfo Col1->Col2\n"); PrintTransfo(&t1);
445 printf(" Transfo Col2->Col1\n"); PrintTransfo(&t2);
446 }
447
448return;
449}
450
451/* Nouvelle-Fonction */
452void PrtStarInfo (STARINFO *sti,int n,int lp)
453/* Impression de la struture StarInfo */
454{
455int i;
456
457printf("STARINFO[%d]: NumEt=%d XRef=%d X/YPos=%g %g \n",n
458 ,sti->NumEt,sti->XRef,sti->XPos,sti->YPos);
459
460if(lp>0)
461 {
462 printf(" FlxMean/Sig=%g %g FluxRef=%g FgRef=%d\n"
463 ,sti->FlxMean,sti->FlxSig,sti->FluxRef,sti->FgRef);
464 printf(" NbVois=%d Voisin=",sti->NbVois);
465 for(i=0;i<8;i++) printf(" %d",sti->Voisin[i]);
466 printf("\n");
467 printf(" DisMin,DisM2,DisM2R=%g %g %g\n"
468 ,sti->DisMin,sti->DisM2,sti->DisM2R);
469 }
470
471}
472
473
474/* Nouvelle-Fonction */
475void PrtMesure (MESURE *mes,int n,int lp)
476/* Impression de la struture Mesure */
477{
478printf("MES[%d]: Flx=%g (+/-%d) c2=%g Fnd=%d S9=%d pmx=%d\n",n
479 ,mes->Flux,mes->ErrFlux,mes->Xi2,mes->Fond,mes->S9Pix,mes->PixMax);
480
481if(lp>0)
482 printf(" Flx0=%d Fnd0=%d Xi20=%d X/Y=%d %d SigX/Y=%d %d\n"
483 ,mes->Flx0,mes->Fnd0,mes->Xi20,mes->X,mes->Y,mes->SigX,mes->SigY);
484
485}
486
487/* Nouvelle-Fonction */
488void PrtMesureU (MESUREU *mesu,int n,int lp)
489/* Impression de la struture MesureU */
490{
491printf("MESU[%d]: Flx=%g (err=%g) FlB=%g c2=%g Fd=%g S9=%g pmx=%g\n",n
492 ,mesu->Flux,mesu->ErrFlux,mesu->FluxB
493 ,mesu->Xi2,mesu->Fond,mesu->S9Pix,mesu->PixMax);
494
495if(lp>0)
496 printf(" Flx0=%g Fnd0=%g Xi20=%g X/Y=%g %g SigX/Y=%g %g\n"
497 ,mesu->Flx0,mesu->Fnd0,mesu->Xi20,mesu->X,mesu->Y,mesu->SigX,mesu->SigY);
498
499}
500
501/* Nouvelle-Fonction */
502void PrtTimeInfo (TIMEINFO *tim,int n,int lp)
503/* Impression de la struture TimeInfo */
504{
505TRANSFO t1,t2;
506float td;
507int i;
508int_4 date,t; HMS T; JMA J;
509char strg[32];
510
511DecodeNumPhoto(tim->NumPhoto, strg);
512
513td = (float)tim->TStart/86400.;
514printf("TimeInfo[%d]: Photo %s (%d) TStart=%d s (%g d) V=%5.2f (Rev=%d)\n",
515 n, strg, tim->NumPhoto, tim->TStart, td,
516 (float)tim->Version/1000.,tim->Revision);
517
518if (lp < 1)
519 printf(" .Exp=%d s SigX,Y/Rho= %6.3f %6.3f %6.3f Absor= %5.2f DelX/Y= %6.2f %6.2f\n",
520 tim->Expose, tim->SigX,tim->SigY,tim->Rho,
521 tim->Absorption,tim->DelX,tim->DelY);
522
523if(lp>=1)
524 {
525 printf(" .Exp=%d SigX,Y/Rho= %6.3f %6.3f %6.3f Absor= %5.2f AirMass= %5.2f\n",
526 tim->Expose,tim->SigX,tim->SigY,tim->Rho,
527 tim->Absorption,tim->AirMass);
528 if (lp == 1)
529 printf(" ..Cal (%d) %g %g %g DelX/Y=%6.2f %6.2f \n"
530 ,tim->FgCalib,tim->Calib[0],tim->Calib[1],tim->Calib[2]
531 ,tim->DelX,tim->DelY);
532 }
533
534if(lp>1)
535 {
536 printf(" TypPSF 1D= %d 2D= %d SgX= %6.3f SgY= %6.3f\n",
537 tim->PSF1D, tim->PSF2D, tim->SgX, tim->SgY);
538 printf(" Cal (%d)",tim->FgCalib);
539 for(i=0;i<8;i++) printf(" %g",tim->Calib[i]);
540 printf("\n");
541
542 printf(" Fond=%g SFond=%g NbOkPS/GF=%d %d DelX/Y=%g %g\n"
543 ,tim->Fond,tim->SigFond,tim->NbOkPS,tim->NbOkGF
544 ,tim->DelX,tim->DelY);
545
546 printf(" PFitErr[0]=");
547 for(i=0;i<5;i++) printf(" %g",tim->PFitErr[0][i]);
548 printf("\n");
549 printf(" PFitErr[1]=");
550 for(i=0;i<5;i++) printf(" %g",tim->PFitErr[1][i]);
551 printf("\n");
552 }
553
554if(lp>2)
555 {
556 printf(" Resol[0]:");
557 for(i=0;i<6;i++) printf(" %7.4f",tim->Resol[0][i]);
558 printf("\n");
559 printf(" Resol[1]:");
560 for(i=0;i<6;i++) printf(" %7.4f",tim->Resol[1][i]);
561 printf("\n");
562 printf(" Resol[2]:");
563 for(i=0;i<6;i++) printf(" %7.4f",tim->Resol[2][i]);
564 printf("\n");
565
566 InttoDateTs((uint_4) tim->DateHeure,&date,&t);
567 StrgtoJMA("1/1/1990",J); date += JMAtoJ(J);
568 J = JtoJMA(date);
569 T = SectoHMS((double) t);
570 JMAtoStrg(J,&strg[15]);
571 HMStoStr(T,&strg[0]);
572 printf(" DateHeure: %d (%s %s)",tim->DateHeure,&strg[15],&strg[0]);
573 InttoDateTs((uint_4) tim->TSid,&date,&t);
574 T = SectoHMS((double) t);
575 HMStoStr(T,&strg[0]);
576 printf(" TSid= %d (%s)\n",tim->TSid,&strg[0]);
577 InttoDateTs((uint_4) tim->DTU,&date,&t);
578 StrgtoJMA("1/1/1990",J); date += JMAtoJ(J);
579 J = JtoJMA(date);
580 T = SectoHMS((double) t);
581 JMAtoStrg(J,&strg[15]);
582 HMStoStr(T,&strg[0]);
583 printf(" DTU: %d (%s %s)",tim->DTU,&strg[15],&strg[0]);
584 printf(" FRes: %g \n", tim->FRes);
585
586 printf(" ObsId=%d PxSiz=%g %g CrVal=%g %g\n",tim->ObsId
587 ,tim->PxSiz[0],tim->PxSiz[1],tim->CrVal[0],tim->CrVal[1]);
588
589 TimeInfoToTransf(tim,&t1,&t2);
590 printf(" Transfo Ref->Cur\n"); PrintTransfo(&t1);
591 printf(" Transfo Cur->Ref\n"); PrintTransfo(&t2);
592 }
593
594}
595
596/* Nouvelle-Fonction */
597void PrtTimeInfoU (TIMEINFOU *tim,int n,int lp)
598/* Impression de la struture TimeInfoU */
599{
600int i;
601float td;
602char strg[32];
603
604DecodeNumPhoto(tim->NumPhoto, strg);
605
606td = (float)tim->TStart/86400.;
607
608printf("TIMU[%d]: Photo# %d (%s) TStart=%d (%g d) Exp=%d psf=%d,%d\n",
609 n,tim->NumPhoto,strg,tim->TStart,td,tim->Expose,tim->PSF1D,tim->PSF2D);
610
611if (lp < 1)
612 printf(".SigX,Y/Rho= %6.3f %6.3f %6.3f Absor= %5.2f DelX/Y= %6.2f %6.2f \n",
613 tim->SigX,tim->SigY,tim->Rho,tim->Absorption,tim->DelX,tim->DelY);
614
615if(lp>=1)
616 {
617 printf(".SigX,Y/Rho= %6.3f %6.3f %6.3f Absor= %5.2f AirMass= %6.2f\n"
618 ,tim->SigX,tim->SigY,tim->Rho,tim->Absorption,tim->AirMass);
619 printf(".Fond/SFond= %g %g DelX/Y=%6.2f %6.2f\n"
620 ,tim->Fond,tim->SigFond,tim->DelX,tim->DelY);
621 printf(" Cal (%d)",tim->FgCalib);
622 for(i=0;i<8;i++) printf(" %g",tim->Calib[i]);
623 printf("\n");
624 }
625
626if(lp>1)
627 {
628 printf(" PFitErr[0]=");
629 for(i=0;i<5;i++) printf(" %g",tim->PFitErr[0][i]);
630 printf("\n");
631 printf(" PFitErr[1]=");
632 for(i=0;i<5;i++) printf(" %g",tim->PFitErr[1][i]);
633 printf("\n");
634 }
635
636}
637
Note: See TracBrowser for help on using the repository browser.