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

BMFileSummaryFiller.cxx

Go to the documentation of this file.
00001 #include "BMFileSummaryFiller.h"
00002 
00003 #include <BeamDataUtil/BeamMonFileSummary.h>
00004 
00005 #include <BeamDataUtil/BDScalar.h>
00006 
00007 #include <MessageService/MsgService.h>
00008 CVSID("$Id: BMFileSummaryFiller.cxx,v 1.6 2006/04/19 20:58:05 rhatcher Exp $");
00009 
00010 #include <DatabaseInterface/DbiWriter.h>
00011 //  Instantiate associated Result Pointer class.
00012 #include <DatabaseInterface/DbiWriter.tpl>
00013 template class  DbiWriter<BeamMonFileSummary>;
00014 
00015 #include <TFile.h>
00016 #include <TSystem.h>
00017 #include <TROOT.h>
00018 
00019 #include <string>
00020 using namespace std;
00021 
00022 
00023 
00024 
00025 BMFileSummaryFiller::BMFileSummaryFiller(const BDScalar& pi)
00026     : fPI(pi)
00027     , fFileSummary(0)
00028 {
00029 }
00030 
00031 void BMFileSummaryFiller::SetTclkTrigger(int event, int delay)
00032 {
00033     if (fFileSummary) fFileSummary->SetTclkTrigger(event,delay);
00034 }
00035 
00036 void BMFileSummaryFiller::Timestamp(const VldTimeStamp& vts)
00037 {
00038     double pot = fPI.GetValue();
00039     fFileSummary->AddSpill(vts,pot);
00040 }
00041 
00042 static TFile* find_tfile(const char* filename)
00043 {
00044     string base_name = gSystem->BaseName(filename);
00045     TSeqCollection* files = gROOT->GetListOfFiles();
00046     TIter fitr(files);
00047     TFile* file=0;
00048     while ( ( file = (TFile*)fitr.Next() ) ) {
00049         string this_name = gSystem->BaseName(file->GetName());
00050         if (this_name == base_name) return file;
00051     }
00052     return 0;
00053 }
00054 
00055 
00056 void BMFileSummaryFiller::NewFile(const char* filename)
00057 {
00058     // In case Commit fails.  Paranoid....
00059     if (fFileSummary) {
00060         MSG("BD",Msg::kError)
00061             << "Still have a live BeamMonFileSummary for file \""
00062             << fFileSummary->fFileName
00063             << "\"\n";
00064         delete fFileSummary;
00065         fFileSummary = 0;
00066     }
00067 
00068     TFile* tfile = find_tfile(filename);
00069     if (!tfile) {
00070         MSG("BD",Msg::kError)
00071             << "Major badness.  Could not find TFile corresponding to "
00072             << filename << endl;
00073         return;
00074     }
00075     fFileSummary = new BeamMonFileSummary;
00076     fFileSummary->SetFileInfo(*tfile);
00077 }
00078 
00079 void BMFileSummaryFiller::Commit()
00080 {
00081     if (!fFileSummary) {
00082         MSG("BD",Msg::kDebug)
00083             << "Missing BeamMonFileSummary pointer in EndFile.  "
00084             << "Empty file?!\n";
00085         return;
00086     }
00087 
00088     // Write file summary row to DB table
00089     VldRange range(Detector::kNear|Detector::kFar,SimFlag::kData,
00090                    fFileSummary->fFirstSpillTime,fFileSummary->fLastSpillTime
00091                    ,"Beam");
00092     VldTimeStamp now;
00093     DbiWriter<BeamMonFileSummary> writer(range,-1,0,now);
00094     writer << (*fFileSummary) ;
00095     writer.Close();
00096 
00097     delete fFileSummary;
00098     fFileSummary = 0;
00099 }
00100 

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