\section{I\-M\-P\-L\-:\-:L\-C\-Event\-Impl Class Reference}
\label{classIMPL_1_1LCEventImpl}\index{I\-M\-P\-L\-::\-L\-C\-Event\-Impl@{I\-M\-P\-L\-::\-L\-C\-Event\-Impl}}


Implementation of the main event class.  




{\ttfamily \#include $<$I\-M\-P\-L/\-L\-C\-Event\-Impl.\-h$>$}

Inheritance diagram for I\-M\-P\-L\-:\-:L\-C\-Event\-Impl\-:\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[height=3.000000cm]{classIMPL_1_1LCEventImpl}
\end{center}
\end{figure}
\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
virtual {\bf $\sim$\-L\-C\-Event\-Impl} ()
\begin{DoxyCompactList}\small\item\em Copy contructor, creates a deep copy of the event. \end{DoxyCompactList}\item 
virtual int {\bf get\-Run\-Number} () const \label{classIMPL_1_1LCEventImpl_a0393e6b15480f90713d7c02831b1d6c3}

\begin{DoxyCompactList}\small\item\em Return the run number off this event. \end{DoxyCompactList}\item 
virtual int {\bf get\-Event\-Number} () const \label{classIMPL_1_1LCEventImpl_a765b45a1e7fb99b73f1d79c8ffa38adc}

\begin{DoxyCompactList}\small\item\em Returns this event's number . \end{DoxyCompactList}\item 
virtual const std\-::string \& {\bf get\-Detector\-Name} () const \label{classIMPL_1_1LCEventImpl_a8465933a4b743f81cc0508df8c9d973c}

\begin{DoxyCompactList}\small\item\em Returns the name of the detector setup used in the simulation. \end{DoxyCompactList}\item 
virtual {\bf E\-V\-E\-N\-T\-::long64} {\bf get\-Time\-Stamp} () const \label{classIMPL_1_1LCEventImpl_ac418399c67a3c244de24a4209ecdd6db}

\begin{DoxyCompactList}\small\item\em Returns the time stamp of the event. \end{DoxyCompactList}\item 
virtual double {\bf get\-Weight} () const \label{classIMPL_1_1LCEventImpl_aee69f5fb03856869f889ea2507ceacd3}

\begin{DoxyCompactList}\small\item\em Returns the event weight. \end{DoxyCompactList}\item 
virtual const std\-::vector\\*
$<$ std\-::string $>$ $\ast$ {\bf get\-Collection\-Names} () const \label{classIMPL_1_1LCEventImpl_a484d95a94c9747dbb1c698528fd2ae05}

\begin{DoxyCompactList}\small\item\em Returns the names of the collections in the event. \end{DoxyCompactList}\item 
virtual {\bf E\-V\-E\-N\-T\-::\-L\-C\-Collection} $\ast$ {\bf get\-Collection} (const std\-::string \&name) const   throw (\-E\-V\-E\-N\-T\-::\-Data\-Not\-Available\-Exception, std\-::exception)
\begin{DoxyCompactList}\small\item\em Returns the collection for the given name. \end{DoxyCompactList}\item 
virtual {\bf E\-V\-E\-N\-T\-::\-L\-C\-Collection} $\ast$ {\bf take\-Collection} (const std\-::string \&name) const   throw (\-E\-V\-E\-N\-T\-::\-Data\-Not\-Available\-Exception, std\-::exception )
\begin{DoxyCompactList}\small\item\em Returns the collection for the given name and transfers the ownership of the collection to the caller. \end{DoxyCompactList}\item 
virtual void {\bf add\-Collection} ({\bf E\-V\-E\-N\-T\-::\-L\-C\-Collection} $\ast$col, const std\-::string \&name)  throw (\-E\-V\-E\-N\-T\-::\-Event\-Exception, std\-::exception)
\begin{DoxyCompactList}\small\item\em Adds a collection with the given name (has to be a valid C/\-C++ variable name). \end{DoxyCompactList}\item 
virtual void {\bf remove\-Collection} (const std\-::string \&name)  throw (\-E\-V\-E\-N\-T\-::\-Read\-Only\-Exception, std\-::exception)
\begin{DoxyCompactList}\small\item\em Removes (and deletes) the collection with name (if it exists in the event). \end{DoxyCompactList}\item 
virtual const {\bf E\-V\-E\-N\-T\-::\-L\-C\-Parameters} \& {\bf get\-Parameters} () const 
\begin{DoxyCompactList}\small\item\em Returns the names of the relations in the event. \end{DoxyCompactList}\item 
virtual {\bf E\-V\-E\-N\-T\-::\-L\-C\-Parameters} \& {\bf parameters} ()\label{classIMPL_1_1LCEventImpl_ae1d2dc3030ff405683720ad996c8a5a1}

\begin{DoxyCompactList}\small\item\em Parameters defined for this run. \end{DoxyCompactList}\item 
void {\bf set\-Run\-Number} (int rn)\label{classIMPL_1_1LCEventImpl_aae0d207a3c7473f65eb79d48e0ead55a}

\begin{DoxyCompactList}\small\item\em Sets the run number. \end{DoxyCompactList}\item 
void {\bf set\-Event\-Number} (int en)\label{classIMPL_1_1LCEventImpl_a1d5c33acdf3a691dbc1bdc5a57f7692c}

\begin{DoxyCompactList}\small\item\em Sets the event number. \end{DoxyCompactList}\item 
void {\bf set\-Detector\-Name} (const std\-::string \&dn)\label{classIMPL_1_1LCEventImpl_a610e57790d24da9f03b00a1656f0184e}

\begin{DoxyCompactList}\small\item\em Sets the detector name. \end{DoxyCompactList}\item 
void {\bf set\-Time\-Stamp} ({\bf E\-V\-E\-N\-T\-::long64} ts)\label{classIMPL_1_1LCEventImpl_a54a1bc756e530b8b631ec021de6357aa}

\begin{DoxyCompactList}\small\item\em Sets the event time stamp. \end{DoxyCompactList}\item 
void {\bf set\-Weight} (double w)\label{classIMPL_1_1LCEventImpl_a07a35a04a4f9a345c45001d95e899c29}

\begin{DoxyCompactList}\small\item\em Set the event weight. \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Protected Member Functions}
\begin{DoxyCompactItemize}
\item 
void {\bfseries set\-Access\-Mode} (int access\-Mode)\label{classIMPL_1_1LCEventImpl_a7e2bb19dcf3e783e814037e4dd2881fb}

