Gaudi Framework, version v21r6

Home   Generated: 11 Nov 2009

EventSelectorDataStream Class Reference

#include <EventSelectorDataStream.h>

Inheritance diagram for EventSelectorDataStream:

Inheritance graph
[legend]
Collaboration diagram for EventSelectorDataStream:

Collaboration graph
[legend]

List of all members.


Detailed Description

Definition of class EventSelectorDataStream.

Small class which eases the management of multiple input streams for the event selector.

History: +---------+----------------------------------------------+------------+ | Date | Comment | Who | +---------+----------------------------------------------+------------+ | 3/10/00 | Initial version | M.Frank | +---------+----------------------------------------------+------------+ | 4/09/09 | Added m_dbName and dbName() | R. Lambert | +---------+----------------------------------------------+------------+

Author:
Markus Frank

R. Lambert

Version:
1.0

Definition at line 45 of file EventSelectorDataStream.h.


Public Types

typedef std::vector
< StringProperty
Properties

Public Member Functions

 EventSelectorDataStream (const std::string &nam, const std::string &def, ISvcLocator *svcloc)
 Standard Constructor.
virtual void setSelector (IEvtSelector *pSelector)
 Attach event selector object.
virtual StatusCode initialize ()
 Parse input criteria.
virtual StatusCode finalize ()
 Finalize stream and release resources.
StringPropertyproperty (const std::string &nam)
 Allow access to individual properties by name.
const StringPropertyproperty (const std::string &nam) const
 Allow access to individual properties by name (CONST).
const Propertiesproperties ()
 Access properties.
const std::stringname () const
 Retrieve stream name.
const std::stringcriteria () const
 Retrieve stream criteria.
const std::stringdbName () const
 Retrieve stream dbName.
const std::stringselectorType () const
 Retrieve event selector type.
const std::stringdefinition () const
 Retrieve definition string.
IEvtSelectorselector () const
 Retrieve event selector object.
bool isInitialized () const
 Check initialization status.

Protected Member Functions

virtual ~EventSelectorDataStream ()
 Standard Destructor.

Protected Attributes

std::string m_name
 Name.
std::string m_definition
 Definition string.
std::string m_criteria
 Criteria.
std::string m_dbName
 String with name of the db as parsed.
std::string m_selectorType
 Event selector type.
IEvtSelectorm_pSelector
 Pointer to valid selector.
ISvcLocatorm_pSvcLocator
 Reference to service locator.
Propertiesm_properties
 Properties vector.
bool m_initialized
 Initialization state.

Friends

MsgStreamoperator<< (MsgStream &s, const EventSelectorDataStream &obj)
 Output friend for MsgStream.
std::ostreamoperator<< (std::ostream &s, const EventSelectorDataStream &obj)
 Output friend for standard I/O.

Member Typedef Documentation

Definition at line 51 of file EventSelectorDataStream.h.


Constructor & Destructor Documentation

EventSelectorDataStream::~EventSelectorDataStream (  )  [protected, virtual]

Standard Destructor.

Definition at line 50 of file EventSelectorDataStream.cpp.

00050                                                     {
00051   setSelector(0);
00052   delete m_properties;
00053 }

EventSelectorDataStream::EventSelectorDataStream ( const std::string nam,
const std::string def,
ISvcLocator svcloc 
)

Standard Constructor.

Definition at line 39 of file EventSelectorDataStream.cpp.

00040 : m_pSelector(0),
00041   m_pSvcLocator(svcloc)
00042 {
00043   m_name = nam;
00044   m_definition = def;
00045   m_initialized = false;
00046   m_properties = new Properties();
00047 }


Member Function Documentation

void EventSelectorDataStream::setSelector ( IEvtSelector pSelector  )  [virtual]

Attach event selector object.

Definition at line 56 of file EventSelectorDataStream.cpp.

00056                                                                    {
00057   if ( 0 != pSelector   )  pSelector->addRef();
00058   if ( 0 != m_pSelector )  m_pSelector->release();
00059   m_pSelector = pSelector;
00060 }

StatusCode EventSelectorDataStream::initialize (  )  [virtual]

Parse input criteria.

Definition at line 83 of file EventSelectorDataStream.cpp.

