Example #1
0
void BkgFitterTracker::SetRegionProcessOrder (const CommandLineOpts &inception_state)
{
  analysis_compute_plan.region_order.resize (numFitters);
  int numBeads;
  int zeroRegions = 0;
  for (int i=0; i<numFitters; ++i)
  {
    numBeads = sliced_chip[i]->GetNumLiveBeads();
    if (numBeads == 0)
      zeroRegions++;

    analysis_compute_plan.region_order[i] = beadRegion (i, numBeads);
  }
  std::sort (analysis_compute_plan.region_order.begin(), analysis_compute_plan.region_order.end(), sortregionProcessOrderVector);
  int nonZeroRegions = numFitters - zeroRegions;
  printf("Number of live bead regions (nonZeroRegions): %d\n",nonZeroRegions);

  if (analysis_compute_plan.gpu_work_load != 0)
  {
    int gpuRegions = int (analysis_compute_plan.gpu_work_load * float (nonZeroRegions));
    if (gpuRegions > 0)
      analysis_compute_plan.lastRegionToProcess = gpuRegions;
  }
  // bestRegion is used for beads_bestRegion output to hdf5 file
  if (nonZeroRegions>0)
  {
      int r = inception_state.bkg_control.pest_control.bkgModelHdf5Debug_region_r;
      int c = inception_state.bkg_control.pest_control.bkgModelHdf5Debug_region_c;
      if (r >= 0 && c >= 0)
      {
      int reg =  findRegion(r,c);
	  //cout << "SetRegionProcessOrder... findRegion(" << x << "," << y << ") => bestRegion=" << reg << endl << flush;
      if (reg>=0)
          bestRegion = beadRegion(reg,sliced_chip[reg]->GetNumLiveBeads());
      else
          bestRegion = analysis_compute_plan.region_order[0];
      }
      else
          bestRegion = analysis_compute_plan.region_order[0];
      bestRegion_region = sliced_chip[bestRegion.first]->get_region();
      sliced_chip[bestRegion.first]->isBestRegion = true;
	  //cout << "SetRegionProcessOrder... bestRegion_region.row=" << bestRegion_region->row << " bestRegion_region.col=" << bestRegion_region->col << endl << flush;
  }
  else
  {
    bestRegion = beadRegion(0,0);
    bestRegion_region = NULL;
  }
  printf("BkgFitterTracker::SetRegionProcessOrder... bestRegion=(%d,%d)\n",
    bestRegion.first,bestRegion.second);

  // Now that we have a best region, we can init h5.
  InitBeads_BestRegion( inception_state );
}
Example #2
0
void BkgFitterTracker::SetRegionProcessOrder ()
{

  analysis_compute_plan.region_order.resize (numFitters);
  int numBeads;
  int zeroRegions = 0;
  for (int i=0; i<numFitters; ++i)
  {
    numBeads = sliced_chip[i]->GetNumLiveBeads();
    if (numBeads == 0)
      zeroRegions++;

    analysis_compute_plan.region_order[i] = beadRegion (i, numBeads);
  }
  std::sort (analysis_compute_plan.region_order.begin(), analysis_compute_plan.region_order.end(), sortregionProcessOrderVector);

  int nonZeroRegions = numFitters - zeroRegions;

  printf ("Number of live bead regions: %d\n", nonZeroRegions);
  if (analysis_compute_plan.gpu_work_load != 0)
  {

    int gpuRegions = int (analysis_compute_plan.gpu_work_load * float (nonZeroRegions));
    if (gpuRegions > 0)
      analysis_compute_plan.lastRegionToProcess = gpuRegions;
  }
}