示例#1
0
文件: mask.c 项目: esheldon/sdssidl
int completeness_id(double *x, 
		    double *comp, 
		    int *poly_id, 
		    double *poly_area)
{
  int i,region,cap,inside_region ;
  double length,vec[3];
  
  length = sqrt(sqr(x[0]) + sqr(x[1]) + sqr(x[2])) ;
  x[0] /= length ;
  x[1] /= length ;
  x[2] /= length ;
  
  *comp = 0.0;
  *poly_id = 0;
  *poly_area = 0.0;
  for(region=0;region<nr;region++)
    {
      inside_region = 1 ;
      for(cap=0;cap<nc[region];cap++)
	{
	  for(i=0;i<3;i++)
	    vec[i] = r[i][cap][region] ;
	  if(dot1(x,vec)>c[cap][region]) inside_region = 0 ;
	}
      if(inside_region==1) 
	{
	  *poly_id = region;
	  *comp = capweight[region];
	  *poly_area = caparea[*poly_id];
	  return(1);
	}
    }
  return(0);
}
示例#2
0
文件: mask.c 项目: esheldon/sdssidl
/* SUBROUTINE POLYGON
--- polygon(*x)
--- Returns the polygon number for a given coordinate vector
   * x = array (x,y,z)
*/
int polygon(double *x)
{
  int i,region,cap,inside_region ;
  double length,vec[3] ;
  
  length = sqrt(sqr(x[0]) + sqr(x[1]) + sqr(x[2])) ;
  x[0] /= length ;
  x[1] /= length ;
  x[2] /= length ;

  for(region=0;region<nr;region++)
    {
      inside_region = 1 ;
      for(cap=0;cap<nc[region];cap++)
	{
	  for(i=0;i<3;i++)
	    vec[i] = r[i][cap][region] ;
	  if(dot1(x,vec)>c[cap][region]) inside_region = 0 ;
	}
      if(inside_region==1) 
	{
	  return region ;
	}
    }
  return 0 ;
}
示例#3
0
文件: mask.c 项目: esheldon/sdssidl
/* SUBROUTINE COMPLETENESS
--- completeness(*x)
--- find the SDSS completeness for a given coordinate vector
   * x = array (x,y,z)
*/
double completeness(double *x)
{
  int i,region,cap,inside_region ;
  double length,vec[3],comp ;
  
  length = sqrt(sqr(x[0]) + sqr(x[1]) + sqr(x[2])) ;
  x[0] /= length ;
  x[1] /= length ;
  x[2] /= length ;
  
  for(region=0;region<nr;region++)
    {
      inside_region = 1 ;
      for(cap=0;cap<nc[region];cap++)
	{
	  for(i=0;i<3;i++)
	    vec[i] = r[i][cap][region] ;
	  if(dot1(x,vec)>c[cap][region]) inside_region = 0 ;
	}
      if(inside_region==1) 
	{
	  comp = capweight[region] ;
	  return comp ;
	}
    }
  return 0 ;
}
示例#4
0
static void doTest(MAP& map,  ITER& it, unsigned N, unsigned niter, FUNC& fm, std::string msg)
{
  EXCEPTWATCH;

  double t0 =  stk::cpu_time();
  setupMap(map, N);
  double t1 =  stk::cpu_time();
  std::cout << "maptest:   setup time  = " << (t1-t0)/60. << " [min] for " << msg << std::endl;

  double t2s =  stk::cpu_time();
  double dd= dot1(map, it, N, niter, fm);
  double t2e =  stk::cpu_time();

  std::cout << "maptest:  lookup time  = " << (t2e-t2s)/60. << " [min] for " << msg << " dd= " << dd << std::endl;
}