本文整理汇总了C++中THStack::GetYaxis方法的典型用法代码示例。如果您正苦于以下问题:C++ THStack::GetYaxis方法的具体用法?C++ THStack::GetYaxis怎么用?C++ THStack::GetYaxis使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类THStack
的用法示例。
在下文中一共展示了THStack::GetYaxis方法的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: simplePlotter
void simplePlotter(){
const unsigned int n = 6;
TFile* ftt[n];
// diboson
char* names[n] = {"BB-4p-0-500_100TEV_40PileUp",
"BB-4p-500-1500_100TEV_40PileUp",
"BB-4p-1500-3000_100TEV_40PileUp",
"BB-4p-3000-5500_100TEV_40PileUp",
"BB-4p-5500-9000_100TEV_40PileUp",
"BB-4p-9000-100000_100TEV_40PileUp"};
char* labels[n] = {"S*_{T} < 1 TeV","S*_{T} 1-2 TeV","S*_{T} 2-3.5 TeV","S*_{T} 3.5-5.5 TeV","S*_{T} 5.5-8.5 TeV","S*_{T} > 8.5 TeV"};
int colors[n] = { 2 , 3 , 4 , 5 , 6 , 7 };
TH1F* hst[n];
THStack* htstack = new THStack();
TLegend *leg = new TLegend(0.5,0.5,0.8,0.8);
for( int i = 0 ; i < n ; i++ ){
ftt[i] = TFile::Open(Form("output/%s.root",names[i]));
hst[i] = (TH1F*) ftt[i]->Get("st");
hst[i]->SetFillColor(colors[i]);
cout << "Integral " << i << " " << hst[i]->Integral() << endl;
hst[i]->GetXaxis()->SetTitle("S_{T} [GeV]");
hst[i]->GetYaxis()->SetTitle("events");
leg->AddEntry( hst[i] , labels[i] , "lf" );
htstack->Add(hst[i]);
}
TCanvas *c2 = new TCanvas("c2","c2",1200,600);
c2->cd();
gStyle->SetOptStat(0);
gPad->SetLogy();
htstack->Draw();
htstack->GetXaxis()->SetTitle("S_{T} [GeV]");
htstack->GetYaxis()->SetTitle("events");
TLatex *t = new TLatex();
t->SetNDC();
t->DrawLatex(0.5,0.85,"t#bar{t} events, 100 TeV, L = 1 pb^{-1}");
leg->SetBorderSize(0);
leg->SetFillColor(0);
leg->Draw();
}
示例3: Draw
// Do the loop here, so that we can use options like "errors"
void Draw( const TString & xTitle = "", const TString & yTitle = "", const bool errors = false ) {
// Create a new THStack so that it handle tha maximum
// THStack stack(name_, title_);
THStack * stack = new THStack(name_, title_);
int colorIndex = 0;
if( !(histoList_.empty()) ) {
std::vector<TH1*>::iterator histoIter = histoList_.begin();
for( ; histoIter != histoList_.end(); ++histoIter, ++colorIndex ) {
TH1 * histo = *histoIter;
if(errors) histo->Sumw2();
// histo->SetNormFactor(1);
if( colorIndex < 4 ) histo->SetLineColor(colors_[colorIndex]);
else histo->SetLineColor(colorIndex);
// Draw and get the maximum value
TString normalizedHistoName(histo->GetName());
TH1 * normalizedHisto = (TH1*)histo->Clone(normalizedHistoName+"clone");
normalizedHisto->Scale(1/normalizedHisto->Integral());
stack->Add(normalizedHisto);
}
// Take the maximum of all the drawed histograms
// First we need to draw the histogram, or getAxis() will return 0... (see root code...)
canvas_->Draw();
canvas_->cd();
stack->Draw("nostack");
stack->GetYaxis()->SetTitleOffset(1.2);
stack->GetYaxis()->SetTitle(yTitle);
stack->GetXaxis()->SetTitle(xTitle);
stack->GetXaxis()->SetTitleColor(kBlack);
stack->Draw("nostack");
legend_->Draw("same");
canvas_->Update();
canvas_->Draw();
canvas_->ForceUpdate();
//canvas_->Print("test.pdf");
canvas_->Write();
}
}
示例4: doPlotsMuon
//.........这里部分代码省略.........
qcd1->Add(qcd5);
qcd1->Add(qcd6);
qcd1->Add(qcd7);
qcd1->Add(qcd8);
qcd1->Add(qcd9);
qcd1->Add(qcd10);
qcd1->Add(qcd11);
}
TH1D* qcd_data = getQCD(Obj, Variable, rebinFact);
qcd_data->Scale(qcd1->Integral());
THStack *hs = new THStack("hs","test");
if(inclQ == true){
hs->Add(qcd_data);
}else{
hs->Add(qcd_data);
}
zjets->Add(z2jets);
zjets->Add(z3jets);
zjets->Add(z4jets);
wjets->Add(w2jets);
wjets->Add(w3jets);
wjets->Add(w4jets);
hs->Add(zjets);
hs->Add(wjets);
hs->Add(top_t);
hs->Add(top_tw);
hs->Add(top_s);
hs->Add(tbar_t);
hs->Add(tbar_tw);
hs->Add(tbar_s);
hs->Add(tt);
TH1D* allMC = (TH1D*)tt->Clone("allMC");
allMC->Add(sing_top); allMC->Add(wjets); allMC->Add(zjets); allMC->Add(qcd1);
cout << "tt: " << tt->Integral() << " wjets: " << wjets->Integral() << " zjets: " << zjets->Integral() << " single top: " << sing_top->Integral() << " qcd: " << qcd1->Integral() << " all: " << allMC->Integral() << " data: " << data->Integral() << endl;
//draw histos to files
TCanvas *c1 = new TCanvas("Plot","Plot",900, 600);
hs->SetMaximum(data->GetBinContent(data->GetMaximumBin())*1.3);
hs->Draw();
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.6,0.6,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} l+jets", "lf");
//tleg2->AddEntry(tt_lep , "t#bar{t} di-lepton", "lf");
tleg2->AddEntry(top_t, "single top", "lf");
tleg2->AddEntry(wjets , "w+jets", "lf");
tleg2->AddEntry(zjets , "z+jets", "lf");
tleg2->AddEntry(qcd , "QCD", "lf");
//tleg2->AddEntry(singtEff, "single-t" , "l");
//tleg2->AddEntry(singtwEff, "single-tW" , "l");
tleg2->Draw("same");
TText* textPrelim = doPrelim(0.12,0.96);
textPrelim->Draw();
if(logPlot ==true){
c1->SetLogy();
}
TString plotName("plots/Control/Muon/");
if(logPlot ==true){
plotName += Variable+"Log";
plotName += Nbtags+".pdf";
}else{
plotName += Variable;
plotName += Nbtags+".pdf";
}
c1->SaveAs(plotName);
delete c1;
}
}
示例5: plotStack
void stackPlotter::plotStack(const TString& key, legendposition legpos) {
if(debug)
std::cout << "stackPlotter::plotStack" << std::endl;
std::vector<std::pair<Int_t,TH1*> > legEntries = stacksLegEntries_[key];
if(legEntries.size()<1) return;
TCanvas *c = new TCanvas(key,key,800,600);
TLegend *leg = new TLegend(0.75,0.75,0.95,0.95); //will be overwritten by style!
THStack *stack = new THStack();
//determine legend position TBI (add all histos, look at mean and max values etc)
//float max=stack->GetMaximum(); //unfortunately no mean function also not filled, yet.
//needs another loop on histos
TH1 * h=(TH1 *) legEntries.at(0).second->Clone();
for(size_t i=1;i<legEntries.size();i++){
h->Add(legEntries.at(i).second);
}
// int maxbin=h->GetMaximumBin();
//int minbin=h->GetMinimumBin();
// float ymax=h->GetBinContent(maxbin);
//float ymin=h->GetBinContent(minbin);
//pass this to the style functions
delete h;
//gStyle->SetOptTitle(0);//no title
for(size_t i=0; i < legEntries.size(); i++) {
TString legName = legEntries.at(i).second->GetName();
if(legName == "") continue;
applyStyleToTH1(legEntries.at(i).second,legpos);
stack->Add(legEntries.at(i).second,"HIST");
stack->SetTitle("");//legEntries.at(i).second->GetTitle());
stack->SetName(legEntries.at(i).second->GetTitle());
//mirror entry for legend
leg->AddEntry(legEntries.at(legEntries.size()-1-i).second,
legEntries.at(legEntries.size()-1-i).second->GetName(),
"F");
}
// draw plot and legend
c->cd();
applyStyleToCanvas(c,legpos);
stack->Draw();
stack->GetXaxis()->SetTitle(legEntries.at(0).second->GetXaxis()->GetTitle());
stack->GetYaxis()->SetTitle(legEntries.at(0).second->GetYaxis()->GetTitle());
applyStyleToAxis(stack,legpos);
applyStyleToLegend(leg,legpos);
stack->Draw();
leg->Draw();
//c->BuildLegend();
// save and exit
if(saveplots_) {
c->SaveAs(outdir_+"/"+key+".pdf");
c->SaveAs(outdir_+"/"+key+".png");
}
if(savecanvases_ && outfile_) {
outfile_->cd();
c->Write();
}
delete stack;
delete leg;
delete c;
}
示例6: 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;
}
}
示例7: genHists
//.........这里部分代码省略.........
++(numgoodverts);
//std::cout << "good vertex detected" << std::endl;
}
}
//std::cout << numgoodverts << std::endl;
if (numgoodverts >= 1) {
++sample_nevents_read[sample];
for (int i = 0; i < nvertices; ++i) { //fill with everything
h_tot->Fill((int)(*loc)[i]);
}
if (sample >= 0) { //fill with background
for (int i = 0; i < nvertices; ++i) {
h_back->Fill((int)(*loc)[i]);
} //ERRORS TO BE FIXED HERE: MAP STRINGS AND POINTERS!!!
}
else { //fill with signal
for (int i = 0; i < nvertices; ++i) {
h_sig->Fill((int)(*loc)[i]);
}
}
}
}
printf("\r%80s\rdone!\n", "");
for (int s = s_start; s < s_end; ++s)
printf("sample %30s events read: %10i\n", sample_names[s].c_str(), sample_nevents_read[s]);
gStyle->SetCanvasPreferGL(1);
//now we set up the canvas and histogram details so we can draw them
string title_str = target + " of Lepton-Producing Events";
const char * title = new char[sizeof title_str];
title = title_str.c_str();
const char * xaxis = target.c_str();
TCanvas *c1 = new TCanvas("c1",title,900,600);
c1->SetBorderMode(0);
c1->SetFillColor(kWhite);
//c1->SetLogy();
THStack *hs = new THStack("hs",title);
h_tot->SetLineColor(kGreen);
h_tot->SetFillStyle(4050);
h_tot->SetLineWidth(2);
hs->Add(h_tot);
h_back->SetLineColor(kBlue);
h_back->SetFillStyle(4050);
h_back->SetLineWidth(2);
hs->Add(h_back);
h_sig->SetLineColor(kRed);
h_sig->SetFillStyle(4010);
h_sig->SetLineWidth(2);
hs->Add(h_sig);
//h_tot->Draw();
//h_back->Draw("same");
//h_sig->Draw("same");
hs->Draw("nostack");
hs->GetXaxis()->SetTitle(xaxis);
hs->GetYaxis()->SetTitle("number of vertices");
hs->GetYaxis()->SetTitleOffset(1.4);
TLegend *leg = new TLegend(0.7,0.7,0.9,0.9);
leg->SetHeader("Type of Data");
leg->AddEntry(h_tot,"Total");
leg->AddEntry(h_back,"Background");
leg->AddEntry(h_sig,"Signal");
leg->Draw();
c1->Modified();
//data to be printed to the command line
vector<int> entries_in_bins_tot;
vector<int> entries_in_bins_back;
vector<int> entries_in_bins_sig;
for (int i = 1; i <= nbins; ++i) {
entries_in_bins_tot.push_back(h_tot->GetBinContent(i));
entries_in_bins_back.push_back(h_back->GetBinContent(i));
entries_in_bins_sig.push_back(h_sig->GetBinContent(i));
}
std::cout << std::endl << "Total: " << std::endl;
for (int i = 0; i < nbins; ++i) {
std::cout << "bin " << i+1 << ": " << entries_in_bins_tot[i] << " entries" << std::endl;
}
std::cout << std::endl << "Background: " << std::endl;
for (int i = 0; i < nbins; ++i) {
std::cout << "bin " << i+1 << ": " << entries_in_bins_back[i] << " entries" << std::endl;
}
std::cout << std::endl << "Signal: " << std::endl;
for (int i = 0; i < nbins; ++i) {
std::cout << "bin " << i+1 << ": " << entries_in_bins_sig[i] << " entries" << std::endl;
}
std::cout << std::endl;
}
示例8: fake
//.........这里部分代码省略.........
TFile *f;
TH1D *hFake;
TH1D *hReal;
f = TFile::Open(fpath.c_str());
{
TH1D *hFake_c = (TH1D*)f->Get(histnameFake.c_str());
hFake_c->SetMarkerSize(0.0);
TH1D *hReal_c = (TH1D*)f->Get(histnameReal.c_str());
hReal_c->SetMarkerSize(0.0);
hFake = (TH1D*)hFake_c->Clone("hFake");
hReal = (TH1D*)hReal_c->Clone("hReal");
}
addbin(hFake);
addbin(hReal);
std::cout << hReal->Integral() << std::endl;
std::cout << hFake->Integral() << std::endl;
double iFake = hFake->Integral();
double iReal = hReal->Integral();
// double iAll = iFake+iReal;
// hFake->Scale(1./iAll);
// hReal->Scale(1./iAll);
hFake->SetLineColor(9);
hFake->SetFillColor(9);
hReal->SetLineColor(46);
hReal->SetFillColor(46);
THStack *hst = new THStack();
hst->Add(hReal);
hst->Add(hFake);
hst->Draw("hist e1");
float max = hst->GetMaximum();
hst->SetMaximum(1.3*max);
hst->SetMinimum(0.);
if( histnameFake == "h_muFake_pt" ) hst->GetXaxis()->SetTitle("p_{T} [GeV]");
hst->GetYaxis()->SetTitle("Number of muons");
leg->AddEntry(hFake,"Fake","f");
leg->AddEntry(hReal,"Real","f");
leg->Draw();
c1->Print("pics/fake.eps");
c1->Clear();
TH1F *hRealScaled = (TH1F*)hReal->Clone("hRealScaled");
hRealScaled->Scale(1./iReal);
TH1F *hFakeScaled = (TH1F*)hFake->Clone("hFakeScaled");
hFakeScaled->Scale(1./iFake);
hFakeScaled->SetLineColor(9);
hFakeScaled->SetFillColor(0);
hRealScaled->SetLineColor(46);
hRealScaled->SetFillColor(0);
hRealScaled->Draw("hist e1");
hFakeScaled->Draw("hist e1 same");
float max1 = hRealScaled->GetMaximum();
float max2 = hFakeScaled->GetMaximum();
max = (max1 > max2) ? max1 : max2;
hRealScaled->SetMaximum(1.3*max);
hRealScaled->SetMinimum(0.);
if( histnameFake == "h_muFake_pt" ) hRealScaled->GetXaxis()->SetTitle("p_{T} [GeV]");
if( histnameFake == "h_muFake_trackerLayersWithMeasurement" ) hRealScaled->GetXaxis()->SetTitle("trackerLayersWithMeasurement");
if( histnameFake == "h_muFake_numberOfValidMuonHits" ) hRealScaled->GetXaxis()->SetTitle("numberOfValidMuonHits");
if( histnameFake == "h_muFake_numberOfMatches" ) hRealScaled->GetXaxis()->SetTitle("numberOfMatches");
if( histnameFake == "h_muFake_numberOfMatchedStations" ) hRealScaled->GetXaxis()->SetTitle("numberOfMatchedStations");
if( histnameFake == "h_muFake_numberOfValidHits" ) hRealScaled->GetXaxis()->SetTitle("numberOfValidHits");
if( histnameFake == "h_muFake_numberOfValidPixelHits" ) hRealScaled->GetXaxis()->SetTitle("numberOfValidPixelHits");
if( histnameFake == "h_muFake_numberOfHits" ) hRealScaled->GetXaxis()->SetTitle("numberOfHits");
if( histnameFake == "h_muFake_normalizedChi2GlobalTrack" ) hRealScaled->GetXaxis()->SetTitle("normalizedChi2GlobalTrack");
if( histnameFake == "h_muFake_normalizedChi2InnerTrack" ) hRealScaled->GetXaxis()->SetTitle("normalizedChi2InnerTrack");
hRealScaled->GetYaxis()->SetTitle("Normalized to unity");
leg->Draw();
c1->Print("pics/fakeComp.eps");
c1->Clear();
gApplication->Terminate();
}
示例9: 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();
//.........这里部分代码省略.........
示例10: allCutFlow
//.........这里部分代码省略.........
dataEff->SetBinContent(i, data->GetBinContent(i+1)/data->GetBinContent(i));
dataEff->SetBinError(i, sqrt(pow(data->GetBinContent(i+1),2)+pow(data->GetBinContent(i),2)));
mcEff->SetBinContent(i, allMC->GetBinContent(i+1)/allMC->GetBinContent(i));
}
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_data.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(10000.);
hs->Draw();
for(int i =0; i<tt->GetNbinsX(); i++)
hs->GetXaxis()->SetBinLabel(i+1, step[i]);
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(tt , "t#bar{t}", "lf");
tleg2->AddEntry(top_t, "single top", "lf");
tleg2->AddEntry(wjets , "w+jets", "lf");
tleg2->AddEntry(zjets , "z+jets", "lf");
tleg2->AddEntry(qcd , "QCD", "lf");
//tleg2->AddEntry(singtEff, "single-t" , "l");
//tleg2->AddEntry(singtwEff, "single-tW" , "l");
tleg2->Draw("same");
TText* textPrelim = doPrelim(0.17,0.96);
textPrelim->Draw();
if(logPlot ==true){
c1->SetLogy();
}
TString plotName("plots/cutFlow/");
if(logPlot ==true){
plotName += Variable+"_Log";
plotName += Nbtags+".png";
}else{
plotName += Variable+"";
plotName += Nbtags+".png";
}
c1->SaveAs(plotName);
delete c1;
//print out
std::cout.setf(std::ios::fixed);
std::cout.precision(0);
cout << " & ttbar & wjets & zjets & single-t & qcd & all MC & data " << endl;
for(int i = 0; i < tt->GetNbinsX(); i++){
cout << step[i] << " & " << tt->GetBinContent(i+1) << " $\\pm$ " << tt->GetBinError(i+1) << " & " << wjets->GetBinContent(i+1) << " $\\pm$ " << wjets->GetBinError(i+1) << " & " << zjets->GetBinContent(i+1) << " $\\pm$ " << zjets->GetBinError(i+1) << " & " << single_t->GetBinContent(i+1) << " $\\pm$ " << single_t->GetBinError(i+1) << " & " << qcd->GetBinContent(i+1) << " $\\pm$ " << qcd->GetBinError(i+1) << " & " << allMC->GetBinContent(i+1) << " $\\pm$ " << allMC->GetBinError(i+1) << " & " << data->GetBinContent(i+1) << " $\\pm$ " << data->GetBinError(i+1) << endl;
}
}
}
示例11: view
void view()
{
TFile* f = TFile::Open("result.root");
int signalColorTable[20], backgroundColorTable[20];
for ( int i=0; i<20; ++i )
{
signalColorTable[i] = kAzure+10-i;
backgroundColorTable[i] = kOrange+10-i;
}
TList* signalPlots = makePlots((TDirectory*)f->Get("MC_Signal_EMEM"), signalColorTable);
TList* backgroundPlots = makePlots((TDirectory*)f->Get("MC_Background_EMEM"), backgroundColorTable, true);
if ( signalPlots == 0 || backgroundPlots == 0 ) return;
const int nPlots = signalPlots->GetSize();
for ( int i=0; i<nPlots; ++i )
{
THStack* hSignal = (THStack*)signalPlots->At(i);
THStack* hBackground = (THStack*)backgroundPlots->At(i);
TString histName = hSignal->GetName();
bool doLog = histName.Contains("Pt");// || histName.Contains("RelIso");
TCanvas* c = new TCanvas(TString("c")+hSignal->GetName(), hSignal->GetTitle(), 1200, 600);
TPad* pad;
c->Divide(2,1);
TString xTitle, yTitle;
pad = (TPad*)c->cd(1);
if ( doLog ) pad->SetLogy();
pad->SetBorderSize(0);
pad->SetBorderMode(0);
hBackground->Draw();
xTitle = ((TH1*)hBackground->GetHists()->At(0))->GetXaxis()->GetTitle();
yTitle = ((TH1*)hBackground->GetHists()->At(0))->GetYaxis()->GetTitle();
hBackground->GetXaxis()->SetTitle(xTitle);
hBackground->GetYaxis()->SetTitle(yTitle);
pad->BuildLegend(0.6, 0.6, 0.98, 0.98);
pad = (TPad*)c->cd(2);
if ( doLog ) pad->SetLogy();
pad->SetBorderSize(0);
pad->SetBorderMode(0);
hSignal->Draw("nostack");
xTitle = ((TH1*)hSignal->GetHists()->At(0))->GetXaxis()->GetTitle();
yTitle = ((TH1*)hSignal->GetHists()->At(0))->GetYaxis()->GetTitle();
hSignal->GetXaxis()->SetTitle(xTitle);
hSignal->GetYaxis()->SetTitle(yTitle);
pad->BuildLegend(0.6, 0.7, 0.98, 0.98);
c->Print(TString(c->GetName())+".png");
}
}
示例12: Plot_tauPt_Stage1_DD
//.........这里部分代码省略.........
// tauPt_Stage1_Wprime_M4000->SetFillColorAlpha(kGreen-7,0.5);
tauPt_Stage1_Wprime_M4000->SetLineColor(kMagenta);
tauPt_Stage1_Wprime_M4000->SetLineWidth(2);
tauPt_Stage1_Wprime_M4000->SetLineStyle(5);
tauPt_Stage1_Wprime_M4000->Rebin(10) ;
//--Plotting Styles//
gStyle->SetPadLeftMargin(0.15);
gStyle->SetPadRightMargin(0.05);
gStyle->SetPadBottomMargin(0.12);
gStyle->SetPadTopMargin(0.05);
gStyle->SetTitleXSize(0.05);
gStyle->SetTitleXOffset(1.05);
gStyle->SetTitleYSize(0.05);
gStyle->SetTitleYOffset(1.05);
//////// Output File /////////
TFile* outputFile = new TFile("Out_tauPt_Stage1.root","RECREATE");
outputFile->cd();
//--//
THStack *hs = new THStack("hs","");
// hs->Add(tauPt_Stage1_WJetsToLNu);
hs->Add(total_diboson);
hs->Add(total_DY);
hs->Add(total_ST);
hs->Add(total_TT);
// hs->Add(tauPt_Stage1_DYJetsToLL_M50);
hs->Add(total_QCD);
// hs->Add(total_ZJets);
hs->Add(total_WJets);
//tauPt_Stage1_->SetTitle("");
/*
eff1->GetYaxis()->SetTitle("Events");
//eff1->SetMarkerStyle(0);
//eff1->SetMarkerColor(kBlack);
eff1->SetLineColor(kBlack);
eff1->SetLineWidth(2);
*/
TCanvas* my_canvas = new TCanvas("canvas","canvas",800,600);
my_canvas->cd();
// hs->Draw();
gPad->SetLogy();
hs->Draw("HIST");
hs->SetMaximum(100000);
hs->SetMinimum(0.1);
hs->GetXaxis()->SetRangeUser(0, 1000);
// hs->GetXaxis()->SetLimits(40, 3200);
hs->GetXaxis()->SetTitle("#tau pT [GeV]");
hs->GetYaxis()->SetTitle("Events");
TH1F* total = (TH1F*)hs->GetStack()->Last()->Clone();
// total->SetFillStyle(3004);
// total->SetFillColor(kGray+1);
// total->SetMarkerColor(0);
// total->Draw("SAME E2");
//hs->GetStack()->Last()->Draw("same E");
// hs->Draw("SAME HIST");
// tauPt_Stage1_Run2016E->Draw("SAME E0");
tauPt_Stage1_Run2016all->Draw("SAME E0");
TH1F* mydata = (TH1F*)tauPt_Stage1_Run2016all->Clone();
//tauPt_Stage1_Run2016C->Draw("SAME E0");
//tauPt_Stage1_Run2016CDE->Draw("SAME E0");
//
示例13: distribution
//.........这里部分代码省略.........
TPad *subpad_1 = NULL; // will use it to access specific subpad in canvas
TPad *subpad_2 = NULL;
TCanvas *c;
if (data0_noData1 == 0) c = new TCanvas(canvasName.c_str(), (var + " distribution").c_str(), 700, 700);
else c = new TCanvas(canvasName.c_str(), (var + " distribution").c_str());
TLegend *leg = new TLegend(0.7,0.6,0.99,0.94);
// if there are data, split canvas to draw the dta/MC ratio plot
if (data0_noData1 == 0) {
subpad_1 = new TPad("pad_1","",0.0,0.28,1.0,1.0);
if (yAxisLog_flag) subpad_1->SetLogy();
//subpad_1->SetBottomMargin(0);
subpad_2 = new TPad("pad_2","",0.0,0.0,1.0,0.32);
subpad_2->SetGridy();
//subpad_2->SetTopMargin(0);
subpad_2->SetBottomMargin(0.3);
subpad_1->Draw();
subpad_2->Draw();
subpad_1->cd();
} else if (yAxisLog_flag) c->SetLogy();
hMCstack->Draw("HIST");
//if (yAxisMin > 0) hMCstack->SetMinimum(yAxisMin);
if (yAxisMin < yAxisMax) {
if (data0_noData1 == 0) subpad_1->Update(); // to be done after Draw() to access pad parameters such as default axis range
else c->Update();
hMCstack->GetYaxis()->SetRangeUser(yAxisMin,yAxisMax);
}
// if (data0_noData1 == 0) {
// if (yAxisMin > 0) hMCstack->GetYaxis()->SetRangeUser(yAxisMin, subpad_1->GetY2());
// else hMCstack->GetYaxis()->SetRangeUser(yAxisMin, c->GetY2());
// }
//hMCstack->SetMaximum(4000.0);
TH1D* stackCopy = (TH1D*)(((TH1D*)hMCstack->GetStack()->Last())->DrawCopy("E2 SAME"));
stackCopy->SetFillColor(kBlack);
stackCopy->SetFillStyle(3144);
if (data0_noData1 == 1) { // when using data ( == 0) the x axis will not have labels (they will only be below in the ratio plot
hMCstack->GetXaxis()->SetTitle(xAxisName.c_str());
hMCstack->GetXaxis()->SetTitleSize(0.06);
hMCstack->GetXaxis()->SetTitleOffset(0.6);
}
if (xAxisMin < xAxisMax) {
if (data0_noData1 == 0) subpad_1->Update(); // to be done after Draw() to access pad parameters such as default axis range
else c->Update();
hMCstack->GetXaxis()->SetRangeUser(xAxisMin,xAxisMax);
}
if (binDensity_flag == 0) hMCstack->GetYaxis()->SetTitle("events");
else hMCstack->GetYaxis()->SetTitle("events / GeV");
hMCstack->GetYaxis()->SetTitleSize(0.06);
hMCstack->GetYaxis()->SetTitleOffset(0.8);
hMCstack->GetYaxis()->CenterTitle();
for (Int_t j = (nFiles-1); j >= 0; j--) {
示例14: crossXmass
void crossXmass(int k=4){
gSystem->Load("libFWCoreFWLite.so");
gROOT->LoadMacro("tdrstyle.C");
setTDRStyle();
//gStyle->SetOptStat(0000);
gStyle->SetOptFit(0011);
TFile * file = new TFile("preUnfolding.root");
TFile * file_unfolded = new TFile("unfolded.root");
TFile * file_acceptance = new TFile("acceptance.root");
TFile * file_truthFinal = new TFile("truthFinal.root");
TFile * file_zprimeM1000W1 = new TFile("zprime/ZPrimeM1000W1.root");
TFile * file_zprimeM2000W1 = new TFile("zprime/ZPrimeM2000W1.root");
//truth level after reconstruction level selection
TH1F * hGenDistMADGRAPH = (TH1F*) file->Get("hTruth_MadGraph");
TH1F * hGenDistPOWHEG = (TH1F*) file->Get("hTruth_Powheg");
//unfolded plot
TH1F * h_unfold = (TH1F*) file_unfolded->Get("unfolded");
//acceptance
TH1F * hAcceptDist = (TH1F*) file_acceptance->Get("hAccept_vsum");
TH1F * hAcceptDistFull = (TH1F*) file_acceptance->Get("hAccept_vsum_Full");
//truth level for final
TH1D * hGenMADGRAPH = (TH1D*) file_truthFinal->Get("hTruthFinalMADGRAPH");
TH1D * hGenPOWHEG = (TH1D*) file_truthFinal->Get("hTruthFinalPOWHEG");
TH1D * hGenMADGRAPH_Full = (TH1D*) file_truthFinal->Get("hTruthFinalMADGRAPH_Full");
TH1D * hGenPOWHEG_Full = (TH1D*) file_truthFinal->Get("hTruthFinalPOWHEG_Full");
double lumi = 1143.22;
bool printX = true; //print cross section
bool norm = false;
TH1F* hSigmaData = getMeasuredCrossSection(h_unfold, hAcceptDistFull,lumi,norm, true, "unfolded",false);
TH1F* hSigmaTruthHisto = getTruthCrossSection(hGenDistMADGRAPH, hGenMADGRAPH_Full, lumi, norm, false, 1, printX);
TH1F* hSigmazprimeM1000W1 = getTruthCrossSection(file_zprimeM1000W1, ZXsectionW1[7], "M1000W1");
TH1F* hSigmazprimeM2000W1 = getTruthCrossSection(file_zprimeM2000W1, ZXsectionW1[18], "M2000W1");
TH1F* hSigmazprime = hSigmazprimeM1000W1;
TCanvas * c_Xmass = new TCanvas("c_Xmass","c_Xmass",1);
c_Xmass->SetLogy();
TH1F* h_Xmass = (TH1F*)h_unfold->Clone("hSigmaData");
TH1F* h_Xmass_ttbar = (TH1F*)h_unfold->Clone("hSigmaData");
TH1F* h_Xmass_zprime = (TH1F*) h_unfold->Clone("hSigmaData");
h_Xmass->Reset();
h_Xmass_ttbar->Reset();
h_Xmass_zprime->Reset();
int nbins = h_unfold->GetNbinsX();
double total = 0;
double total_ttbar = 0;
double total_zprime = 0;
for(int i=nbins; i >= 1 ;i--){
double sigma = hSigmaData->GetBinContent(i)*hSigmaData->GetBinWidth(i);
double sigma_ttbar = hSigmaTruthHisto->GetBinContent(i)*hSigmaTruthHisto->GetBinWidth(i);
double sigma_zprime = hSigmazprime->GetBinContent(i)*hSigmazprime->GetBinWidth(i);
total += sigma;
total_ttbar += sigma_ttbar;
total_zprime += sigma_zprime;
cout << hSigmazprime->GetBinContent(i)*hSigmazprime->GetBinWidth(i) << endl;
h_Xmass->SetBinContent(i, total);
h_Xmass_ttbar->SetBinContent(i, total_ttbar);
h_Xmass_zprime->SetBinContent(i, total_zprime);
}
THStack *hs = new THStack("hs","zprime plus ttbar");
h_Xmass_ttbar->SetFillColor(2);
h_Xmass_zprime->SetLineColor(4);
h_Xmass_zprime->SetLineWidth(2);
hs->Add(h_Xmass_ttbar);
hs->Add(h_Xmass_zprime);
hs->Draw();
hs->GetYaxis()->SetTitle("#int_{x}^{#infty} d#sigma/dm_{t#bar{t}} dm_{t#bar{t}}");
hs->GetXaxis()->SetTitle(" m_{t#bar{t}}");
h_Xmass->Draw("p same");
TLegend *l= new TLegend();
l->AddEntry(h_Xmass, "Data" ,"p");
l->AddEntry(h_Xmass_ttbar, "t#bar{t}" ,"F");
l->AddEntry(h_Xmass_zprime, "zprime" ,"L");
SetLegendStyle(l,true);
l->Draw("same");
}
示例15: doPlotsBtag
//.........这里部分代码省略.........
hs->Add(qcd1);
hs->Add(qcd2);
hs->Add(qcd3);
hs->Add(qcd4);
hs->Add(qcd5);
hs->Add(qcd6);
hs->Add(qcd7);
hs->Add(qcd8);
hs->Add(qcd9);
hs->Add(qcd10);
hs->Add(qcd11);
}
if(inclZ == true){
hs->Add(zjets);
}else{
hs->Add(z1jets);
hs->Add(z2jets);
hs->Add(z3jets);
hs->Add(z4jets);
}
if(inclW == true){
hs->Add(wjets);
}else{
hs->Add(w1jets);
hs->Add(w2jets);
hs->Add(w3jets);
hs->Add(w4jets);
}
hs->Add(top_t);
hs->Add(top_tw);
hs->Add(top_s);
hs->Add(tbar_t);
hs->Add(tbar_tw);
hs->Add(tbar_s);
hs->Add(tt);
//draw histos to files
TCanvas *c1 = new TCanvas("Plot","Plot",900, 600);
hs->SetMaximum(data->GetBinContent(data->GetMaximumBin())*1.2);
hs->Draw();
data->Draw("E same");
data->SetMarkerStyle(20);
//events:
cout << "ttbar: " << tt->Integral() << endl;
cout << "data: " << data->Integral() << endl;
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(tt , "t#bar{t}", "lf");
tleg2->AddEntry(top_t, "single top", "lf");
tleg2->AddEntry(wjets , "w+jets", "lf");
tleg2->AddEntry(zjets , "z+jets", "lf");
tleg2->AddEntry(qcd , "QCD", "lf");
//tleg2->AddEntry(singtEff, "single-t" , "l");
//tleg2->AddEntry(singtwEff, "single-tW" , "l");
tleg2->Draw("same");
TText* textPrelim = doPrelim(0.17,0.96);
textPrelim->Draw();
if(logPlot ==true){
c1->SetLogy();
}
TString plotName("plots/Control/Btags/");
if(logPlot ==true){
plotName += Variable+"Test_Log";
plotName += ".pdf";
}else{
plotName += Variable;
plotName += ".pdf";
}
c1->SaveAs(plotName);
delete c1;
}
}