A class for ... More...
#include <BCMTFChannel.h>
Public Member Functions | |
BCMTFChannel (const char *name) | |
~BCMTFChannel () | |
void | SetName (const char *name) |
void | SetData (BCMTFTemplate *bctemplate) |
void | SetFlagChannelActive (bool flag) |
std::string | GetName () |
BCMTFTemplate * | GetTemplate (int index) |
BCMTFSystematicVariation * | GetSystematicVariation (int index) |
BCMTFTemplate * | GetData () |
bool | GetFlagChannelActive () |
void | AddTemplate (BCMTFTemplate *bctemplate) |
void | AddSystematicVariation (BCMTFSystematicVariation *variation) |
void | PrintTemplates (const char *filename) |
void | PrintTemplate (int index, const char *filename) |
Private Attributes | |
std::string | fName |
BCMTFTemplate * | fData |
std::vector< BCMTFTemplate * > | fTemplateContainer |
std::vector < BCMTFSystematicVariation * > | fSystematicVariationContainer |
bool | fFlagChannelActive |
A class for ...
Definition at line 34 of file BCMTFChannel.h.
BCMTFChannel::BCMTFChannel | ( | const char * | name | ) |
Definition at line 21 of file BCMTFChannel.cxx.
: fData(0) , fFlagChannelActive(true) { fName = name; }
BCMTFChannel::~BCMTFChannel | ( | ) |
Definition at line 29 of file BCMTFChannel.cxx.
{ if (fData) delete fData; for (unsigned int i = 0; i < fTemplateContainer.size(); ++i) delete (fTemplateContainer.at(i)); for (unsigned int i = 0; i < fSystematicVariationContainer.size(); ++i) delete (fSystematicVariationContainer.at(i)); }
void BCMTFChannel::AddSystematicVariation | ( | BCMTFSystematicVariation * | variation | ) | [inline] |
Definition at line 84 of file BCMTFChannel.h.
{ fSystematicVariationContainer.push_back(variation); };
void BCMTFChannel::AddTemplate | ( | BCMTFTemplate * | bctemplate | ) | [inline] |
Definition at line 80 of file BCMTFChannel.h.
{ fTemplateContainer.push_back(bctemplate); };
BCMTFTemplate* BCMTFChannel::GetData | ( | ) | [inline] |
Definition at line 70 of file BCMTFChannel.h.
{ return fData; };
bool BCMTFChannel::GetFlagChannelActive | ( | ) | [inline] |
Definition at line 74 of file BCMTFChannel.h.
{ return fFlagChannelActive; };
std::string BCMTFChannel::GetName | ( | ) | [inline] |
Definition at line 58 of file BCMTFChannel.h.
{ return fName; };
BCMTFSystematicVariation* BCMTFChannel::GetSystematicVariation | ( | int | index | ) | [inline] |
Definition at line 66 of file BCMTFChannel.h.
{ return fSystematicVariationContainer.at(index); };
BCMTFTemplate* BCMTFChannel::GetTemplate | ( | int | index | ) | [inline] |
Definition at line 62 of file BCMTFChannel.h.
{ return fTemplateContainer.at(index); };
void BCMTFChannel::PrintTemplate | ( | int | index, | |
const char * | filename | |||
) |
Definition at line 107 of file BCMTFChannel.cxx.
{ // create new canvas TCanvas * c1 = new TCanvas(); c1->cd(); // get number of systematics unsigned int nsystematics = fSystematicVariationContainer.size(); // draw template GetTemplate(index)->GetHistogram()->Draw(); // print to file if (nsystematics == 0) c1->Print(filename); else c1->Print( (std::string(filename)+std::string("(")).c_str() ); // loop over systematics for (unsigned int isystematic = 0; isystematic < nsystematics; ++isystematic) { c1->cd(); // check that histogram exists if (!GetSystematicVariation(isystematic)->GetHistogramUp(index) || !GetSystematicVariation(isystematic)->GetHistogramDown(index)) continue; // get histogram TH1D hist = TH1D(*GetTemplate(index)->GetHistogram()); TH1D hist_up(hist); TH1D hist_down(hist); // set style hist.SetFillStyle(0); hist_up.SetFillStyle(0); hist_up.SetLineStyle(2); hist_down.SetFillStyle(0); hist_down.SetLineStyle(3); // get efficiency double efficiency = GetTemplate(index)->GetEfficiency(); // scale histogram hist.Scale(efficiency/ hist.Integral()); // loop over all bins for (int i = 1; i <= hist.GetNbinsX(); ++i) { hist.SetBinContent(i, GetTemplate(index)->GetHistogram()->GetBinContent(i)); hist_up.SetBinContent(i, hist.GetBinContent(i) * (1.0 + GetSystematicVariation(isystematic)->GetHistogramUp(index)->GetBinContent(i))); hist_down.SetBinContent(i, hist.GetBinContent(i) * (1.0 - GetSystematicVariation(isystematic)->GetHistogramDown(index)->GetBinContent(i))); } // draw histogram hist_up.Draw("HIST"); hist.Draw("HISTSAME"); hist_down.Draw("HISTSAME"); if (isystematic < nsystematics-1) c1->Print(filename); else c1->Print( (std::string(filename)+std::string(")")).c_str() ); } // free memory delete c1; }
void BCMTFChannel::PrintTemplates | ( | const char * | filename | ) |
Definition at line 42 of file BCMTFChannel.cxx.
{ // create new canvas TCanvas * c1 = new TCanvas(); c1->Divide(2, 2); std::string f(filename); // get number of templates unsigned int ntemplates = fTemplateContainer.size(); // calculate number of pages unsigned int npages = ntemplates / 4; if (ntemplates % 4 > 0) npages++; // loop over pages for (unsigned int i = 0; i < npages; ++i) { // loop over pads for (unsigned int j = 0; j < 4; ++j) { // calculate template index unsigned int templateindex = 4 * i + j; if (templateindex < ntemplates && GetTemplate(templateindex)->GetHistogram()) { // cd into pad c1->cd(j+1); // get histogram TH1D * hist = new TH1D( *( (TH1D *) GetTemplate(templateindex)->GetHistogram()->Clone() ) ); // get efficiency double efficiency = GetTemplate(templateindex)->GetEfficiency(); // scale histogram hist->Scale(efficiency/hist->Integral()); // draw histogram hist->Draw("HIST"); } else { // clear pad c1->cd(j+1)->Clear(); } } if (npages == 1) c1->Print(f.c_str()); else if (i == 0) { c1->Print( (f+std::string("[")).c_str() ); c1->Print(f.c_str()); } else if (i < npages-1) { c1->Print(f.c_str()); } else { c1->Print(f.c_str()); c1->Print( (f+std::string("]")).c_str() ); } } // free memory delete c1; }
void BCMTFChannel::SetData | ( | BCMTFTemplate * | bctemplate | ) | [inline] |
Definition at line 50 of file BCMTFChannel.h.
{ fData = bctemplate; };
void BCMTFChannel::SetFlagChannelActive | ( | bool | flag | ) | [inline] |
Definition at line 54 of file BCMTFChannel.h.
{ fFlagChannelActive = flag; };
void BCMTFChannel::SetName | ( | const char * | name | ) | [inline] |
Definition at line 46 of file BCMTFChannel.h.
{ fName = name; };
BCMTFTemplate* BCMTFChannel::fData [private] |
Definition at line 99 of file BCMTFChannel.h.
bool BCMTFChannel::fFlagChannelActive [private] |
Definition at line 108 of file BCMTFChannel.h.
std::string BCMTFChannel::fName [private] |
Definition at line 96 of file BCMTFChannel.h.
std::vector<BCMTFSystematicVariation *> BCMTFChannel::fSystematicVariationContainer [private] |
Definition at line 105 of file BCMTFChannel.h.
std::vector<BCMTFTemplate *> BCMTFChannel::fTemplateContainer [private] |
Definition at line 102 of file BCMTFChannel.h.