Ejemplo n.º 1
0
void generate_poisson_noise(Detector * det){
  int i;
  init_random_generator();
  if(!det->photons_per_pixel){
    fprintf(stderr,"Please calculate photons per pixel first\n");
    return;
  }
  if( det->photon_count==NULL )det->photon_count = (float *)malloc(sizeof(float)*det->nx*det->ny);
  for(i = 0;i<det->nx*det->ny;i++){
    det->photon_count[i] = get_poisson_random_number(det->photons_per_pixel[i]*det->quantum_efficiency);
  }  
}
Ejemplo n.º 2
0
void generate_poisson_noise(CCD * det){
#ifdef GSL_FOUND
  int i;
  init_random_generator();
  if(!det->photons_per_pixel){
    fprintf(stderr,"Please calculate photons per pixel first\n");
    return;
  }
  det->photon_count = (float *)malloc(sizeof(float)*det->nx*det->ny*det->nz);
  for(i = 0;i<det->nx*det->ny*det->nz;i++){
    if(det->photons_per_pixel[i]*det->quantum_efficiency < 1000){
      det->photon_count[i] = get_poisson_random_number(det->photons_per_pixel[i]*det->quantum_efficiency);
    }else{
      det->photon_count[i] = get_poisson_gaussian_approximate_random_number(det->photons_per_pixel[i]*det->quantum_efficiency);
    }
  }  
#else
  sp_error_fatal("spsim not compiled with GSL support");
#endif
}