\item 
bool {\bf validate\-Collection\-Name} (const char $\ast$name)
\begin{DoxyCompactList}\small\item\em Tests the validity of a collection name. \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Protected Attributes}
\begin{DoxyCompactItemize}
\item 
int {\bfseries \-\_\-run\-Number}\label{classIMPL_1_1LCEventImpl_ac192df4c9b1233780b177badf1978332}

\item 
int {\bfseries \-\_\-event\-Number}\label{classIMPL_1_1LCEventImpl_afa9bb3bf9b940f06e11c353c880de969}

\item 
{\bf E\-V\-E\-N\-T\-::long64} {\bfseries \-\_\-time\-Stamp}\label{classIMPL_1_1LCEventImpl_aa79399ef65bd436fd4e5b7df4935fbc3}

\item 
std\-::string {\bfseries \-\_\-detector\-Name}\label{classIMPL_1_1LCEventImpl_a881be1f6e5becae1b024a2071c0e7a05}

\item 
L\-C\-Collection\-Map {\bfseries \-\_\-col\-Map}\label{classIMPL_1_1LCEventImpl_ae268f950dc1f07bf9a5eab709f23377a}

\item 
std\-::vector$<$ std\-::string $>$ {\bfseries \-\_\-col\-Names}\label{classIMPL_1_1LCEventImpl_a67113cf5c1715da0ffb46dd2cd8d4b0e}

\item 
{\bf L\-C\-Parameters\-Impl} {\bfseries \-\_\-params}\label{classIMPL_1_1LCEventImpl_a41e8885a12b3946bd06d149e45ba6846}

