Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2023-03-17 10:46:20

0001 /*!
0002   \file SiPixelQualityProbabilities_PayloadInspector
0003   \Payload Inspector Plugin for SiPixelQualityProbabilities
0004   \author M. Musich
0005   \version $Revision: 1.0 $
0006   \date $Date: 2019/10/22 19:16:00 $
0007 */
0008 
0009 #include "FWCore/MessageLogger/interface/MessageLogger.h"
0010 
0011 #include "CondCore/Utilities/interface/PayloadInspectorModule.h"
0012 #include "CondCore/Utilities/interface/PayloadInspector.h"
0013 #include "CondCore/CondDB/interface/Time.h"
0014 #include "CondCore/SiPixelPlugins/interface/SiPixelPayloadInspectorHelper.h"
0015 #include "FWCore/ParameterSet/interface/FileInPath.h"
0016 #include "CalibTracker/StandaloneTrackerTopology/interface/StandaloneTrackerTopology.h"
0017 
0018 // the data format of the condition to be inspected
0019 #include "CondFormats/SiPixelObjects/interface/SiPixelQualityProbabilities.h"
0020 #include "DataFormats/SiPixelDetId/interface/PixelSubdetector.h"
0021 #include "DataFormats/DetId/interface/DetId.h"
0022 #include "FWCore/MessageLogger/interface/MessageLogger.h"
0023 
0024 #include <memory>
0025 #include <sstream>
0026 #include <iostream>
0027 
0028 // include ROOT
0029 #include "TH2F.h"
0030 #include "TLegend.h"
0031 #include "TCanvas.h"
0032 #include "TLine.h"
0033 #include "TGraph.h"
0034 #include "TGaxis.h"
0035 #include "TStyle.h"
0036 #include "TLatex.h"
0037 #include "TPave.h"
0038 #include "TPaveStats.h"
0039 
0040 namespace {
0041 
0042   using namespace cond::payloadInspector;
0043 
0044   /************************************************
0045   1d histogram of SiPixelQualityProbabilities of 1 IOV 
0046   *************************************************/
0047 
0048   class SiPixelQualityProbabilitiesScenariosCount : public PlotImage<SiPixelQualityProbabilities, SINGLE_IOV> {
0049   public:
0050     SiPixelQualityProbabilitiesScenariosCount()
0051         : PlotImage<SiPixelQualityProbabilities, SINGLE_IOV>("SiPixelQualityProbabilities scenarios count") {}
0052 
0053     bool fill() override {
0054       auto tag = PlotBase::getTag<0>();
0055       auto iov = tag.iovs.front();
0056       std::shared_ptr<SiPixelQualityProbabilities> payload = fetchPayload(std::get<1>(iov));
0057       auto PUbins = payload->getPileUpBins();
0058       auto span = PUbins.back() - PUbins.front();
0059 
0060       TGaxis::SetMaxDigits(3);
0061 
0062       TCanvas canvas("Canv", "Canv", 1200, 1000);
0063       canvas.cd();
0064       auto h1 = std::make_unique<TH1F>("Count",
0065                                        "SiPixelQualityProbablities Scenarios count;PU bin;n. of scenarios",
0066                                        span,
0067                                        PUbins.front(),
0068                                        PUbins.back());
0069       h1->SetStats(false);
0070 
0071       canvas.SetTopMargin(0.06);
0072       canvas.SetBottomMargin(0.12);
0073       canvas.SetLeftMargin(0.12);
0074       canvas.SetRightMargin(0.05);
0075       canvas.Modified();
0076 
0077       for (const auto &bin : PUbins) {
0078         h1->SetBinContent(bin + 1, payload->nelements(bin));
0079       }
0080 
0081       h1->SetTitle("");
0082       h1->GetYaxis()->SetRangeUser(0., h1->GetMaximum() * 1.30);
0083       h1->SetFillColor(kRed);
0084       h1->SetMarkerStyle(20);
0085       h1->SetMarkerSize(1);
0086       h1->Draw("bar2");
0087 
0088       SiPixelPI::makeNicePlotStyle(h1.get());
0089 
0090       canvas.Update();
0091 
0092       TLegend legend = TLegend(0.40, 0.88, 0.95, 0.94);
0093       legend.SetHeader(("Payload hash: #bf{" + (std::get<1>(iov)) + "}").c_str(),
0094                        "C");  // option "C" allows to center the header
0095       //legend.AddEntry(h1.get(), ("IOV: " + std::to_string(std::get<0>(iov))).c_str(), "PL");
0096       legend.SetTextSize(0.025);
0097       legend.Draw("same");
0098 
0099       auto ltx = TLatex();
0100       ltx.SetTextFont(62);
0101       //ltx.SetTextColor(kBlue);
0102       ltx.SetTextSize(0.05);
0103       ltx.SetTextAlign(11);
0104       ltx.DrawLatexNDC(gPad->GetLeftMargin() + 0.1,
0105                        1 - gPad->GetTopMargin() + 0.01,
0106                        ("SiPixelQualityProbabilities IOV:" + std::to_string(std::get<0>(iov))).c_str());
0107 
0108       std::string fileName(m_imageFileName);
0109       canvas.SaveAs(fileName.c_str());
0110 
0111       return true;
0112     }
0113   };
0114 
0115 }  // namespace
0116 
0117 // Register the classes as boost python plugin
0118 PAYLOAD_INSPECTOR_MODULE(SiPixelQualityProbabilities) {
0119   PAYLOAD_INSPECTOR_CLASS(SiPixelQualityProbabilitiesScenariosCount);
0120 }