#include <GaudiSequencer.h>
Inheritance diagram for GaudiSequencer:
Public Types | |
SUCCESS | |
NO_INTERFACE | |
VERSMISMATCH | |
LAST_ERROR | |
enum | Status |
Public Member Functions | |
GaudiSequencer (const std::string &name, ISvcLocator *pSvcLocator) | |
Standard constructor. | |
virtual | ~GaudiSequencer () |
Destructor. | |
virtual StatusCode | initialize () |
Algorithm initialization. | |
virtual StatusCode | execute () |
Algorithm execution. | |
virtual StatusCode | finalize () |
Algorithm finalization. | |
virtual StatusCode | beginRun () |
Algorithm beginRun. | |
virtual StatusCode | endRun () |
Algorithm endRun. | |
void | resetExecuted () |
Called before an event processing. | |
void | membershipHandler (Property &theProp) |
for asynchronous changes in the list of algorithms | |
virtual StatusCode | sysExecute () |
the generic actions for the execution. | |
void | put (IDataProviderSvc *svc, DataObject *object, const std::string &address, const bool useRootInTES=true) const |
Register a data object or container into Gaudi Event Transient Store. | |
void | put (DataObject *object, const std::string &address, const bool useRootInTES=true) const |
Register a data object or container into Gaudi Event Transient Store. | |
template<class TYPE> | |
Gaudi::Utils::GetData< TYPE >::return_type | get (IDataProviderSvc *svc, const std::string &location, const bool useRootInTES=true) const |
Templated access to the data in Gaudi Transient Store. | |
template<class TYPE> | |
Gaudi::Utils::GetData< TYPE >::return_type | get (const std::string &location, const bool useRootInTES=true) const |
Templated access to the data from Gaudi Event Transient Store. | |
template<class TYPE> | |
TYPE * | getDet (IDataProviderSvc *svc, const std::string &location) const |
Templated access to the detector data from the Gaudi Detector Transient Store. | |
template<class TYPE> | |
TYPE * | getDet (const std::string &location) const |
Templated access to the detector data from the Gaudi Detector Transient Store. | |
template<class TYPE> | |
bool | exist (IDataProviderSvc *svc, const std::string &location, const bool useRootInTES=true) const |
Check the existence of a data object or container in the Gaudi Transient Event Store. | |
template<class TYPE> | |
bool | exist (const std::string &location, const bool useRootInTES=true) const |
Check the existence of a data object or container in the Gaudi Transient Event Store. | |
template<class TYPE> | |
bool | existDet (IDataProviderSvc *svc, const std::string &location) const |
Check the existence of detector objects in the Gaudi Transient Detector Store. | |
template<class TYPE> | |
bool | existDet (const std::string &location) const |
Check the existence of detector objects in the Gaudi Transient Detector Store. | |
template<class TYPE, class TYPE2> | |
TYPE * | getOrCreate (IDataProviderSvc *svc, const std::string &location, const bool useRootInTES=true) const |
Get the existing data object from Gaudi Event Transient store. | |
template<class TYPE, class TYPE2> | |
TYPE * | getOrCreate (const std::string &location, const bool useRootInTES=true) const |
Get the existing data object from Gaudi Event Transient store. | |
bool | registerContext () const |
register for Algorithm Context Service ? | |
INTupleSvc * | evtColSvc () const |
Access the standard event collection service. | |
IAlgContextSvc * | contextSvc () const |
Access the standard Algorithm Context Service. | |
TOOL * | tool (const std::string &type, const std::string &name, const IInterface *parent=0, bool create=true) const |
Useful method for the easy location of tools. | |
TOOL * | tool (const std::string &type, const IInterface *parent=0, bool create=true) const |
A useful method for the easy location of tools. | |
SERVICE * | svc (const std::string &name, const bool create=true) const |
A useful method for the easy location of services. | |
IUpdateManagerSvc * | updMgrSvc () const |
Short-cut to locate the Update Manager Service. | |
IDataProviderSvc * | fastContainersSvc () const |
Short-cut to locate the Fast Containers Service. | |
StatusCode | Error (const std::string &msg, const StatusCode st=StatusCode::FAILURE, const size_t mx=10) const |
Print the error message and return with the given StatusCode. | |
StatusCode | Warning (const std::string &msg, const StatusCode st=StatusCode::FAILURE, const size_t mx=10) const |
Print the warning message and return with the given StatusCode. | |
StatusCode | Print (const std::string &msg, const StatusCode st=StatusCode::SUCCESS, const MSG::Level lev=MSG::INFO) const |
Print the message and return with the given StatusCode. | |
StatusCode | Assert (const bool ok, const std::string &message="", const StatusCode sc=StatusCode(StatusCode::FAILURE, true)) const |
Assertion - throw exception if the given condition is not fulfilled. | |
StatusCode | Assert (const bool ok, const char *message, const StatusCode sc=StatusCode(StatusCode::FAILURE, true)) const |
Assertion - throw exception if the given condition is not fulfilled. | |
StatusCode | Exception (const std::string &msg, const GaudiException &exc, const StatusCode sc=StatusCode(StatusCode::FAILURE, true)) const |
Create and (re)-throw a given GaudiException. | |
StatusCode | Exception (const std::string &msg, const std::exception &exc, const StatusCode sc=StatusCode(StatusCode::FAILURE, true)) const |
Create and (re)-throw a given exception. | |
StatusCode | Exception (const std::string &msg="no message", const StatusCode sc=StatusCode(StatusCode::FAILURE, true)) const |
Create and throw an exception with the given message. | |
MsgStream & | msgStream (const MSG::Level level) const |
Predefined configurable message stream for the efficient printouts. | |
MsgStream & | always () const |
shortcut for the method msgStream ( MSG::ALWAYS ) | |
MsgStream & | fatal () const |
shortcut for the method msgStream ( MSG::FATAL ) | |
MsgStream & | err () const |
shortcut for the method msgStream ( MSG::ERROR ) | |
MsgStream & | error () const |
shortcut for the method msgStream ( MSG::ERROR ) | |
MsgStream & | warning () const |
shortcut for the method msgStream ( MSG::WARNING ) | |
MsgStream & | info () const |
shortcut for the method msgStream ( MSG::INFO ) | |
MsgStream & | debug () const |
shortcut for the method msgStream ( MSG::DEBUG ) | |
MsgStream & | verbose () const |
shortcut for the method msgStream ( MSG::VERBOSE ) | |
MsgStream & | msg () const |
shortcut for the method msgStream ( MSG::INFO ) | |
const Statistics & | counters () const |
accessor to all counters | |
StatEntity & | counter (const std::string &tag) const |
accessor to certain counter by name | |
MSG::Level | msgLevel () const |
The current message service output level. | |
bool | msgLevel (const MSG::Level level) const |
Test the output level. | |
void | resetMsgStream () const |
Reset (delete) the current message stream object. | |
bool | typePrint () const |
Insert the actual C++ type of the algorithm/tool in the messages ? | |
bool | propsPrint () const |
Print properties at initalization ? | |
bool | statPrint () const |
Print statistical counters at finalization ? | |
bool | errorsPrint () const |
Print error counters at finalization ? | |
long | printStat (const MSG::Level level=MSG::ALWAYS) const |
perform the actual printout of statistical counters | |
long | printErrors (const MSG::Level level=MSG::ALWAYS) const |
perform the actual printout of error counters | |
long | printProps (const MSG::Level level=MSG::ALWAYS) const |
perform the actual printout of properties | |
void | registerCondition (const std::string &condition, StatusCode(CallerClass::*mf)()=NULL) |
register the current instance to the UpdateManagerSvc as a consumer for a condition. | |
void | registerCondition (const std::string &condition, CondType *&condPtrDest, StatusCode(CallerClass::*mf)()=NULL) |
register the current instance to the UpdateManagerSvc as a consumer for a condition. | |
void | registerCondition (char *condition, StatusCode(CallerClass::*mf)()=NULL) |
just to avoid conflicts with the version using a pointer to a template class. | |
void | registerCondition (TargetClass *condition, StatusCode(CallerClass::*mf)()=NULL) |
register the current instance to the UpdateManagerSvc as a consumer for a condition. | |
StatusCode | runUpdate () |
asks the UpdateManagerSvc to perform an update of the instance (if needed) without waiting the next BeginEvent incident. | |
TransientFastContainer< T > * | getFastContainer (const std::string &location, typename TransientFastContainer< T >::size_type initial=0) |
Return a new TransientFastContainer for objects of type T. | |
StatusCode | release (const IInterface *interface) const |
Manual forced (and 'safe') release of the active tool or service. | |
unsigned long | release () |
const std::string & | context () const |
Returns the "context" string. Used to indentify different processing states. | |
const std::string & | rootInTES () const |
Returns the "rootInTES" string. | |
double | globalTimeOffset () const |
Returns the "globalTimeOffset" double. | |
virtual StatusCode | sysStart () |
virtual StatusCode | sysInitialize () |
virtual StatusCode | sysReinitialize () |
virtual StatusCode | sysRestart () |
virtual StatusCode | sysStop () |
virtual StatusCode | sysFinalize () |
virtual StatusCode | sysBeginRun () |
virtual StatusCode | sysEndRun () |
virtual const std::string & | name () const |
virtual const std::string & | version () const |
virtual StatusCode | configure () |
virtual StatusCode | terminate () |
virtual StatusCode | start () |
virtual StatusCode | stop () |
virtual StatusCode | reinitialize () |
virtual StatusCode | restart () |
virtual bool | isExecuted () const |
virtual void | setExecuted (bool state) |
virtual Gaudi::StateMachine::State | FSMState () const |
virtual Gaudi::StateMachine::State | targetFSMState () const |
virtual bool | isEnabled () const |
virtual bool | filterPassed () const |
virtual void | setFilterPassed (bool state) |
StatusCode | service (const std::string &name, T *&psvc, bool createIf=true) const |
StatusCode | service (const std::string &svcType, const std::string &svcName, T *&psvc) const |
void | setOutputLevel (int level) |
IAuditorSvc * | auditorSvc () const |
IChronoStatSvc * | chronoSvc () const |
IChronoStatSvc * | chronoStatService () const |
IDataProviderSvc * | detSvc () const |
IDataProviderSvc * | detDataService () const |
IConversionSvc * | detCnvSvc () const |
IConversionSvc * | detDataCnvService () const |
IDataProviderSvc * | eventSvc () const |
IDataProviderSvc * | evtSvc () const |
IDataProviderSvc * | eventDataService () const |
IConversionSvc * | eventCnvSvc () const |
IConversionSvc * | eventDataCnvService () const |
IHistogramSvc * | histoSvc () const |
IHistogramSvc * | histogramDataService () const |
IMessageSvc * | msgSvc () const |
IMessageSvc * | messageService () const |
INTupleSvc * | ntupleSvc () const |
INTupleSvc * | ntupleService () const |
IRndmGenSvc * | randSvc () const |
IToolSvc * | toolSvc () const |
IExceptionSvc * | exceptionSvc () const |
ISvcLocator * | serviceLocator () const |
ISvcLocator * | svcLoc () const |
StatusCode | createSubAlgorithm (const std::string &type, const std::string &name, Algorithm *&pSubAlg) |
std::vector< Algorithm * > * | subAlgorithms () const |
virtual StatusCode | setProperty (const Property &p) |
virtual StatusCode | setProperty (const std::string &s) |
virtual StatusCode | setProperty (const std::string &n, const std::string &v) |
StatusCode | setProperty (const std::string &name, const TYPE &value) |
virtual StatusCode | getProperty (Property *p) const |
virtual const Property & | getProperty (const std::string &name) const |
virtual StatusCode | getProperty (const std::string &n, std::string &v) const |
virtual const std::vector< Property * > & | getProperties () const |
StatusCode | setProperties () |
Property * | declareProperty (const std::string &name, T &property, const std::string &doc="none") const |
Property * | declareRemoteProperty (const std::string &name, IProperty *rsvc, const std::string &rname="") const |
IMonitorSvc * | monitorSvc () const |
void | declareInfo (const std::string &name, const T &var, const std::string &desc) const |
void | declareInfo (const std::string &name, const std::string &format, const void *var, int size, const std::string &desc) const |
unsigned long | addRef () |
StatusCode | queryInterface (const InterfaceID &riid, void **) |
Static Public Member Functions | |
static const InterfaceID & | interfaceID () |
static const InterfaceID & | interfaceID () |
static const InterfaceID & | interfaceID () |
Public Attributes | |
SUCCESS | |
NO_INTERFACE | |
VERSMISMATCH | |
LAST_ERROR | |
Protected Types | |
typedef std::map< std::string, StatEntity > | Statistics |
the actual type of general counters | |
typedef std::map< std::string, unsigned int > | Counter |
the actual type error/warning counter | |
typedef std::vector< IAlgTool * > | AlgTools |
storage for active tools | |
typedef std::pair< IInterface *, std::string > | ServiceEntry |
Service pointer and name. | |
typedef std::vector< ServiceEntry > | Services |
storage for active services | |
Protected Member Functions | |
StatusCode | decodeNames () |
Decode a vector of string. | |
StatusCode | releaseTool (const IAlgTool *tool) const |
manual forced (and 'safe') release of the tool | |
StatusCode | releaseSvc (const IInterface *svc) const |
manual forced (and 'safe') release of the service | |
bool | isInitialized () const |
bool | isFinalized () const |
int | outputLevel () const |
IntegerProperty & | outputLevelProperty () |
void | initOutputLevel (Property &prop) |
Static Protected Attributes | |
static const bool | IgnoreRootInTES |
Simple definition to be used with the new useRootInTES argument get<TYPE> and put methods. | |
static const bool | UseRootInTES |
Simple definition to be used with the new useRootInTES argument get<TYPE> and put methods. | |
Private Member Functions | |
GaudiSequencer (const GaudiSequencer &a) | |
Private copy, copy not allowed. | |
GaudiSequencer & | operator= (const GaudiSequencer &a) |
Private assignment operator: This is not allowed. | |
Private Attributes | |
StringArrayProperty | m_names |
Input string, list of algorithms. | |
std::vector< AlgorithmEntry > | m_entries |
List of algorithms to process. | |
bool | m_modeOR |
Indicates that the OR is wanted instead of AND. | |
bool | m_shortCircuit |
Indicates whether to stop processing as soon as possible, or to always execute _all_ subalgorithms. | |
bool | m_ignoreFilter |
True if one continues always. | |
bool | m_isInitialized |
Indicate that we are ready. | |
bool | m_measureTime |
Flag to measure time. | |
bool | m_returnOK |
Forces the sequencer to return a good status. | |
ISequencerTimerTool * | m_timerTool |
Pointer to the timer tool. | |
int | m_timer |
Timer number for the sequencer. | |
Classes | |
class | AlgorithmEntry |
Definition at line 18 of file GaudiSequencer.h.
typedef std::map<std::string,StatEntity> GaudiCommon< Algorithm >::Statistics [protected, inherited] |
typedef std::map<std::string,unsigned int> GaudiCommon< Algorithm >::Counter [protected, inherited] |
typedef std::vector<IAlgTool*> GaudiCommon< Algorithm >::AlgTools [protected, inherited] |
typedef std::pair<IInterface*,std::string> GaudiCommon< Algorithm >::ServiceEntry [protected, inherited] |
typedef std::vector<ServiceEntry> GaudiCommon< Algorithm >::Services [protected, inherited] |
GaudiSequencer::GaudiSequencer | ( | const std::string & | name, | |
ISvcLocator * | pSvcLocator | |||
) |
Standard constructor.
Definition at line 20 of file GaudiSequencer.cpp.
00022 : GaudiAlgorithm ( name , pSvcLocator ) 00023 , m_timerTool( 0 ) 00024 { 00025 declareProperty( "Members" , m_names ); 00026 declareProperty( "ModeOR" , m_modeOR = false ); 00027 declareProperty( "IgnoreFilterPassed" , m_ignoreFilter = false ); 00028 declareProperty( "MeasureTime" , m_measureTime = false ); 00029 declareProperty( "ReturnOK" , m_returnOK = false ); 00030 declareProperty( "ShortCircuit" , m_shortCircuit = true ); 00031 00032 m_names.declareUpdateHandler (& GaudiSequencer::membershipHandler, this ); 00033 }
GaudiSequencer::~GaudiSequencer | ( | ) | [virtual] |
GaudiSequencer::GaudiSequencer | ( | const GaudiSequencer & | a | ) | [private] |
Private copy, copy not allowed.
StatusCode GaudiSequencer::initialize | ( | ) | [virtual] |
Algorithm initialization.
Reimplemented from GaudiAlgorithm.
Definition at line 42 of file GaudiSequencer.cpp.
00042 { 00043 GaudiAlgorithm::initialize(); 00044 00045 debug() << "==> Initialise" << endreq; 00046 00047 StatusCode status = decodeNames(); 00048 if ( !status.isSuccess() ) return status; 00049 00050 m_timerTool = tool<ISequencerTimerTool>( "SequencerTimerTool" ); 00051 if ( m_timerTool->globalTiming() ) m_measureTime = true; 00052 00053 if ( m_measureTime ) { 00054 m_timer = m_timerTool->addTimer( name() ); 00055 m_timerTool->increaseIndent(); 00056 } else { 00057 release( m_timerTool ); 00058 m_timerTool = 0; 00059 } 00060 00061 //== Initialize the algorithms 00062 std::vector<AlgorithmEntry>::iterator itE; 00063 for ( itE = m_entries.begin(); m_entries.end() != itE; itE++ ) { 00064 if ( m_measureTime ) { 00065 itE->setTimer( m_timerTool->addTimer( itE->algorithm()->name() ) ); 00066 } 00067 00068 status = itE->algorithm()->sysInitialize(); 00069 if ( !status.isSuccess() ) { 00070 return Error( "Can not initialize " + itE->algorithm()->name(), 00071 status ); 00072 } 00073 } 00074 if ( m_measureTime ) m_timerTool->decreaseIndent(); 00075 00076 return StatusCode::SUCCESS; 00077 };
StatusCode GaudiSequencer::execute | ( | ) | [virtual] |
Algorithm execution.
Reimplemented from GaudiAlgorithm.
Definition at line 82 of file GaudiSequencer.cpp.
00082 { 00083 00084 if ( m_measureTime ) m_timerTool->start( m_timer ); 00085 00086 debug() << "==> Execute" << endreq; 00087 00088 StatusCode result = StatusCode::SUCCESS; 00089 00090 bool seqPass = !m_modeOR; // for OR, result will be false, unless (at least) one is true 00091 // for AND, result will be true, unless (at least) one is false 00092 // also see comment below .... 00093 00094 std::vector<AlgorithmEntry>::const_iterator itE; 00095 for ( itE = m_entries.begin(); m_entries.end() != itE; ++itE ) { 00096 Algorithm* myAlg = itE->algorithm(); 00097 if ( ! myAlg->isEnabled() ) continue; 00098 if ( ! myAlg->isExecuted() ) { 00099 if ( m_measureTime ) m_timerTool->start( itE->timer() ); 00100 result = myAlg->sysExecute(); 00101 if ( m_measureTime ) m_timerTool->stop( itE->timer() ); 00102 myAlg->setExecuted( true ); 00103 if ( ! result.isSuccess() ) break; //== Abort and return bad status 00104 00105 } 00106 //== Check the returned status 00107 if ( !m_ignoreFilter ) { 00108 bool passed = myAlg->filterPassed(); 00109 if ( itE->reverse() ) passed = !passed; 00110 00111 //== indicate our own result. For OR, exit as soon as true. 00112 // If no more, will exit with false. 00113 //== for AND, exit as soon as false. Else, will be true (default) 00114 00115 // if not short-circuiting, make sure we latch iPass to 'true' in 00116 // OR mode (i.e. it is sufficient for one item to be true in order 00117 // to be true at the end, and thus we start out at 'false'), and latch 00118 // to 'false' in AND mode (i.e. it is sufficient for one item to 00119 // be false to the false in the end, and thus we start out at 'true') 00120 // -- i.e. we should not just blindly return the 'last' passed status! 00121 00122 // or to put it another way: in OR mode, we don't care about things 00123 // which are false, as they leave our current state alone (provided 00124 // we stared as 'false'!), and in AND mode, we keep our current 00125 // state until someone returns 'false' (provided we started as 'true') 00126 if ( m_modeOR ? passed : !passed ) { 00127 seqPass = passed; 00128 if (m_shortCircuit) break; 00129 } 00130 } 00131 00132 } 00133 if ( !m_ignoreFilter && !m_entries.empty() ) setFilterPassed( seqPass ); 00134 setExecuted( true ); 00135 00136 if ( m_measureTime ) m_timerTool->stop( m_timer ); 00137 00138 return m_returnOK ? StatusCode::SUCCESS : result; 00139 };
StatusCode GaudiSequencer::finalize | ( | ) | [virtual] |
Algorithm finalization.
Reimplemented from GaudiAlgorithm.
Definition at line 144 of file GaudiSequencer.cpp.
00144 { 00145 00146 debug() << "==> Finalize" << endreq; 00147 return GaudiAlgorithm::finalize(); 00148 }
StatusCode GaudiSequencer::beginRun | ( | ) | [virtual] |
Algorithm beginRun.
Reimplemented from Algorithm.
Definition at line 153 of file GaudiSequencer.cpp.
00153 { 00154 00155 if ( !isEnabled() ) return StatusCode::SUCCESS; 00156 00157 debug() << "==> beginRun" << endreq; 00158 return StatusCode::SUCCESS; 00159 }
StatusCode GaudiSequencer::endRun | ( | ) | [virtual] |
Algorithm endRun.
Reimplemented from Algorithm.
Definition at line 164 of file GaudiSequencer.cpp.
00164 { 00165 00166 if ( !isEnabled() ) return StatusCode::SUCCESS; 00167 00168 debug() << "==> endRun" << endreq; 00169 return StatusCode::SUCCESS; 00170 }
void GaudiSequencer::resetExecuted | ( | ) | [virtual] |
Called before an event processing.
Reimplemented from Algorithm.
Definition at line 175 of file GaudiSequencer.cpp.
00175 { 00176 Algorithm::resetExecuted(); 00177 // algorithm doesn't call resetExecuted of subalgos! should it??? 00178 std::vector<AlgorithmEntry>::const_iterator itE; 00179 for ( itE = m_entries.begin(); m_entries.end() != itE; ++itE ) { 00180 itE->algorithm()->resetExecuted(); 00181 } 00182 }
void GaudiSequencer::membershipHandler | ( | Property & | theProp | ) |
for asynchronous changes in the list of algorithms
Definition at line 333 of file GaudiSequencer.cpp.
00333 { 00334 if ( isInitialized() ) decodeNames().ignore(); 00335 }
StatusCode GaudiSequencer::decodeNames | ( | ) | [protected] |
Decode a vector of string.
Definition at line 186 of file GaudiSequencer.cpp.
00186 { 00187 00188 StatusCode final = StatusCode::SUCCESS; 00189 m_entries.clear(); 00190 00191 //== Get the "Context" option if in the file... 00192 IJobOptionsSvc* jos = svc<IJobOptionsSvc>( "JobOptionsSvc" ); 00193 bool addedContext = false; //= Have we added the context ? 00194 bool addedRootInTES = false; //= Have we added the rootInTES ? 00195 bool addedGlobalTimeOffset = false; //= Have we added the globalTimeOffset ? 00196 00197 00198 //= Get the Application manager, to see if algorithm exist 00199 IAlgManager* appMgr = svc<IAlgManager>("ApplicationMgr"); 00200 const std::vector<std::string>& nameVector = m_names.value(); 00201 std::vector<std::string>::const_iterator it; 00202 for ( it = nameVector.begin(); nameVector.end() != it; it++ ) { 00203 std::string theName( *it ); 00204 std::string theType( *it ); 00205 std::string::size_type slash = it->find_first_of( '/' ); 00206 if ( slash != std::string::npos ) { 00207 theType = it->substr( 0, slash ); 00208 theName = it->substr( slash+1 ); 00209 } 00210 //== handling of extensions to the name ??? 00211 00212 //== Check wether the specified algorithm already exists. If not, create it 00213 00214 IAlgorithm* myIAlg; 00215 StatusCode result = appMgr->getAlgorithm( theName, myIAlg ); 00216 if ( !result.isSuccess() ) { 00217 //== Set the Context if not in the jobOptions list 00218 if ( "" != context() || 00219 "" != rootInTES() || 00220 0.0 != globalTimeOffset() ) { 00221 bool foundContext = false; 00222 bool foundRootInTES = false; 00223 bool foundGlobalTimeOffset = false; 00224 const std::vector<const Property*>* properties = jos->getProperties( theName ); 00225 if ( 0 != properties ) { 00226 // Iterate over the list to set the options 00227 for ( std::vector<const Property*>::const_iterator itProp = properties->begin(); 00228 itProp != properties->end(); 00229 itProp++ ) { 00230 const StringProperty* sp = dynamic_cast<const StringProperty*>(*itProp); 00231 if ( 0 != sp ) { 00232 if ( "Context" == (*itProp)->name() ) { 00233 foundContext = true; 00234 } 00235 if ( "RootInTES" == (*itProp)->name() ) { 00236 foundRootInTES = true; 00237 } 00238 if ( "GlobalTimeOffset" == (*itProp)->name() ) { 00239 foundGlobalTimeOffset = true; 00240 } 00241 } 00242 } 00243 } 00244 if ( !foundContext && "" != context() ) { 00245 StringProperty contextProperty( "Context", context() ); 00246 jos->addPropertyToCatalogue( theName, contextProperty ).ignore(); 00247 addedContext = true; 00248 } 00249 if ( !foundRootInTES && "" != rootInTES() ) { 00250 StringProperty rootInTESProperty( "RootInTES", rootInTES() ); 00251 jos->addPropertyToCatalogue( theName, rootInTESProperty ).ignore(); 00252 addedRootInTES = true; 00253 } 00254 if ( !foundGlobalTimeOffset && 0.0 != globalTimeOffset() ) { 00255 DoubleProperty globalTimeOffsetProperty( "GlobalTimeOffset", globalTimeOffset() ); 00256 jos->addPropertyToCatalogue( theName, globalTimeOffsetProperty ).ignore(); 00257 addedGlobalTimeOffset = true; 00258 } 00259 } 00260 00261 Algorithm *myAlg = 0; 00262 result = createSubAlgorithm( theType, theName, myAlg ); 00263 // (MCl) this should prevent bug #35199... even if I didn't manage to 00264 // reproduce it with a simple test. 00265 if (result.isSuccess()) 00266 myIAlg = myAlg; 00267 } 00268 00269 //== Remove the property, in case this is not a GaudiAlgorithm... 00270 if ( addedContext ) { 00271 jos->removePropertyFromCatalogue( theName, "Context" ).ignore(); 00272 addedContext = false; 00273 } 00274 if ( addedRootInTES ) { 00275 jos->removePropertyFromCatalogue( theName, "RootInTES" ).ignore(); 00276 addedRootInTES = false; 00277 } 00278 if ( addedGlobalTimeOffset ) { 00279 jos->removePropertyFromCatalogue( theName, "GlobalTimeOffset" ).ignore(); 00280 addedGlobalTimeOffset = false; 00281 } 00282 00283 //== Is it an Algorithm ? Strange test... 00284 if ( result.isSuccess() ) { 00285 // TODO: (MCl) it is possible to avoid the dynamic_cast in most of the 00286 // cases by keeping the result of createSubAlgorithm. 00287 Algorithm* myAlg = dynamic_cast<Algorithm*>( myIAlg ); 00288 if (myAlg!=0) { 00289 m_entries.push_back( AlgorithmEntry( myAlg ) ); 00290 myAlg->addRef(); //== Indicate it is used. 00291 debug () << "Added algorithm " << theName << endreq; 00292 } else { 00293 warning() << theName << " is not an Algorithm - failed dynamic_cast" 00294 << endreq; 00295 final = StatusCode::FAILURE; 00296 } 00297 } else { 00298 warning() << "Unable to find or create " << theName << endreq; 00299 final = result; 00300 } 00301 00302 } 00303 release(appMgr).ignore(); 00304 release(jos).ignore(); 00305 00306 //== Print the list of algorithms 00307 MsgStream& msg = info(); 00308 if ( m_modeOR ) msg << "OR "; 00309 msg << "Member list: "; 00310 std::vector<AlgorithmEntry>::iterator itE; 00311 for ( itE = m_entries.begin(); m_entries.end() != itE; itE++ ) { 00312 Algorithm* myAlg = (*itE).algorithm(); 00313 std::string myAlgType = System::typeinfoName( typeid( *myAlg) ) ; 00314 if ( myAlg->name() == myAlgType ) { 00315 msg << myAlg->name(); 00316 } else { 00317 msg << myAlgType << "/" << myAlg->name(); 00318 } 00319 if ( itE+1 != m_entries.end() ) msg << ", "; 00320 } 00321 if ( "" != context() ) msg << ", with context '" << context() << "'"; 00322 if ( "" != rootInTES() ) msg << ", with rootInTES '" << rootInTES() << "'"; 00323 if ( 0.0 != globalTimeOffset() ) msg << ", with globalTimeOffset " << globalTimeOffset(); 00324 msg << endreq; 00325 00326 return final; 00327 00328 }
GaudiSequencer& GaudiSequencer::operator= | ( | const GaudiSequencer & | a | ) | [private] |
Private assignment operator: This is not allowed.
StatusCode GaudiAlgorithm::sysExecute | ( | ) | [virtual, inherited] |
the generic actions for the execution.
< guard/sentry
Reimplemented from Algorithm.
Definition at line 131 of file GaudiAlgorithm.cpp.
00132 { 00133 IAlgContextSvc* ctx = 0 ; 00134 if ( registerContext() ) { ctx = contextSvc() ; } 00135 // Lock the context 00136 Gaudi::Utils::AlgContext cnt ( ctx , this ) ; 00137 00138 // Do not execute if one or more of the m_vetoObjs exist in TES 00139 for( std::vector<std::string>::iterator it = m_vetoObjs.begin(); 00140 it != m_vetoObjs.end(); it++ ) { 00141 if( exist<DataObject>(*it) ) { 00142 debug() << *it << " found, skipping event " << endmsg; 00143 return StatusCode::SUCCESS; 00144 } 00145 } 00146 00147 // Execute if m_requireObjs is empty 00148 bool doIt = m_requireObjs.empty() ? true : false; 00149 00150 // Execute also if one or more of the m_requireObjs exist in TES 00151 for( std::vector<std::string>::iterator it = m_requireObjs.begin(); 00152 it != m_requireObjs.end(); it++ ) { 00153 if( exist<DataObject>(*it) ) { 00154 doIt = true; 00155 break; 00156 } 00157 } 00158 00159 if( doIt ) 00160 // execute the generic method: 00161 return Algorithm::sysExecute() ; 00162 else 00163 return StatusCode::SUCCESS; 00164 }
void GaudiAlgorithm::put | ( | IDataProviderSvc * | svc, | |
DataObject * | object, | |||
const std::string & | address, | |||
const bool | useRootInTES = true | |||
) | const [inline, inherited] |
Register a data object or container into Gaudi Event Transient Store.
svc | Pointer to data provider service | |
object | Data object or container to be registered | |
address | Address in Gaudi Event Transient Store ("/Event" could be omitted ) | |
useRootInTES | Flag to turn on(TRUE) off(FALSE) the use of the RootInTES location property |
GaudiException | for invalid event data service | |
GaudiException | for invalid object | |
GaudiException | for error result from event data service |
StatusCode::SUCCESS | Data was successfully placed in the TES. | |
StatusCode::FAILURE | Failed to store data in the TES. |
Reimplemented from GaudiCommon< Algorithm >.
Definition at line 170 of file GaudiAlgorithm.h.
00174 { 00175 GaudiCommon<Algorithm>::put ( svc , object , address , useRootInTES ) ; 00176 }
void GaudiAlgorithm::put | ( | DataObject * | object, | |
const std::string & | address, | |||
const bool | useRootInTES = true | |||
) | const [inline, inherited] |
Register a data object or container into Gaudi Event Transient Store.
MCHits * hits = new MCHits(); put( hits, "/Event/MC/Hits" );
object | Data object or container to be registered | |
address | Address in Gaudi Event Transient Store ("/Event" could be omitted ) | |
useRootInTES | Flag to turn on(TRUE) off(FALSE) the use of the RootInTES location property |
GaudiException | for invalid event data service | |
GaudiException | for invalid object | |
GaudiException | for error result from event data service |
StatusCode::SUCCESS | Data was successfully placed in the TES. | |
StatusCode::FAILURE | Failed to store data in the TES. |
Definition at line 209 of file GaudiAlgorithm.h.
00212 { 00213 GaudiCommon<Algorithm>::put ( evtSvc() , object , address , useRootInTES ) ; 00214 }
Gaudi::Utils::GetData<TYPE>::return_type GaudiAlgorithm::get | ( | IDataProviderSvc * | svc, | |
const std::string & | location, | |||
const bool | useRootInTES = true | |||
) | const [inline, inherited] |
Templated access to the data in Gaudi Transient Store.
Quick and safe access to the data in Gaudi transient store. The method located the data at given address and perform the debug printout about located data
MCHits* hits = get<MCHits>( evtSvc() , "/Event/MC/Hits" );
GaudiException | for Invalid Data Provider Service | |
GaudiException | for invalid/unavailable data |
svc | Pointer to data service (data provider) | |
location | data location/address in Gaudi Transient Store | |
useRootInTES | Flag to turn on(TRUE) off(FALSE) the use of the RootInTES location property |
Reimplemented from GaudiCommon< Algorithm >.
Definition at line 250 of file GaudiAlgorithm.h.
00253 { 00254 return GaudiCommon<Algorithm>::get<TYPE> ( svc , location , useRootInTES ) ; 00255 }
Gaudi::Utils::GetData<TYPE>::return_type GaudiAlgorithm::get | ( | const std::string & | location, | |
const bool | useRootInTES = true | |||
) | const [inline, inherited] |
Templated access to the data from Gaudi Event Transient Store.
Quick and safe access to the data in Gaudi transient store.
The method located the data at the given address and perform the debug printout about located data.
MCParticles* mcps = get<MCParticles>( MCParticleLocation::Default );
location | Data location/address in Gaudi Transient Store | |
useRootInTES | Flag to turn on(TRUE) off(FALSE) the use of the RootInTES location property |
Definition at line 285 of file GaudiAlgorithm.h.
00287 { 00288 return GaudiCommon<Algorithm>::get<TYPE> ( evtSvc() , location , useRootInTES ) ; 00289 }
TYPE* GaudiAlgorithm::getDet | ( | IDataProviderSvc * | svc, | |
const std::string & | location | |||
) | const [inline, inherited] |
Templated access to the detector data from the Gaudi Detector Transient Store.
Quick and safe access to the detector data in Gaudi transient store.
The method located the detector at the given address and perform the debug printout about located detector.
MyDet* mdet = getDet<MyDet>( detSvc() , "/dd/Structure/LHCb/MyDet" );
svc | Pointer to data service (data provider) | |
location | Detector location/address in Gaudi Transient Store |
Definition at line 310 of file GaudiAlgorithm.h.
00312 { 00313 return GaudiCommon<Algorithm>::get<TYPE> ( svc , location , false ) ; 00314 }
TYPE* GaudiAlgorithm::getDet | ( | const std::string & | location | ) | const [inline, inherited] |
Templated access to the detector data from the Gaudi Detector Transient Store.
Quick and safe access to the detector data in Gaudi transient store.
The method located the detector at the given address and perform the debug printout about located detector.
MyDet* mdet = getDet<MyDet>( "/dd/Structure/LHCb/MyDet" );
location | Detector location/address in Gaudi Transient Store |
Definition at line 334 of file GaudiAlgorithm.h.
00335 { 00336 return GaudiCommon<Algorithm>::get<TYPE> ( detSvc() , location , false ) ; 00337 }
bool GaudiAlgorithm::exist | ( | IDataProviderSvc * | svc, | |
const std::string & | location, | |||
const bool | useRootInTES = true | |||
) | const [inline, inherited] |
Check the existence of a data object or container in the Gaudi Transient Event Store.
bool a1 = exist<DataObject>( evtSvc(), "/Event/MyObject" ) ; bool a2 = exist<MyHits> ( evtSvc(), "/Event/MyHits" ) ;
svc | Pointer to data service (data provider) | |
location | Address in Gaudi Transient Event Store | |
useRootInTES | Flag to turn on(TRUE) off(FALSE) the use of the RootInTES location property |
true | Data object or container exists and implements a proper interface | |
true | Failed to locate the data object or container |
Reimplemented from GaudiCommon< Algorithm >.
Definition at line 366 of file GaudiAlgorithm.h.
00369 { 00370 return GaudiCommon<Algorithm>::exist<TYPE> ( svc , location , useRootInTES ) ; 00371 }
bool GaudiAlgorithm::exist | ( | const std::string & | location, | |
const bool | useRootInTES = true | |||
) | const [inline, inherited] |
Check the existence of a data object or container in the Gaudi Transient Event Store.
bool a1 = exist<DataObject>( "/Event/MyObject" ) ; bool a2 = exist<MyHits> ( "/Event/MyHits" ) ;
location | Address in Gaudi Transient Event Store | |
useRootInTES | Flag to turn on(TRUE) off(FALSE) the use of the RootInTES location property |
true | Data object or container exists and implements a proper interface | |
true | Failed to locate the data object or container |
Definition at line 399 of file GaudiAlgorithm.h.
00401 { 00402 return GaudiCommon<Algorithm>::exist<TYPE> ( evtSvc() , location , useRootInTES ) ; 00403 }
bool GaudiAlgorithm::existDet | ( | IDataProviderSvc * | svc, | |
const std::string & | location | |||
) | const [inline, inherited] |
Check the existence of detector objects in the Gaudi Transient Detector Store.
bool a1 = existDet<DataObject> ( detSvc(), "/dd/Structure/MyObject" ) ; bool a2 = existDet<Material> ( detSvc(), "/dd/Structure/Material/Air" ) ;
svc | Pointer to data service (data provider) | |
location | Address in Gaudi Transient Detector Store |
true | Detector object exists and implements a proper interface | |
false | Failed to locate the data object |
Definition at line 422 of file GaudiAlgorithm.h.
00424 { 00425 return GaudiCommon<Algorithm>::exist<TYPE> ( svc , location , false ) ; 00426 }
bool GaudiAlgorithm::existDet | ( | const std::string & | location | ) | const [inline, inherited] |
Check the existence of detector objects in the Gaudi Transient Detector Store.
bool a1 = existDet<DataObject> ( "/dd/Structure/MyObject" ) ; bool a2 = existDet<Material> ( "/dd/Structure/Material/Air" ) ;
location | Address in Gaudi Transient Detector Store |
true | Detector object exists and implements a proper interface | |
false | Failed to locate the data object |
Definition at line 444 of file GaudiAlgorithm.h.
00445 { 00446 return GaudiCommon<Algorithm>::exist<TYPE> ( detSvc() , location , false ) ; 00447 }
TYPE* GaudiAlgorithm::getOrCreate | ( | IDataProviderSvc * | svc, | |
const std::string & | location, | |||
const bool | useRootInTES = true | |||
) | const [inline, inherited] |
Get the existing data object from Gaudi Event Transient store.
Alternatively, create new object and register it in TES and return if object does not exist.
MyHits* hits = getOrCreate<MyHits,MyHits>( evtSvc() , "/Event/MyHits" ) ;
GaudiException | for Invalid Data Provider Service | |
GaudiException | for invalid/unavailable data |
svc | Pointer to data service (data provider) | |
location | Location in Gaudi Transient Event Store | |
useRootInTES | Flag to turn on(TRUE) off(FALSE) the use of the RootInTES location property |
Reimplemented from GaudiCommon< Algorithm >.
Definition at line 477 of file GaudiAlgorithm.h.
00480 { 00481 return GaudiCommon<Algorithm>::getOrCreate<TYPE,TYPE2> ( svc , location , useRootInTES ) ; 00482 }
TYPE* GaudiAlgorithm::getOrCreate | ( | const std::string & | location, | |
const bool | useRootInTES = true | |||
) | const [inline, inherited] |
Get the existing data object from Gaudi Event Transient store.
Alternatively, create new object and register it in TES and return if object does not exist.
MyHits* hits = getOrCreate<MyHits,MyHits>( "/Event/MyHits" ) ;
GaudiException | for Invalid Data Provider Service | |
GaudiException | for invalid/unavailable data |
location | Location in Gaudi Transient Event Store | |
useRootInTES | Flag to turn on(TRUE) off(FALSE) the use of the RootInTES location property |
Definition at line 511 of file GaudiAlgorithm.h.
00513 { 00514 return GaudiCommon<Algorithm>::getOrCreate<TYPE,TYPE2> ( evtSvc() , location , useRootInTES ) ; 00515 }
bool GaudiAlgorithm::registerContext | ( | ) | const [inline, inherited] |
register for Algorithm Context Service ?
Definition at line 532 of file GaudiAlgorithm.h.
00532 { return m_registerContext ; }
INTupleSvc * GaudiAlgorithm::evtColSvc | ( | ) | const [inherited] |
Access the standard event collection service.
Definition at line 104 of file GaudiAlgorithm.cpp.
00105 { 00106 if ( 0 == m_evtColSvc ) 00107 { 00108 m_evtColSvc = svc< INTupleSvc > ( "EvtTupleSvc" , true ) ; 00109 } 00110 return m_evtColSvc ; 00111 }
IAlgContextSvc * GaudiAlgorithm::contextSvc | ( | ) | const [inherited] |
Access the standard Algorithm Context Service.
Definition at line 115 of file GaudiAlgorithm.cpp.
00116 { 00117 if ( 0 == m_contextSvc ) 00118 { 00119 m_contextSvc = svc< IAlgContextSvc > ( m_contextSvcName , true ) ; 00120 } 00121 return m_contextSvc ; 00122 }
TOOL* GaudiCommon< Algorithm >::tool | ( | const std::string & | type, | |
const std::string & | name, | |||
const IInterface * | parent = 0 , |
|||
bool | create = true | |||
) | const [inherited] |
Useful method for the easy location of tools.
IMyTool* myTool = tool<IMyTool>( "MyToolType", "MyToolName", this );
GaudiException | for invalid Tool Service | |
GaudiException | for error from Tool Service | |
GaudiException | for invalid tool |
type | Tool type | |
name | Tool name | |
parent | Tool parent | |
create | Flag for creation of nonexisting tools |
TOOL* GaudiCommon< Algorithm >::tool | ( | const std::string & | type, | |
const IInterface * | parent = 0 , |
|||
bool | create = true | |||
) | const [inherited] |
A useful method for the easy location of tools.
IMyTool* myTool = tool<IMyTool>( "PublicToolType" );
GaudiException | for invalid Tool Service | |
GaudiException | for error from Tool Service | |
GaudiException | for invalid tool |
type | Tool type, could be of "Type/Name" format | |
parent | Tool parent | |
create | Flag for creation of nonexisting tools |
SERVICE* GaudiCommon< Algorithm >::svc | ( | const std::string & | name, | |
const bool | create = true | |||
) | const [inherited] |
A useful method for the easy location of services.
IMyService* mySvc = svc<IMyService>( "MyServiceType" );
GaudiException | for error in Algorithms::service | |
GaudiException | for invalid service |
name | service type name | |
create | Flag for creation of non-existing services |
IUpdateManagerSvc* GaudiCommon< Algorithm >::updMgrSvc | ( | ) | const [inline, inherited] |
Short-cut to locate the Update Manager Service.
IDataProviderSvc* GaudiCommon< Algorithm >::fastContainersSvc | ( | ) | const [inline, inherited] |
Short-cut to locate the Fast Containers Service.
StatusCode GaudiCommon< Algorithm >::Error | ( | const std::string & | msg, | |
const StatusCode | st = StatusCode::FAILURE , |
|||
const size_t | mx = 10 | |||
) | const [inherited] |
Print the error message and return with the given StatusCode.
Also performs statistical analysis of the error messages and suppression after the defined number of error instances.
if( a < 0 ) { return Error("a is negative!") ;} if( b < 0 ) { return Error("b is illegal!" , StatusCode(25) ); if( c < 0 ) { return Error("c is negative" , StatusCode(35) , 50 );
msg | Error message | |
st | StatusCode to return | |
mx | Maximum number of printouts for this message |
StatusCode GaudiCommon< Algorithm >::Warning | ( | const std::string & | msg, | |
const StatusCode | st = StatusCode::FAILURE , |
|||
const size_t | mx = 10 | |||
) | const [inherited] |
Print the warning message and return with the given StatusCode.
Also performs statistical analysis of the error messages and suppression after the defined number of error instances.
if( a < 0 ) { return Warning("a is negative!") ;} if( b < 0 ) { return Warning("b is illegal!" , StatusCode(25) ); if( c < 0 ) { return Warning("c is negative" , StatusCode(35) , 50 );
msg | Warning message | |
st | StatusCode to return | |
mx | Maximum number of printouts for this message |
StatusCode GaudiCommon< Algorithm >::Print | ( | const std::string & | msg, | |
const StatusCode | st = StatusCode::SUCCESS , |
|||
const MSG::Level | lev = MSG::INFO | |||
) | const [inherited] |
Print the message and return with the given StatusCode.
msg | Message to print | |
st | StatusCode to return | |
lev | Printout level for the given message |
StatusCode GaudiCommon< Algorithm >::Assert | ( | const bool | ok, | |
const std::string & | message = "" , |
|||
const StatusCode | sc = StatusCode(StatusCode::FAILURE, true) | |||
) | const [inline, inherited] |
Assertion - throw exception if the given condition is not fulfilled.
Exception | for invalid condition |
ok | Condition which should be "true" | |
message | Message to be associated with the exception | |
sc | StatusCode to be returned (artificial) |
StatusCode GaudiCommon< Algorithm >::Assert | ( | const bool | ok, | |
const char * | message, | |||
const StatusCode | sc = StatusCode(StatusCode::FAILURE, true) | |||
) | const [inline, inherited] |
Assertion - throw exception if the given condition is not fulfilled.
Exception | for invalid condition |
ok | Condition which should be "true" | |
message | Message to be associated with the exception | |
sc | StatusCode to be returned (artificial) |
StatusCode GaudiCommon< Algorithm >::Exception | ( | const std::string & | msg, | |
const GaudiException & | exc, | |||
const StatusCode | sc = StatusCode(StatusCode::FAILURE, true) | |||
) | const [inherited] |
Create and (re)-throw a given GaudiException.
CaudiException | always thrown! |
msg | Exception message | |
exc | (previous) exception of type GaudiException | |
sc | StatusCode |
StatusCode GaudiCommon< Algorithm >::Exception | ( | const std::string & | msg, | |
const std::exception & | exc, | |||
const StatusCode | sc = StatusCode(StatusCode::FAILURE, true) | |||
) | const [inherited] |
Create and (re)-throw a given exception.
std::exception | always thrown! |
msg | Exception message | |
exc | (previous) exception of type std::exception | |
sc | StatusCode |
StatusCode GaudiCommon< Algorithm >::Exception | ( | const std::string & | msg = "no message" , |
|
const StatusCode | sc = StatusCode(StatusCode::FAILURE, true) | |||
) | const [inherited] |
Create and throw an exception with the given message.
GaudiException | always thrown! |
msg | Exception message | |
sc | StatusCode |
MsgStream& GaudiCommon< Algorithm >::msgStream | ( | const MSG::Level | level | ) | const [inline, inherited] |
Predefined configurable message stream for the efficient printouts.
if ( a < 0 ) { msgStream( MSG::ERROR ) << "a = " << endreq ; }
MsgStream& GaudiCommon< Algorithm >::always | ( | ) | const [inline, inherited] |
shortcut for the method msgStream ( MSG::ALWAYS )
Definition at line 457 of file GaudiCommon.h.
00457 { return msgStream ( MSG:: ALWAYS ) ; }
MsgStream& GaudiCommon< Algorithm >::fatal | ( | ) | const [inline, inherited] |
shortcut for the method msgStream ( MSG::FATAL )
Definition at line 459 of file GaudiCommon.h.
00459 { return msgStream ( MSG:: FATAL ) ; }
MsgStream& GaudiCommon< Algorithm >::err | ( | ) | const [inline, inherited] |
shortcut for the method msgStream ( MSG::ERROR )
Definition at line 461 of file GaudiCommon.h.
00461 { return msgStream ( MSG:: ERROR ) ; }
MsgStream& GaudiCommon< Algorithm >::error | ( | ) | const [inline, inherited] |
shortcut for the method msgStream ( MSG::ERROR )
Definition at line 463 of file GaudiCommon.h.
00463 { return msgStream ( MSG:: ERROR ) ; }
MsgStream& GaudiCommon< Algorithm >::warning | ( | ) | const [inline, inherited] |
shortcut for the method msgStream ( MSG::WARNING )
Definition at line 465 of file GaudiCommon.h.
00465 { return msgStream ( MSG:: WARNING ) ; }
MsgStream& GaudiCommon< Algorithm >::info | ( | ) | const [inline, inherited] |
shortcut for the method msgStream ( MSG::INFO )
Definition at line 467 of file GaudiCommon.h.
00467 { return msgStream ( MSG:: INFO ) ; }
MsgStream& GaudiCommon< Algorithm >::debug | ( | ) | const [inline, inherited] |
shortcut for the method msgStream ( MSG::DEBUG )
Definition at line 469 of file GaudiCommon.h.
00469 { return msgStream ( MSG:: DEBUG ) ; }
MsgStream& GaudiCommon< Algorithm >::verbose | ( | ) | const [inline, inherited] |
shortcut for the method msgStream ( MSG::VERBOSE )
Definition at line 471 of file GaudiCommon.h.
00471 { return msgStream ( MSG:: VERBOSE ) ; }
MsgStream& GaudiCommon< Algorithm >::msg | ( | ) | const [inline, inherited] |
shortcut for the method msgStream ( MSG::INFO )
Definition at line 473 of file GaudiCommon.h.
00473 { return msgStream ( MSG:: INFO ) ; }
const Statistics& GaudiCommon< Algorithm >::counters | ( | ) | const [inline, inherited] |
StatEntity& GaudiCommon< Algorithm >::counter | ( | const std::string & | tag | ) | const [inline, inherited] |
accessor to certain counter by name
if ( OK ) { ++counter("OK") ; } // additive counter ('Flag') counter("#Tracks") += tracks->size() ; // multiplicative counter ('Weight') counter("ProbTot") *= probability ;
tag | counter name |
Definition at line 495 of file GaudiCommon.h.
00495 { return m_counters[tag] ; }
MSG::Level GaudiCommon< Algorithm >::msgLevel | ( | ) | const [inline, inherited] |
The current message service output level.
Definition at line 500 of file GaudiCommon.h.
00500 { return m_msgLevel ; }
bool GaudiCommon< Algorithm >::msgLevel | ( | const MSG::Level | level | ) | const [inline, inherited] |
Test the output level.
level | The message level to test against |
true | Messages at level "level" will be printed | |
true | Messages at level "level" will NOT be printed |
Definition at line 507 of file GaudiCommon.h.
00507 { return msgLevel() <= level ; }
void GaudiCommon< Algorithm >::resetMsgStream | ( | ) | const [inherited] |
Reset (delete) the current message stream object.
Useful for example to force a new object following a change in the message level settings
bool GaudiCommon< Algorithm >::typePrint | ( | ) | const [inline, inherited] |
Insert the actual C++ type of the algorithm/tool in the messages ?
Definition at line 514 of file GaudiCommon.h.
00514 { return m_typePrint ; }
bool GaudiCommon< Algorithm >::propsPrint | ( | ) | const [inline, inherited] |
Print properties at initalization ?
Definition at line 516 of file GaudiCommon.h.
00516 { return m_propsPrint ; }
bool GaudiCommon< Algorithm >::statPrint | ( | ) | const [inline, inherited] |
Print statistical counters at finalization ?
Definition at line 518 of file GaudiCommon.h.
00518 { return m_statPrint ; }
bool GaudiCommon< Algorithm >::errorsPrint | ( | ) | const [inline, inherited] |
Print error counters at finalization ?
Definition at line 520 of file GaudiCommon.h.
00520 { return m_errorsPrint ; }
long GaudiCommon< Algorithm >::printStat | ( | const MSG::Level | level = MSG::ALWAYS |
) | const [inherited] |
perform the actual printout of statistical counters
level | The message level to print at |
long GaudiCommon< Algorithm >::printErrors | ( | const MSG::Level | level = MSG::ALWAYS |
) | const [inherited] |
perform the actual printout of error counters
level | The message level to print at |
long GaudiCommon< Algorithm >::printProps | ( | const MSG::Level | level = MSG::ALWAYS |
) | const [inherited] |
perform the actual printout of properties
level | The message level to print at |
void GaudiCommon< Algorithm >::registerCondition | ( | const std::string & | condition, | |
StatusCode(CallerClass::*)() | mf = NULL | |||
) | [inline, inherited] |
register the current instance to the UpdateManagerSvc as a consumer for a condition.
condition | the path inside the Transient Detector Store to the condition object. | |
mf | optional pointer to the member function to call when the condition object is updated. If the pointer is omitted the user must explicitely provide the class name to the method. StatusCode MyAlg::initialize(){ // ... registerCondition("/dd/Conditions/Readout/MyDet/MyCond",&MyAlg::i_CallBack); registerCondition<MyAlg>("/dd/Conditions/Readout/MyDet/MyOtherCond"); // ... return StatusCode.SUCCESS; } |
Definition at line 560 of file GaudiCommon.h.
00560 { 00561 updMgrSvc()->registerCondition(dynamic_cast<CallerClass*>(this),condition,mf); 00562 }
void GaudiCommon< Algorithm >::registerCondition | ( | const std::string & | condition, | |
CondType *& | condPtrDest, | |||
StatusCode(CallerClass::*)() | mf = NULL | |||
) | [inline, inherited] |
register the current instance to the UpdateManagerSvc as a consumer for a condition.
This version of the method allow the user to specify where to put a copy of the pointer to the condition object.
condition | the path inside the Transient Detector Store to the condition object. | |
condPtrDest | pointer to fill with the location of the condition object. Note: the pointer can be safely used only in the execute method or in the member function triggered by the update. | |
mf | optional pointer to the member function to call when the condition object is updated. If the pointer is omitted the user must explicitely provide the class name to the method. class MyAlg: public GaudiAlgorithm { // ... public: virtual StatusCode i_CallBack(); private: Condition *m_MyCond; SpecialCondition *m_MyOtherCond; // ... }; StatusCode MyAlg::initialize(){ // ... registerCondition("/dd/Conditions/Readout/MyDet/MyCond",m_MyCond,&MyAlg::i_CallBack); registerCondition<MyAlg>("/dd/Conditions/Readout/MyDet/MyOtherCond",m_MyOtherCond); // ... return StatusCode.SUCCESS; } |
Definition at line 594 of file GaudiCommon.h.
00595 { 00596 updMgrSvc()->registerCondition(dynamic_cast<CallerClass*>(this),condition,mf,condPtrDest); 00597 }
void GaudiCommon< Algorithm >::registerCondition | ( | char * | condition, | |
StatusCode(CallerClass::*)() | mf = NULL | |||
) | [inline, inherited] |
just to avoid conflicts with the version using a pointer to a template class.
Definition at line 600 of file GaudiCommon.h.
00600 { 00601 updMgrSvc()->registerCondition(dynamic_cast<CallerClass*>(this),std::string(condition),mf); 00602 }
void GaudiCommon< Algorithm >::registerCondition | ( | TargetClass * | condition, | |
StatusCode(CallerClass::*)() | mf = NULL | |||
) | [inline, inherited] |
register the current instance to the UpdateManagerSvc as a consumer for a condition.
condition | the path inside the Transient Detector Store to the condition object. | |
mf | optional pointer to the member function to call when the condition object is updated. If the pointer is omitted the user must explicitely provide the class name to the method. StatusCode MyAlg::initialize(){ // ... registerCondition("/dd/Conditions/Readout/MyDet/MyCond",&MyAlg::i_CallBack); registerCondition<MyAlg>("/dd/Conditions/Readout/MyDet/MyOtherCond"); // ... return StatusCode.SUCCESS; } |
Definition at line 619 of file GaudiCommon.h.
00619 { 00620 updMgrSvc()->registerCondition(dynamic_cast<CallerClass*>(this),condition,mf); 00621 }
StatusCode GaudiCommon< Algorithm >::runUpdate | ( | ) | [inline, inherited] |
asks the UpdateManagerSvc to perform an update of the instance (if needed) without waiting the next BeginEvent incident.
It is useful if the instance can be instantiated after a BeginEvent incident, and used before the next one (for example with tools).
StatusCode MyTool::initialize(){ // ... return runUpdate(); }
Definition at line 633 of file GaudiCommon.h.
TransientFastContainer<T>* GaudiCommon< Algorithm >::getFastContainer | ( | const std::string & | location, | |
typename TransientFastContainer< T >::size_type | initial = 0 | |||
) | [inherited] |
Return a new TransientFastContainer for objects of type T.
The container is created if it is not in the transient store. If a container with the same name but a different type
StatusCode GaudiCommon< Algorithm >::releaseTool | ( | const IAlgTool * | tool | ) | const [protected, inherited] |
manual forced (and 'safe') release of the tool
StatusCode GaudiCommon< Algorithm >::releaseSvc | ( | const IInterface * | svc | ) | const [protected, inherited] |
manual forced (and 'safe') release of the service
StatusCode GaudiCommon< Algorithm >::release | ( | const IInterface * | interface | ) | const [inherited] |
Manual forced (and 'safe') release of the active tool or service.
IMyTool* mytool = tool<IMyTool>( .... ) ; mytool->spendCPUtime() ; release ( mytool ) ; IMySvc* msvc = svc<IMySvc>( .... ) ; msvc->spendCPUtime() ; release ( msvc ) ;
interface | Interface pointer to the interface to be released |
StatusCode::SUCCESS | Tool or service was successfully released | |
StatusCode::FAILURE | Error releasing too or service |
const std::string& GaudiCommon< Algorithm >::context | ( | ) | const [inline, inherited] |
Returns the "context" string. Used to indentify different processing states.
Definition at line 696 of file GaudiCommon.h.
00696 { return m_context; }
const std::string& GaudiCommon< Algorithm >::rootInTES | ( | ) | const [inline, inherited] |
Returns the "rootInTES" string.
Used as the directory root in the TES for which all data access refers to (both saving and retrieving).
Definition at line 700 of file GaudiCommon.h.
00700 { return m_rootInTES; }
double GaudiCommon< Algorithm >::globalTimeOffset | ( | ) | const [inline, inherited] |
Returns the "globalTimeOffset" double.
Definition at line 702 of file GaudiCommon.h.
00702 { return m_globalTimeOffset; }
StringArrayProperty GaudiSequencer::m_names [private] |
std::vector<AlgorithmEntry> GaudiSequencer::m_entries [private] |
bool GaudiSequencer::m_modeOR [private] |
bool GaudiSequencer::m_shortCircuit [private] |
Indicates whether to stop processing as soon as possible, or to always execute _all_ subalgorithms.
Definition at line 75 of file GaudiSequencer.h.
bool GaudiSequencer::m_ignoreFilter [private] |
bool GaudiSequencer::m_isInitialized [private] |
bool GaudiSequencer::m_measureTime [private] |
bool GaudiSequencer::m_returnOK [private] |
ISequencerTimerTool* GaudiSequencer::m_timerTool [private] |
int GaudiSequencer::m_timer [private] |
const bool GaudiCommon< Algorithm >::IgnoreRootInTES [static, protected, inherited] |
Simple definition to be used with the new useRootInTES argument get<TYPE> and put methods.
If used with cause the RootInTES option to be IGNORED.
Useful to aid with code readablity. e.g.
// Get data, ignoring the setting of rootInTES() MyData * data = get<MyData>( "/Event/MyData", IgnoreRootInTES );
Definition at line 68 of file GaudiCommon.h.
const bool GaudiCommon< Algorithm >::UseRootInTES [static, protected, inherited] |
Simple definition to be used with the new useRootInTES argument get<TYPE> and put methods.
If used with cause the RootInTES option to be USED
Useful to aid with code readablity. e.g.
// Get data, using the setting of rootInTES() MyData * data = get<MyData>( "/Event/MyData", UseRootInTES ); // note the default setting is true, so this is equivalent to MyData * data = get<MyData>( "/Event/MyData" );
Definition at line 80 of file GaudiCommon.h.