Gaudi Framework, version v22r0

Home   Generated: 9 Feb 2011

EventSelectorDataStream Class Reference

Definition of class EventSelectorDataStream. More...

#include <EventSelectorDataStream.h>

Inheritance diagram for EventSelectorDataStream:
Inheritance graph
[legend]
Collaboration diagram for EventSelectorDataStream:
Collaboration graph
[legend]

List of all members.

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.

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.


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

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::definition (  )  const [inline]

Retrieve definition string.

Definition at line 107 of file EventSelectorDataStream.h.

00107                                         {
00108     return m_definition;
00109   }

StatusCode EventSelectorDataStream::finalize (  )  [virtual]

Finalize stream and release resources.

Definition at line 220 of file EventSelectorDataStream.cpp.

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

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, collsvc, 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         m_criteria   = "FILE " + val;
00133         m_dbName=val;
00134         break;
00135       case 'U':
00136         stmt = val;
00137         break;
00138       default:
00139         break;
00140       }
00141       break;
00142     case 'J':
00143       m_criteria     = "JOBID " + val;
00144       m_dbName=val;
00145       dbtyp          = "SICB";
00146       break;
00147     case 'T':
00148       switch( ::toupper(tag[1]) )    {
00149       case 'Y':
00150         dbtyp = val;
00151         break;
00152       default:
00153         break;
00154       }
00155       break;
00156     case 'S':
00157       switch( ::toupper(tag[1]) )    {
00158       case 'E':
00159         sel = val;
00160         break;
00161       case 'V':
00162         svc = val;
00163         collsvc = val;
00164         break;
00165       default:
00166         break;
00167       }
00168       break;
00169     default:
00170       m_properties->push_back(StringProperty(tag,val));
00171       break;
00172     }
00173   }
00174   if ( !isData )    { // Unfortunately options do not come in order...
00175     m_selectorType = "EventCollectionSelector";
00176     svc  = "EvtTupleSvc";
00177   }
00178   else if ( dbtyp.substr(0,4) == "POOL" )    {
00179     m_selectorType = "PoolDbEvtSelector";
00180   }
00181   else if ( svc.empty() ) {
00182     m_selectorType = "DbEvtSelector";
00183   }
00184   else  {
00185     m_selectorType = svc;
00186   }
00187   StatusCode status = StatusCode::SUCCESS;
00188   if ( svc.length() == 0 && dbtyp.length() != 0 )    {
00189     SmartIF<IPersistencySvc> ipers(m_pSvcLocator->service("EventPersistencySvc"));
00190     if ( ipers.isValid() )   {
00191       IConversionSvc* icnvSvc = 0;
00192       status = ipers->getService(dbtyp, icnvSvc);
00193       if ( status.isSuccess() )   {
00194         IService* isvc = 0;
00195         status = icnvSvc->queryInterface(IService::interfaceID(), pp_cast<void>(&isvc));
00196         if ( status.isSuccess() )   {
00197           svc = isvc->name();
00198           isvc->release();
00199         }
00200       }
00201     }
00202   }
00203   m_properties->push_back( StringProperty("Function",      stmt));
00204   m_properties->push_back( StringProperty("CnvService",    svc));
00205   m_properties->push_back( StringProperty("Authentication",auth));
00206   m_properties->push_back( StringProperty("Container",     cnt));
00207   m_properties->push_back( StringProperty("Item",          item));
00208   m_properties->push_back( StringProperty("Criteria",      sel));
00209   m_properties->push_back( StringProperty("DbType",        dbtyp));
00210   m_properties->push_back( StringProperty("DB",            m_criteria));
00211   if ( !isData && !collsvc.empty() )    {
00212     m_properties->push_back( StringProperty("DbService",   collsvc));
00213   }
00214 
00215   m_initialized = status.isSuccess();
00216   return status;
00217 }

bool EventSelectorDataStream::isInitialized (  )  const [inline]

Check initialization status.

Definition at line 115 of file EventSelectorDataStream.h.

00115                                 {
00116     return m_initialized;
00117   }

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 Properties& EventSelectorDataStream::properties (  )  [inline]

Access properties.

Definition at line 87 of file EventSelectorDataStream.h.

00087                                     {
00088     return *m_properties;
00089   }

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 }

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 }

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

Retrieve event selector object.

Definition at line 111 of file EventSelectorDataStream.h.

00111                                    {
00112     return m_pSelector;
00113   }

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   }

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 }


Friends And Related Function Documentation

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 }

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 }


Member Data Documentation

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.

Definition string.

Definition at line 56 of file EventSelectorDataStream.h.

Initialization state.

Definition at line 70 of file EventSelectorDataStream.h.

Name.

Definition at line 54 of file EventSelectorDataStream.h.

Properties vector.

Definition at line 68 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.

Event selector type.

Definition at line 62 of file EventSelectorDataStream.h.


The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines

Generated at Wed Feb 9 16:30:32 2011 for Gaudi Framework, version v22r0 by Doxygen version 1.6.2 written by Dimitri van Heesch, © 1997-2004