00083                                                  {
00084   bool isData = true;
00085   std::string auth, dbtyp, item, crit, sel, svc, stmt;
00086   std::string cnt    = "/Event";
00087   std::string db     = "<Unknown>";
00088   Tokenizer tok(true);
00089 
00090   SmartIF<IDataManagerSvc> eds(m_pSvcLocator->service("EventDataSvc"));
00091   if( !eds.isValid() ) {
00092     std::cout << "ERROR: Unable to localize interface IDataManagerSvc from service EventDataSvc"
00093               << std::endl;
00094     return StatusCode::FAILURE;
00095   }
00096   else {
00097     cnt = eds->rootName();
00098   }
00099   m_selectorType = m_criteria = m_dbName= "";
00100   m_properties->erase(m_properties->begin(), m_properties->end());
00101 
00102   tok.analyse(m_definition, " ", "", "", "=", "'", "'");
00103   for ( Tokenizer::Items::iterator i = tok.items().begin(); i != tok.items().end(); i++ )   {
00104     long hash = -1;
00105     const std::string& tag = (*i).tag();
00106     const std::string& val = (*i).value();
00107     switch( ::toupper(tag[0]) )    {
00108     case 'A':
00109       auth = val;
00110       break;
00111     case 'C':
00112       svc  = "EvtTupleSvc";
00113       isData = false;
00114     case 'E':
00115       hash = val.find('#');
00116       if ( hash > 0 )   {
00117         cnt  = val.substr(0,hash);
00118         item = val.substr(hash+1, val.length()-hash-1);
00119       }
00120       else    {
00121         cnt  = val;
00122         item = "Address";
00123       }
00124       break;
00125     case 'D':
00126       m_criteria     = "FILE " + val;
00127       m_dbName=val;
00128       break;
00129     case 'F':
00130       switch( ::toupper(tag[1]) )    {
00131       case 'I':
00132         dbtyp        = "SICB";
00133         m_criteria   = "FILE " + val;
00134         m_dbName=val;
00135         break;
00136       case 'U':
00137         stmt = val;
00138         break;
00139       default:
00140         break;
00141       }
00142       break;
00143     case 'J':
00144       m_criteria     = "JOBID " + val;
00145       m_dbName=val;
00146       dbtyp          = "SICB";
00147       break;
00148     case 'T':
00149       switch( ::toupper(tag[1]) )    {
00150       case 'Y':
00151         dbtyp = val;
00152         break;
00153       case 'A':
00154         m_criteria   = "TAPE " + val;
00155         m_dbName=val;
00156         dbtyp        = "SICB";
00157         break;
00158       default:
00159         break;
00160       }
00161       break;
00162     case 'S':
00163       switch( ::toupper(tag[1]) )    {
00164       case 'E':
00165         sel = val;
00166         break;
00167       case 'V':
00168         svc = val;
00169         break;
00170       default:
00171         break;
00172       }
00173       break;
00174     default:
00175       m_properties->push_back(StringProperty(tag,val));
00176       break;
00177     }
00178   }
00179   if ( !isData )    { // Unfortunately options do not come in order...
00180     m_selectorType = "EventCollectionSelector";
00181   }
00182   else if ( dbtyp == "SICB" )    {
00183     m_selectorType = "SicbEventSelector";
00184   }
00185   else if ( dbtyp.substr(0,4) == "POOL" )    {
00186     m_selectorType = "PoolDbEvtSelector";
00187   }
00188   else if ( svc.empty() ) {
00189     m_selectorType = "DbEvtSelector";
00190   }
00191   else  {
00192     m_selectorType = svc;
00193   }
00194   StatusCode status = StatusCode::SUCCESS;
00195   if ( svc.length() == 0 && dbtyp.length() != 0 )    {
00196     SmartIF<IPersistencySvc> ipers(m_pSvcLocator->service("EventPersistencySvc"));
00197     if ( ipers.isValid() )   {
00198       IConversionSvc* icnvSvc = 0;
00199       status = ipers->getService(dbtyp, icnvSvc);
00200       if ( status.isSuccess() )   {
00201         IService* isvc = 0;
00202         status = icnvSvc->queryInterface(IService::interfaceID(), pp_cast<void>(&isvc));
00203         if ( status.isSuccess() )   {
00204           svc = isvc->name();
00205           isvc->release();
00206         }
00207       }
00208     }
00209   }
00210   m_properties->push_back( StringProperty("Function",      stmt));
00211   m_properties->push_back( StringProperty("CnvService",    svc));
00212   m_properties->push_back( StringProperty("Authentication",auth));
00213   m_properties->push_back( StringProperty("Container",     cnt));
00214   m_properties->push_back( StringProperty("Item",          item));
00215   m_properties->push_back( StringProperty("Criteria",      sel));
00216   m_properties->push_back( StringProperty("DbType",        dbtyp));
00217   m_properties->push_back( StringProperty("DB",            m_criteria));
00218   m_initialized = status.isSuccess();
00219   return status;
00220 }

