Back to home page

Project CMSSW displayed by LXR

 
 

    


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 //#include "DataFormats/EcalDetId/interface/EBDetId.h"
0005 //#include "DataFormats/EcalDetId/interface/EEDetId.h"
0006 #include "DataFormats/HcalDetId/interface/HcalDetId.h"
0007 //#include "Geometry/HcalCommonData/interface/HcalTopologyMode.h"
0008 #include "Geometry/CaloTopology/interface/HcalTopology.h"
0009 #include "CondCore/HcalPlugins/interface/HcalObjRepresent.h"
0010 
0011 // the data format of the condition to be inspected
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      2d plot of ECAL ChannelStatusRatios of 1 IOV
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     }  // fill method
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         //        std::map< std::pair< std::string, int >, TH2F* > depths = objContainer1->GetDepths();
0075         //
0076         //
0077         //        TODO: How do I display this?
0078         //
0079         //
0080         std::string ImageName(m_imageFileName);
0081         objContainer2->getCanvasAll()->SaveAs(ImageName.c_str());
0082         return true;
0083       } else
0084         return false;
0085     }  // fill method
0086   };
0087 }  // namespace
0088 
0089 // Register the classes as boost python plugin
0090 PAYLOAD_INSPECTOR_MODULE(HcalChannelQuality) {
0091   PAYLOAD_INSPECTOR_CLASS(HcalChannelQualityPlot);
0092   PAYLOAD_INSPECTOR_CLASS(HcalChannelQualityChange);
0093 }