12 YieldDump::SimpleExecute(sqlite3* conn, const
char* query)
17 Message(eInfo,
"About to execute:\n%s", query);
18 sqlite3_prepare_v2(conn, query, -1, &stmt, NULL);
19 rc = sqlite3_step(stmt);
20 Message(eInfo,
"Return code: %i", rc);
22 if (rc != SQLITE_OK and rc != SQLITE_DONE)
23 Message(eError,
"Error from connection:\n%s", sqlite3_errmsg(conn));
25 rc = sqlite3_finalize(stmt);
26 Message(eInfo,
"Return code: %i", rc);
34 std::vector<std::pair<FileType, std::string>> types_files = {
36 std::make_pair(
kSignal,
"signal"),
37 std::make_pair(
kData,
"data")
40 std::string
delim =
",";
43 if(sqlite3_open(out_file, &conn) != SQLITE_OK) {
52 CREATE TABLE IF NOT EXISTS yields ( 59 PRIMARY KEY (region, process, bin) 65 for (
auto iTypeFile = types_files.begin(); iTypeFile != types_files.end(); ++iTypeFile) {
70 for (
unsigned int iCut = 0; iCut !=
fRegionCuts.size(); ++iCut) {
76 for (
auto iProcess = processes.begin(); iProcess != processes.end(); ++iProcess) {
78 Message(
eInfo,
"Getting histograms from %s for %s region.",
81 auto proc_hist =
GetHist(NumXBins, XBins, iTypeFile->first, *iProcess,
kLimitName);
84 for (
int iBin = 1; iBin < NumXBins + 1; iBin++) {
87 sqlite3_stmt *yield_stmt;
88 sqlite3_prepare_v2(conn,
"INSERT INTO yields VALUES(?, ?, ?, ?, ?, ?)", -1, &yield_stmt, NULL);
89 sqlite3_bind_text(yield_stmt, 1,
fRegionCuts[iCut].GetName(), -1, NULL);
90 sqlite3_bind_text(yield_stmt, 2, iProcess->Data(), -1, NULL);
91 sqlite3_bind_int(yield_stmt, 3, iBin);
92 sqlite3_bind_double(yield_stmt, 4, proc_hist->GetBinContent(iBin));
93 sqlite3_bind_double(yield_stmt, 5, proc_hist->GetBinError(iBin));
94 sqlite3_bind_text(yield_stmt, 6, iTypeFile->second.data(), -1, NULL);
96 rc = sqlite3_step(yield_stmt);
97 if (rc != SQLITE_OK and rc != SQLITE_DONE)
98 Message(
eError,
"Error from connection:\n%s", sqlite3_errmsg(conn));
100 sqlite3_finalize(yield_stmt);
116 Double_t XBins[NumXBins+1];