From 6a86a76608e455a8e837b954f81162df252860be Mon Sep 17 00:00:00 2001 From: Marius Pfeiffer Date: Wed, 8 Nov 2023 17:25:56 +0100 Subject: [PATCH] finish implementation of and use DrawVar --- general_cuts.cpp | 124 ++++++++++++++++++++++++++++------------------- 1 file changed, 75 insertions(+), 49 deletions(-) diff --git a/general_cuts.cpp b/general_cuts.cpp index 27bfaca..2fe67d6 100644 --- a/general_cuts.cpp +++ b/general_cuts.cpp @@ -32,34 +32,58 @@ const int nBins = 200; template class DrawVar { - private: - std::string _identifier; - TVar _min; - TVar _max; - TVar _value = TVar{}; - TH1 *_histogram = nullptr; - - public: - DrawVar(std::string identifier, TVar min, TVar max) - : _identifier { identifier }, _min { min }, _max { max } - { - } +private: + std::string _identifier; + TVar _min; + TVar _max; + TVar _value = TVar{}; + TH1 *_histogram = nullptr; + +public: + DrawVar(std::string identifier, TVar min, TVar max) + : _identifier{identifier}, _min{min}, _max{max} + { + } - std::string getIdentifier() { - return _identifier; - } + std::string getId() + { + return _identifier; + } - TVar getMin() { - return _min; - } + const char *getIdStr() + { + return _identifier.c_str(); + } - TVar getMax() { - return _max; - } + TVar getMin() + { + return _min; + } - TVar* getValuePointer() { - return &_value; - } + TVar getMax() + { + return _max; + } + + TVar *getValuePointer() + { + return &_value; + } + + TVar getValue() + { + return _value; + } + + TH1 *getHist() + { + return _histogram; + } + + void setHist(TH1D *hist) + { + _histogram = hist; + } }; int general_cuts() @@ -84,8 +108,7 @@ int general_cuts() gStyle->SetOptFit(0); std::vector> float_vars{ - DrawVar{"B0_PT", 0., 20000.} - }; + DrawVar("B0_PT", 0., 20000.)}; std::vector> double_vars{ }; @@ -107,16 +130,14 @@ int general_cuts() for (size_t i = 0; i < float_vars.size(); i++) { - auto the_var = &float_vars[i]; - chain->SetBranchAddress(the_var->identifier.c_str(), &(the_var->value)); - the_var->histogram = new TH1D(TString::Format("h1_%s", the_var->identifier.c_str()).Data(), the_var->identifier.c_str(), nBins, the_var->min, the_var->max); + chain->SetBranchAddress(float_vars[i].getIdStr(), float_vars[i].getValuePointer()); + float_vars[i].setHist(new TH1D(TString::Format("h1_%s", float_vars[i].getIdStr()).Data(), float_vars[i].getIdStr(), nBins, float_vars[i].getMin(), float_vars[i].getMax())); } for (size_t i = 0; i < double_vars.size(); i++) { - auto the_var = &double_vars[i]; - chain->SetBranchAddress(the_var->identifier.c_str(), &(the_var->value)); - the_var->histogram = new TH1D(TString::Format("h1_%s", the_var->identifier.c_str()).Data(), the_var->identifier.c_str(), nBins, the_var->min, the_var->max); + chain->SetBranchAddress(double_vars[i].getIdStr(), double_vars[i].getValuePointer()); + double_vars[i].setHist(new TH1D(TString::Format("h1_%s", double_vars[i].getIdStr()).Data(), double_vars[i].getIdStr(), nBins, double_vars[i].getMin(), double_vars[i].getMax())); } unsigned int entries = chain->GetEntries(); @@ -128,12 +149,12 @@ int general_cuts() for (size_t i = 0; i < float_vars.size(); i++) { - float_vars[i].histogram->Fill(float_vars[i].value); + float_vars[i].getHist()->Fill(float_vars[i].getValue()); } for (size_t i = 0; i < double_vars.size(); i++) { - double_vars[i].histogram->Fill(double_vars[i].value); + double_vars[i].getHist()->Fill(double_vars[i].getValue()); } } @@ -143,28 +164,33 @@ int general_cuts() c1->Draw(); - TCanvas *c2 = new TCanvas("c2", "Canvas 2", 0, 0, 1200, 600); - c2->Divide(4, 2); - - for (size_t i = 0; i < float_vars.size(); i++) + if (float_vars.size() > 0) { - c2->cd(i+1); - float_vars[i].histogram->Draw(); - } + TCanvas *c2 = new TCanvas("c2", "Canvas 2", 0, 0, 1200, 600); + c2->Divide(4, 2); - c2->Draw(); + for (size_t i = 0; i < float_vars.size(); i++) + { + c2->cd(i + 1); + float_vars[i].getHist()->Draw(); + } - TCanvas *c3 = new TCanvas("c3", "Canvas 3", 0, 0, 1200, 600); - c3->Divide(4, 2); + c2->Draw(); + } - for (size_t i = 0; i < double_vars.size(); i++) + if (double_vars.size() > 0) { - c3->cd(i+1); - double_vars[i].histogram->Draw(); - } + TCanvas *c3 = new TCanvas("c3", "Canvas 3", 0, 0, 1200, 600); + c3->Divide(4, 2); - c3->Draw(); + for (size_t i = 0; i < double_vars.size(); i++) + { + c3->cd(i + 1); + double_vars[i].getHist()->Draw(); + } + c3->Draw(); + } return 0; } \ No newline at end of file