
#include <stdio.h>
#include <stdlib.h>

#include "types.h"
#include "output.h"



/* collect stats: call once each timestep */ 
void gather_statistics()
{
  int i;
  Critter *curcritter;

  stats->num_critters = the_population->current_size;
  
  stats->num_hosts = 0;
  stats->num_parasites = 0;

/* total these, then divide by # critters afterwards */
  stats->avg_num_para_per_host=0.0;
  stats->avg_num_offspring=0.0;
  stats->avg_age=0.0;
  stats->avg_energy=0.0;
  stats->avg_size=0.0;	

  curcritter = the_population->critters;
  for(i=0;i<the_population->current_size;i++)
    {
      if(curcritter->num_curr_para>0)  /* it's a host */
	{
	  stats->num_hosts++;
	}
      if(curcritter->mouth!=NULL)      /* it's a parasite */
	{
	  stats->num_parasites++;
	}
      stats->avg_num_para_per_host += curcritter->num_curr_para;
      stats->avg_num_offspring += curcritter->num_offspring;
      stats->avg_age += curcritter->age;
      stats->avg_energy += curcritter->energy;
      stats->avg_size += curcritter->meta_len + curcritter->hide_len +
	curcritter->seek_len;
      curcritter = curcritter->p_next;
    }

  stats->avg_num_para_per_host /= stats->num_critters;
  stats->avg_num_offspring /= stats->num_critters;
  stats->avg_age /= stats->num_critters;
  stats->avg_energy /= stats->num_critters;
  stats->avg_size /= stats->num_critters;
  
  stats->num_species = 0;              /*** ? */

  /* write the info out: */
  write_each_timestep(the_context,output_file,stats);
}

