File indexing completed on 2024-07-02 00:53:26
0001 #include "CondCore/Utilities/interface/PayloadInspectorModule.h"
0002 #include "CondCore/Utilities/interface/PayloadInspector.h"
0003 #include "CondCore/CondDB/interface/Time.h"
0004
0005
0006 #include "DataFormats/HcalDetId/interface/HcalDetId.h"
0007
0008 #include "Geometry/CaloTopology/interface/HcalTopology.h"
0009 #include "CondCore/HcalPlugins/interface/HcalObjRepresent.h"
0010
0011
0012 #include "CondFormats/HcalObjects/interface/HcalChannelQuality.h" //or ChannelStatus.h???
0013
0014 #include "TH2F.h"
0015 #include "TCanvas.h"
0016 #include "TLine.h"
0017 #include "TStyle.h"
0018 #include "TLatex.h"
0019 #include "TPave.h"
0020 #include "TPaveStats.h"
0021 #include <string>
0022 #include <fstream>
0023
0024 namespace {
0025
0026 class HcalChannelStatusContainer : public HcalObjRepresent::HcalDataContainer<HcalChannelQuality, HcalChannelStatus> {
0027 public:
0028 HcalChannelStatusContainer(std::shared_ptr<HcalChannelQuality> payload, unsigned int run)
0029 : HcalObjRepresent::HcalDataContainer<HcalChannelQuality, HcalChannelStatus>(payload, run) {}
0030 float getValue(const HcalChannelStatus* chan) override { return chan->getValue() / 32770; }
0031 };
0032
0033
0034
0035
0036 class HcalChannelQualityPlot : public cond::payloadInspector::PlotImage<HcalChannelQuality> {
0037 public:
0038 HcalChannelQualityPlot()
0039 : cond::payloadInspector::PlotImage<HcalChannelQuality>("HCAL ChannelStatus Ratios - map ") {
0040 setSingleIov(true);
0041 }
0042
0043 bool fill(const std::vector<std::tuple<cond::Time_t, cond::Hash> >& iovs) override {
0044 auto iov = iovs.front();
0045 std::shared_ptr<HcalChannelQuality> payload = fetchPayload(std::get<1>(iov));
0046 if (payload.get()) {
0047 HcalChannelStatusContainer* objContainer = new HcalChannelStatusContainer(payload, std::get<0>(iov));
0048 std::string ImageName(m_imageFileName);
0049 objContainer->getCanvasAll()->SaveAs(ImageName.c_str());
0050 return true;
0051 } else
0052 return false;
0053 }
0054 };
0055
0056 class HcalChannelQualityChange : public cond::payloadInspector::PlotImage<HcalChannelQuality> {
0057 public:
0058 HcalChannelQualityChange()
0059 : cond::payloadInspector::PlotImage<HcalChannelQuality>("HCAL ChannelStatus Ratios - map ") {
0060 setSingleIov(false);
0061 }
0062
0063 bool fill(const std::vector<std::tuple<cond::Time_t, cond::Hash> >& iovs) override {
0064 auto iov1 = iovs.front();
0065 auto iov2 = iovs.back();
0066 std::shared_ptr<HcalChannelQuality> payload1 = fetchPayload(std::get<1>(iov1));
0067 std::shared_ptr<HcalChannelQuality> payload2 = fetchPayload(std::get<1>(iov2));
0068 if (payload1.get() && payload2.get()) {
0069 HcalChannelStatusContainer* objContainer1 = new HcalChannelStatusContainer(payload1, std::get<0>(iov1));
0070 HcalChannelStatusContainer* objContainer2 = new HcalChannelStatusContainer(payload2, std::get<0>(iov2));
0071
0072 objContainer2->Subtract(objContainer1);
0073
0074
0075
0076
0077
0078
0079
0080 std::string ImageName(m_imageFileName);
0081 objContainer2->getCanvasAll()->SaveAs(ImageName.c_str());
0082 return true;
0083 } else
0084 return false;
0085 }
0086 };
0087 }
0088
0089
0090 PAYLOAD_INSPECTOR_MODULE(HcalChannelQuality) {
0091 PAYLOAD_INSPECTOR_CLASS(HcalChannelQualityPlot);
0092 PAYLOAD_INSPECTOR_CLASS(HcalChannelQualityChange);
0093 }