File indexing completed on 2024-04-06 12:01:40
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 "CondCore/HcalPlugins/interface/HcalObjRepresent.h"
0006
0007
0008 #include "CondFormats/HcalObjects/interface/HcalSiPMCharacteristics.h"
0009
0010 #include "TH2F.h"
0011 #include "TCanvas.h"
0012 #include "TLine.h"
0013 #include "TStyle.h"
0014 #include "TLatex.h"
0015 #include "TPave.h"
0016 #include "TPaveStats.h"
0017 #include <string>
0018 #include <fstream>
0019
0020 namespace {
0021
0022
0023
0024
0025 class HcalSiPMCharacteristicsSummary : public cond::payloadInspector::PlotImage<HcalSiPMCharacteristics> {
0026 public:
0027 HcalSiPMCharacteristicsSummary()
0028 : cond::payloadInspector::PlotImage<HcalSiPMCharacteristics>("HCAL RecoParam Ratios - map ") {
0029 setSingleIov(true);
0030 }
0031
0032 bool fill(const std::vector<std::tuple<cond::Time_t, cond::Hash> >& iovs) override {
0033 auto iov = iovs.front();
0034 std::shared_ptr<HcalSiPMCharacteristics> payload = fetchPayload(std::get<1>(iov));
0035 if (payload.get()) {
0036 std::string subDetName;
0037 std::vector<HcalSiPMCharacteristics> itemsVec;
0038 std::pair<std::string, int> valMap;
0039
0040
0041
0042 TLatex label, val;
0043 TLine* ll;
0044 TCanvas* can = new TCanvas("RecoParamsSummary", "RecoParamsSummary", 2400, 1680);
0045 can->cd();
0046
0047
0048 label.SetNDC();
0049 label.SetTextAlign(26);
0050 label.SetTextSize(0.05);
0051 label.SetTextColor(2);
0052 label.DrawLatex(0.5, 0.96, Form("Hcal SiPM Characteristics"));
0053 std::vector<float> line;
0054 HcalObjRepresent::drawTable(7, 6);
0055
0056 int nTypes = payload->getTypes();
0057 float startPosY = 0.9, endPosY = 0.1;
0058 float startPosX = 0.03, endPosX = 0.92;
0059 int type;
0060 std::vector<float>::iterator linEle;
0061 std::vector<std::string>::iterator linStrEle;
0062 int j = 0;
0063 float xDiff, yDiff;
0064
0065 std::vector<std::string> lblline = {
0066 "Type", "Pixels", "parLin1", "parLin2", "parLin3", "crossTalk"};
0067 xDiff = (endPosX - startPosX) / (lblline.size() - 1);
0068 yDiff = (startPosY - endPosY) / nTypes;
0069
0070 label.SetTextAlign(12);
0071 label.SetTextSize(0.05);
0072 label.SetTextColor(1);
0073 ll = new TLine(
0074 startPosX - 0.2 * xDiff, startPosY + 0.5 * yDiff, startPosX - 0.2 * xDiff, startPosY - 0.5 * yDiff);
0075 ll->Draw();
0076 for (linStrEle = lblline.begin(); linStrEle != lblline.end(); ++linStrEle) {
0077 ll = new TLine(startPosX + (j + 0.5) * xDiff,
0078 startPosY + 0.5 * yDiff,
0079 startPosX + (j + 0.5) * xDiff,
0080 startPosY - 0.5 * yDiff);
0081 label.DrawLatex(startPosX + (j == 0 ? -0.1 : (j - 0.4)) * xDiff, startPosY, (*linStrEle).c_str());
0082 ll->Draw();
0083 j++;
0084 }
0085 ll = new TLine(0, startPosY - 0.5 * yDiff, 1, startPosY - 0.5 * yDiff);
0086 ll->Draw();
0087
0088 val.SetNDC();
0089 val.SetTextAlign(26);
0090 val.SetTextSize(0.035);
0091 for (int i = 0; i < nTypes; i++) {
0092 type = payload->getType(i);
0093
0094 line = {(float)type,
0095 (float)payload->getPixels(type),
0096 payload->getNonLinearities(type).at(0),
0097 payload->getNonLinearities(type).at(1),
0098 payload->getNonLinearities(type).at(2),
0099 payload->getCrossTalk(type)};
0100 ll = new TLine(startPosX - 0.2 * xDiff,
0101 startPosY - (i + 0.5) * yDiff,
0102 startPosX - 0.2 * xDiff,
0103 startPosY - (i + 1.5) * yDiff);
0104 ll->Draw();
0105 j = 0;
0106
0107 for (linEle = line.begin(); linEle != line.end(); ++linEle) {
0108 ll = new TLine(startPosX + (j + 0.5) * xDiff,
0109 startPosY - (i + 0.5) * yDiff,
0110 startPosX + (j + 0.5) * xDiff,
0111 startPosY - (i + 1.5) * yDiff);
0112 val.DrawLatex(
0113 startPosX + j * xDiff, startPosY - (i + 1) * yDiff, HcalObjRepresent::SciNotatStr((*linEle)).c_str());
0114 ll->Draw();
0115 j++;
0116 }
0117 }
0118
0119 std::string ImageName(m_imageFileName);
0120 can->SaveAs(ImageName.c_str());
0121 return false;
0122 } else
0123 return false;
0124 }
0125 };
0126
0127
0128 }
0129
0130
0131 PAYLOAD_INSPECTOR_MODULE(HcalSiPMCharacteristics) { PAYLOAD_INSPECTOR_CLASS(HcalSiPMCharacteristicsSummary); }