#include #include #include #include void SetHistoGraphicalProperties ( TH1 * histo, Double_t ymin, Double_t ymax ) { histo->GetXaxis()->SetTitle("x") ; histo->GetXaxis()->CenterTitle() ; histo->GetXaxis()->SetTitleSize(0.10) ; histo->GetXaxis()->SetTitleOffset(1.2) ; histo->GetXaxis()->SetLabelSize(0.07) ; histo->GetXaxis()->SetLabelOffset(0.04) ; histo->GetXaxis()->SetTickLength(0.) ; histo->GetYaxis()->SetTitle("y") ; histo->GetYaxis()->CenterTitle() ; histo->GetYaxis()->SetTitleSize(0.10) ; histo->GetYaxis()->SetTitleOffset(1.2) ; histo->GetYaxis()->SetLabelSize(0.07) ; histo->GetYaxis()->SetLabelOffset(0.04) ; histo->GetYaxis()->SetTickLength(0.) ; histo->GetZaxis()->SetTitle("z") ; histo->GetZaxis()->CenterTitle() ; histo->GetZaxis()->SetTitleSize(0.10) ; histo->GetZaxis()->SetTitleOffset(0.6) ; histo->GetZaxis()->SetLabelSize(0.07) ; histo->GetZaxis()->SetLabelOffset(0.04) ; histo->GetZaxis()->SetTickLength(0.) ; histo->SetStats(kFALSE) ; histo->GetXaxis()->SetNdivisions(histo->GetNbinsX()) ; histo->GetYaxis()->SetNdivisions(histo->GetNbinsY()) ; histo->SetMinimum(ymin) ; histo->SetMaximum(ymax) ; histo->GetZaxis()->SetNdivisions(10) ; return ; } /// void zztest () { gStyle->SetHistMinimumZero(kTRUE) ; gStyle->SetPalette(53) ; gStyle->SetTitleFontSize(0.10) ; Double_t ymax=5., ymin=-1.*ymax ; TH2D * h1 = new TH2D ("h1","h1", 3,0.,3., 3,0.,3.) ; h1->SetBinContent(1,1, 2.) ; h1->SetBinContent(1,2, 5.) ; h1->SetFillColor(kRed ) ; h1->SetLineColor(kTeal ) ; h1->SetLineStyle(1) ; h1->SetLineWidth(1) ; SetHistoGraphicalProperties (h1,ymin,ymax) ; TH2D * h2 = new TH2D ("h2","h2", 3,0.,3., 3,0.,3.) ; h2->SetBinContent(1,1, 1.) ; h2->SetBinContent(2,2, 3.) ; h2->SetFillColor(kAzure+1) ; h2->SetLineColor(kOrange) ; h2->SetLineStyle(2) ; h2->SetLineWidth(2) ; SetHistoGraphicalProperties (h2,ymin,ymax) ; //TH2D * h2 = new TH2D ("h2","h2", 3,0.,3., 3,0.,3.) ; h2->SetBinContent(1,1,-3.) ; h2->SetBinContent(2,2, 0.) ; h2->SetFillColor(kAzure+1) ; h2->SetLineColor(kOrange) ; h2->SetLineStyle(2) ; h2->SetLineWidth(2) ; SetHistoGraphicalProperties (h2,ymin,ymax) ; /// DOES NOT WORK! Normal, bug in THStack: THStack does manage negative bin TH2 TH2D * h3 = new TH2D ("h3","h3", 3,0.,3., 3,0.,3.) ; h3->SetBinContent(3,3, 5.) ; h3->SetFillColor(kGreen+1) ; h3->SetLineColor(kViolet) ; h3->SetLineStyle(3) ; h3->SetLineWidth(3) ; SetHistoGraphicalProperties (h3,ymin,ymax) ; THStack * hs = new THStack ("hstack","hstack") ; hs->SetMinimum(ymin) ; hs->SetMaximum(ymax) ; Bool_t displayh1=1 ; Bool_t addh1=1 ; if ( addh1 ) { hs->Add(h1) ; } Bool_t displayh2=1 ; Bool_t addh2=1 ; if ( addh2 ) { hs->Add(h2) ; } Bool_t displayh3=1 ; Bool_t addh3=1 ; if ( addh3 ) { hs->Add(h3) ; } Bool_t displayhs=1 ; Bool_t displaylego =1 ; Bool_t displaylego1=1 ; Bool_t displaylego2=1 ; Bool_t displaylego3=1 ; Bool_t displaylego4=1 ; Bool_t displayfb=1 ; Bool_t displaybb=1 ; vector * zero = new vector ; zero->push_back(0) ; /// draw without the zero option zero->push_back(1) ; /// draw with the zero option vector * view = new vector ; Double_t theta=-999., phi=-999. ; view->push_back( 1) ; /// top view (theta=+30., phi=+30., default view) view->push_back(-1) ; /// bottom view (theta=-30., phi=-30.) Int_t ncanvas = zero->size() * view->size() ; TCanvas ** canvas = new TCanvas * [ncanvas] ; TString canvasname="" ; for (UInt_t idx=0; idxsize(); idx++) { for (UInt_t jdx=0; jdxsize(); jdx++) { if ( view->at(jdx) == 1 ) { theta= 30. ; phi= 30. ; } else { theta=-30. ; phi=-30. ; } canvasname = TString::Format("canvas_zero%d_%s",zero->at(idx),(view->at(jdx)==1)?"topview":"bottomview") ; canvas[idx] = new TCanvas (canvasname,canvasname,0,0,1430,860) ; canvas[idx]->Divide(4,5) ; if ( displayh1 ) { if ( displaylego ) { canvas[idx]->cd( 1) ; gPad->SetTheta(theta) ; gPad->SetPhi(phi) ; h1->SetTitle("h1, lego " ) ; h1->DrawClone(TString::Format("lego ,%s%s%s",displayfb?"":",fb",displaybb?"":",bb",(zero->at(idx)==1)?"0,":"")) ; } if ( displaylego1 ) { canvas[idx]->cd( 5) ; gPad->SetTheta(theta) ; gPad->SetPhi(phi) ; h1->SetTitle("h1, lego1" ) ; h1->DrawClone(TString::Format("lego1,%s%s%s",displayfb?"":",fb",displaybb?"":",bb",(zero->at(idx)==1)?"0,":"")) ; } if ( displaylego2 ) { canvas[idx]->cd( 9) ; gPad->SetTheta(theta) ; gPad->SetPhi(phi) ; h1->SetTitle("h1, lego2" ) ; h1->DrawClone(TString::Format("lego2,%s%s%s",displayfb?"":",fb",displaybb?"":",bb",(zero->at(idx)==1)?"0,":"")) ; } if ( displaylego3 ) { canvas[idx]->cd(13) ; gPad->SetTheta(theta) ; gPad->SetPhi(phi) ; h1->SetTitle("h1, lego3" ) ; h1->DrawClone(TString::Format("lego3,%s%s%s",displayfb?"":",fb",displaybb?"":",bb",(zero->at(idx)==1)?"0,":"")) ; } if ( displaylego4 ) { canvas[idx]->cd(17) ; gPad->SetTheta(theta) ; gPad->SetPhi(phi) ; h1->SetTitle("h1, lego4" ) ; h1->DrawClone(TString::Format("lego4,%s%s%s",displayfb?"":",fb",displaybb?"":",bb",(zero->at(idx)==1)?"0,":"")) ; } } if ( displayh2 ) { if ( displaylego ) { canvas[idx]->cd( 2) ; gPad->SetTheta(theta) ; gPad->SetPhi(phi) ; h2->SetTitle("h2, lego " ) ; h2->DrawClone(TString::Format("lego ,%s%s%s",displayfb?"":",fb",displaybb?"":",bb",(zero->at(idx)==1)?"0,":"")) ; } if ( displaylego1 ) { canvas[idx]->cd( 6) ; gPad->SetTheta(theta) ; gPad->SetPhi(phi) ; h2->SetTitle("h2, lego1" ) ; h2->DrawClone(TString::Format("lego1,%s%s%s",displayfb?"":",fb",displaybb?"":",bb",(zero->at(idx)==1)?"0,":"")) ; } if ( displaylego2 ) { canvas[idx]->cd(10) ; gPad->SetTheta(theta) ; gPad->SetPhi(phi) ; h2->SetTitle("h2, lego2" ) ; h2->DrawClone(TString::Format("lego2,%s%s%s",displayfb?"":",fb",displaybb?"":",bb",(zero->at(idx)==1)?"0,":"")) ; } if ( displaylego3 ) { canvas[idx]->cd(14) ; gPad->SetTheta(theta) ; gPad->SetPhi(phi) ; h2->SetTitle("h2, lego3" ) ; h2->DrawClone(TString::Format("lego3,%s%s%s",displayfb?"":",fb",displaybb?"":",bb",(zero->at(idx)==1)?"0,":"")) ; } if ( displaylego4 ) { canvas[idx]->cd(18) ; gPad->SetTheta(theta) ; gPad->SetPhi(phi) ; h2->SetTitle("h2, lego4" ) ; h2->DrawClone(TString::Format("lego4,%s%s%s",displayfb?"":",fb",displaybb?"":",bb",(zero->at(idx)==1)?"0,":"")) ; } } if ( displayh3 ) { if ( displaylego ) { canvas[idx]->cd( 3) ; gPad->SetTheta(theta) ; gPad->SetPhi(phi) ; h3->SetTitle("h3, lego " ) ; h3->DrawClone(TString::Format("lego ,%s%s%s",displayfb?"":",fb",displaybb?"":",bb",(zero->at(idx)==1)?"0,":"")) ; } if ( displaylego1 ) { canvas[idx]->cd( 7) ; gPad->SetTheta(theta) ; gPad->SetPhi(phi) ; h3->SetTitle("h3, lego1" ) ; h3->DrawClone(TString::Format("lego1,%s%s%s",displayfb?"":",fb",displaybb?"":",bb",(zero->at(idx)==1)?"0,":"")) ; } if ( displaylego2 ) { canvas[idx]->cd(11) ; gPad->SetTheta(theta) ; gPad->SetPhi(phi) ; h3->SetTitle("h3, lego2" ) ; h3->DrawClone(TString::Format("lego2,%s%s%s",displayfb?"":",fb",displaybb?"":",bb",(zero->at(idx)==1)?"0,":"")) ; } if ( displaylego3 ) { canvas[idx]->cd(15) ; gPad->SetTheta(theta) ; gPad->SetPhi(phi) ; h3->SetTitle("h3, lego3" ) ; h3->DrawClone(TString::Format("lego3,%s%s%s",displayfb?"":",fb",displaybb?"":",bb",(zero->at(idx)==1)?"0,":"")) ; } if ( displaylego4 ) { canvas[idx]->cd(19) ; gPad->SetTheta(theta) ; gPad->SetPhi(phi) ; h3->SetTitle("h3, lego4" ) ; h3->DrawClone(TString::Format("lego4,%s%s%s",displayfb?"":",fb",displaybb?"":",bb",(zero->at(idx)==1)?"0,":"")) ; } } if ( displayhs ) { if ( displaylego ) { canvas[idx]->cd( 4) ; gPad->SetTheta(theta) ; gPad->SetPhi(phi) ; hs->SetTitle("hstack, lego ") ; hs->DrawClone(TString::Format("lego ,%s%s%s",displayfb?"":",fb",displaybb?"":",bb",(zero->at(idx)==1)?"0,":"")) ; } if ( displaylego1 ) { canvas[idx]->cd( 8) ; gPad->SetTheta(theta) ; gPad->SetPhi(phi) ; hs->SetTitle("hstack, lego1") ; hs->DrawClone(TString::Format("lego1,%s%s%s",displayfb?"":",fb",displaybb?"":",bb",(zero->at(idx)==1)?"0,":"")) ; } if ( displaylego2 ) { canvas[idx]->cd(12) ; gPad->SetTheta(theta) ; gPad->SetPhi(phi) ; hs->SetTitle("hstack, lego2") ; hs->DrawClone(TString::Format("lego2,%s%s%s",displayfb?"":",fb",displaybb?"":",bb",(zero->at(idx)==1)?"0,":"")) ; } if ( displaylego3 ) { canvas[idx]->cd(16) ; gPad->SetTheta(theta) ; gPad->SetPhi(phi) ; hs->SetTitle("hstack, lego3") ; hs->DrawClone(TString::Format("lego3,%s%s%s",displayfb?"":",fb",displaybb?"":",bb",(zero->at(idx)==1)?"0,":"")) ; } if ( displaylego4 ) { canvas[idx]->cd(20) ; gPad->SetTheta(theta) ; gPad->SetPhi(phi) ; hs->SetTitle("hstack, lego4") ; hs->DrawClone(TString::Format("lego4,%s%s%s",displayfb?"":",fb",displaybb?"":",bb",(zero->at(idx)==1)?"0,":"")) ; } } canvas[idx]->SaveAs(TString::Format("%s.png",canvasname.Data())) ; canvas[idx]->SaveAs(TString::Format("%s.pdf",canvasname.Data())) ; } } return ; }