本文整理汇总了C++中THStack::SetMinimum方法的典型用法代码示例。如果您正苦于以下问题:C++ THStack::SetMinimum方法的具体用法?C++ THStack::SetMinimum怎么用?C++ THStack::SetMinimum使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类THStack
的用法示例。
在下文中一共展示了THStack::SetMinimum方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: DrawEmpirical
void DrawEmpirical(const char* filename="Empirical.root",
Bool_t fmd=true)
{
gStyle->SetOptTitle(0);
TFile* file = TFile::Open(filename, "READ");
if (!file) return;
Double_t yr = 0.3;
TCanvas* c = new TCanvas("c","c", 1000,1000);
TPad* p1 = new TPad("p1","p1",0,0,1,yr);
TPad* p2 = new TPad("p2","p2",0,yr,1,1);
c->cd(); p1->Draw();
c->cd(); p2->Draw();
gDirectory->cd("Forward");
THStack* r = DrawOne(p1, yr, false, gDirectory, "ratios");
THStack* e = DrawOne(p2, yr, true, gDirectory, "empirical");
r->SetMinimum(0.945);
r->SetMaximum(1.055);
r->GetXaxis()->SetTitle("#it{#eta}");
r->GetYaxis()->SetTitle("Ratio to mean");
e->SetMinimum(0.005);
e->GetYaxis()->SetTitle("#it{E_{c}}(#it{#eta})");
TIter nextE(e->GetHists());
TIter nextR(r->GetHists());
TH1* hist = 0;
Color_t cols[] = { kRed+2, kGreen+2, kBlue+2, kMagenta+2, 0 };
Color_t *ptr = cols;
Style_t stys[] = { 20, 21, 22, 23 };
Style_t* sty = stys;
while (*ptr) {
hist = static_cast<TH1*>(nextE());
hist->SetMarkerColor(*ptr);
hist->SetMarkerSize(2);
hist->SetMarkerStyle(*sty);
hist = static_cast<TH1*>(nextR());
hist->SetMarkerColor(*ptr);
hist->SetMarkerSize(2);
hist->SetMarkerStyle(*sty);
ptr++;
sty++;
}
TLegend* l = p2->BuildLegend(0.35, .2, .65, .8);
l->SetFillColor(0);
l->SetFillStyle(0);
l->SetBorderSize(0);
c->Modified();
c->Update();
c->cd();
c->Print("empirical.png");
}
示例2: Run
//____________________________________________________________________
void Run(const char* newName, const char* oldName,
const char* newTitle="New", const char* oldTitle="Old")
{
TFile* newFile = TFile::Open(newName,"READ");
TFile* oldFile = TFile::Open(oldName,"READ");
if (!newFile || !oldFile) return;
TH1* newCent = GetH1(newFile, "realCent");
TH1* oldCent = GetH1(oldFile, "realCent");
if (!newCent || !oldCent) return;
TString t; t.Form("#it{R}=#frac{%s}{%s}", newTitle, oldTitle);
TCanvas* c = new TCanvas("c", t, 1200, 800);
c->SetTopMargin(0.01);
c->SetRightMargin(0.20);
fLegend = new TLegend(1-c->GetRightMargin(),
c->GetBottomMargin(),
1, 1-c->GetTopMargin(),
t);
fLegend->SetFillStyle(0);
fLegend->SetBorderSize(0);
THStack* stack = new THStack("ratios","");
fMin = +1e6;
fMax = -1e6;
TH1* one = 0;
for (Int_t i = newCent->GetNbinsX(); i--;) {
Double_t c1 = newCent->GetXaxis()->GetBinLowEdge(i+1);
Double_t c2 = newCent->GetXaxis()->GetBinUpEdge(i+1);
Info("", "c1=%f c2=%f", c1, c2);
TH1* r = One(newFile, oldFile, c1, c2);
if (!r) continue;
if (!one) {
one = static_cast<TH1*>(r->Clone("one"));
one->SetDirectory(0);
one->Reset();
for (Int_t j = 1; j <= one->GetNbinsX(); j++) {
one->SetBinContent(j,1);
one->SetBinError (j,0);
}
}
// r->Add(one, i-1);
// r->Scale(TMath::Power(10,i));
stack->Add(r);
}
stack->Draw("nostack");
stack->SetMinimum(0.95*fMin);
stack->SetMaximum(1.05*fMax);
stack->GetHistogram()->SetXTitle("#eta");
stack->GetHistogram()->SetYTitle("#it{R}");
fLegend->Draw();
c->Modified();
c->Update();
c->cd();
c->SaveAs(Form("%sover%s.png", newTitle, oldTitle));
}
示例3: StackPlots
void StackPlots( TFile* f1, vector<string> hist, vector<string> leg, vector<Color_t> color, string xtitle_, string ytitle_, string xunit, string savePath, bool ylog=0, int rebin=1){
int Bins = 0;
int x1 = 0;
int x2 = 0;
int size = hist.size();
float binwidth = 0;
char title[100], xtitle[100], ytitle[100];
TH1F* h1[size];
for(int i=0; i<size; i++){
h1[i] = (TH1F*)f1->Get(hist[i].c_str());
h1[i]->UseCurrentStyle();
h1[i]->Rebin(rebin);
if( Bins != 0 ){ if( h1[i]->GetXaxis()->GetLast() != Bins ) { cout<<"Error: Exist different bin size( plot: "<<i<<")"<<endl; }}
Bins = h1[i]->GetXaxis()->GetLast();
binwidth = h1[i]->GetBinWidth(1);
x1 = h1[i]->GetXaxis()->GetBinLowEdge(1);
x2 = h1[i]->GetXaxis()->GetBinUpEdge(Bins);
h1[i]->SetLineWidth(1);
h1[i]->SetLineColor(color[i]);
h1[i]->SetFillColor(color[i]);
}
sprintf(xtitle,"%s [%s]",xtitle_.c_str(),xunit.c_str());
sprintf(ytitle,"%s / [%3.0f%s]",ytitle_.c_str(),binwidth,xunit.c_str());
sprintf(title,";%s;%s",xtitle,ytitle);
cout<<Bins<<" "<<x1<<" "<<x2<<endl;
TH1F* hs_stack = new TH1F("hs_stack",title,Bins,x1,x2);
THStack *hs = new THStack("hs","");
TLegend* leg_ = new TLegend(0.65,0.65,0.85,0.85);
TCanvas* c1 = new TCanvas("c1", "", 850, 700);
c1->SetGridx();
c1->SetGridy();
gStyle->SetOptStat(0);
gStyle->SetOptTitle(0);
hs_stack->UseCurrentStyle();
hs->SetHistogram(hs_stack);
for(int i=0; i<size; i++){
hs->Add(h1[i]);
leg_->AddEntry(h1[i],leg[i].c_str(),"f");
}
leg_->SetFillStyle(0);
leg_->SetBorderSize(0);
leg_->SetTextSize(0.042);
if( ylog ) gPad->SetLogy();
hs->SetMinimum(1);
hs->SetMaximum(1e+13);
hs->Draw();
leg_->Draw();
c1->SaveAs(savePath.c_str());
}
示例4: THStack
THStack *getstack(TTree *nt, TString name, TString var, vector<TString> cuts,int bins = 100, float xmin = 0, float xmax = 200)
{
THStack *hs = new THStack(name,name);
int N = cuts.size();
vector<TH1F *> vh(N);
for (int i=0;i<N;i++) {
vh[i] = geth(Form("%s%d",name.Data(),i),bins,xmin,xmax);
vh[i]->SetFillColor(TColor::GetColorDark(i+2));
vh[i]->SetFillStyle(1001);
nt->Project(vh[i]->GetName(),var.Data(),Form("weight*(%s)",cuts[i].Data()),"");//,1000);
hs->Add(vh[i],"hist");
cout<<vh[i]->Integral()<<endl;
}
hs->SetMinimum(1E-2);
return hs;
}
示例5: browseStacks
void browseStacks( bool makePictures=false, bool wait=true , bool addHistName = false, Double_t maxYScaleF = 1.,
bool logScale = false, bool setMinZero = true) {
gStyle->SetOptTitle(0);
bool keep2D=false;
//fix the hNJet histos
TList *list = gDirectory->GetList();
TIterator *iter = list->MakeIterator();
TObject *obj = 0;
while(obj = iter->Next()) {
if(TString(obj->GetName()).Contains("hnJet") && obj->InheritsFrom(TH1::Class())) {
int nbins = ((TH1F*)obj)->GetNbinsX();
float overflow = ((TH1F*)obj)->GetBinContent(nbins+1);
float lastbinval = ((TH1F*)obj)->GetBinContent(nbins);
((TH1F*)obj)->SetBinContent(nbins, overflow+lastbinval);
((TH1F*)obj)->GetXaxis()->SetBinLabel(nbins, "#geq4");
}
}
// Find out what the names of the existing histograms are
// The histogram names are XX_YY_ZZ, where XX is the sample,
// eg, "tt", YY is the actual name, ZZ is the final state, eg, "ee"
TObjArray* myNames = getMyHistosNames("ttdil","ee",keep2D);
// Now loop over histograms, and make stacks
TCanvas *c = new TCanvas();
c->Divide(2,2);
char* suffix[4];
suffix[0] = "ee";
suffix[1] = "mm";
suffix[2] = "em";
suffix[3] = "all";
if (makePictures) c->Print("out/stacks.ps[");
for (int i=0; i<myNames->GetEntries(); i++) {
for (int sample=0; sample<4; sample++) {
hist::stack(Form("st_%s_%s",myNames->At(i)->GetName(),suffix[sample]),
Form("%s_%s$",myNames->At(i)->GetName(), suffix[sample]));
THStack* thisStack = (THStack*) gROOT->FindObjectAny(
Form("st_%s_%s", myNames->At(i)->GetName(), suffix[sample]));
thisStack->SetMaximum(thisStack->GetMaximum()*maxYScaleF);
if(TString(myNames->At(i)->GetName()).Contains("hnJet")) {
TList* histolist = thisStack->GetHists();
int hatchcount = 0;
// for(int j = 0; j<histolist->GetSize();j++) {
// if(TString(histolist->At(j)->GetName()).Contains("tt") ||
// TString(histolist->At(j)->GetName()).Contains("tautau") ||
// TString(histolist->At(j)->GetName()).Contains("ww") ) continue;
// hatch(histolist->At(j)->GetName(), FavoriteHatches[hatchcount]);
// hatchcount++;
// }
}
TLegend* thisLeg = hist::legend(thisStack, "lpf", 0, 0, 0.75, 0.65, 0.99, 0.99);
c->cd(sample+1);
if (logScale) gPad->SetLogy(); else gPad->SetLogy(0);
double stackMax = ((TH1*)thisStack->GetHists()->At(0))->GetMaximum();
double stackMin = ((TH1*)thisStack->GetHists()->At(0))->GetMinimum();
thisStack->SetMinimum(stackMin);
if (setMinZero) thisStack->SetMinimum(0);
if (logScale && stackMin <=0) thisStack->SetMinimum(1e-2*stackMax);
if (logScale && stackMax == 0) thisStack->SetMinimum(1e-12);
thisStack->Draw("hist");
string xtitle( ((TH1*)gROOT->FindObjectAny(Form("ttdil_%s_%s", myNames->At(i)->GetName(), suffix[sample])))->GetXaxis()->GetTitle());
string ytitle( ((TH1*)gROOT->FindObjectAny(Form("ttdil_%s_%s", myNames->At(i)->GetName(), suffix[sample])))->GetYaxis()->GetTitle());
thisStack->GetXaxis()->SetTitle(xtitle.c_str());
thisStack->GetYaxis()->SetTitle(ytitle.c_str());
TString hname = thisStack->GetName();
if(hname.Contains("hnJet")) {
thisStack->GetXaxis()->SetLabelSize(0.075);
thisStack->GetYaxis()->SetLabelSize(0.05);
thisStack->GetXaxis()->SetTitle("N_{jets}");
}
thisLeg->Draw();
TPaveText *pt1 = new TPaveText(0.1, 0.95, 0.4, 0.999, "brNDC");
pt1->SetName("pt1name");
pt1->SetBorderSize(0);
pt1->SetFillStyle(0);
TText *blah;
if (addHistName) blah = pt1->AddText(hname);
else blah = pt1->AddText("CMS Preliminary");
blah->SetTextSize(0.05);
pt1->Draw();
c->Modified();
//.........这里部分代码省略.........
示例6: SamMacroMod
//.........这里部分代码省略.........
dibosonsBkgHist->SetLineWidth(2);
dibosonsBkgHist->SetLineColor(1);
WjetsBkgHist->SetFillColor(WjetsColour);
//WjetsBkgHist->SetFillColor(jetBkgColour);
WjetsBkgHist->SetLineWidth(2);
WjetsBkgHist->SetLineColor(1);
jetBkgHist->SetFillColor(jetBkgColour);
jetBkgHist->SetLineWidth(2);
jetBkgHist->SetLineColor(1);
axisHist->Add(jetBkgHist,"histo");
axisHist->Add(WjetsBkgHist,"histo");
axisHist->Add(ttbarHist);
axisHist->Add(dibosonsBkgHist);
axisHist->Add(zeeHist);
axisHist->Draw("histo");
//axisHist->GetXaxis()->SetTitle("M(#mu^{+}#mu^{-}) [GeV]");
//axisHist->GetYaxis()->SetTitle("Events / 20 GeV");
axisHist->GetYaxis()->SetTitle("Events/GeV");
//axisHist->GetXaxis()->SetTitleOffset(1.1);
//axisHist->GetYaxis()->SetTitleOffset(1.1);
axisHist->GetXaxis()->SetTitleSize(0.047);
axisHist->GetYaxis()->SetTitleSize(0.047);
//axisHist->GetXaxis()->SetLabelSize(0.040);
axisHist->GetYaxis()->SetLabelSize(0.040);
//axisHist->GetXaxis()->SetMoreLogLabels();
//axisHist->GetXaxis()->SetNoExponent();
axisHist->GetXaxis()->SetRangeUser(60.0,3000.0);
axisHist->SetMinimum(0.01);
axisHist->SetMaximum(20000.0);
//axisHist->SetMaximum(2000.0);
dataHist->SetMarkerStyle(20);
dataHist->SetMarkerSize(0.9);
dataHist->GetXaxis()->SetRange(5,83);
dataHist->GetXaxis()->SetTitleSize(0.047);
dataHist->GetXaxis()->SetTitleOffset(0.9);
dataHist->GetYaxis()->SetTitleSize(0.047);
dataHist->GetYaxis()->SetTitleOffset(1.2);
dataHist->Draw("PZ");
//==========================================================
TLegend *leg = new TLegend(0.56741,0.48671,0.820536,0.83664,NULL,"brNDC"); //for lumi in plot
leg->AddEntry(dataHist,"Data","PE");
leg->AddEntry(zeeHist,"#gamma^{*}/Z#rightarrow#mu^{+}#mu^{-}","F");
leg->AddEntry(ttbarHist,"t#bar{t}, Single Top","F");
//leg->AddEntry(dibosonsBkgHist,"WW, WZ, ZZ","F");
leg->AddEntry(dibosonsBkgHist,"Diboson, #tau#tau","F");
leg->AddEntry(WjetsBkgHist,"W+jets (FR)","F");
leg->AddEntry(jetBkgHist,"Di-Jets (data)","F");
//leg->AddEntry(jetBkgHist,"Jets (FR)","F");
leg->SetBorderSize(0);
//leg->SetTextFont(62);
leg->SetLineColor(1);
leg->SetLineStyle(1);
leg->SetLineWidth(1);
leg->SetFillColor(19);
leg->SetFillStyle(0);
leg->SetTextFont(font);
leg->SetTextSize(0.04);
leg->Draw();
示例7: doPlotsBtag_Log
//.........这里部分代码省略.........
wjets->Add(w2jets);
wjets->Add(w3jets);
wjets->Add(w4jets);
//make combined top and single top template
TH1D* qcd_all = (TH1D*)qcd->Clone("qcd_all");
qcd_all->Add(qcd2);
qcd_all->Add(qcd3);
qcd_all->Add(qcd4);
qcd_all->Add(qcd5);
qcd_all->Add(qcd6);
qcd_all->Add(qcd7);
qcd_all->Add(qcd8);
qcd_all->Add(qcd9);
qcd_all->Add(qcd10);
qcd_all->Add(qcd11);
THStack *hs = new THStack("hs","test");
qcd_all->SetLineColor(kBlack);
zjets->SetLineColor(kBlack);
wjets->SetLineColor(kBlack);
sing_top->SetLineColor(kBlack);
tt->SetLineColor(kBlack);
hs->Add(qcd_all);
hs->Add(zjets);
hs->Add(wjets);
hs->Add(sing_top);
hs->Add(tt);
//draw histos to files
TCanvas *c1 = new TCanvas("Plot","Plot",900, 600);
hs->SetMaximum(data->GetBinContent(data->GetMaximumBin())*1.2);
hs->SetMinimum(1.);
hs->Draw();
data->Draw("E same");
data->SetMarkerStyle(20);
//events:
cout << "ttbar: " << tt->Integral() << endl;
cout << "data: " << data->Integral() << endl;
if(logPlot == true){
hs->GetXaxis()->SetLimits(MinX, MaxX);
}else{
hs->GetXaxis()->SetLimits(MinX, 4.5);
}
hs->GetXaxis()->SetTitle(Xtitle); hs->GetXaxis()->SetTitleSize(0.05);
hs->GetYaxis()->SetTitle("Number of Events");hs->GetYaxis()->SetTitleSize(0.05);
TLegend *tleg2;
tleg2 = new TLegend(0.7,0.7,0.8,0.9);
tleg2->SetTextSize(0.04);
tleg2->SetBorderSize(0);
tleg2->SetFillColor(10);
tleg2->AddEntry(data , "2012 data", "lpe");
tleg2->AddEntry(tt , "t#bar{t}", "f");
tleg2->AddEntry(sing_top, "single top", "f");
tleg2->AddEntry(wjets , "w+jets", "f");
tleg2->AddEntry(zjets , "z+jets", "f");
tleg2->AddEntry(qcd_all , "QCD", "f");
//tleg2->AddEntry(singtEff, "single-t" , "l");
//tleg2->AddEntry(singtwEff, "single-tW" , "l");
tleg2->Draw("same");
if(logPlot == true){
TText* textPrelim = doPrelim(0.12,0.96, "#geq 0 btags");
textPrelim->Draw();
}else{
TText* textPrelim = doPrelim(0.2,0.96, "");
textPrelim->Draw();
}
if(logPlot ==true){
c1->SetLogy();
}
TString plotName("Plots/TTbarPlusVarAnalysis/Nbtags/");
if(logPlot ==true){
plotName += Variable+"_Log";
}else{
plotName += Variable;
}
c1->SaveAs(plotName+".pdf");
c1->SaveAs(plotName+".png");
delete c1;
}
}
示例8: draw_from_trees
//.........这里部分代码省略.........
if (plotSig) {
leg1->AddEntry(ht1bbbb_1500_100, "#splitline{T1bbbb}{(1500,100) GeV}", "l");
leg1->AddEntry(ht1bbbb_1000_900, "#splitline{T1bbbb}{(1000,900) GeV}", "l");
leg1->AddEntry(ht1tttt_1500_100, "#splitline{T1tttt}{(1500,100) GeV}", "l");
leg1->AddEntry(ht1tttt_1200_800, "#splitline{T1tttt}{(1200,800) GeV}", "l");
leg1->AddEntry(ht1qqqq_1400_100, "#splitline{T1qqqq}{(1400,100) GeV}", "l");
leg1->AddEntry(ht1qqqq_1000_800, "#splitline{T1qqqq}{(1000,800) GeV}", "l");
}
TLegend * leg2 = new TLegend(0.72, 0.6, 0.94, 0.92);
set_style(leg2,0.025);
if (httbar->Integral()>hqcd->Integral()) {
leg2->AddEntry(httbar, "t#bar{t}", "f");
leg2->AddEntry(hqcd, "QCD", "f");
} else {
leg2->AddEntry(hqcd, "QCD", "f");
leg2->AddEntry(httbar, "t#bar{t}", "f");
}
leg2->AddEntry(hznn, "Z+jets", "f");
leg2->AddEntry(hwjets, "W+jets", "f");
leg2->AddEntry(hsingle_top, "Single Top", "f");
leg2->AddEntry(hother, "Other", "f");
leg2->AddEntry(staterr, "MC uncert.", "f");
double ymax = hs->GetMaximum();
if (ht1tttt_1500_100->GetMaximum()>ymax) ymax=ht1tttt_1500_100->GetMaximum();
if (ht1bbbb_1500_100->GetMaximum()>ymax) ymax=ht1bbbb_1500_100->GetMaximum();
if (ht1qqqq_1400_100->GetMaximum()>ymax) ymax=ht1qqqq_1400_100->GetMaximum();
if(plotLog) {
hs->SetMaximum(200*ymax);
hs->SetMinimum(0.1);
}
else {
hs->SetMaximum(2*ymax);
if (plot_title.Contains("baseline")) hs->SetMaximum(1.3*ymax);
}
// Vertical lines for cuts
TLine* line_low = new TLine(cut_low,0,cut_low,1.5*ymax);
TLine* line_high = new TLine(cut_high,0,cut_high,1.5*ymax);
set_style(line_low);
set_style(line_high);
// Setup canvas and pads
TCanvas * c1 = new TCanvas("c1", "c1", 700, 700);
TPad * pad1 = new TPad("pad1", "top pad" , 0.0, 0.3, 1.0, 1.0);
TPad * pad2 = new TPad("pad2", "bottom pad", 0.0, 0.0, 1.0, 0.3);
if(plotData) {
pad1->SetBottomMargin(0.0);
pad1->Draw();
pad2->SetTopMargin(0.0);
pad2->SetBottomMargin(0.35);
pad2->Draw();
pad1->cd();
pad1->SetLogy(plotLog);
}
else {
c1->cd();
c1->SetLogy(plotLog);
}
// Draw hists
hs->Draw("hist");
hs->SetTitle(hmc_exp->GetTitle());
hs->GetXaxis()->SetTitle(httbar->GetXaxis()->GetTitle());
示例9: Draw
void Draw(const int &rebin=1) {
Color_t _sampleColor[nSamples];
//_sampleColor[iHWW ] = kRed+1;
//_sampleColor[iWW ] = kAzure-9;
//_sampleColor[iZJets] = kGreen+2;
//_sampleColor[iZTau] = kGreen+2;
//_sampleColor[iTop ] = kYellow;
//_sampleColor[iWZ ] = kAzure-2;
//_sampleColor[iWJets] = kGray+1;
//_sampleColor[iWJets] = kViolet-9;
//_sampleColor[iWJets] = kCyan;
_sampleColor[itH ] = kRed;
_sampleColor[iWZ ] = kAzure-9;
_sampleColor[iZZ ] = kAzure-5;
_sampleColor[iWW ] = kAzure-1;
_sampleColor[itt ] = kGray;
_sampleColor[ittw ] = kOrange+7;
_sampleColor[ittz ] = kOrange+1;
_sampleColor[iwww ] = kSpring+9;
_sampleColor[iwwz ] = kSpring+3;
_sampleColor[iwzz ] = kSpring-7;
_sampleColor[idyl ] = kViolet-1;
_sampleColor[idy ] = kViolet-1;
//setUpStyle();
if(!gPad) new TCanvas();
THStack* hstack = new THStack();
for (int i=0; i<nSamples; i++) {
// in case the user doesn't set it
if( !_hist[i] ) continue;
_hist[i]->Rebin(rebin);
_hist[i]->SetLineColor(_sampleColor[i]);
// signal gets overlaid
if (i == itH) continue;
_hist[i]->SetFillColor(_sampleColor[i]);
_hist[i]->SetFillStyle(1001);
hstack->Add(_hist[i]);
}
if(_hist[itH]) _hist[itH]->SetLineWidth(3);
if(_data) _data->Rebin(rebin);
if(_data) _data->SetLineColor (kBlack);
if(_data) _data->SetMarkerStyle(kFullCircle);
if(_nostack) {
for(int ihist=0;ihist<(int)_hist.size();ihist++) {
_hist[ihist]->SetFillStyle(0);
_hist[ihist]->SetLineWidth(2);
}
hstack->Draw("hist,nostack");
if(_hist[itH]) _hist[itH]->Draw("hist,same");
if(_data) _data->Draw("ep,same");
} else {
hstack->Draw("hist");
if(_hist[itH]) _hist[itH]->Draw("hist,same");
if(_data) _data->Draw("ep,same");
}
//hstack->SetTitle("CMS preliminary");
Float_t theMax = hstack->GetMaximum();
Float_t theMin = hstack->GetMinimum();
theMax = 1.0;
//Float_t theMin = hstack->GetMinimum();
if (_hist[itH]) {
if (_hist[itH]->GetMaximum() > theMax) theMax = _hist[itH]->GetMaximum();
if (_hist[itH]->GetMinimum() < theMin) theMin = _hist[itH]->GetMinimum();
}
if (_data) {
Float_t dataMax = GetMaximumIncludingErrors(_data);
if (dataMax > theMax) theMax = dataMax;
}
if (gPad->GetLogy()) {
hstack->SetMaximum(500 * theMax);
hstack->SetMinimum(0.05);
} else {
hstack->SetMaximum(1.55 * theMax);
}
if(_breakdown) {
THStackAxisFonts(hstack, "y", "entries");
hstack->GetHistogram()->LabelsOption("v");
} else {
THStackAxisFonts(hstack, "x", TString::Format("%s [%s]",_xLabel.Data(),_units.Data()));
if(_units.Sizeof() == 1) {
THStackAxisFonts(hstack, "x", _xLabel.Data());
THStackAxisFonts(hstack, "y", "entries");
//.........这里部分代码省略.........
示例10: Unfold
//.........这里部分代码省略.........
{break;}
data_generator -> Fill (buf);
data_smeared -> Fill (Smear(buf));
data_smeared_clone -> Fill (Smear(buf));
count++;
}
// --------------- setup dell'unfolding ------------------------
TUnfold unfold(migrMatrix,TUnfold::kHistMapOutputVert, TUnfold::kRegModeCurvature, TUnfold::kEConstraintArea);
if(unfold.SetInput(data_smeared)>=10000)
{std::cout<<"Possibili errori nei risultati dell'unfold\n";}
// parametro di regolarizzazione + esecuzione dell'unfold
double tau = 0.0045;
double unfold_status;
unfold_status = unfold.DoUnfold(tau);
if (unfold_status >= 1.) // do unfold restituisce il max coeficiente di correlazione
{cout << "\n\n**ATTENZIONE**\n\nErrori durante l'unfold!\nI risultati successivi non sono validi\n\n";}
// ---------------- recupera i risultati dell'unfold ------------
// binMap mappa linearmente i risultati dell'unfold nei bin dell'istogramma di output, e non salva under/overflow
int *binMap=new Int_t[nGen+2];
for(Int_t i=1;i<=nGen;i++)
{binMap[i]=i;}
binMap[0]=-1; // no underflow
binMap[nGen+1]=-1; // no overflow
// recupera l'istogramma unfoldato
unfold.GetOutput(data_unfolded,binMap);
// ----------- disegna ----------------------------------
data_generator->SetLineColor(kBlue);
data_unfolded->SetLineColor(kRed);
data_smeared_clone->SetLineColor(kGreen+1);
data_generator->SetLineWidth(1.5);
data_unfolded->SetLineWidth(1.5);
data_smeared_clone->SetLineWidth(1.5);
TLegend* l = new TLegend (0.63, 0.68, 0.89, 0.89);
l->AddEntry(data_generator, "Pre-smearing", "l");
l->AddEntry(data_smeared_clone, "Post-smearing (#sigma = 2#Deltax)", "l");
l->AddEntry(data_unfolded, "Unfolded con #tau = 0.0045", "l");
l->SetFillColor(kWhite);
l->SetLineColor(kWhite);
THStack* stack = new THStack ("stack", ";x;N");
stack->Add(data_generator);
stack->Add(data_smeared_clone);
stack->Add(data_unfolded);
stack->SetMinimum(0.);
TCanvas* c1 = new TCanvas;
stack->Draw("nostack H");
//stack->GetHistogram()->GetXaxis()->SetTitle("x");
stack->Draw("nostack H");
l->Draw();
// stampa aree
cout << "AREE (no u/o flow) -- (con u/o flow)" << endl;
cout << "Generator: " << data_generator->Integral() << " " << data_generator->Integral(0, nGen+1) << endl;
cout << "Smeared: " << data_smeared->Integral() << " " << data_smeared->Integral(0, nSmear+1) << endl;
cout << "Unfolded: " << data_unfolded->Integral() << " " << data_unfolded->Integral(0, nGen+1) << endl;
// ------------------- residui dopo unfold ----------------
TH1F *residui = new TH1F("residui","Bias;x;Generator - Unfolded",nGen,xminGen, xmaxGen);
double err1, err2, errtot;
for (Int_t i=1;i<=nGen;i++)
{
double diff = data_generator->GetBinContent(i) - data_unfolded->GetBinContent(i);
err1 = data_generator->GetBinError(i);
err2 = data_unfolded->GetBinError(i);
errtot = err1 + err2;
residui->SetBinContent(i,diff);
residui->SetBinError(i, errtot);
}
gStyle->SetOptStat(0);
TCanvas* c2 = new TCanvas;
TLine * ll = new TLine (-3, 0, 3, 0);
ll->SetLineColor(kBlack);
ll->SetLineStyle(2);
residui->Draw("H");
ll->Draw("same");
}
示例11: SamMacroModBinWidth
//.........这里部分代码省略.........
//WjetsBkgHist->SetLineColor(1);
hDijetWjets->SetFillColor(jetBkgColour);
hDijetWjets->SetLineWidth(2);
hDijetWjets->SetLineColor(1);
axisHist->Add(hDijetWjets,"histo");
//axisHist->Add(WjetsBkgHist,"histo");
axisHist->Add(hTTbarDiboson);
//axisHist->Add(dibosonsBkgHist);
axisHist->Add(zeeHist);
axisHist->Draw("histo");
//axisHist->GetYaxis()->SetTitle("Events / 20 GeV");
axisHist->GetXaxis()->SetTitle("M(#mu^{+}#mu^{-}) [GeV]");
axisHist->GetYaxis()->SetTitle("Events/GeV");
//axisHist->GetXaxis()->SetTitleOffset(1.1);
//axisHist->GetYaxis()->SetTitleOffset(1.1);
axisHist->GetXaxis()->SetTitleSize(0.047);
axisHist->GetYaxis()->SetTitleSize(0.047);
axisHist->GetXaxis()->SetLabelSize(0.050);
axisHist->GetYaxis()->SetLabelSize(0.050);
axisHist->GetXaxis()->SetMoreLogLabels();
axisHist->GetXaxis()->SetNoExponent();
axisHist->GetXaxis()->SetRangeUser(70.0,2999.0);
//axisHist->SetMinimum(0.01);
//axisHist->SetMaximum(20000.0);
axisHist->SetMinimum(0.0001);
axisHist->SetMaximum(2000.0);
dataHist->SetMarkerStyle(20);
dataHist->SetMarkerSize(0.9);
dataHist->GetXaxis()->SetRange(5,83);
dataHist->GetXaxis()->SetTitleSize(0.047);
dataHist->GetXaxis()->SetTitleOffset(0.9);
dataHist->GetYaxis()->SetTitleSize(0.047);
dataHist->GetYaxis()->SetTitleOffset(1.2);
dataHist->Draw("PZ");
//==========================================================
TLegend *leg = new TLegend(0.56741,0.62671,0.820536,0.87664,NULL,"brNDC"); //for lumi in plot
leg->AddEntry(dataHist,"Data","PE");
leg->AddEntry(zeeHist,"#gamma^{*}/Z#rightarrow#mu^{+}#mu^{-}","F");
leg->AddEntry(hTTbarDiboson,"t#bar{t}, tW, WW, WZ, ZZ, #tau^{+}#tau^{-}","F");
//leg->AddEntry(dibosonsBkgHist,"di-boson, #gamma^{*}/Z#rightarrow#tau^{+}#tau^{-}","F");
//leg->AddEntry(WjetsBkgHist,"W+jets (FR)","F");
leg->AddEntry(hDijetWjets,"Jets (data)","F");
leg->SetBorderSize(0);
leg->SetLineColor(1);
leg->SetLineStyle(1);
leg->SetLineWidth(1);
leg->SetFillColor(19);
leg->SetFillStyle(0);
leg->SetTextFont(font);
leg->SetTextSize(0.04);
leg->Draw();
//==========================================================
TPaveText* tText1 = new TPaveText(0.75, 0.92, 0.87, 0.98, "brNDC");
tText1->SetBorderSize(0);
tText1->SetFillColor(0);
示例12: ttbar_nJet
void ttbar_nJet()
{
//=========Macro generated from canvas: c1/c1
//========= (Sun Dec 11 15:16:19 2016) by ROOT version6.06/01
TCanvas *c1 = new TCanvas("c1", "c1",1,1,1200,1416);
gStyle->SetOptStat(0);
gStyle->SetOptTitle(0);
c1->SetHighLightColor(2);
c1->Range(0,0,1,1);
c1->SetFillColor(0);
c1->SetBorderMode(0);
c1->SetBorderSize(2);
c1->SetTickx(1);
c1->SetTicky(1);
c1->SetLeftMargin(0.15);
c1->SetRightMargin(0.05);
c1->SetTopMargin(0.07);
c1->SetBottomMargin(0.13);
c1->SetFrameFillStyle(0);
c1->SetFrameBorderMode(0);
// ------------>Primitives in pad: pad1
TPad *pad1 = new TPad("pad1", "pad1",0,0.3,1,1);
pad1->Draw();
pad1->cd();
pad1->Range(-2.1875,0,9.0625,0.5878968);
pad1->SetFillColor(0);
pad1->SetBorderMode(0);
pad1->SetBorderSize(2);
pad1->SetTickx(1);
pad1->SetTicky(1);
pad1->SetLeftMargin(0.15);
pad1->SetRightMargin(0.05);
pad1->SetTopMargin(0.07);
pad1->SetBottomMargin(0);
pad1->SetFrameFillStyle(0);
pad1->SetFrameBorderMode(0);
pad1->SetFrameFillStyle(0);
pad1->SetFrameBorderMode(0);
THStack *h = new THStack();
h->SetName("h");
h->SetTitle("");
h->SetMinimum(0);
h->SetMaximum(0.5207086);
TH1F *h_stack_19 = new TH1F("h_stack_19","",9,-0.5,8.5);
h_stack_19->SetMinimum(0);
h_stack_19->SetMaximum(0.546744);
h_stack_19->SetDirectory(0);
h_stack_19->SetStats(0);
Int_t ci; // for color index setting
TColor *color; // for color definition with alpha
ci = TColor::GetColor("#000099");
h_stack_19->SetLineColor(ci);
h_stack_19->GetXaxis()->SetLabelFont(42);
h_stack_19->GetXaxis()->SetLabelOffset(0.007);
h_stack_19->GetXaxis()->SetTitleSize(0.05);
h_stack_19->GetXaxis()->SetTickLength(0.025);
h_stack_19->GetXaxis()->SetTitleFont(42);
h_stack_19->GetYaxis()->SetTitle("a.u.");
h_stack_19->GetYaxis()->SetLabelFont(42);
h_stack_19->GetYaxis()->SetLabelOffset(0.007);
h_stack_19->GetYaxis()->SetTitleSize(0.05);
h_stack_19->GetYaxis()->SetTickLength(0.025);
h_stack_19->GetYaxis()->SetTitleOffset(1.5);
h_stack_19->GetYaxis()->SetTitleFont(42);
h_stack_19->GetZaxis()->SetLabelFont(42);
h_stack_19->GetZaxis()->SetLabelOffset(0.007);
h_stack_19->GetZaxis()->SetTitleSize(0.05);
h_stack_19->GetZaxis()->SetTickLength(0.025);
h_stack_19->GetZaxis()->SetTitleFont(42);
h->SetHistogram(h_stack_19);
TH1D *h_nJet_QCD__217 = new TH1D("h_nJet_QCD__217","",9,-0.5,8.5);
h_nJet_QCD__217->SetBinContent(2,0.001991738);
h_nJet_QCD__217->SetBinContent(3,0.0005078625);
h_nJet_QCD__217->SetBinContent(4,0.006489724);
h_nJet_QCD__217->SetBinContent(5,0.001899386);
h_nJet_QCD__217->SetBinContent(6,0.000696849);
h_nJet_QCD__217->SetBinError(2,0.001424948);
h_nJet_QCD__217->SetBinError(3,0.0005078625);
h_nJet_QCD__217->SetBinError(4,0.00246407);
h_nJet_QCD__217->SetBinError(5,0.001037545);
h_nJet_QCD__217->SetBinError(6,0.0004566736);
h_nJet_QCD__217->SetEntries(25);
h_nJet_QCD__217->SetStats(0);
ci = TColor::GetColor("#cccccc");
h_nJet_QCD__217->SetFillColor(ci);
h_nJet_QCD__217->GetXaxis()->SetTitle("N_{jet}");
h_nJet_QCD__217->GetXaxis()->SetLabelFont(42);
h_nJet_QCD__217->GetXaxis()->SetLabelOffset(0.007);
h_nJet_QCD__217->GetXaxis()->SetTitleSize(0.05);
h_nJet_QCD__217->GetXaxis()->SetTickLength(0.025);
h_nJet_QCD__217->GetXaxis()->SetTitleFont(42);
h_nJet_QCD__217->GetYaxis()->SetTitle("a.u.");
h_nJet_QCD__217->GetYaxis()->SetLabelFont(42);
//.........这里部分代码省略.........
示例13: macro_MakeQcdClosureTest
//.........这里部分代码省略.........
emuMass_wjets.back()->SetLineWidth(2);
//emuMass_wjets.back()->Draw("HISTsames");
emuMass_qcd.back()->SetFillColor(jetBkgColour);
emuMass_qcd.back()->SetMarkerColor(jetBkgColour);
emuMass_qcd.back()->SetLineColor(kBlack);
emuMass_qcd.back()->SetLineWidth(2);
//emuMass_qcd.back()->Draw("HISTsames");
bgStack->Draw("hist");
emuMass_qcdFromFake.back()->SetLineColor(kRed);
emuMass_qcdFromFake.back()->SetLineWidth(2);
emuMass_qcdFromFake.back()->Draw("esame");
if (plotPullBelowSpec && j == 0) {
bgStack->GetXaxis()->SetTitle("");
} else {
bgStack->GetXaxis()->SetTitle(xAxisTitle[k] + " [GeV]");
}
bgStack->GetXaxis()->SetTitleFont(font);
bgStack->GetXaxis()->SetTitleSize(0.047);
bgStack->GetXaxis()->SetTitleOffset(0.9);
bgStack->GetXaxis()->SetLabelFont(font);
bgStack->GetXaxis()->SetLabelSize(0.05);
bgStack->GetXaxis()->SetMoreLogLabels();
bgStack->GetXaxis()->SetNoExponent();
//bgStack->GetXaxis()->SetRangeUser(xRangeMin, xRangeMax);
bgStack->GetXaxis()->SetLimits(xRangeMin, xRangeMax);
if (j == 1) bgStack->GetYaxis()->SetTitle("Events #geq " + xAxisTitle[k]);
else bgStack->GetYaxis()->SetTitle("Events / GeV");
bgStack->GetYaxis()->SetTitleFont(font);
bgStack->GetYaxis()->SetTitleSize(0.047);
bgStack->GetYaxis()->SetTitleOffset(1.1);
bgStack->GetYaxis()->SetLabelFont(font);
bgStack->GetYaxis()->SetLabelSize(0.05);
bgStack->SetMinimum(yRangeMin[k + j * 3]);
bgStack->SetMaximum(yRangeMax[k + j * 3]);
// redraw axis
emuMass_qcd.back()->Draw("sameaxis");
// legend and labels
TLegend legend(0.710, 0.646, 0.901, 0.885);
legend.SetTextFont(font);
legend.SetTextSize(0.03);
legend.SetBorderSize(0);
legend.SetLineColor(1);
legend.SetLineStyle(1);
legend.SetLineWidth(1);
legend.SetFillColor(19);
legend.SetFillStyle(0);
legend.AddEntry(emuMass_wjets.back(), "W+jets (MC)" ,"F");
legend.AddEntry(emuMass_qcd.back(), "jets (SS data)" ,"F");
legend.AddEntry(emuMass_qcdFromFake.back(), "jets (Fake Rate)" ,"le");
legend.DrawClone("sames");
TLatex *tex = new TLatex();
tex->SetNDC();
tex->SetTextFont(font);
tex->SetLineWidth(2);
tex->SetTextSize(0.042);
if (prelim) tex->DrawLatex(0.325, 0.853, "CMS Preliminary, 8 TeV, 19.6 fb^{-1}");
else tex->DrawLatex(0.405, 0.853, "CMS, 8 TeV, 19.6 fb^{-1}");
if (eRegion == 0) tex->DrawLatex(0.325, 0.775, "e in barrel");
if (eRegion == 1) tex->DrawLatex(0.325, 0.775, "e in endcap");
// safe in various file formats
stringstream sStream;
示例14: allCutFlow
//.........这里部分代码省略.........
dataEff->SetBinContent(q, data->GetBinContent(q+1)/data->GetBinContent(q));
dataEff->SetBinError(q, dataEff->GetBinContent(q)*sqrt(pow(data->GetBinError(q+1)/data->GetBinContent(q+1),2)+pow(data->GetBinError(q)/data->GetBinContent(q),2)));
mcEff->SetBinContent(q, allMC->GetBinContent(q+1)/allMC->GetBinContent(q));
}
TCanvas *c2 = new TCanvas("cutflow eff","cutflow eff",600, 500);
mcEff->SetLineColor(kRed);
mcEff->Draw();
dataEff->Draw("Esame");
TLegend *tleg3;
tleg3 = new TLegend(0.7,0.7,0.8,0.9);
tleg3->SetTextSize(0.04);
tleg3->SetBorderSize(0);
tleg3->SetFillColor(10);
tleg3->AddEntry(dataEff , "data", "l");
tleg3->AddEntry(mcEff , "mc", "l");
tleg3->Draw("same");
c2->SaveAs("plots/cutFlow/cutEff_"+Variable+".pdf");
c2->SaveAs("plots/cutFlow/cutEff_"+Variable+".png");
delete c2;
//draw histos to files
TCanvas *c1 = new TCanvas("cutflow","cutflow",900, 600);
hs->SetMaximum(data->GetBinContent(data->GetMaximumBin())*1.3);
if(logPlot ==true)
hs->SetMinimum(10.);
hs->Draw("hist");
for(int q =0; q<ttgamma->GetNbinsX(); q++)
hs->GetXaxis()->SetBinLabel(q+1, step[q]);
data->Draw("E same");
data->SetMarkerStyle(20);
// hs->GetXaxis()->SetLimits(MinX, MaxX);
hs->GetXaxis()->SetTitle(Xtitle); hs->GetXaxis()->SetTitleSize(0.05);
hs->GetYaxis()->SetTitle("Number of Events");hs->GetYaxis()->SetTitleSize(0.05);
TLegend *tleg2;
tleg2 = new TLegend(0.7,0.7,0.8,0.9);
tleg2->SetTextSize(0.04);
tleg2->SetBorderSize(0);
tleg2->SetFillColor(10);
tleg2->AddEntry(data , "2012 data", "lpe");
tleg2->AddEntry(ttgamma , "t#bar{t}+gamma", "lf");
tleg2->AddEntry(tt , "t#bar{t}", "lf");
tleg2->AddEntry(T_tW, "single top", "lf");
tleg2->AddEntry(DY1 , "Drell-Yan", "lf");
tleg2->AddEntry(ZZ , "Di-boson", "lf");
tleg2->AddEntry(wjets , "w+jets", "lf");
tleg2->AddEntry(QCD_all , "QCD", "lf");
//tleg2->AddEntry(singtEff, "single-t" , "l");
//tleg2->AddEntry(singtwEff, "single-tW" , "l");
tleg2->Draw("same");
示例15: ttbar_jet1CSV
void ttbar_jet1CSV()
{
//=========Macro generated from canvas: c1/c1
//========= (Sun Dec 11 15:16:19 2016) by ROOT version6.06/01
TCanvas *c1 = new TCanvas("c1", "c1",1,1,1200,1416);
gStyle->SetOptStat(0);
gStyle->SetOptTitle(0);
c1->SetHighLightColor(2);
c1->Range(0,0,1,1);
c1->SetFillColor(0);
c1->SetBorderMode(0);
c1->SetBorderSize(2);
c1->SetTickx(1);
c1->SetTicky(1);
c1->SetLeftMargin(0.15);
c1->SetRightMargin(0.05);
c1->SetTopMargin(0.07);
c1->SetBottomMargin(0.13);
c1->SetFrameFillStyle(0);
c1->SetFrameBorderMode(0);
// ------------>Primitives in pad: pad1
TPad *pad1 = new TPad("pad1", "pad1",0,0.3,1,1);
pad1->Draw();
pad1->cd();
pad1->Range(-0.1875,0,1.0625,0.5424993);
pad1->SetFillColor(0);
pad1->SetBorderMode(0);
pad1->SetBorderSize(2);
pad1->SetTickx(1);
pad1->SetTicky(1);
pad1->SetLeftMargin(0.15);
pad1->SetRightMargin(0.05);
pad1->SetTopMargin(0.07);
pad1->SetBottomMargin(0);
pad1->SetFrameFillStyle(0);
pad1->SetFrameBorderMode(0);
pad1->SetFrameFillStyle(0);
pad1->SetFrameBorderMode(0);
THStack *h = new THStack();
h->SetName("h");
h->SetTitle("");
h->SetMinimum(0);
h->SetMaximum(0.4804993);
TH1F *h_stack_21 = new TH1F("h_stack_21","",10,0,1);
h_stack_21->SetMinimum(0);
h_stack_21->SetMaximum(0.5045243);
h_stack_21->SetDirectory(0);
h_stack_21->SetStats(0);
Int_t ci; // for color index setting
TColor *color; // for color definition with alpha
ci = TColor::GetColor("#000099");
h_stack_21->SetLineColor(ci);
h_stack_21->GetXaxis()->SetLabelFont(42);
h_stack_21->GetXaxis()->SetLabelOffset(0.007);
h_stack_21->GetXaxis()->SetTitleSize(0.05);
h_stack_21->GetXaxis()->SetTickLength(0.025);
h_stack_21->GetXaxis()->SetTitleFont(42);
h_stack_21->GetYaxis()->SetTitle("a.u.");
h_stack_21->GetYaxis()->SetLabelFont(42);
h_stack_21->GetYaxis()->SetLabelOffset(0.007);
h_stack_21->GetYaxis()->SetTitleSize(0.05);
h_stack_21->GetYaxis()->SetTickLength(0.025);
h_stack_21->GetYaxis()->SetTitleOffset(1.5);
h_stack_21->GetYaxis()->SetTitleFont(42);
h_stack_21->GetZaxis()->SetLabelFont(42);
h_stack_21->GetZaxis()->SetLabelOffset(0.007);
h_stack_21->GetZaxis()->SetTitleSize(0.05);
h_stack_21->GetZaxis()->SetTickLength(0.025);
h_stack_21->GetZaxis()->SetTitleFont(42);
h->SetHistogram(h_stack_21);
TH1D *h_jet1CSV_QCD__241 = new TH1D("h_jet1CSV_QCD__241","",10,0,1);
h_jet1CSV_QCD__241->SetBinContent(1,0.001669958);
h_jet1CSV_QCD__241->SetBinContent(2,0.001297151);
h_jet1CSV_QCD__241->SetBinContent(3,0.0001985037);
h_jet1CSV_QCD__241->SetBinContent(4,0.001317617);
h_jet1CSV_QCD__241->SetBinContent(5,0.001460061);
h_jet1CSV_QCD__241->SetBinContent(6,0.0005098467);
h_jet1CSV_QCD__241->SetBinContent(8,9.216642e-05);
h_jet1CSV_QCD__241->SetBinContent(10,0.005040257);
h_jet1CSV_QCD__241->SetBinError(1,0.001015339);
h_jet1CSV_QCD__241->SetBinError(2,0.0006375418);
h_jet1CSV_QCD__241->SetBinError(3,0.0001985037);
h_jet1CSV_QCD__241->SetBinError(4,0.0007758122);
h_jet1CSV_QCD__241->SetBinError(5,0.0009604397);
h_jet1CSV_QCD__241->SetBinError(6,0.0005098467);
h_jet1CSV_QCD__241->SetBinError(8,9.216642e-05);
h_jet1CSV_QCD__241->SetBinError(10,0.002524985);
h_jet1CSV_QCD__241->SetEntries(25);
h_jet1CSV_QCD__241->SetStats(0);
ci = TColor::GetColor("#cccccc");
h_jet1CSV_QCD__241->SetFillColor(ci);
h_jet1CSV_QCD__241->GetXaxis()->SetTitle("jet 1 CSV");
h_jet1CSV_QCD__241->GetXaxis()->SetLabelFont(42);
//.........这里部分代码省略.........