#include <stdio.h>
#include <math.h>
//-----------
//#define ccd2 0.115              2010,09
//#define ccd3 0.099
//#define ccd4 -0.003
//--------------
//#define ccd2 0.113              2010.10
//#define ccd3 0.094
//#define ccd4 -0.005
//------------  
#define ccd2 0.113               // 2010.11 
#define ccd3 0.103
#define ccd4 0.010
float ccd[4]={0.,ccd2,ccd3,ccd4};
float aa(int k,float *x)
{
  int i,j=0;
  float y[4],z=0.;
  for(i=0;i<4;i++)y[i]=x[i]+ccd[i]-ccd[k];
  for(i=0;i<4;i++)if(y[i]<50.){ z+=y[i]; j++; }
  return(z/j);
}
main(int ac,char **av)
{
  int i,j,jj,k,oldj,l,m;
  int i1,i2,i3,i4;
  float x[4],y;
  FILE *fp,*fp1;
  char a[80],f1[80],f2[80],c,head[72][80];
  if(ac<2){ printf("\n\t*** use ccd_* for CCD_? cal1 (2011)******\n");
            printf("\n\t ccd1 0, ccd2 0.113, ccd3 0.103, ccd4 0.010\n");
            printf("\n\t        fit3.cal1      from getfit1 29 24 6\n");
            printf("\n\tUsage: addcal3 fit3.cal1\n\n");
            exit(0);
          }
  i1=i2=i3=i4=0;
  for(i=0;i<4;i++)x[i]=99.;
// sprintf(f2,"/line3/uband-data/cat/%s",av[1]);
  sprintf(f2,"%s",av[1]);
  fp=fopen(f2,"r");
  if(fp==0){ printf("%s not found!\n",f2); exit(0); }
  oldj=0;
l10:
  fgets(a,80,fp); if(feof(fp)){ j=-1; goto l15; }
  k=strlen(a)-1;  i1++;
  for(i=0;i<k;i++)if(a[i]==32)break;
  strncpy(f1,a,i); f1[i]=0;
  c=f1[i-5]; j=c-48;
l15:
  if(j<oldj){
    for(l=m=0;l<oldj;l++)if(x[l]==99.)m++;
    if(m!=0 && m!=oldj){
//      printf("%s %7.3f %7.3f %7.3f %7.3f\n",f2,x[0],x[1],x[2],x[3]);
      for(l=0;l<oldj;l++)if(x[l]==99.){  i3++;
        y=aa(l,x);
//        y=-y;                            // distigish makeup use other
        f2[i-5]=l+49;
        printf("%s %7.3f\n",f2,y);
        fp1=fopen(f2,"rb+");
        if(fp1!=0){
          fread(head,72,80,fp1); 
          for(jj=0;jj<80;jj++)head[29][jj]=32;
          sprintf(&head[29][0],"CALIBRAT=%21.3f / use ccd_?",y);
          y=pow(10,(y-4.)*0.4);
          sprintf(&head[29][68],"W:%7.4f",y);
          for(jj=32;jj<80;jj++)if(head[29][jj]==0)head[29][jj]=32;
          fseek(fp1,0,0); fwrite(head,72,80,fp1);  fclose(fp1);
        } else { i3--; printf("\t\t\t\tnot existed!\n"); }
      }
    }
    if(m==oldj)i4+=oldj;
    for(l=0;l<4;l++)x[l]=99.;
  }
  if(a[k-3]!=32){ sscanf(&a[i],"%f",&x[j-1]); i2++; }  
  oldj=j;  
  strcpy(f2,f1);
  if(j>=0)goto l10;
l20:
  fclose(fp);
  printf("all: %d  done: %d  new_do: %d  not_do: %d\n",i1,i2,i3,i4);
}