\item 
L\-C\-Collection\-Set {\bfseries \-\_\-not\-Owned}\label{classIMPL_1_1LCEventImpl_ad389ecb3d9cc5771012e22743dc64bba}

\end{DoxyCompactItemize}


\subsection{Detailed Description}
Implementation of the main event class. 

This is used by L\-C\-I\-O for reading events from file.

\begin{DoxyAuthor}{Author}
gaede 
\end{DoxyAuthor}
\begin{DoxyVersion}{Version}
Mar 5, 2003 
\end{DoxyVersion}
\begin{DoxySeeAlso}{See Also}
L\-C\-Event 

L\-C\-Collection 
\end{DoxySeeAlso}


\subsection{Constructor \& Destructor Documentation}
\index{I\-M\-P\-L\-::\-L\-C\-Event\-Impl@{I\-M\-P\-L\-::\-L\-C\-Event\-Impl}!$\sim$\-L\-C\-Event\-Impl@{$\sim$\-L\-C\-Event\-Impl}}
\index{$\sim$\-L\-C\-Event\-Impl@{$\sim$\-L\-C\-Event\-Impl}!IMPL::LCEventImpl@{I\-M\-P\-L\-::\-L\-C\-Event\-Impl}}
\subsubsection[{$\sim$\-L\-C\-Event\-Impl}]{\setlength{\rightskip}{0pt plus 5cm}I\-M\-P\-L\-::\-L\-C\-Event\-Impl\-::$\sim$\-L\-C\-Event\-Impl (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [virtual]}}\label{classIMPL_1_1LCEventImpl_ac657cbac315e3f441acc5d2fe74722bc}


Copy contructor, creates a deep copy of the event. 

Not yet -\/ needs pointer chasing ...Destructor. 

\subsection{Member Function Documentation}
\index{I\-M\-P\-L\-::\-L\-C\-Event\-Impl@{I\-M\-P\-L\-::\-L\-C\-Event\-Impl}!add\-Collection@{add\-Collection}}
\index{add\-Collection@{add\-Collection}!IMPL::LCEventImpl@{I\-M\-P\-L\-::\-L\-C\-Event\-Impl}}
\subsubsection[{add\-Collection}]{\setlength{\rightskip}{0pt plus 5cm}void I\-M\-P\-L\-::\-L\-C\-Event\-Impl\-::add\-Collection (
\begin{DoxyParamCaption}
\item[{{\bf E\-V\-E\-N\-T\-::\-L\-C\-Collection} $\ast$}]{col, }
\item[{const std\-::string \&}]{name}
\end{DoxyParamCaption}
) throw  {\bf E\-V\-E\-N\-T\-::\-Event\-Exception}, std\-::exception) \hspace{0.3cm}{\ttfamily [virtual]}}\label{classIMPL_1_1LCEventImpl_ab4aecffe2c5152938a97d63231ab9198}


Adds a collection with the given name (has to be a valid C/\-C++ variable name). 

Throws an exception if the name already exists in the event. N\-B\-: Adding collections is allowed even when the event is 'read only'.

\begin{DoxySeeAlso}{See Also}
\doxyref{validate\-Collection\-Name}{p.}{classIMPL_1_1LCEventImpl_a7407d7d526fd22810dca497495056454} 
\end{DoxySeeAlso}

\begin{DoxyExceptions}{Exceptions}
{\em Event\-Exception} & \\
\hline
\end{DoxyExceptions}


Implements {\bf E\-V\-E\-N\-T\-::\-L\-C\-Event} \doxyref{}{p.}{classEVENT_1_1LCEvent_a196a1cdaf4d299e4401b1c63de55b8d6}.



Referenced by U\-T\-I\-L\-::\-L\-C\-Std\-Hep\-Rdr\-::update\-Next\-Event(), and U\-T\-I\-L\-::\-L\-C\-Std\-Hep\-Rdr\-New\-::update\-Next\-Event().

