Gaudi Framework, version v21r4

Home   Generated: 7 Sep 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 | +---------+----------------------------------------------+---------+

Author:
Markus Frank
Version:
1.0

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

StatusCode EventSelectorDataStream::finalize ( void   )  [virtual]

Finalize stream and release resources.

Definition at line 219 of file EventSelectorDataStream.cpp.

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

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 81 of file EventSelectorDataStream.h.

00081                                     {
00082     return *m_properties;
00083   }

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

Retrieve stream name.

Definition at line 85 of file EventSelectorDataStream.h.

00085                                     {
00086     return m_name;
00087   }

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

Retrieve stream criteria.

Definition at line 89 of file EventSelectorDataStream.h.

00089                                         {
00090     return m_criteria;
00091   }

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

Retrieve event selector type.

Definition at line 93 of file EventSelectorDataStream.h.

00093                                             {
00094     return m_selectorType;
00095   }

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

Retrieve definition string.

Definition at line 97 of file EventSelectorDataStream.h.

00097                                         {
00098     return m_definition;
00099   }

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

Retrieve event selector object.

Definition at line 101 of file EventSelectorDataStream.h.

00101                                    {
00102     return m_pSelector;
00103   }

bool EventSelectorDataStream::isInitialized (  )  const [inline]

Check initialization status.

Definition at line 105 of file EventSelectorDataStream.h.

00105                                 {
00106     return m_initialized;
00107   }


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 50 of file EventSelectorDataStream.h.

Definition string.

Definition at line 52 of file EventSelectorDataStream.h.

Criteria.

Definition at line 54 of file EventSelectorDataStream.h.

Event selector type.

Definition at line 56 of file EventSelectorDataStream.h.

Pointer to valid selector.

Definition at line 58 of file EventSelectorDataStream.h.

Reference to service locator.

Definition at line 60 of file EventSelectorDataStream.h.

Properties vector.

Definition at line 62 of file EventSelectorDataStream.h.

Initialization state.

Definition at line 64 of file EventSelectorDataStream.h.


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

Generated at Mon Sep 7 18:17:37 2009 for Gaudi Framework, version v21r4 by Doxygen version 1.5.6 written by Dimitri van Heesch, © 1997-2004