void CSamplingInfEngine::DestroyInf()
{
    DestroyCurrentEvidences();
    int i;
    for( i = 0; i < m_potsToSampling.size(); i++ )
    {
        delete m_potsToSampling[i];
    }
    m_potsToSampling.clear();
    
}
void CGibbsSamplingInfEngine::
EnterEvidence( const CEvidence *pEvidenceIn, int maximize, int sumOnMixtureNode )
{
  if( !m_queryes.size() )
  {
    PNL_THROW( CAlgorithmicException, "Possible queryes must be defined");
  }
  
  PNL_CHECK_IS_NULL_POINTER(pEvidenceIn);
  m_pEvidence = pEvidenceIn;
  m_bMaximize = maximize;
  
  DestroyCurrentEvidences();
  DestroyQueryFactors();
  
  
  if(GetModel()->GetModelType() == mtBNet)
  {
    static_cast< const CBNet* >(GetModel())->
      GenerateSamples( GetCurrentEvidences(), GetNumStreams(), pEvidenceIn );
  }
  else
  {
    static_cast< const CMNet* >(GetModel())->
      GenerateSamples( GetCurrentEvidences(), GetNumStreams(), pEvidenceIn );
    
  }
  
  CreateQueryFactors();
  
  boolVector sampleIsNeed;
  if( m_bUsingDSep )
  {
    ConsDSep( m_queryes, &sampleIsNeed, m_pEvidence );
  }
  else
  {
    FindCurrentNdsForSampling( &sampleIsNeed );
  }
  SetSamplingNdsFlags(sampleIsNeed);
  
  Sampling( 0, GetMaxTime() );
}