\index{I\-M\-P\-L\-::\-L\-C\-Event\-Impl@{I\-M\-P\-L\-::\-L\-C\-Event\-Impl}!get\-Collection@{get\-Collection}}
\index{get\-Collection@{get\-Collection}!IMPL::LCEventImpl@{I\-M\-P\-L\-::\-L\-C\-Event\-Impl}}
\subsubsection[{get\-Collection}]{\setlength{\rightskip}{0pt plus 5cm}{\bf L\-C\-Collection} $\ast$ I\-M\-P\-L\-::\-L\-C\-Event\-Impl\-::get\-Collection (
\begin{DoxyParamCaption}
\item[{const std\-::string \&}]{name}
\end{DoxyParamCaption}
) const throw  {\bf E\-V\-E\-N\-T\-::\-Data\-Not\-Available\-Exception}, std\-::exception) \hspace{0.3cm}{\ttfamily [virtual]}}\label{classIMPL_1_1LCEventImpl_a4d76c984dde26f3c23349f39f5a18559}


Returns the collection for the given name. 


\begin{DoxyExceptions}{Exceptions}
{\em Data\-Not\-Available\-Exception} & \\
\hline
\end{DoxyExceptions}


Implements {\bf E\-V\-E\-N\-T\-::\-L\-C\-Event} \doxyref{}{p.}{classEVENT_1_1LCEvent_a41362d5518779ea2f20de16448d9eb5a}.



Referenced by H\-E\-P\-E\-V\-T\-I\-M\-P\-L\-::\-H\-E\-P\-E\-V\-T\-::from\-Hep\-Evt().

\index{I\-M\-P\-L\-::\-L\-C\-Event\-Impl@{I\-M\-P\-L\-::\-L\-C\-Event\-Impl}!get\-Parameters@{get\-Parameters}}
\index{get\-Parameters@{get\-Parameters}!IMPL::LCEventImpl@{I\-M\-P\-L\-::\-L\-C\-Event\-Impl}}
\subsubsection[{get\-Parameters}]{\setlength{\rightskip}{0pt plus 5cm}virtual const {\bf E\-V\-E\-N\-T\-::\-L\-C\-Parameters}\& I\-M\-P\-L\-::\-L\-C\-Event\-Impl\-::get\-Parameters (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [virtual]}}\label{classIMPL_1_1LCEventImpl_ac6540c1b90265afaddf8f74c487013c1}


Returns the names of the relations in the event. 

Returns the relation for the given name.


\begin{DoxyExceptions}{Exceptions}
{\em Data\-Not\-Available\-Exception} & Adds a relation with the given name. Throws an exception if the name already exists in the event. N\-B\-: Adding relations is allowed even when the event is 'read only'.\\
\hline
{\em Event\-Exception} & Removes (and deletes) the relation with name (if it exists in the event). Throws an exception if the event is 'read only' as defined by the read mode in L\-C\-Reader.\\
\hline
{\em Read\-Only\-Exception\-Parameters} & defined for this event. \\
\hline
\end{DoxyExceptions}


Implements {\bf E\-V\-E\-N\-T\-::\-L\-C\-Event} \doxyref{}{p.}{classEVENT_1_1LCEvent_a16c174bca841e468950feeb1eb1a2163}.

\index{I\-M\-P\-L\-::\-L\-C\-Event\-Impl@{I\-M\-P\-L\-::\-L\-C\-Event\-Impl}!remove\-Collection@{remove\-Collection}}
\index{remove\-Collection@{remove\-Collection}!IMPL::LCEventImpl@{I\-M\-P\-L\-::\-L\-C\-Event\-Impl}}
\subsubsection[{remove\-Collection}]{\setlength{\rightskip}{0pt plus 5cm}void I\-M\-P\-L\-::\-L\-C\-Event\-Impl\-::remove\-Collection (
\begin{DoxyParamCaption}
\item[{const std\-::string \&}]{name}
\end{DoxyParamCaption}
) throw  {\bf E\-V\-E\-N\-T\-::\-Read\-Only\-Exception}, std\-::exception) \hspace{0.3cm}{\ttfamily [virtual]}}\label{classIMPL_1_1LCEventImpl_a8c3deed432bf1fd0222f233b9fa0fa37}


