Skip to content

Commit

Permalink
introduce tag names on comparison / difference / ratio plots in SiStr…
Browse files Browse the repository at this point in the history
…ipCondObjectRepresent and update scripts
  • Loading branch information
mmusich committed Apr 7, 2022
1 parent 66339a9 commit ab32dc4
Show file tree
Hide file tree
Showing 6 changed files with 158 additions and 157 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -201,7 +201,7 @@ namespace SiStripCondObjectRepresent {
const std::string &topoMode() const { return TopoMode_; }
const std::string &payloadName() const { return payloadType_; }
const plotType &getPlotType() const { return plotMode_; }
const bool isMultiTag() { return (tagname_ != this->tagName2()); }
const bool isMultiTag() { return (tagname_ != this->tagName2() && !(this->tagName2()).empty()); }

void setPlotType(plotType myType) { plotMode_ = myType; }
void setPayloadType(std::string myPayloadType) { payloadType_ = myPayloadType; }
Expand Down Expand Up @@ -875,7 +875,7 @@ namespace SiStripCondObjectRepresent {
.c_str());
ltx.DrawLatexNDC(1 - gPad->GetRightMargin(),
1 - gPad->GetTopMargin() + 0.01,
(fmt::sprintf("#color[2]{%s} %s Values Diff", part, payloadType_)).c_str());
(fmt::sprintf("#color[2]{%s} %s Values %s", part, payloadType_, plotDescriptor())).c_str());
} else {
if (this->isMultiTag()) {
leg->SetHeader("#bf{Two Tags Comparison}", "C"); // option "C" allows to center the header
Expand Down
103 changes: 48 additions & 55 deletions CondCore/SiStripPlugins/plugins/SiStripApvGain_PayloadInspector.cc
Original file line number Diff line number Diff line change
Expand Up @@ -46,8 +46,10 @@ namespace {

class SiStripApvGainContainer : public SiStripCondObjectRepresent::SiStripDataContainer<SiStripApvGain, float> {
public:
SiStripApvGainContainer(const std::shared_ptr<SiStripApvGain>& payload, const SiStripPI::MetaData& metadata)
: SiStripCondObjectRepresent::SiStripDataContainer<SiStripApvGain, float>(payload, metadata, std::string()) {
SiStripApvGainContainer(const std::shared_ptr<SiStripApvGain>& payload,
const SiStripPI::MetaData& metadata,
const std::string& tagName)
: SiStripCondObjectRepresent::SiStripDataContainer<SiStripApvGain, float>(payload, metadata, tagName) {
payloadType_ = "SiStripApvGain";
setGranularity(SiStripCondObjectRepresent::PERAPV);
}
Expand Down Expand Up @@ -76,10 +78,11 @@ namespace {

bool fill() override {
auto tag = PlotBase::getTag<0>();
auto tagname = tag.name;
for (auto const& iov : tag.iovs) {
std::shared_ptr<SiStripApvGain> payload = Base::fetchPayload(std::get<1>(iov));
if (payload.get()) {
SiStripApvGainContainer* objContainer = new SiStripApvGainContainer(payload, iov);
SiStripApvGainContainer* objContainer = new SiStripApvGainContainer(payload, iov, tagname);
objContainer->printAll();

} // payload
Expand All @@ -95,9 +98,10 @@ namespace {
bool fill() override {
auto tag = PlotBase::getTag<0>();
auto iov = tag.iovs.front();
auto tagname = tag.name;
std::shared_ptr<SiStripApvGain> payload = fetchPayload(std::get<1>(iov));
if (payload.get()) {
SiStripApvGainContainer* objContainer = new SiStripApvGainContainer(payload, iov);
SiStripApvGainContainer* objContainer = new SiStripApvGainContainer(payload, iov, tagname);
//objContainer->printAll();

TCanvas canvas("Partition summary", "partition summary", 1400, 1000);
Expand All @@ -110,28 +114,25 @@ namespace {
} // fill
};

class SiStripApvGainCompareByPartition : public PlotImage<SiStripApvGain> {
class SiStripApvGainCompareByPartition : public PlotImage<SiStripApvGain, MULTI_IOV, 2> {
public:
SiStripApvGainCompareByPartition() : PlotImage<SiStripApvGain>("SiStrip Compare ApvGains By Partition") {
setSingleIov(false);
}

bool fill(const std::vector<SiStripPI::MetaData>& iovs) override {
std::vector<SiStripPI::MetaData> sorted_iovs = iovs;

// make absolute sure the IOVs are sortd by since
std::sort(begin(sorted_iovs), end(sorted_iovs), [](auto const& t1, auto const& t2) {
return std::get<0>(t1) < std::get<0>(t2);
});
SiStripApvGainCompareByPartition()
: PlotImage<SiStripApvGain, MULTI_IOV, 2>("SiStrip Compare ApvGains By Partition") {}

auto firstiov = sorted_iovs.front();
auto lastiov = sorted_iovs.back();
bool fill() override {
// trick to deal with the multi-ioved tag and two tag case at the same time
auto theIOVs = PlotBase::getTag<0>().iovs;
auto tagname1 = PlotBase::getTag<0>().name;
auto tag2iovs = PlotBase::getTag<1>().iovs;
auto tagname2 = PlotBase::getTag<1>().name;
SiStripPI::MetaData firstiov = theIOVs.front();
SiStripPI::MetaData lastiov = tag2iovs.front();

std::shared_ptr<SiStripApvGain> last_payload = fetchPayload(std::get<1>(lastiov));
std::shared_ptr<SiStripApvGain> first_payload = fetchPayload(std::get<1>(firstiov));

SiStripApvGainContainer* l_objContainer = new SiStripApvGainContainer(last_payload, lastiov);
SiStripApvGainContainer* f_objContainer = new SiStripApvGainContainer(first_payload, firstiov);
SiStripApvGainContainer* l_objContainer = new SiStripApvGainContainer(last_payload, lastiov, tagname1);
SiStripApvGainContainer* f_objContainer = new SiStripApvGainContainer(first_payload, firstiov, tagname2);

l_objContainer->compare(f_objContainer);

Expand All @@ -147,37 +148,33 @@ namespace {
} // fill
};

class SiStripApvGainRatioByPartition : public PlotImage<SiStripApvGain> {
class SiStripApvGainRatioByPartition : public PlotImage<SiStripApvGain, MULTI_IOV, 2> {
public:
SiStripApvGainRatioByPartition() : PlotImage<SiStripApvGain>("SiStrip Ratio ApvGains By Partition") {
setSingleIov(false);
}

bool fill(const std::vector<SiStripPI::MetaData>& iovs) override {
std::vector<SiStripPI::MetaData> sorted_iovs = iovs;
SiStripApvGainRatioByPartition() : PlotImage<SiStripApvGain, MULTI_IOV, 2>("SiStrip Ratio ApvGains By Partition") {}

// make absolute sure the IOVs are sortd by since
std::sort(begin(sorted_iovs), end(sorted_iovs), [](auto const& t1, auto const& t2) {
return std::get<0>(t1) < std::get<0>(t2);
});

auto firstiov = sorted_iovs.front();
auto lastiov = sorted_iovs.back();
bool fill() override {
// trick to deal with the multi-ioved tag and two tag case at the same time
auto theIOVs = PlotBase::getTag<0>().iovs;
auto tagname1 = PlotBase::getTag<0>().name;
auto tag2iovs = PlotBase::getTag<1>().iovs;
auto tagname2 = PlotBase::getTag<1>().name;
SiStripPI::MetaData firstiov = theIOVs.front();
SiStripPI::MetaData lastiov = tag2iovs.front();

std::shared_ptr<SiStripApvGain> last_payload = fetchPayload(std::get<1>(lastiov));
std::shared_ptr<SiStripApvGain> first_payload = fetchPayload(std::get<1>(firstiov));

SiStripApvGainContainer* l_objContainer = new SiStripApvGainContainer(last_payload, lastiov);
SiStripApvGainContainer* f_objContainer = new SiStripApvGainContainer(first_payload, firstiov);
SiStripApvGainContainer* l_objContainer = new SiStripApvGainContainer(last_payload, lastiov, tagname1);
SiStripApvGainContainer* f_objContainer = new SiStripApvGainContainer(first_payload, firstiov, tagname2);

l_objContainer->divide(f_objContainer);

//l_objContainer->printAll();

TCanvas canvas("Partition summary", "partition summary", 1400, 1000);
l_objContainer->fillByPartition(canvas, 200, 0., 2.);
for (int i = 1; i <= 4; i++)
canvas.cd(i)->SetLogy();
l_objContainer->fillByPartition(canvas, 200, 0.5, 1.5);
//for (int i = 1; i <= 4; i++)
// canvas.cd(i)->SetLogy();

std::string fileName(m_imageFileName);
canvas.SaveAs(fileName.c_str());
Expand All @@ -186,28 +183,24 @@ namespace {
} // fill
};

class SiStripApvGainDiffByPartition : public PlotImage<SiStripApvGain> {
class SiStripApvGainDiffByPartition : public PlotImage<SiStripApvGain, MULTI_IOV, 2> {
public:
SiStripApvGainDiffByPartition() : PlotImage<SiStripApvGain>("SiStrip Diff ApvGains By Partition") {
setSingleIov(false);
}

bool fill(const std::vector<SiStripPI::MetaData>& iovs) override {
std::vector<SiStripPI::MetaData> sorted_iovs = iovs;
SiStripApvGainDiffByPartition() : PlotImage<SiStripApvGain, MULTI_IOV, 2>("SiStrip Diff ApvGains By Partition") {}

// make absolute sure the IOVs are sortd by since
std::sort(begin(sorted_iovs), end(sorted_iovs), [](auto const& t1, auto const& t2) {
return std::get<0>(t1) < std::get<0>(t2);
});

auto firstiov = sorted_iovs.front();
auto lastiov = sorted_iovs.back();
bool fill() override {
// trick to deal with the multi-ioved tag and two tag case at the same time
auto theIOVs = PlotBase::getTag<0>().iovs;
auto tagname1 = PlotBase::getTag<0>().name;
auto tag2iovs = PlotBase::getTag<1>().iovs;
auto tagname2 = PlotBase::getTag<1>().name;
SiStripPI::MetaData firstiov = theIOVs.front();
SiStripPI::MetaData lastiov = tag2iovs.front();

std::shared_ptr<SiStripApvGain> last_payload = fetchPayload(std::get<1>(lastiov));
std::shared_ptr<SiStripApvGain> first_payload = fetchPayload(std::get<1>(firstiov));

SiStripApvGainContainer* l_objContainer = new SiStripApvGainContainer(last_payload, lastiov);
SiStripApvGainContainer* f_objContainer = new SiStripApvGainContainer(first_payload, firstiov);
SiStripApvGainContainer* l_objContainer = new SiStripApvGainContainer(last_payload, lastiov, tagname1);
SiStripApvGainContainer* f_objContainer = new SiStripApvGainContainer(first_payload, firstiov, tagname2);

l_objContainer->subtract(f_objContainer);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,9 +39,9 @@ namespace {
: public SiStripCondObjectRepresent::SiStripDataContainer<SiStripLorentzAngle, float> {
public:
SiStripLorentzAngleContainer(const std::shared_ptr<SiStripLorentzAngle> &payload,
const SiStripPI::MetaData &metadata)
: SiStripCondObjectRepresent::SiStripDataContainer<SiStripLorentzAngle, float>(
payload, metadata, std::string()) {
const SiStripPI::MetaData &metadata,
const std::string &tagName)
: SiStripCondObjectRepresent::SiStripDataContainer<SiStripLorentzAngle, float>(payload, metadata, tagName) {
payloadType_ = "SiStripLorentzAngle";
setGranularity(SiStripCondObjectRepresent::PERMODULE);
}
Expand All @@ -64,10 +64,10 @@ namespace {
bool fill() override {
auto tag = PlotBase::getTag<0>();
auto iov = tag.iovs.front();

auto tagname = tag.name;
std::shared_ptr<SiStripLorentzAngle> payload = fetchPayload(std::get<1>(iov));
if (payload.get()) {
SiStripLorentzAngleContainer *objContainer = new SiStripLorentzAngleContainer(payload, iov);
SiStripLorentzAngleContainer *objContainer = new SiStripLorentzAngleContainer(payload, iov, tagname);
//objContainer->printAll();

TCanvas canvas("Partion summary", "partition summary", 1200, 1000);
Expand All @@ -89,10 +89,10 @@ namespace {
bool fill() override {
auto tag = PlotBase::getTag<0>();
auto iov = tag.iovs.front();

auto tagname = tag.name;
std::shared_ptr<SiStripLorentzAngle> payload = fetchPayload(std::get<1>(iov));
if (payload.get()) {
SiStripLorentzAngleContainer *objContainer = new SiStripLorentzAngleContainer(payload, iov);
SiStripLorentzAngleContainer *objContainer = new SiStripLorentzAngleContainer(payload, iov, tagname);
objContainer->printAll();

TCanvas canvas("Partition summary", "partition summary", 1400, 1000);
Expand All @@ -105,28 +105,26 @@ namespace {
} // fill
};

class SiStripLorentzAngleCompareByRegion : public PlotImage<SiStripLorentzAngle> {
class SiStripLorentzAngleCompareByRegion : public PlotImage<SiStripLorentzAngle, MULTI_IOV, 2> {
public:
SiStripLorentzAngleCompareByRegion() : PlotImage<SiStripLorentzAngle>("SiStrip LorentzAngle By Partition") {
setSingleIov(false);
}

bool fill(const std::vector<SiStripPI::MetaData> &iovs) override {
std::vector<SiStripPI::MetaData> sorted_iovs = iovs;

// make absolute sure the IOVs are sortd by since
std::sort(begin(sorted_iovs), end(sorted_iovs), [](auto const &t1, auto const &t2) {
return std::get<0>(t1) < std::get<0>(t2);
});
SiStripLorentzAngleCompareByRegion()
: PlotImage<SiStripLorentzAngle, MULTI_IOV, 2>("SiStrip LorentzAngle By Partition") {}

auto firstiov = sorted_iovs.front();
auto lastiov = sorted_iovs.back();
bool fill() override {
// trick to deal with the multi-ioved tag and two tag case at the same time
auto theIOVs = PlotBase::getTag<0>().iovs;
auto tagname1 = PlotBase::getTag<0>().name;
auto tag2iovs = PlotBase::getTag<1>().iovs;
auto tagname2 = PlotBase::getTag<1>().name;
SiStripPI::MetaData firstiov = theIOVs.front();
SiStripPI::MetaData lastiov = tag2iovs.front();

std::shared_ptr<SiStripLorentzAngle> last_payload = fetchPayload(std::get<1>(lastiov));
std::shared_ptr<SiStripLorentzAngle> first_payload = fetchPayload(std::get<1>(firstiov));

SiStripLorentzAngleContainer *l_objContainer = new SiStripLorentzAngleContainer(last_payload, lastiov);
SiStripLorentzAngleContainer *f_objContainer = new SiStripLorentzAngleContainer(first_payload, firstiov);
SiStripLorentzAngleContainer *l_objContainer = new SiStripLorentzAngleContainer(last_payload, lastiov, tagname1);
SiStripLorentzAngleContainer *f_objContainer =
new SiStripLorentzAngleContainer(first_payload, firstiov, tagname2);

l_objContainer->compare(f_objContainer);

Expand Down
70 changes: 32 additions & 38 deletions CondCore/SiStripPlugins/plugins/SiStripNoises_PayloadInspector.cc
Original file line number Diff line number Diff line change
Expand Up @@ -52,8 +52,10 @@ namespace {

class SiStripNoiseContainer : public SiStripCondObjectRepresent::SiStripDataContainer<SiStripNoises, float> {
public:
SiStripNoiseContainer(const std::shared_ptr<SiStripNoises>& payload, const SiStripPI::MetaData& metadata)
: SiStripCondObjectRepresent::SiStripDataContainer<SiStripNoises, float>(payload, metadata, std::string()) {
SiStripNoiseContainer(const std::shared_ptr<SiStripNoises>& payload,
const SiStripPI::MetaData& metadata,
const std::string& tagName)
: SiStripCondObjectRepresent::SiStripDataContainer<SiStripNoises, float>(payload, metadata, tagName) {
payloadType_ = "SiStripNoises";
setGranularity(SiStripCondObjectRepresent::PERSTRIP);
}
Expand All @@ -72,28 +74,24 @@ namespace {
}
};

class SiStripNoiseCompareByPartition : public PlotImage<SiStripNoises> {
class SiStripNoiseCompareByPartition : public PlotImage<SiStripNoises, MULTI_IOV, 2> {
public:
SiStripNoiseCompareByPartition() : PlotImage<SiStripNoises>("SiStrip Compare Noises By Partition") {
setSingleIov(false);
}

bool fill(const std::vector<SiStripPI::MetaData>& iovs) override {
std::vector<SiStripPI::MetaData> sorted_iovs = iovs;

// make absolute sure the IOVs are sortd by since
std::sort(begin(sorted_iovs), end(sorted_iovs), [](auto const& t1, auto const& t2) {
return std::get<0>(t1) < std::get<0>(t2);
});
SiStripNoiseCompareByPartition() : PlotImage<SiStripNoises, MULTI_IOV, 2>("SiStrip Compare Noises By Partition") {}

auto firstiov = sorted_iovs.front();
auto lastiov = sorted_iovs.back();
bool fill() override {
// trick to deal with the multi-ioved tag and two tag case at the same time
auto theIOVs = PlotBase::getTag<0>().iovs;
auto tagname1 = PlotBase::getTag<0>().name;
auto tag2iovs = PlotBase::getTag<1>().iovs;
auto tagname2 = PlotBase::getTag<1>().name;
SiStripPI::MetaData firstiov = theIOVs.front();
SiStripPI::MetaData lastiov = tag2iovs.front();

std::shared_ptr<SiStripNoises> last_payload = fetchPayload(std::get<1>(lastiov));
std::shared_ptr<SiStripNoises> first_payload = fetchPayload(std::get<1>(firstiov));

SiStripNoiseContainer* l_objContainer = new SiStripNoiseContainer(last_payload, lastiov);
SiStripNoiseContainer* f_objContainer = new SiStripNoiseContainer(first_payload, firstiov);
SiStripNoiseContainer* l_objContainer = new SiStripNoiseContainer(last_payload, lastiov, tagname1);
SiStripNoiseContainer* f_objContainer = new SiStripNoiseContainer(first_payload, firstiov, tagname2);

l_objContainer->compare(f_objContainer);

Expand All @@ -109,28 +107,24 @@ namespace {
} // fill
};

class SiStripNoiseDiffByPartition : public PlotImage<SiStripNoises> {
class SiStripNoiseDiffByPartition : public PlotImage<SiStripNoises, MULTI_IOV, 2> {
public:
SiStripNoiseDiffByPartition() : PlotImage<SiStripNoises>("SiStrip Diff Noises By Partition") {
setSingleIov(false);
}

bool fill(const std::vector<SiStripPI::MetaData>& iovs) override {
std::vector<SiStripPI::MetaData> sorted_iovs = iovs;

// make absolute sure the IOVs are sortd by since
std::sort(begin(sorted_iovs), end(sorted_iovs), [](auto const& t1, auto const& t2) {
return std::get<0>(t1) < std::get<0>(t2);
});
SiStripNoiseDiffByPartition() : PlotImage<SiStripNoises, MULTI_IOV, 2>("SiStrip Diff Noises By Partition") {}

auto firstiov = sorted_iovs.front();
auto lastiov = sorted_iovs.back();
bool fill() override {
// trick to deal with the multi-ioved tag and two tag case at the same time
auto theIOVs = PlotBase::getTag<0>().iovs;
auto tagname1 = PlotBase::getTag<0>().name;
auto tag2iovs = PlotBase::getTag<1>().iovs;
auto tagname2 = PlotBase::getTag<1>().name;
SiStripPI::MetaData firstiov = theIOVs.front();
SiStripPI::MetaData lastiov = tag2iovs.front();

std::shared_ptr<SiStripNoises> last_payload = fetchPayload(std::get<1>(lastiov));
std::shared_ptr<SiStripNoises> first_payload = fetchPayload(std::get<1>(firstiov));

SiStripNoiseContainer* l_objContainer = new SiStripNoiseContainer(last_payload, lastiov);
SiStripNoiseContainer* f_objContainer = new SiStripNoiseContainer(first_payload, firstiov);
SiStripNoiseContainer* l_objContainer = new SiStripNoiseContainer(last_payload, lastiov, tagname1);
SiStripNoiseContainer* f_objContainer = new SiStripNoiseContainer(first_payload, firstiov, tagname2);

l_objContainer->subtract(f_objContainer);

Expand Down Expand Up @@ -166,8 +160,8 @@ namespace {
std::shared_ptr<SiStripNoises> last_payload = fetchPayload(std::get<1>(lastiov));
std::shared_ptr<SiStripNoises> first_payload = fetchPayload(std::get<1>(firstiov));

SiStripNoiseContainer* l_objContainer = new SiStripNoiseContainer(last_payload, lastiov);
SiStripNoiseContainer* f_objContainer = new SiStripNoiseContainer(first_payload, firstiov);
SiStripNoiseContainer* l_objContainer = new SiStripNoiseContainer(last_payload, lastiov, "");
SiStripNoiseContainer* f_objContainer = new SiStripNoiseContainer(first_payload, firstiov, "");

l_objContainer->compare(f_objContainer);

Expand Down Expand Up @@ -201,8 +195,8 @@ namespace {
std::shared_ptr<SiStripNoises> last_payload = fetchPayload(std::get<1>(lastiov));
std::shared_ptr<SiStripNoises> first_payload = fetchPayload(std::get<1>(firstiov));

SiStripNoiseContainer* f_objContainer = new SiStripNoiseContainer(first_payload, firstiov);
SiStripNoiseContainer* l_objContainer = new SiStripNoiseContainer(last_payload, lastiov);
SiStripNoiseContainer* f_objContainer = new SiStripNoiseContainer(first_payload, firstiov, "");
SiStripNoiseContainer* l_objContainer = new SiStripNoiseContainer(last_payload, lastiov, "");

f_objContainer->compare(l_objContainer);

Expand Down
Loading

0 comments on commit ab32dc4

Please sign in to comment.