Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

BDPipeline.h

Go to the documentation of this file.
00001 
00030 #ifndef BDPIPELINE_H
00031 #define BDPIPELINE_H
00032 
00033 class RawBeamMonBlock;
00034 class RawBeamMonHeaderBlock;
00035 
00036 class BDProcessor;
00037 
00038 class MomNavigator;
00039 
00040 #include <vector>
00041 
00042 class BDPipeline {
00043 public:
00044 
00045     BDPipeline();
00046     ~BDPipeline();
00047 
00049     typedef std::vector<BDProcessor*> ProcessPipeline;
00050 
00054     ProcessPipeline& GetProcessPipeline();
00055 
00057     void SetSpill(const RawBeamMonHeaderBlock& rbmhb,
00058                   const RawBeamMonBlock& rbmb);
00059 
00061     template <class ProcessorType> ProcessorType* GetProcessor();
00062 
00064     const RawBeamMonHeaderBlock* GetHeaderBlock() const;
00065 
00067     const RawBeamMonBlock* GetPayloadBlock() const;
00068 
00069 private:
00070 
00071     ProcessPipeline fPipe;
00072     const RawBeamMonBlock* fPayloadBlock;
00073     const RawBeamMonHeaderBlock* fHeaderBlock;
00074 };
00075 
00076 template <class ProcessorType> 
00077 ProcessorType* BDPipeline::GetProcessor()
00078 {
00079     for (size_t ind=0; ind<fPipe.size(); ++ind) {
00080         ProcessorType* p = dynamic_cast<ProcessorType*>(fPipe[ind]);
00081         if (p) return p;
00082     }
00083     return 0;
00084 }
00085 #endif  //  BDPIPELINE_H
00086 

Generated on Mon Feb 15 11:06:24 2010 for loon by  doxygen 1.3.9.1