00001 #include "BeamMonFileSummary.h"
00002
00003 #include <DatabaseInterface/DbiResultSet.h>
00004 #include <DatabaseInterface/DbiOutRowStream.h>
00005
00006 #include <Validity/VldRange.h>
00007
00008 #include <TSystem.h>
00009 #include <TSeqCollection.h>
00010 #include <TIterator.h>
00011 #include <TFile.h>
00012
00013
00014 #include <vector>
00015
00016 using namespace std;
00017
00018 #include <MessageService/MsgService.h>
00019 CVSID("$Id: BeamMonFileSummary.cxx,v 1.5 2006/01/30 20:04:09 rhatcher Exp $");
00020
00021 #include <DatabaseInterface/DbiResultPtr.tpl>
00022 template class DbiResultPtr<BeamMonFileSummary>;
00023
00024 BeamMonFileSummary::BeamMonFileSummary()
00025 : fFirstSpillTime()
00026 , fLastSpillTime()
00027 , fSpillCount(0)
00028 , fProtonCount(0)
00029 , fFileName("")
00030 , fFileSize(0)
00031 , fRootVersion(0)
00032 , fModTime()
00033 {
00034 }
00035
00036 void BeamMonFileSummary::Fill(DbiResultSet& rs, const DbiValidityRec* )
00037 {
00038
00039
00040
00041 int ns=0;
00042
00043 rs >> fFirstSpillTime;
00044 rs >> ns;
00045 fFirstSpillTime.Add(VldTimeStamp(0,ns));
00046
00047 rs >> fLastSpillTime;
00048 rs >> ns;
00049 fLastSpillTime.Add(VldTimeStamp(0,ns));
00050
00051 rs >> fSpillCount
00052 >> fProtonCount
00053 >> fTclkTriggerEvent
00054 >> fTclkTriggerDelay
00055 >> fFileName
00056 >> fFileSize
00057 >> fRootVersion
00058 >> fModTime;
00059
00060 }
00061 DbiTableRow* BeamMonFileSummary::CreateTableRow() const
00062 {
00063 return new BeamMonFileSummary;
00064 }
00065
00066 void BeamMonFileSummary::SetTclkTrigger(int event, int delay)
00067 {
00068 fTclkTriggerEvent = event;
00069 fTclkTriggerDelay = delay;
00070 }
00071
00072 void BeamMonFileSummary::AddSpill(const VldTimeStamp& vts, double proton_count)
00073 {
00074 if (!fSpillCount) {
00075 fFirstSpillTime = vts;
00076 }
00077 ++fSpillCount;
00078
00079 fLastSpillTime = vts;
00080 fProtonCount += proton_count;
00081 }
00082
00083 void BeamMonFileSummary::SetFileInfo(const TFile& file)
00084 {
00085 fFileName = gSystem->BaseName(file.GetName());
00086
00087 fFileSize = file.GetSize();
00088 fRootVersion = file.GetVersion();
00089
00090 FileStat_t file_stat;
00091 gSystem->GetPathInfo(file.GetName(),file_stat);
00092 fModTime = VldTimeStamp(file_stat.fMtime,0);
00093 }
00094
00095 void BeamMonFileSummary::Store(DbiOutRowStream& ors,
00096 const DbiValidityRec* ) const
00097 {
00098 ors << fFirstSpillTime;
00099 ors << (fFirstSpillTime.GetNanoSec())
00100 << fLastSpillTime
00101 << (fLastSpillTime.GetNanoSec())
00102 << fSpillCount
00103 << fProtonCount
00104 << fTclkTriggerEvent
00105 << fTclkTriggerDelay
00106 << fFileName
00107 << fFileSize
00108 << fRootVersion
00109 << fModTime;
00110 }
00111
00112 ClassImp(BeamMonFileSummary)
00113