29   unsigned int total = 0, seed = 0, grow = 0, term = 0, invalid = 0, shared = 0;
 
   31   friend Str & 
operator << (Str & 
s, 
const size_struct & sst)
 
   33     s << sst.total << 
" " << sst.seed << 
" " << sst.grow << 
" " << sst.term << 
" " << sst.invalid << 
" " << sst.shared;
 
   38 struct cluster_info_struct
 
   41   float seed_snr = -9e99;
 
   42   float seed_energy = -9e99;
 
   44   friend Str & 
operator << (Str & 
s, 
const cluster_info_struct & cis)
 
   46     s << cis.size << 
" (" << cis.seed_snr << 
" " << cis.seed_energy << 
")";
 
   64   unsigned int gain_counts[GainConversion::num_gain_values()] = {0};
 
   66   size_struct global_counts, global_cluster_counts;
 
   68   std::vector<int> cluster_max_cell(
clusters->number, -1);
 
   69   std::vector<float> cluster_max_snr(
clusters->number, -9e99);
 
   70   std::vector<float> cluster_max_energy(
clusters->number, -9e99);
 
   72   std::vector<size_struct> cluster_counts(
clusters->number);
 
   74   std::vector<int> shared_cells;
 
   78       if (!cell_info->is_valid(
i))
 
   83       const int gain = cell_info->gain[
i];
 
   84       ++gain_counts[
gain - GainConversion::min_gain_value()];
 
   86       const float energy = cell_info->energy[
i];
 
   88       const float SNR = std::abs( 
energy / cell_noise->get_noise(
i, 
gain) );
 
   92       const bool is_cluster = 
tag.is_part_of_cluster();
 
   94       global_cluster_counts.total += is_cluster;
 
   99           global_cluster_counts.seed += is_cluster;
 
  103           ++global_counts.grow;
 
  104           global_cluster_counts.grow += is_cluster;
 
  108           ++global_counts.term;
 
  109           global_cluster_counts.term += is_cluster;
 
  113           ++global_counts.invalid;
 
  114           global_cluster_counts.invalid += is_cluster;
 
  119           if (
tag.is_shared_between_clusters())
 
  121               shared_cells.push_back(
i);
 
  123           const int cluster = 
tag.cluster_index();
 
  124           const int other_cluster = 
tag.is_shared_between_clusters() ? 
tag.secondary_cluster_index() : cluster;
 
  125           if (!
tag.is_shared_between_clusters() && (SNR > cluster_max_snr[cluster] || (SNR == cluster_max_snr[cluster] && 
i > cluster_max_cell[cluster])))
 
  127               cluster_max_snr[cluster] = SNR;
 
  128               cluster_max_cell[cluster] = 
i;
 
  129               cluster_max_energy[cluster] = std::abs(
energy);
 
  131           ++cluster_counts[cluster].total;
 
  132           cluster_counts[other_cluster].total += (cluster != other_cluster);
 
  134           global_cluster_counts.shared += 
tag.is_shared_between_clusters();
 
  135           cluster_counts[cluster].shared += 
tag.is_shared_between_clusters();
 
  136           cluster_counts[other_cluster].shared += 
tag.is_shared_between_clusters();
 
  140               ++cluster_counts[cluster].seed;
 
  141               cluster_counts[other_cluster].seed += (cluster != other_cluster);
 
  145               ++cluster_counts[cluster].grow;
 
  146               cluster_counts[other_cluster].grow += (cluster != other_cluster);
 
  150               ++cluster_counts[cluster].term;
 
  151               cluster_counts[other_cluster].term += (cluster != other_cluster);
 
  155               ++cluster_counts[cluster].invalid;
 
  156               cluster_counts[other_cluster].invalid += (cluster != other_cluster);
 
  161   std::map<int, cluster_info_struct> cluster_sizes;
 
  165       if (cluster_max_cell[
i] >= 0)
 
  167           cluster_sizes[cluster_max_cell[
i]] = cluster_info_struct{cluster_counts[
i], cluster_max_snr[
i], cluster_max_energy[
i]};
 
  171   std::sort(shared_cells.begin(), shared_cells.end());
 
  177       return StatusCode::FAILURE;
 
  187       return StatusCode::FAILURE;
 
  190   out_file << 
"Cell counts: " << global_counts << 
"\n\n";
 
  192   out_file << 
"Cells in clusters count: "<< global_cluster_counts << 
"\n\n";
 
  195   for (
const auto & 
it : cluster_sizes)
 
  204       return StatusCode::FAILURE;
 
  209   return StatusCode::SUCCESS;