Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
73 changes: 73 additions & 0 deletions DbTables/inc/CalBaselines.hh
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
#ifndef DbTables_CalBaselines_hh
#define DbTables_CalBaselines_hh

#include <string>
#include <iomanip>
#include <sstream>
#include <map>
#include "cetlib_except/exception.h"
#include "Offline/DbTables/inc/DbTable.hh"
#include "Offline/DataProducts/inc/CaloSiPMId.hh"

namespace mu2e {

class CalBaselines : public DbTable {
public:
typedef std::shared_ptr<CalBaselines> ptr_t;
typedef std::shared_ptr<const CalBaselines> cptr_t;

class Row {
public:
Row(CaloSiPMId roid, float baseline, float threshold):_roid(roid),_baseline(baseline),_threshold(threshold) {}
CaloSiPMId roid() const { return _roid;}
float baseline() const { return _baseline; }
float threshold() const { return _threshold; }

private:
CaloSiPMId _roid;
float _baseline;
float _threshold;
};

constexpr static const char* cxname = "CalBaselines";

CalBaselines():DbTable(cxname,"cal.baselines","roid,baseline,threshold"){}

const Row& row(CaloSiPMId id) const {
return _rows[id.id()];
}
std::vector<Row> const& rows() const {return _rows;}
std::size_t nrow() const override { return _rows.size(); };
size_t size() const override { return baseSize() + nrow()*sizeof(Row); };
virtual std::size_t nrowFix() const override { return CaloConst::_nChannelDB; };
const std::string orderBy() const { return std::string("roid"); }

void addRow(const std::vector<std::string>& columns) override {
std::uint16_t index = std::stoul(columns[0]);
// enforce order, so channels can be looked up by index
if (index!=int(_rows.size())) {
throw cet::exception("CALOBASELINES_BAD_INDEX")<<"CalBaselines::addRow found index out of order:"<<index << " != " << int(_rows.size()) <<"\n";
}
_rows.emplace_back(CaloSiPMId(index),
std::stof(columns[1]),
std::stof(columns[2]));
}


void rowToCsv(std::ostringstream& sstream, std::size_t irow) const override {
Row const& r = _rows.at(irow);
sstream << std::fixed << std::setprecision(5);
sstream << r.roid()<<",";
sstream << r.baseline()<<",";
sstream << r.threshold();
}

virtual void clear() override { baseClear(); _rows.clear();}

private:
std::vector<Row> _rows;

};

}
#endif
80 changes: 80 additions & 0 deletions DbTables/inc/CalCosmicTimeCalib.hh
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
#ifndef DbTables_CalCosmicTimeCalib_hh
#define DbTables_CalCosmicTimeCalib_hh

// calorimater archive table for time study from a cosmic ray run

#include <string>
#include <iomanip>
#include <sstream>
#include <map>
#include "Offline/DbTables/inc/DbTable.hh"
#include "Offline/DataProducts/inc/CaloSiPMId.hh"