StatusCode EventSelectorDataStream::finalize ( void   )  [virtual]

Finalize stream and release resources.

Definition at line 223 of file EventSelectorDataStream.cpp.

00223                                                {
00224   setSelector(0);
00225   if ( m_properties )  {
00226     m_properties->clear();
00227   }
00228   m_initialized = false;
00229   return StatusCode::SUCCESS;
00230 }

StringProperty * EventSelectorDataStream::property ( const std::string nam  ) 

Allow access to individual properties by name.

Definition at line 63 of file EventSelectorDataStream.cpp.

00063                                                                          {
00064   for ( Properties::iterator i = m_properties->begin(); i != m_properties->end(); i++ )   {
00065     if ( (*i).name() == nam )    {
00066       return &(*i);
00067     }
00068   }
00069   return 0;
00070 }

const StringProperty * EventSelectorDataStream::property ( const std::string nam  )  const

Allow access to individual properties by name (CONST).

Definition at line 73 of file EventSelectorDataStream.cpp.

00073                                                                                      {
00074   for ( Properties::const_iterator i = m_properties->begin(); i != m_properties->end(); i++ )   {
00075     if ( (*i).name() == nam )    {
00076       return &(*i);
00077     }
00078   }
00079   return 0;
00080 }

const Properties& EventSelectorDataStream::properties (  )  [inline]

Access properties.

Definition at line 87 of file EventSelectorDataStream.h.

00087                                     {
00088     return *m_properties;
00089   }

const std::string& EventSelectorDataStream::name (  )  const [inline]

Retrieve stream name.

Definition at line 91 of file EventSelectorDataStream.h.

00091                                     {
00092     return m_name;
00093   }

const std::string& EventSelectorDataStream::criteria (  )  const [inline]

Retrieve stream criteria.

Definition at line 95 of file EventSelectorDataStream.h.

00095                                         {
00096     return m_criteria;
00097   }

const std::string& EventSelectorDataStream::dbName (  )  const [inline]

Retrieve stream dbName.

Definition at line 99 of file EventSelectorDataStream.h.

00099                                       {
00100     return m_dbName;
00101   }

const std::string& EventSelectorDataStream::selectorType (  )  const [inline]

Retrieve event selector type.

Definition at line 103 of file EventSelectorDataStream.h.

00103                                             {
00104     return m_selectorType;
00105   }

const std::string& EventSelectorDataStream::definition (  )  const [inline]

Retrieve definition string.

Definition at line 107 of file EventSelectorDataStream.h.

00107                                         {
00108     return m_definition;
00109   }

IEvtSelector* EventSelectorDataStream::selector (  )  const [inline]

Retrieve event selector object.

Definition at line 111 of file EventSelectorDataStream.h.

00111                                    {
00112     return m_pSelector;
00113   }

bool EventSelectorDataStream::isInitialized (  )  const [inline]

Check initialization status.

Definition at line 115 of file EventSelectorDataStream.h.

00115                                 {
00116     return m_initialized;
00117   }


Friends And Related Function Documentation

MsgStream& operator<< ( MsgStream s,
const EventSelectorDataStream obj 
) [friend]

Output friend for MsgStream.

Definition at line 27 of file EventSelectorDataStream.cpp.

00027                                                                            {
00028   s << "Stream:"   << obj.name() << " Def:" << obj.definition();
00029   return s;
00030 }

std::ostream& operator<< ( std::ostream s,
const EventSelectorDataStream obj 
) [friend]

Output friend for standard I/O.

Definition at line 33 of file EventSelectorDataStream.cpp.

00033                                                                              {
00034   s << "Stream:"   << obj.name() << " Def:" << obj.definition();
00035   return s;
00036 }


Member Data Documentation

Name.

Definition at line 54 of file EventSelectorDataStream.h.

Definition string.

Definition at line 56 of file EventSelectorDataStream.h.

Criteria.

Definition at line 58 of file EventSelectorDataStream.h.

String with name of the db as parsed.

Definition at line 60 of file EventSelectorDataStream.h.

Event selector type.

Definition at line 62 of file EventSelectorDataStream.h.

Pointer to valid selector.

Definition at line 64 of file EventSelectorDataStream.h.

Reference to service locator.

Definition at line 66 of file EventSelectorDataStream.h.

Properties vector.

Definition at line 68 of file EventSelectorDataStream.h.

Initialization state.

Definition at line 70 of file EventSelectorDataStream.h.


The documentation for this class was generated from the following files:

Generated at Wed Nov 11 16:32:53 2009 for Gaudi Framework, version v21r6 by Doxygen version 1.5.6 written by Dimitri van Heesch, © 1997-2004