File indexing completed on 2023-10-25 09:36:37
0001 #include "CondCore/Utilities/interface/PayloadInspectorModule.h"
0002 #include "CondCore/Utilities/interface/PayloadInspector.h"
0003 #include "CondCore/CondDB/interface/Time.h"
0004 #include "DataFormats/HcalDetId/interface/HcalDetId.h"
0005 #include "Geometry/CaloTopology/interface/HcalTopology.h"
0006 #include "CondCore/HcalPlugins/interface/HcalObjRepresent.h"
0007
0008
0009 #include "CondFormats/HcalObjects/interface/HcalPedestalWidths.h"
0010
0011 #include "TH2F.h"
0012 #include "TCanvas.h"
0013 #include "TLine.h"
0014 #include "TStyle.h"
0015 #include "TLatex.h"
0016 #include "TPave.h"
0017 #include "TPaveStats.h"
0018 #include <string>
0019 #include <fstream>
0020
0021 namespace {
0022
0023 class HcalPedestalWidthContainer : public HcalObjRepresent::HcalDataContainer<HcalPedestalWidths, HcalPedestalWidth> {
0024 public:
0025 HcalPedestalWidthContainer(std::shared_ptr<HcalPedestalWidths> payload, unsigned int run)
0026 : HcalObjRepresent::HcalDataContainer<HcalPedestalWidths, HcalPedestalWidth>(payload, run) {}
0027 float getValue(HcalPedestalWidth* ped) override {
0028 return (ped->getWidth(0) + ped->getWidth(1) + ped->getWidth(2) + ped->getWidth(3)) / 4;
0029 }
0030 };
0031
0032
0033
0034
0035 class HcalPedestalWidthsPlot : public cond::payloadInspector::PlotImage<HcalPedestalWidths> {
0036 public:
0037 HcalPedestalWidthsPlot()
0038 : cond::payloadInspector::PlotImage<HcalPedestalWidths>("HCAL PedestalWidth Ratios - map ") {
0039 setSingleIov(true);
0040 }
0041
0042 bool fill(const std::vector<std::tuple<cond::Time_t, cond::Hash> >& iovs) override {
0043 auto iov = iovs.front();
0044 std::shared_ptr<HcalPedestalWidths> payload = fetchPayload(std::get<1>(iov));
0045 if (payload.get()) {
0046 HcalPedestalWidthContainer* objContainer = new HcalPedestalWidthContainer(payload, std::get<0>(iov));
0047 std::string ImageName(m_imageFileName);
0048 objContainer->getCanvasAll()->SaveAs(ImageName.c_str());
0049 return true;
0050 } else
0051 return false;
0052 }
0053 };
0054
0055
0056
0057
0058 class HcalPedestalWidthsDiff : public cond::payloadInspector::PlotImage<HcalPedestalWidths> {
0059 public:
0060 HcalPedestalWidthsDiff()
0061 : cond::payloadInspector::PlotImage<HcalPedestalWidths>("HCAL PedestalWidth Ratios difference") {
0062 setSingleIov(false);
0063 }
0064
0065 bool fill(const std::vector<std::tuple<cond::Time_t, cond::Hash> >& iovs) override {
0066 auto iov1 = iovs.front();
0067 auto iov2 = iovs.back();
0068
0069 std::shared_ptr<HcalPedestalWidths> payload1 = fetchPayload(std::get<1>(iov1));
0070 std::shared_ptr<HcalPedestalWidths> payload2 = fetchPayload(std::get<1>(iov2));
0071
0072 if (payload1.get() && payload2.get()) {
0073 HcalPedestalWidthContainer* objContainer1 = new HcalPedestalWidthContainer(payload1, std::get<0>(iov1));
0074 HcalPedestalWidthContainer* objContainer2 = new HcalPedestalWidthContainer(payload2, std::get<0>(iov2));
0075 objContainer2->Subtract(objContainer1);
0076 std::string ImageName(m_imageFileName);
0077 objContainer2->getCanvasAll()->SaveAs(ImageName.c_str());
0078 return true;
0079 } else
0080 return false;
0081 }
0082 };
0083
0084
0085
0086 class HcalPedestalWidthsEtaPlot : public cond::payloadInspector::PlotImage<HcalPedestalWidths> {
0087 public:
0088 HcalPedestalWidthsEtaPlot()
0089 : cond::payloadInspector::PlotImage<HcalPedestalWidths>("HCAL PedestalWidth Ratios - map ") {
0090 setSingleIov(true);
0091 }
0092
0093 bool fill(const std::vector<std::tuple<cond::Time_t, cond::Hash> >& iovs) override {
0094 auto iov = iovs.front();
0095 std::shared_ptr<HcalPedestalWidths> payload = fetchPayload(std::get<1>(iov));
0096 if (payload.get()) {
0097 HcalPedestalWidthContainer* objContainer = new HcalPedestalWidthContainer(payload, std::get<0>(iov));
0098 std::string ImageName(m_imageFileName);
0099 objContainer->getCanvasAll("EtaProfile")->SaveAs(ImageName.c_str());
0100 return true;
0101 } else
0102 return false;
0103 }
0104 };
0105
0106
0107
0108
0109 class HcalPedestalWidthsEtaDiff : public cond::payloadInspector::PlotImage<HcalPedestalWidths> {
0110 public:
0111 HcalPedestalWidthsEtaDiff()
0112 : cond::payloadInspector::PlotImage<HcalPedestalWidths>("HCAL PedestalWidth Ratios difference") {
0113 setSingleIov(false);
0114 }
0115
0116 bool fill(const std::vector<std::tuple<cond::Time_t, cond::Hash> >& iovs) override {
0117 auto iov1 = iovs.front();
0118 auto iov2 = iovs.back();
0119
0120 std::shared_ptr<HcalPedestalWidths> payload1 = fetchPayload(std::get<1>(iov1));
0121 std::shared_ptr<HcalPedestalWidths> payload2 = fetchPayload(std::get<1>(iov2));
0122
0123 if (payload1.get() && payload2.get()) {
0124 HcalPedestalWidthContainer* objContainer1 = new HcalPedestalWidthContainer(payload1, std::get<0>(iov1));
0125 HcalPedestalWidthContainer* objContainer2 = new HcalPedestalWidthContainer(payload2, std::get<0>(iov2));
0126 objContainer2->Subtract(objContainer1);
0127 std::string ImageName(m_imageFileName);
0128 objContainer2->getCanvasAll("EtaProfile")->SaveAs(ImageName.c_str());
0129 return true;
0130 } else
0131 return false;
0132 }
0133 };
0134
0135
0136
0137 class HcalPedestalWidthsPhiPlot : public cond::payloadInspector::PlotImage<HcalPedestalWidths> {
0138 public:
0139 HcalPedestalWidthsPhiPlot()
0140 : cond::payloadInspector::PlotImage<HcalPedestalWidths>("HCAL PedestalWidth Ratios - map ") {
0141 setSingleIov(true);
0142 }
0143
0144 bool fill(const std::vector<std::tuple<cond::Time_t, cond::Hash> >& iovs) override {
0145 auto iov = iovs.front();
0146 std::shared_ptr<HcalPedestalWidths> payload = fetchPayload(std::get<1>(iov));
0147 if (payload.get()) {
0148 HcalPedestalWidthContainer* objContainer = new HcalPedestalWidthContainer(payload, std::get<0>(iov));
0149 std::string ImageName(m_imageFileName);
0150 objContainer->getCanvasAll("PhiProfile")->SaveAs(ImageName.c_str());
0151 return true;
0152 } else
0153 return false;
0154 }
0155 };
0156
0157
0158
0159
0160 class HcalPedestalWidthsPhiDiff : public cond::payloadInspector::PlotImage<HcalPedestalWidths> {
0161 public:
0162 HcalPedestalWidthsPhiDiff()
0163 : cond::payloadInspector::PlotImage<HcalPedestalWidths>("HCAL PedestalWidth Ratios difference") {
0164 setSingleIov(false);
0165 }
0166
0167 bool fill(const std::vector<std::tuple<cond::Time_t, cond::Hash> >& iovs) override {
0168 auto iov1 = iovs.front();
0169 auto iov2 = iovs.back();
0170
0171 std::shared_ptr<HcalPedestalWidths> payload1 = fetchPayload(std::get<1>(iov1));
0172 std::shared_ptr<HcalPedestalWidths> payload2 = fetchPayload(std::get<1>(iov2));
0173
0174 if (payload1.get() && payload2.get()) {
0175 HcalPedestalWidthContainer* objContainer1 = new HcalPedestalWidthContainer(payload1, std::get<0>(iov1));
0176 HcalPedestalWidthContainer* objContainer2 = new HcalPedestalWidthContainer(payload2, std::get<0>(iov2));
0177 objContainer2->Subtract(objContainer1);
0178 std::string ImageName(m_imageFileName);
0179 objContainer2->getCanvasAll("PhiProfile")->SaveAs(ImageName.c_str());
0180 return true;
0181 } else
0182 return false;
0183 }
0184 };
0185 }
0186
0187
0188 PAYLOAD_INSPECTOR_MODULE(HcalPedestalWidths) {
0189 PAYLOAD_INSPECTOR_CLASS(HcalPedestalWidthsPlot);
0190 PAYLOAD_INSPECTOR_CLASS(HcalPedestalWidthsDiff);
0191 PAYLOAD_INSPECTOR_CLASS(HcalPedestalWidthsPhiPlot);
0192 PAYLOAD_INSPECTOR_CLASS(HcalPedestalWidthsPhiDiff);
0193 PAYLOAD_INSPECTOR_CLASS(HcalPedestalWidthsEtaPlot);
0194 PAYLOAD_INSPECTOR_CLASS(HcalPedestalWidthsEtaDiff);
0195 }