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

BadHardwareTableMaker Class Reference

#include <BadHardwareTableMaker.h>

List of all members.

Public Member Functions

 BadHardwareTableMaker (Int_t detmask, Int_t simmask, Int_t task=0, const std::string &comment="", const std::string &name="BADHARDWARE")
virtual ~BadHardwareTableMaker ()
Int_t Add (BadHardware *bh)
Int_t Write (Double_t split_time=1.0 *Munits::day, VldTimeStamp begin=VldTimeStamp(0, 0), VldTimeStamp end=VldTimeStamp(0, 0))

Private Types

typedef std::multimap< VldTimeStamp,
BadHardware * > 
BadStuff_t

Private Member Functions

 ClassDef (BadHardwareTableMaker, 0)

Private Attributes

BadStuff_t fBadStuff
Int_t fDetector
Int_t fSimFlag
Int_t fTask
std::string fName
std::string fComment


Member Typedef Documentation

typedef std::multimap<VldTimeStamp,BadHardware*> BadHardwareTableMaker::BadStuff_t [private]
 

Definition at line 30 of file BadHardwareTableMaker.h.


Constructor & Destructor Documentation

BadHardwareTableMaker::BadHardwareTableMaker Int_t  detmask,
Int_t  simmask,
Int_t  task = 0,
const std::string &  comment = "",
const std::string &  name = "BADHARDWARE"
 

Definition at line 43 of file BadHardwareTableMaker.cxx.

References det.

00047                                                                     :
00048   fDetector(det),
00049   fSimFlag(sim),
00050   fTask(task),
00051   fName(name),
00052   fComment(comment)
00053 {
00054 }

virtual BadHardwareTableMaker::~BadHardwareTableMaker  )  [inline, virtual]
 

Definition at line 21 of file BadHardwareTableMaker.h.

00021 {};


Member Function Documentation

int BadHardwareTableMaker::Add BadHardware bh  ) 
 

Add an instance of bad hardware to the list.

Definition at line 57 of file BadHardwareTableMaker.cxx.

References fBadStuff, and BadHardware::GetStart().

00058 {
00062   fBadStuff.insert(std::pair<VldTimeStamp,BadHardware*>
00063                    (bh->GetStart(),bh)
00064                    );
00065                                                      
00066   return 0;
00067 }

BadHardwareTableMaker::ClassDef BadHardwareTableMaker  ,
[private]
 

int BadHardwareTableMaker::Write Double_t  split_time = 1.0*Munits::day,
VldTimeStamp  beg_vld = VldTimeStamp(0,0),
VldTimeStamp  end_vld = VldTimeStamp(0,0)
 

Break up the table into chunks, each split_time long and save each chunk as a new seqno in the table. This allows some optimization of the table based on how often things change.

Writes the resulting data to the table name and task given in the creator.

Definition at line 70 of file BadHardwareTableMaker.cxx.

References VldTimeStamp::Add(), VldTimeStamp::AsString(), DbiWriter< T >::Close(), CreateTables(), fBadStuff, fComment, fDetector, fName, fSimFlag, fTask, VldTimeStamp::GetSec(), and MSG.

00073 {
00083 
00084   // Create the tables if they don't exist.
00085   CreateTables(fName);
00086 
00087   // If not provided, get the absolute start and stop times.
00088   if(beg_vld.GetSec() == 0) beg_vld = fBadStuff.begin()->second->GetStart(); 
00089   if(end_vld.GetSec() == 0) {
00090     for(BadStuff_t::iterator i=fBadStuff.begin(); i!=fBadStuff.end(); ++i) 
00091       if(i->second->GetStop() > end_vld) end_vld = i->second->GetStop();
00092   }
00093 
00094   // The start time of the next chunk:
00095   VldTimeStamp beg_chunk = beg_vld;
00096   VldTimeStamp end_chunk;
00097 
00098   while(beg_chunk < end_vld) {
00099     // Do a new chunk!
00100     int chunk_rows = 0;
00101     
00102     // First, find where this chunk stops.
00103     end_chunk = beg_chunk;
00104     end_chunk.Add(split_time);
00105     if(end_chunk > end_vld) end_chunk = end_vld;
00106 
00107     VldRange chunk_range(fDetector,fSimFlag,beg_chunk, end_chunk, fComment.c_str());
00108     DbiWriter<BadHardware> writer( chunk_range,
00109                                    -1,
00110                                    fTask,
00111                                    VldTimeStamp(), //now
00112                                    0,
00113                                    fComment,
00114                                    fName);
00115     
00116 
00117     // Now find all entries that are valid during this time and write them.
00118     BadStuff_t::iterator it = fBadStuff.begin();
00119     while(it != fBadStuff.end()) {
00120       if((it->second->GetStart() <= end_chunk) && (it->second->GetStop() >= beg_chunk)) {
00121         // Write a copy of it:
00122         writer << *(it->second);
00123         chunk_rows++;
00124       }
00125       // Throw it out if it's finished.
00126       if(it->second->GetStop() < end_chunk) {
00127         delete it->second;
00128         fBadStuff.erase(it);
00129       }
00130       it++;
00131     }
00132   
00133     writer.Close();
00134     MSG("Morgue",Msg::kInfo) << "Wrote " << chunk_rows << " rows starting time " 
00135                              << beg_chunk.AsString() << std::endl;
00136 
00137     beg_chunk = end_chunk;
00138   }
00139 
00140 
00141   return 0;
00142 }


Member Data Documentation

BadStuff_t BadHardwareTableMaker::fBadStuff [private]
 

Definition at line 31 of file BadHardwareTableMaker.h.

Referenced by Add(), and Write().

std::string BadHardwareTableMaker::fComment [private]
 

Definition at line 36 of file BadHardwareTableMaker.h.

Referenced by Write().

Int_t BadHardwareTableMaker::fDetector [private]
 

Definition at line 32 of file BadHardwareTableMaker.h.

Referenced by Write().

std::string BadHardwareTableMaker::fName [private]
 

Definition at line 35 of file BadHardwareTableMaker.h.

Referenced by Write().

Int_t BadHardwareTableMaker::fSimFlag [private]
 

Definition at line 33 of file BadHardwareTableMaker.h.

Referenced by Write().

Int_t BadHardwareTableMaker::fTask [private]
 

Definition at line 34 of file BadHardwareTableMaker.h.

Referenced by Write().


The documentation for this class was generated from the following files:
Generated on Mon Feb 15 11:08:45 2010 for loon by  doxygen 1.3.9.1