Example #1
0
  void
rttgraph_done(void)
{
  struct rttgraph_info *prttg;

  for (prttg=rttgraphhead; prttg; prttg=prttg->next) {
    PlotOne(prttg);
  }
}
Example #2
0
int main()
{
  float x[MAX]; float y[MAX]; float dy[MAX]; float yfit[MAX]; float yfit3[MAX];
  float yfit4[MAX]; float yfit2[MAX]; float dyfit[MAX]; float xfit[MAX];
  int n = 0; int i; int numval; int maxval; int istatus;
  float sigmaa; float sigmab; float delta; float a; float b;
  float xsum = 0.0; float ysum = 0.0; float xysum = 0.0; float sigsum = 0.0;
  float x2sum = 0.0; float chi2 = 0.0; float chi2dof = 0.0; float chi3 = 0.0;
  float chi3dof = 0.0; float chi4 = 0.0; float chi4dof = 0.0; float chi22 = 0.0;
  float chi22dof = 0.0; float pi = 3.14159265; 
  float aa=-9.375; float bb= 23.46; float cc=-3.418; float dd=0.2319; 
  float aaa= 36.56; float bbb= -39.45; float ccc= 21.61; float ddd= -3.516; float eee= 0.1874; 
  float a1= 5.931; float b1= 8.799; float c1= 0.06093; float inc;

  maxval=MAX;

  numval=fileGetData(INPUTFILE, x, y, dy, maxval);
  printf("I read in %i entries.\n",numval);
  for ( i=0; i<=(numval-1); i++)
    {
      xsum+=x[i]/pow(dy[i],2);
      ysum+=y[i]/pow(dy[i],2);
      xysum+=x[i]*y[i]/pow(dy[i],2);
      sigsum+=1/pow(dy[i],2);
      x2sum+=pow(x[i],2)/pow(dy[i],2);
    }
  delta = sigsum*x2sum-pow(xsum,2);
  a = 1.0/delta*(x2sum*ysum-xsum*xysum);
  b = 1.0/delta*(sigsum*xysum-xsum*ysum);

  printf("The xsum is %f.\n",xsum);
  printf("The ysum is %f.\n",ysum);
  printf("The xysum is %f.\n",xysum);
  printf("The sigsum is %f.\n",sigsum);
  printf("The x2sum is %f.\n",x2sum);
  printf("The value of delta is %f.\n",delta);

  sigmaa=sqrt(1.0/delta*x2sum);
  sigmab=sqrt(1.0/delta*sigsum);

  printf("The value of a is %2.2f +/- %2.2f.\n",a,sigmaa);
  printf("The value of b is %2.2f +/- %2.2f.\n",b,sigmab);

  for ( i=0; i<=(numval-1); i++)
    {
      yfit[i]=a+b*x[i];
      dyfit[i]=0.0;
      chi2+=pow(((y[i]-yfit[i])/dy[i]),2);
      yfit3[i]=aa+bb*x[i]+cc*pow(x[i],2)+dd*pow(x[i],3);
      chi3+=pow(((y[i]-yfit3[i])/dy[i]),2);
      yfit4[i]=aaa+bbb*x[i]+ccc*pow(x[i],2)+ddd*pow(x[i],3)+eee*pow(x[i],4);
      chi4+=pow(((y[i]-yfit4[i])/dy[i]),2);
      yfit2[i]=a1+b1*x[i]+c1*pow(x[i],2);
      chi22+=pow(((y[i]-yfit2[i])/dy[i]),2);
    }
  
  chi2dof=chi2/(numval-2);
  chi3dof=chi3/(numval-4);
  chi4dof=chi4/(numval-5);
  chi22dof=chi22/(numval-3);

  printf("Linear Chi2/(Chi2/dof)/F = %f %f %f.\n",chi2,chi2dof,chi2dof/chi2dof);
  printf("Quad   Chi2/(Chi2/dof)/F = %f %f %f.\n",chi22,chi22dof,chi22dof/chi2dof);
  printf("Cubic  Chi2/(Chi2/dof)/F = %f %f %f.\n",chi3,chi3dof,chi3dof/chi2dof);
  printf("4th    Chi2/(Chi2/dof)/F = %f %f %f.\n",chi4,chi4dof,chi4dof/chi2dof);
    
  for ( i=0; i<100; i++)
    {
      xfit[i]=(i+1.0)/10.0;
      yfit[i]=a+b*xfit[i];
      dyfit[i]=0.0;
      yfit4[i]=aaa+bbb*xfit[i]+ccc*pow(xfit[i],2)+
	ddd*pow(xfit[i],3)+eee*pow(xfit[i],4);
    }

  istatus=filePutData(OUTPUTFILE,xfit,yfit,dyfit,MAX);
  istatus=filePutData(OUTPUTFILE4,xfit,yfit4,dyfit,MAX);

  printf("Plotting ....\n");

  StartPlot();
  PlotOne();
  signal(SIGINT,quit); /* trap ctrl-c call quit fn */
  for (inc=0;;inc+0.01)
    {
      ;
    }
      
  return EXIT_SUCCESS;
}