19 #include "BCMTFTemplate.h"
20 #include "BCMTFSystematicVariation.h"
22 #include "BCMTFChannel.h"
27 , fFlagChannelActive(true)
28 , fHistUncertaintyBandExpectation(0)
29 , fHistUncertaintyBandPoisson(0)
40 for (
unsigned int i = 0; i < fTemplateContainer.size(); ++i)
41 delete (fTemplateContainer.at(i));
43 for (
unsigned int i = 0; i < fSystematicVariationContainer.size(); ++i)
44 delete (fSystematicVariationContainer.at(i));
59 if ( (filename.find_last_of(
".") != std::string::npos) &&
60 (filename.substr(filename.find_last_of(
".")+1) ==
"pdf") ) {
64 else if ( (filename.find_last_of(
".") != std::string::npos) &&
65 (filename.substr(filename.find_last_of(
".")+1) ==
"ps") ) {
74 TCanvas * c1 =
new TCanvas();
78 int ntemplates = int(fTemplateContainer.size());
84 for (
int i = 0; i < ntemplates; ++i) {
88 if (first_hist < 0 && temphist)
96 if ( first_hist < 0 ) {
104 for (
int i = 0; i < ntemplates; ++i) {
109 TLatex* l =
new TLatex();
118 if (i == first_hist && (first_hist != last_hist))
119 c1->Print(std::string( filename +
"(").c_str());
120 else if (i == last_hist && (first_hist != last_hist))
121 c1->Print(std::string( filename +
")").c_str());
124 c1->Print(filename.c_str());
139 TCanvas * c1 =
new TCanvas();
143 unsigned int nsystematics = fSystematicVariationContainer.size();
149 if (nsystematics == 0)
152 c1->Print( (std::string(filename)+std::string(
"(")).c_str() );
155 for (
unsigned int isystematic = 0; isystematic < nsystematics; ++isystematic) {
164 TH1D hist = TH1D(*
GetTemplate(index)->GetHistogram());
166 TH1D hist_down(hist);
169 hist.SetFillStyle(0);
170 hist_up.SetFillStyle(0);
171 hist_up.SetLineStyle(2);
172 hist_down.SetFillStyle(0);
173 hist_down.SetLineStyle(3);
179 hist.Scale(efficiency/ hist.Integral());
182 for (
int i = 1; i <= hist.GetNbinsX(); ++i) {
183 hist.SetBinContent(i,
GetTemplate(index)->GetHistogram()->GetBinContent(i));
189 hist_up.Draw(
"HIST");
190 hist.Draw(
"HISTSAME");
191 hist_down.Draw(
"HISTSAME");
193 if (isystematic < nsystematics-1)
196 c1->Print( (std::string(filename)+std::string(
")")).c_str() );
207 TCanvas * c1 =
new TCanvas();
211 fHistUncertaintyBandExpectation->Draw(
"COLZ");
225 int nbinsy_exp = fHistUncertaintyBandExpectation->GetNbinsY();
226 int nbinsx_poisson = fHistUncertaintyBandPoisson->GetNbinsX();
227 int nbinsy_poisson = fHistUncertaintyBandPoisson->GetNbinsY();
230 for (
int ix = 1; ix <= nbinsx_poisson; ++ix) {
233 for (
int iy = 1; iy <= nbinsy_exp; ++iy) {
234 double w = fHistUncertaintyBandExpectation->GetBinContent(ix, iy);
238 for (
int iy = 1; iy <= nbinsy_exp; ++iy) {
239 double w = fHistUncertaintyBandExpectation->GetBinContent(ix, iy)/sum_w;
240 double expectation = fHistUncertaintyBandExpectation->GetYaxis()->GetBinCenter(iy);
242 for (
int jbin = 1; jbin <= nbinsy_poisson; ++jbin) {
243 double p = TMath::Poisson(
double(jbin-1), expectation);
244 double bincontent = 0;
246 bincontent=fHistUncertaintyBandPoisson->GetBinContent(ix, jbin);
247 fHistUncertaintyBandPoisson->SetBinContent(ix, jbin, bincontent+p*w);
258 hist->SetMarkerSize(0);
259 hist->SetFillColor(color);
260 hist->SetFillStyle(1001);
262 int nbinsx_poisson = fHistUncertaintyBandPoisson->GetNbinsX();
263 int nbinsy_poisson = fHistUncertaintyBandPoisson->GetNbinsY();
266 for (
int ix = 1; ix <= nbinsx_poisson; ++ix) {
269 int limit_max = nbinsx_poisson-1;
272 for (
int jbin = 1; jbin <= nbinsy_poisson; ++jbin) {
273 double p = fHistUncertaintyBandPoisson->GetBinContent(ix, jbin);
277 if (sum_p > maximum && (sum_p - p) < maximum )
282 double ylimit_min = fHistUncertaintyBandPoisson->GetYaxis()->GetBinCenter(limit_min);
283 double ylimit_max = fHistUncertaintyBandPoisson->GetYaxis()->GetBinCenter(limit_max);
284 hist->SetBinContent(ix, 0.5*
double(ylimit_min+ylimit_max));
285 hist->SetBinError(ix, 0.5*
double(ylimit_max-ylimit_min));
295 TCanvas * c1 =
new TCanvas();
301 TH2D hist(*fHistUncertaintyBandPoisson);
303 int nbinsx_poisson = hist.GetNbinsX();
304 int nbinsy_poisson = hist.GetNbinsY();
307 for (
int ix = 1; ix <= nbinsx_poisson; ++ix) {
311 for (
int jbin = 1; jbin <= nbinsy_poisson; ++jbin) {
312 double p = hist.GetBinContent(ix, jbin);
314 hist.SetBinContent(ix, jbin, sum_p);
333 TCanvas * c1 =
new TCanvas();
340 fHistUncertaintyBandPoisson->Draw(options);
354 TCanvas * c1 =
new TCanvas();
TH1D * CalculateUncertaintyBandPoisson(double minimum, double maximumm, int color)
void PrintHistUncertaintyBandExpectation(const char *filename)
void PrintTemplates(std::string filename)
BCMTFChannel(const char *name)
BCMTFTemplate * GetTemplate(int index)
BCMTFSystematicVariation * GetSystematicVariation(int index)
TH1D * GetHistogramUp(int index)
void PrintHistCumulativeUncertaintyBandPoisson(const char *filename)
std::string GetProcessName()
void CalculateHistUncertaintyBandPoisson()
void PrintUncertaintyBandPoisson(const char *filename, double minimum, double maximum, int color)
void PrintHistUncertaintyBandPoisson(const char *filename, const char *options="COLZ")
TH1D * GetHistogramDown(int index)
void PrintTemplate(int index, const char *filename)