00001
00002
00003 #ifndef DBURUNSUMMARY_H
00004 #define DBURUNSUMMARY_H
00005
00007
00008
00009
00010
00011
00012
00013
00014
00016
00017 #include "DatabaseUpdater/DbuBits.h"
00018 #include "DatabaseUpdater/DbuDaqConfigFilesText.h"
00019 class DbuDaqFileSummary;
00020
00021 #include "DatabaseInterface/DbiTableRow.h"
00022 #include "LeakChecker/Lea.h"
00023
00024 #include "Validity/VldContext.h"
00025 #include <string>
00026 using std::string;
00027 #include <vector>
00028 #include <iosfwd>
00029
00030 class DbiValidityRec;
00031 class DbiStatement;
00032
00033 class DbuRunSummary;
00034 std::ostream& operator<<(std::ostream& os, const DbuRunSummary& drs);
00035
00036 class DbuRunSummary : public DbiTableRow
00037 {
00038
00039 public:
00040
00041 static const std::string kNoComment;
00042 static const std::string kNoRunPrepare;
00043 static const std::string kNoAuxConfig;
00044 static const std::string kUnfilled;
00045
00046
00047
00048 DbuRunSummary() :
00049 fDetector(Detector::kUnknown), fSimFlag(SimFlag::kUnknown),
00050 fRun(0), fLastSubRun(-1), fRunType(0),
00051 fStartTime((time_t)0,0), fEndTime((time_t)0,0), fTermCode(-1),
00052 fRunEndSnarls(-1), fRunEndNonSnarls(-1), fNErrs(-1),
00053 fTimeFrames(-1), fDroppedFrames(-1),
00054 fConsistency(DbuBits::kDefaultConsistency),
00055 fRunComment(kNoComment), fRunPrepare(kNoRunPrepare),
00056 fAuxConfigText(kNoAuxConfig),
00057 fDbuDaqConfigFilesText(new DbuDaqConfigFilesText),
00058 fDbuDaqFiles()
00059 { LEA_CTOR; }
00060
00061 virtual ~DbuRunSummary()
00062 { if (fDbuDaqConfigFilesText) delete fDbuDaqConfigFilesText; LEA_DTOR; };
00063
00064
00065
00066 Int_t CalcSnarls() const;
00067 Int_t CalcNonSnarls() const;
00068
00069 virtual Int_t GetAggregateNo() const
00070 #ifdef MULTIAGRREGATE
00071 { return CalcUniqueSeqNo(fDetector,fRun,fSubRun); }
00072 #else
00073 { return -1; }
00074 #endif
00075
00076 Bool_t IsSameRun(Detector::Detector_t det, Int_t run);
00077
00078
00079
00080 virtual DbiTableRow* CreateTableRow() const { return new DbuRunSummary; }
00081
00082
00083
00084 virtual void Fill(DbiResultSet& rs,
00085 const DbiValidityRec* vrec);
00086 virtual void Store(DbiOutRowStream& ors,
00087 const DbiValidityRec* vrec) const;
00088
00089 Int_t GetSeqNo() const
00090 { return CalcUniqueSeqNo(fDetector,fRun); }
00091
00092 void ResetConsistencyBits(Int_t mask);
00093 void SetConsistencyBits(Int_t mask);
00094
00095 static Int_t CalcUniqueSeqNo(Detector::Detector_t det, Int_t run);
00096
00097 static const char* GetTableDescr();
00098
00099 static void SetFmtFlag(const UInt_t fmtflg) { fgFmtFlag = fmtflg; }
00100 static UInt_t GetFmtFlag() { return fgFmtFlag; }
00101 typedef enum EFtmFlagBits {
00102 fmt_RunComment = 0x0001,
00103 fmt_RunPrepare = 0x0002,
00104 fmt_AuxConfigText = 0x0004,
00105 fmt_ConfigFilesText = 0x0008,
00106 fmt_DaqFiles = 0x0010
00107 } FmtFlagBits_t;
00108
00109 private:
00110
00111 friend class DbuDaqFileModule;
00112
00113
00114
00115 DbuRunSummary(const DbuRunSummary& from);
00116 DbuRunSummary& operator=(const DbuRunSummary& rhs);
00117
00118 void AddDaqFileEntry(const DbuDaqFileSummary& fs);
00119
00120 Bool_t Commit(DbiStatement* stmt, std::string cft_md5, int cft_seqno);
00121
00122
00123
00124 public:
00125
00126 Detector::Detector_t fDetector;
00127 SimFlag::SimFlag_t fSimFlag;
00128 Int_t fRun;
00129 Short_t fLastSubRun;
00130 Short_t fRunType;
00131 VldTimeStamp fStartTime;
00132 VldTimeStamp fEndTime;
00133 Int_t fTermCode;
00134 Int_t fRunEndSnarls;
00135 Int_t fRunEndNonSnarls;
00136 Int_t fNErrs;
00137 Int_t fTimeFrames;
00138 Int_t fDroppedFrames;
00139 Int_t fConsistency;
00140
00141 std::string fRunComment;
00142 std::string fRunPrepare;
00143 std::string fAuxConfigText;
00144
00145 DbuDaqConfigFilesText* fDbuDaqConfigFilesText;
00146 std::vector<DbuDaqFileSummary*> fDbuDaqFiles;
00147
00148
00149 static UInt_t fgFmtFlag;
00150
00151 ClassDef(DbuRunSummary,0)
00152
00153 };
00154
00155 inline void DbuRunSummary::ResetConsistencyBits(Int_t mask)
00156 { fConsistency &= ~mask; }
00157
00158 inline void DbuRunSummary::SetConsistencyBits(Int_t mask)
00159 { fConsistency |= mask; }
00160
00161 #endif // DBURUNSUMMARY_H