\section{Introduction} \label{em_disc}
 
All processes of gamma interaction with media in Geant4 are happen at the
end of the step, so are following $G4VDiscreteProcess$ interface. There are 
a number of similar functions for discrete electromagnetic processes and in the Standard 
electromagnetic (EM) package  an additional base classes are designed to provide
common computations \cite{discrete.em}.

\subsection{General Interfaces}

Common calculations are performed in the class $G4VEmProcess$ in which 
the following public methods are implemented:
\begin{itemize}
\item
PrintInfoDefinition;
\item
PreparePhysicsTable;
\item
BuildPhysicsTable;
\item
PostStepDoIt;
\item
StorePhysicsTable;
\item
RetrievePhysicsTable;
\item
MeanFreePath;
\item
PostStepGetPhysicalInteractionLength;
\item
MicroscopicCrossSection;
\item
AddEmModel;
\item
SetEmModel;
\item
UpdateEmModel;
\item
SelectModelForMaterial;
\item
LambdaTable;
\end{itemize}
There are many Get/Set and other accessors methods implemented for this base class.
Any derive class need to have an implementation of pure virtual methods:
\begin{itemize}
\item
IsApplicable;
\item
PrintInfo;
\item
InitialiseProcess;
\end{itemize}
This interface is used by the following processes:
\begin{itemize}
\item
G4ComptonScattering;
\item
G4CoulombScattering;
\item
G4GammaConversion;
\item
G4eplusAnnihilation (additionally AtRest methods are provided);
\item
G4eeToHadrons;
\item
G4PolarizedCompton;
\item
G4PolarizedGammaConversion;
\item
G4PolarizedPhotoElectricEffect;
\item
G4eplusPolarizedAnnihilation (additionally AtRest methods are provided);
\end{itemize}
These processes mainly provide initialization and also some generic functions
like $PostStepDoIt$. The physics models are 
implemented using the $G4VEmModel$ interface. Because a model is defined to
be active over a given energy range and for a defined set of $G4Region$s,
an energy loss process can have one or several models defined for a particle 
and $G4Region$. The following models from {\it standard, lowenergy, and polarisation} 
libraries are available for above list of processes:
\begin{itemize}
\item
G4BetheHeitlerModel;
\item
G4CoulombScatteringModel;
\item
G4eCoulombScatteringModel;
\item
G4eeToHadronsModel;
\item
G4DummyModel (zero cross section, no secondaries);
\item
G4KleinNishinaCompton;
\item
G4LivermoreComptonModel;
\item
G4LivermoreGammaConversionModel;
\item
G4LivermorePhotoElectricModel;
\item
G4LivermorePolarizedComptonModel;
\item
G4LivermorePolarizedRayleighModel;
\item
G4LivermoreRayleighModel;
\item
G4PenelopePhotoElectricModel;
\item
G4PenelopeRayleighModel;
\item
G4PEEffectModel;
\item
G4PenelopeAnnihilationModel;
\item
G4PenelopeComptonModel;
\item
G4PenelopeGammaConversionModel;
\item
G4PolarizedAnnihilationModel;
\item
G4PolarizedComptonModel;
\item
G4PolarizedGammaConversionModel;
\item
G4PolarizedPEEffectModel;
\item
G4WentzelVIModel;
\end{itemize}
Some processes from {\it standard} library do not follow 
described interfaces but provide direct implementations 
of the basic $G4VDiscreteProcess$ process:
\begin{itemize}
\item
G4GammaConversionToMuons;
\item
G4AnnihiToMuPair;
\item
G4ScreenedNuclearRecoil;
\item
G4Cerenkov;
\item
G4Scintillation;
\item
G4SynchrotronRadiation;
\end{itemize}
 

\subsection{Status of this document}
 06.12.07  created by V.Ivanchenko \\
 11.12.08  extended list of models by V.Ivanchenko \\

\begin{latexonly}

\begin{thebibliography}{99}
\bibitem{discrete.em} H.~Burkhardt et al., 
Geant4 standard electromagnetic package for HEP applications.
{\em Nuclear Science Symposium Conference Record 2004, IEEE, Volume 3,
Oct 2004. pp. 1907-1910.}
\end{thebibliography}

\end{latexonly}

\begin{htmlonly}

\subsection{Bibliography}

\begin{enumerate}
\item H.~Burkhardt et al., 
Geant4 standard electromagnetic package for HEP applications.
{\em Nuclear Science Symposium Conference Record 2004, IEEE, Volume 3,
Oct 2004. pp. 1907-1910.}
\end{enumerate}

\end{htmlonly}
