// This code implementation is the intellectual property of
// the GEANT4 collaboration.
//
// By copying, distributing or modifying the Program (or any work
// based on the Program) you indicate your acceptance of this statement,
// and all its terms.
//
// $Id: G4ProcessTable.icc,v 1.3 2000/03/02 01:16:05 kurasige Exp $
// GEANT4 tag $Name: geant4-02-00 $
//
//  History:
//   Use STL vector instead of RW vector    1. Mar 00 H.Kurashige
//
#include "G4ParticleTable.hh"

//////////////////////////
inline 
 void  G4ProcessTable::SetVerboseLevel(G4int value)
{
  verboseLevel = value;
}

//////////////////////////
inline 
 G4int G4ProcessTable::GetVerboseLevel() const
{
  return verboseLevel;
}

//////////////////////////
inline 
 G4int  G4ProcessTable::Length() const
{
  return fProcTblVector->size();
}

//////////////////////////
inline 
 G4ProcessTable::G4ProcNameVector*  G4ProcessTable::GetNameList()
{
   return  fProcNameVector;
}

//////////////////////////
inline 
 G4ProcessTable::G4ProcTableVector* G4ProcessTable::GetProcTableVector() 
{ 
  return fProcTblVector; 
}


//////////////////////////
inline
 G4VProcess* G4ProcessTable::FindProcess(const G4String& processName, 
			  		 const G4ParticleDefinition* particle)
					 const
{
  if ( particle == 0 ) return 0; 
  else return FindProcess(processName, particle->GetProcessManager());
}

//////////////////////////
inline  
 G4VProcess* G4ProcessTable::FindProcess(const G4String& processName, 
					 const G4String& particleName) const
{
  return FindProcess(processName,
	  G4ParticleTable::GetParticleTable()->FindParticle(particleName));
}


//////////////////////////
inline 
 void G4ProcessTable::SetProcessActivation(
				const G4String&       processName, 	
				G4ParticleDefinition* particle, 
			     	G4bool                fActive)
{	
  if ( particle != 0 ) { 
    SetProcessActivation(processName, particle->GetProcessManager(), fActive);	
  }	
}	
//////////////////////////
inline
 void  G4ProcessTable::SetProcessActivation( 
				const G4String& processName, 
			  	const G4String& particleName, 
			        G4bool          fActive )
{
  if (particleName == "ALL" ) {
    SetProcessActivation( processName , fActive); 
  } else {
    SetProcessActivation(
	processName, 
	G4ParticleTable::GetParticleTable()->FindParticle(particleName),
     	fActive );
  }
}

//////////////////////////
inline 
 void G4ProcessTable::SetProcessActivation(  
				G4ProcessType   processType,
			  	G4ParticleDefinition* particle, 
			     	G4bool          fActive)
{	
  if ( particle != 0 ) { 
    SetProcessActivation( processType, particle->GetProcessManager(), fActive);	
  }	
}	

//////////////////////////
inline
 void  G4ProcessTable::SetProcessActivation( 
				G4ProcessType   processType,
				const G4String& particleName , 
			     	G4bool          fActive)
{
  if ((particleName == "ALL" )||(particleName == "all" )) {
    SetProcessActivation( processType, fActive ); 
  } else {
    SetProcessActivation( 
	processType, 	
	G4ParticleTable::GetParticleTable()->FindParticle(particleName),
	fActive );
  }
}

