12 #include "TTimeStamp.h" 14 #include <cetlib_except/exception.h> 23 #include "Database/cxx/include/Table.h" 24 #include "Database/cxx/include/Util.h" 29 #include "NovaDAQConventions/DAQConventions.h" 65 static const char* dbxml =
"RunHistory/tables/BadSubruns.xml";
66 std::unique_ptr<nova::dbi::Table>
table =
68 table->SetDetector(det);
69 table->SetValidityRange(
"run",run);
72 bool sucess = table->LoadFromDB();
75 int sr1Idx = table->GetColIndex(
"subrun1");
76 int sr2Idx = table->GetColIndex(
"subrun2");
81 for (
int i=0;
i<table->NRow(); ++
i) {
85 row->
Col(sr1Idx).
Get(subrun1);
86 row->
Col(sr2Idx).
Get(subrun2);
89 fBadSubrunSz = fBadSubrun.size();
101 strptime(t.c_str(),
"%Y-%m-%d %H:%M:%S",&tm1);
103 TTimeStamp ts(tm1.tm_year, tm1.tm_mon, tm1.tm_mday,
104 tm1.tm_hour, tm1.tm_min, tm1.tm_sec);
120 static const char* dbxml =
"RunHistory/tables/BadTimeRanges.xml";
121 std::unique_ptr<nova::dbi::Table>
table =
123 table->SetDetector(det);
124 table->SetValidityRange(
"run",run);
126 bool sucess = table->LoadFromDB();
138 int t1Idx=table->GetColIndex(
"t1");
139 int t2Idx=table->GetColIndex(
"t2");
141 for (
int i=0;
i<table->NRow(); ++
i) {
154 fBadTimeSz = fBadTime.size();
168 std::vector<art::Handle<sumdata::RunData>> rdcol;
171 if (!rdcol.empty()) {
178 "Cannot find sumdata::RunData" <<
std::endl;
206 if (fGoodSubrun==
false) {
207 std::cout <<
"Subrun " << fRun <<
":" << fSubrun
208 <<
" is in bad run. Skipped." 217 if (fBadSubrunSz==0)
return true;
224 if (fSubrun>=fBadSubrun[
i].first &&
225 fSubrun<=fBadSubrun[
i].
second) {
226 std::cout <<
"Subrun " << fRun <<
":" << fSubrun
227 <<
" is flagged as bad. Skipped." 246 if (fGoodRun==
false||fGoodSubrun==
false)
return false;
252 if (fBadTimeSz==0)
return true;
260 if (t>=fBadTime[
i].first && t<=fBadTime[
i].
second) {
265 <<
" is inside bad time range. Skipped." <<
std::endl;
static std::string GetName(int id)
std::vector< SubrunPair_t > fBadSubrun
SubRunNumber_t subRun() const
std::vector< TimeValuePair_t > fBadTime
virtual bool filter(art::Event &e)
Column & Col(int i)
Find index of column with name. Suitable for passing to Col.
bool fGoodSubrun
Is the current subrun good?
SubRunNumber_t subRun() const
std::pair< int, int > SubrunPair_t
virtual bool beginRun(art::Run &r)
vector< vector< double > > clear
unsigned int fBadSubrunSz
of bad subrun ranges for this run
void LoadBadSubruns(int run, const std::string &det)
::xsd::cxx::tree::exception< char > exception
DEFINE_ART_MODULE(TestTMapFile)
int fSubrun
Current subrun.
virtual void reconfigure(fhicl::ParameterSet const &p)
constexpr TimeValue_t value() const
std::pair< art::TimeValue_t, art::TimeValue_t > TimeValuePair_t
virtual bool beginSubRun(art::SubRun &s)
art::TimeValue_t TextToTimeValue(const std::string &t)
void getManyByType(std::vector< Handle< PROD >> &results) const
BadDataFilter(fhicl::ParameterSet const &p)
EventNumber_t event() const
void LoadBadTimeRanges(int run, const std::string &det)
bool fGoodRun
Is the current run good?
std::uint64_t TimeValue_t