Removes (and deletes) the collection with name (if it exists in the event). 

Throws an exception if the event is 'read only' as defined by the read mode in L\-C\-Reader.


\begin{DoxyExceptions}{Exceptions}
{\em Read\-Only\-Exception} & \\
\hline
\end{DoxyExceptions}


Implements {\bf E\-V\-E\-N\-T\-::\-L\-C\-Event} \doxyref{}{p.}{classEVENT_1_1LCEvent_a8e043ab165a9610242cb06344b530fdc}.

\index{I\-M\-P\-L\-::\-L\-C\-Event\-Impl@{I\-M\-P\-L\-::\-L\-C\-Event\-Impl}!take\-Collection@{take\-Collection}}
\index{take\-Collection@{take\-Collection}!IMPL::LCEventImpl@{I\-M\-P\-L\-::\-L\-C\-Event\-Impl}}
\subsubsection[{take\-Collection}]{\setlength{\rightskip}{0pt plus 5cm}{\bf L\-C\-Collection} $\ast$ I\-M\-P\-L\-::\-L\-C\-Event\-Impl\-::take\-Collection (
\begin{DoxyParamCaption}
\item[{const std\-::string \&}]{name}
\end{DoxyParamCaption}
) const throw  {\bf E\-V\-E\-N\-T\-::\-Data\-Not\-Available\-Exception}, std\-::exception) \hspace{0.3cm}{\ttfamily [virtual]}}\label{classIMPL_1_1LCEventImpl_aa1db12b150144e9697c976a77ab726a4}


Returns the collection for the given name and transfers the ownership of the collection to the caller. 

The caller is responsible for deleting the collection {\itshape after} the Event is deleted. The collection is still in the event but flagged as transient after the call returns.\par
 This is usefull when you want to keep the collection for the next events.\par
 Use with care! 
\begin{DoxyExceptions}{Exceptions}
{\em Data\-Not\-Available\-Exception} & \\
\hline
\end{DoxyExceptions}


Implements {\bf E\-V\-E\-N\-T\-::\-L\-C\-Event} \doxyref{}{p.}{classEVENT_1_1LCEvent_a01c16c69a73436e3168adf9de450274f}.



References I\-M\-P\-L\-::\-L\-C\-Collection\-Vec\-::set\-Transient().

\index{I\-M\-P\-L\-::\-L\-C\-Event\-Impl@{I\-M\-P\-L\-::\-L\-C\-Event\-Impl}!validate\-Collection\-Name@{validate\-Collection\-Name}}
\index{validate\-Collection\-Name@{validate\-Collection\-Name}!IMPL::LCEventImpl@{I\-M\-P\-L\-::\-L\-C\-Event\-Impl}}
\subsubsection[{validate\-Collection\-Name}]{\setlength{\rightskip}{0pt plus 5cm}bool I\-M\-P\-L\-::\-L\-C\-Event\-Impl\-::validate\-Collection\-Name (
\begin{DoxyParamCaption}
\item[{const char $\ast$}]{name}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [protected]}}\label{classIMPL_1_1LCEventImpl_a7407d7d526fd22810dca497495056454}


Tests the validity of a collection name. 

L\-C\-I\-O only accepts collection names starting with (regular expression) [A-\/\-Za-\/z\-\_\-] and continuing with {\tt A-\/\-Za-\/z0-\/9\-\_\-}.

\doxyref{S\-I\-O}{p.}{namespaceSIO} only accepts names starting with (regular expression) [A-\/\-Za-\/z\-\_\-] and continuing with {\tt A-\/\-Za-\/z0-\/9\-\_\-}. 

The documentation for this class was generated from the following files\-:\begin{DoxyCompactItemize}
\item 
L\-C\-Event\-Impl.\-h\item 
L\-C\-Event\-Impl.\-cc\end{DoxyCompactItemize}
