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.
1.7.1