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 ); }
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; } }