00001 00024 #ifndef BEAMMONDBUMODULE_H 00025 #define BEAMMONDBUMODULE_H 00026 00027 #include <BeamDataUtil/BDPipeline.h> 00028 #include <JobControl/JobCModule.h> 00029 00030 00031 class BMFileSummaryFiller; 00032 class BMSpillFiller; 00033 00034 class BDScalar; 00035 class BDEarliest; 00036 class BDHornCurrent; 00037 class BDTarget; 00038 class BDHadMuMon; 00039 class RawBeamMonHeaderBlock; 00040 class RawBeamMonBlock; 00041 00042 class BeamMonDbuModule : public JobCModule 00043 { 00044 public: 00045 BeamMonDbuModule(); 00046 ~BeamMonDbuModule(); 00047 00048 JobCResult Ana(const MomNavigator *mom); 00049 00050 void BeginFile(); 00051 void EndFile(); 00052 void EndJob(); 00053 00054 private: 00055 // Fill pipeline with processors that are needed for the tables 00056 void FillPipeline(); 00057 // clean up 00058 void Reap(); 00059 00060 void Process(const RawBeamMonHeaderBlock& rbmhb, 00061 const RawBeamMonBlock& rbmb); 00062 00063 // Access the data pipeline 00064 BDPipeline fPipe; 00065 00066 // The table fillers: 00067 BMFileSummaryFiller* fFileSummaryFiller; 00068 BMSpillFiller* fSpillFiller; 00069 00070 // Processors 00071 BDScalar* fProtonIntensity[4]; 00072 BDEarliest* fEarliest; 00073 BDHornCurrent* fHornCurrent; 00074 BDTarget* fTarget; 00075 00076 // Simple access to hadron/muon monitor data 00077 BDHadMuMon* fHadMu[4]; 00078 }; 00079 00080 00081 #endif // BEAMMONDBUMODULE_H