Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-09-27 09:20:10

0001 /**
0002  *  @file   PandoraSDK/include/Pandora/Algorithm.h
0003  * 
0004  *  @brief  Header file for the algorithm class.
0005  * 
0006  *  $Log: $
0007  */
0008 #ifndef PANDORA_ALGORITHM_H
0009 #define PANDORA_ALGORITHM_H 1
0010 
0011 #include "Pandora/Process.h"
0012 
0013 namespace pandora
0014 {
0015 
0016 /**
0017  *  @brief  Algorithm class. Algorithm addresses are held only by the algorithm manager. They have a fully defined interface
0018  *          and can only be run via the PandoraContent Apis.
0019  */
0020 class Algorithm : public Process
0021 {
0022 protected:
0023     /**
0024      *  @brief  Run the algorithm
0025      */
0026     virtual StatusCode Run() = 0;
0027 
0028     friend class AlgorithmManager;
0029     friend class PandoraContentApiImpl;
0030 };
0031 
0032 //------------------------------------------------------------------------------------------------------------------------------------------
0033 //------------------------------------------------------------------------------------------------------------------------------------------
0034 
0035 /**
0036  *  @brief  Factory class for instantiating algorithms
0037  */
0038 class AlgorithmFactory
0039 {
0040 public:
0041     /**
0042      *  @brief  Create an instance of an algorithm
0043      * 
0044      *  @return the address of the algorithm instance
0045      */
0046     virtual Algorithm *CreateAlgorithm() const = 0;
0047 
0048     /**
0049      *  @brief  Destructor
0050      */
0051     virtual ~AlgorithmFactory();
0052 };
0053 
0054 //------------------------------------------------------------------------------------------------------------------------------------------
0055 
0056 inline AlgorithmFactory::~AlgorithmFactory()
0057 {
0058 }
0059 
0060 } // namespace pandora
0061 
0062 #endif // #ifndef PANDORA_ALGORITHM_H