File indexing completed on 2024-04-06 12:09:45
0001 #ifndef BTagDifferentialPlot_H
0002 #define BTagDifferentialPlot_H
0003
0004
0005
0006 #include "TH1F.h"
0007 #include "TCanvas.h"
0008
0009 #include <vector>
0010 #include <string>
0011
0012 #include "DQMOffline/RecoB/interface/EtaPtBin.h"
0013 #include "DQMOffline/RecoB/interface/JetTagPlotter.h"
0014 #include "DQMServices/Core/interface/DQMStore.h"
0015
0016 class BTagDifferentialPlot {
0017 public:
0018 typedef dqm::legacy::DQMStore DQMStore;
0019 typedef dqm::legacy::MonitorElement MonitorElement;
0020
0021 enum ConstVarType { constPT, constETA };
0022
0023 BTagDifferentialPlot(double bEff, const ConstVarType& constVariable, const std::string& tagName, unsigned int mc);
0024
0025 ~BTagDifferentialPlot();
0026
0027 void addBinPlotter(std::shared_ptr<JetTagPlotter> aPlotter) { theBinPlotters.push_back(aPlotter); }
0028
0029 void process(DQMStore::IBooker& ibook);
0030
0031 void epsPlot(const std::string& name);
0032
0033 void psPlot(const std::string& name);
0034
0035 void plot(TCanvas& theCanvas);
0036
0037 void plot(const std::string& name, const std::string& ext);
0038
0039
0040
0041 TH1F* getDifferentialHistoB_d() { return theDifferentialHistoB_d->getTH1F(); }
0042 TH1F* getDifferentialHistoB_u() { return theDifferentialHistoB_u->getTH1F(); }
0043 TH1F* getDifferentialHistoB_s() { return theDifferentialHistoB_s->getTH1F(); }
0044 TH1F* getDifferentialHistoB_c() { return theDifferentialHistoB_c->getTH1F(); }
0045 TH1F* getDifferentialHistoB_b() { return theDifferentialHistoB_b->getTH1F(); }
0046 TH1F* getDifferentialHistoB_g() { return theDifferentialHistoB_g->getTH1F(); }
0047 TH1F* getDifferentialHistoB_ni() { return theDifferentialHistoB_ni->getTH1F(); }
0048 TH1F* getDifferentialHistoB_dus() { return theDifferentialHistoB_dus->getTH1F(); }
0049 TH1F* getDifferentialHistoB_dusg() { return theDifferentialHistoB_dusg->getTH1F(); }
0050 TH1F* getDifferentialHistoB_pu() { return theDifferentialHistoB_pu->getTH1F(); }
0051
0052 private:
0053 void setVariableName();
0054
0055 void bookHisto(DQMStore::IBooker& ibook);
0056
0057 void fillHisto();
0058 std::pair<double, double> getMistag(const double& fixedBEfficiency, TH1F* effPurHist);
0059
0060
0061 double fixedBEfficiency;
0062
0063
0064 bool noProcessing;
0065 bool processed;
0066
0067 ConstVarType constVar;
0068
0069 std::string constVariableName;
0070
0071 std::string diffVariableName;
0072
0073
0074 std::pair<double, double> constVariableValue;
0075
0076
0077 std::string commonName;
0078
0079
0080 std::vector<std::shared_ptr<JetTagPlotter>> theBinPlotters;
0081
0082
0083 MonitorElement* theDifferentialHistoB_d;
0084 MonitorElement* theDifferentialHistoB_u;
0085 MonitorElement* theDifferentialHistoB_s;
0086 MonitorElement* theDifferentialHistoB_c;
0087 MonitorElement* theDifferentialHistoB_b;
0088 MonitorElement* theDifferentialHistoB_g;
0089 MonitorElement* theDifferentialHistoB_ni;
0090 MonitorElement* theDifferentialHistoB_dus;
0091 MonitorElement* theDifferentialHistoB_dusg;
0092 MonitorElement* theDifferentialHistoB_pu;
0093
0094
0095 unsigned int mcPlots_;
0096 };
0097
0098 #endif