namespace mu2e {

class CalCosmicTimeCalib : public DbTable {
public:

class Row {
public:
Row(CaloSiPMId roid, float T0, float ErrT0, float chisq, int nev):
_roid(roid),_T0(T0),_ErrT0(ErrT0),_chisq(chisq),_nev(nev) {}
CaloSiPMId roid() const { return _roid;} // Offline ID
float T0() const { return _T0; }
float ErrT0() const { return _ErrT0; }
float chisq() const { return _chisq; }
int nev() const { return _nev; }

private:
CaloSiPMId _roid;
float _T0;
float _ErrT0;
float _chisq;
int _nev;
};

constexpr static const char* cxname = "CalCosmicTimeCalib";

CalCosmicTimeCalib():DbTable(cxname,"cal.cosmictimecalib",
"roid,t0,errt0,chisq,nev") {}

const Row& row(CaloSiPMId roid) const {
return _rows.at(roid.id()); }
std::vector<Row> const& rows() const {return _rows;}
std::size_t nrow() const override { return _rows.size(); };
size_t size() const override { return baseSize() + nrow()*sizeof(Row); };
virtual std::size_t nrowFix() const override { return CaloConst::_nChannelDB; };
const std::string orderBy() const { return std::string("roid"); }
void addRow(const std::vector<std::string>& columns) override {
std::uint16_t index = std::stoul(columns[0]);
// enforce order, so channels can be looked up by index
if (index >= CaloConst::_nChannelDB || index != _rows.size()) {
throw cet::exception("CalCosmicTimeCalib_BAD_INDEX")
<< "CalCosmicTimeTable::addRow found index out of order: "
<<index<< " != " << _rows.size() <<"\n";
}
_rows.emplace_back(CaloSiPMId(index),
std::stof(columns[1]),
std::stof(columns[2]),
std::stof(columns[3]),
std::stoi(columns[4]));
}

void rowToCsv(std::ostringstream& sstream, std::size_t irow) const override {
Row const& r = _rows.at(irow);
sstream << std::fixed << std::setprecision(5);
sstream << r.roid()<<",";
sstream << r.T0()<<",";
sstream << r.ErrT0()<<",";
sstream << r.chisq()<<",";
sstream << r.nev();
}

virtual void clear() override { baseClear(); _rows.clear();}

private:
std::vector<Row> _rows;
};

}
#endif
6 changes: 6 additions & 0 deletions DbTables/src/DbTableFactory.cc
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,13 @@
#include "Offline/DbTables/inc/SimEfficiencies.hh"
#include "Offline/DbTables/inc/SimEfficiencies2.hh"

#include "Offline/DbTables/inc/CalBaselines.hh"
#include "Offline/DbTables/inc/CalChannels.hh"
#include "Offline/DbTables/inc/CalChannelStatus.hh"
#include "Offline/DbTables/inc/CalSourceEnergyCalib.hh"
#include "Offline/DbTables/inc/CalCosmicEnergyCalib.hh"
#include "Offline/DbTables/inc/CalCosmicEnergyCalibInfo.hh"
#include "Offline/DbTables/inc/CalCosmicTimeCalib.hh"
#include "Offline/DbTables/inc/CalCombinedEnergyCalib.hh"
#include "Offline/DbTables/inc/CalEnergyCalibInfo.hh"
#include "Offline/DbTables/inc/CalLaserEnergyCalib.hh"
Expand Down Expand Up @@ -98,6 +100,8 @@ mu2e::DbTable::ptr_t mu2e::DbTableFactory::newTable(std::string const& name) {
return std::shared_ptr<mu2e::DbTable>(new mu2e::CRVSiPM());
} else if (name == "CRVTime") {
return std::shared_ptr<mu2e::DbTable>(new mu2e::CRVTime());
} else if (name=="CalBaselines") {
return std::shared_ptr<mu2e::DbTable>(new mu2e::CalBaselines());
} else if (name=="CalChannels") {
return std::shared_ptr<mu2e::DbTable>(new mu2e::CalChannels());
} else if (name=="CalChannelStatus") {
Expand All @@ -108,6 +112,8 @@ mu2e::DbTable::ptr_t mu2e::DbTableFactory::newTable(std::string const& name) {
return std::shared_ptr<mu2e::DbTable>(new mu2e::CalCosmicEnergyCalib());
} else if (name=="CalCosmicEnergyCalibInfo") {
return std::shared_ptr<mu2e::DbTable>(new mu2e::CalCosmicEnergyCalibInfo());
} else if (name=="CalCosmicTimeCalib") {
return std::shared_ptr<mu2e::DbTable>(new mu2e::CalCosmicTimeCalib());
} else if (name=="CalLaserEnergyCalib") {
return std::shared_ptr<mu2e::DbTable>(new mu2e::CalLaserEnergyCalib());
} else if (name=="CalLaserTimeCalib") {
Expand Down