Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-02-21 10:00:30

0001 /***********************************************************************************\
0002 * (c) Copyright 1998-2019 CERN for the benefit of the LHCb and ATLAS collaborations *
0003 *                                                                                   *
0004 * This software is distributed under the terms of the Apache version 2 licence,     *
0005 * copied verbatim in the file "LICENSE".                                            *
0006 *                                                                                   *
0007 * In applying this licence, CERN does not waive the privileges and immunities       *
0008 * granted to it by virtue of its status as an Intergovernmental Organization        *
0009 * or submit itself to any jurisdiction.                                             *
0010 \***********************************************************************************/
0011 #ifndef GAUDIKERNEL_IDATABROKER_H
0012 #define GAUDIKERNEL_IDATABROKER_H
0013 
0014 // Framework includes
0015 #include "GaudiKernel/DataObjID.h"
0016 #include "GaudiKernel/IInterface.h"
0017 #include "GaudiKernel/TypeNameString.h"
0018 
0019 // C++ includes
0020 #include <string>
0021 #include <vector>
0022 
0023 // Forward class declaration
0024 namespace Gaudi {
0025   class Algorithm;
0026 }
0027 
0028 /** @class IAlgResourcePool IAlgResourcePool.h GaudiKernel/IAlgResourcePool.h
0029 
0030     The IDataBroker interface provides an ordered list of algorithms that
0031     are to be executed in order for the provided DataObjID to be produced.
0032     Note that this list is both neccessary and sufficient, in the sense that
0033     in the absence of errors encountered during the execution, there will be
0034     an item at DataObjID after executing this sequence.
0035 
0036     The actual creation and deletion of algorithm instances implied by this
0037     interface is assumed to implemented through the IAlgManager service.
0038 
0039     @author Gerhard Raven
0040     @version 1.0
0041 */
0042 struct GAUDI_API IDataBroker : extend_interfaces<IInterface> {
0043   /// InterfaceID
0044   DeclareInterfaceID( IDataBroker, 1, 0 );
0045 
0046   /// Get the (ordered!) list of algorithms required to provide a given DataObjIDColl
0047   virtual std::vector<Gaudi::Algorithm*>
0048   algorithmsRequiredFor( const DataObjIDColl& requested, const std::vector<std::string>& stoppers = {} ) const = 0;
0049 
0050   /// Get the (ordered!) list of algorithms required to succesfully execute (as far as data dependencies go)
0051   /// the specified algorithm
0052   virtual std::vector<Gaudi::Algorithm*>
0053   algorithmsRequiredFor( const Gaudi::Utils::TypeNameString& alg,
0054                          const std::vector<std::string>&     stoppers = {} ) const = 0;
0055 };
0056 
0057 #endif // GAUDIKERNEL_IDATABROKER