#include <BadHardwareTableMaker.h>
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 |
|
|
Definition at line 30 of file BadHardwareTableMaker.h. |
|
||||||||||||||||||||||||
|
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 }
|
|
|
Definition at line 21 of file BadHardwareTableMaker.h. 00021 {};
|
|
|
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 }
|
|
||||||||||||
|
|
|
||||||||||||||||
|
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 }
|
|
|
Definition at line 31 of file BadHardwareTableMaker.h. |
|
|
Definition at line 36 of file BadHardwareTableMaker.h. Referenced by Write(). |
|
|
Definition at line 32 of file BadHardwareTableMaker.h. Referenced by Write(). |
|
|
Definition at line 35 of file BadHardwareTableMaker.h. Referenced by Write(). |
|
|
Definition at line 33 of file BadHardwareTableMaker.h. Referenced by Write(). |
|
|
Definition at line 34 of file BadHardwareTableMaker.h. Referenced by Write(). |
1.3.9.1