void clInsectInfestation::GetData( xercesc::DOMDocument * p_oDoc )
{
  try
  {
    clTreePopulation *p_oPop = (clTreePopulation *) mp_oSimManager->GetPopulationObject("treepopulation");

    m_iYearsOfInfestation = 0;
    ReadParFile( p_oDoc, p_oPop );
    FormatQueryString( p_oPop );
  }
  catch ( modelErr & err )
  {
    throw( err );
  }
  catch ( modelMsg & msg )
  {
    throw( msg );
  } //non-fatal error
  catch ( ... )
  {
    modelErr stcErr;
    stcErr.iErrorCode = UNKNOWN;
    strcpy( stcErr.cFunction, "clInsectInfestation::GetData" );
    throw( stcErr );
  }
}
void clAggregatedMortality::DoShellSetup( xercesc::DOMDocument * p_oDoc )
{
  try
  {
    clTreePopulation *p_oPop = (clTreePopulation *) mp_oSimManager->GetPopulationObject("treepopulation");
    m_iTotalNumSpecies = p_oPop->GetNumberOfSpecies();


    ReadParFile( p_oDoc );
    GetDeadCodes( p_oPop );
    SetUpAppliesTo( p_oPop );

    //Calculate probability of a mortality episode
    float fNumYearsPerTimestep = mp_oSimManager->GetNumberOfYearsPerTimestep();
    m_fMortalityEpisodeProbability =
                  fNumYearsPerTimestep / m_fMortalityEpisodeProbability;

    //Calculate the per-timestep amount to kill
    m_fMortalityProb = 1 - pow(1 - m_fMortalityProb, fNumYearsPerTimestep);
    m_fMortalityProb /= m_iNumTreesToClump;

  }
  catch ( modelErr & err )
  {
    throw( err );
  }
  catch ( modelMsg & msg )
  {
    throw( msg );
  } //non-fatal error
  catch ( ... )
  {
    modelErr stcErr;
    stcErr.iErrorCode = UNKNOWN;
    stcErr.sFunction = "clAggregatedMortality::DoShellSetup" ;
    throw( stcErr );
  }
}