File indexing completed on 2024-04-06 12:28:24
0001 #ifndef _StackValidation_
0002 #define _StackValidation_
0003
0004 #include "Common.hh"
0005
0006 #include "TEfficiency.h"
0007 #include "TGraphAsymmErrors.h"
0008
0009 struct RateOpts {
0010 RateOpts() {}
0011 RateOpts(const TString& dir, const TString& sORr, const TString& rate) : dir(dir), sORr(sORr), rate(rate) {}
0012
0013 TString dir;
0014 TString sORr;
0015 TString rate;
0016 };
0017 typedef std::vector<RateOpts> ROVec;
0018
0019 namespace {
0020 TString ref;
0021 TString refdir;
0022 void setupRef(const Bool_t cmsswComp) {
0023 ref = (cmsswComp ? "cmssw" : "sim");
0024 refdir = (cmsswComp ? "_cmssw" : "");
0025 }
0026
0027 ROVec rates;
0028 UInt_t nrates;
0029 void setupRates(const Bool_t cmsswComp) {
0030 rates.emplace_back("efficiency", ref, "eff");
0031 rates.emplace_back("inefficiency", ref, "ineff_brl");
0032 rates.emplace_back("inefficiency", ref, "ineff_trans");
0033 rates.emplace_back("inefficiency", ref, "ineff_ec");
0034 rates.emplace_back("fakerate", "reco", "fr");
0035 rates.emplace_back("duplicaterate", ref, "dr");
0036
0037
0038 nrates = rates.size();
0039 }
0040
0041 std::vector<TString> ptcuts;
0042 UInt_t nptcuts;
0043 void setupPtCuts() {
0044 std::vector<Float_t> tmp_ptcuts = {0.f, 0.9f, 2.f};
0045
0046 for (const auto tmp_ptcut : tmp_ptcuts) {
0047 TString ptcut = Form("%3.1f", tmp_ptcut);
0048 ptcut.ReplaceAll(".", "p");
0049 ptcuts.emplace_back(ptcut);
0050 }
0051
0052
0053 nptcuts = ptcuts.size();
0054 }
0055 };
0056
0057 class StackValidation {
0058 public:
0059 StackValidation(const TString& label, const TString& extra, const Bool_t cmsswComp, const TString& suite);
0060 ~StackValidation();
0061 void MakeValidationStacks();
0062 void MakeRatioStacks(const TString& trk);
0063 void MakeKinematicDiffStacks(const TString& trk);
0064 void MakeQualityStacks(const TString& trk);
0065
0066 private:
0067 const TString label;
0068 const TString extra;
0069 const Bool_t cmsswComp;
0070 const TString suite;
0071
0072
0073 Double_t y1;
0074 Double_t y2;
0075
0076 std::vector<TFile*> files;
0077 };
0078
0079 #endif