// edm_recon.h #ifndef INCLUDED_EDM_RECON #define INCLUDED_EDM_RECON // PURPOSE // Provide the basic interface for objects that manage instantiation and // execution of fixed sets of algorithms. // // CLASSES // edm_Reconstructor: Protocol class. Support for executing algorithms and // enumerating required run-time object dependencies. // // DESCRIPTION // This component describes the protocol for all reconstructor types. // Reconstructors enable users to execute their particular algorithms. // // Note: The registerDependencies should be thoroughly tested. class edm_Event; // ======================= // CLASS edm_Reconstructor // ======================= class edm_Reconstructor { public: // CREATORS virtual ~edm_Reconstructor(); // MANIPULATORS virtual int execute(edm_Event *event) = 0; // Execute the reconstruction algorithms, return 0 on success; // else non-zero. // ACCESSORS virtual void registerDependencies() const = 0; // Register all chunk type inputs and outputs for this reconstructor // type. Each derived types MUST implement this method explicitly. // // The implementation of this function should look something like: // // void ReconD::registerDependencies() const // { // edm_TypedRegElem rga; // edm_Registry::addInput(rga); // // edm_TypedRegElem rgb; // edm_TypedRegElem rgc; // edm_Registry::addOutput(rgb); // edm_Registry::addOutput(rgc); // } // // Where ReconD is the name of the concrete reconstructor type that // has inputs of type ChunkA and outputs chunks of type ChunkB and // ChunkC. }; #endif