### Histogram Libraries

#### TH1

- Improve performances of TH1::Merge in case of histograms with same bin limits. Now an copy of the initial histogram is not done. These improvements have been applied also in the TH2, TH3 and TProfile's classes.

#### TH2

- Add a new option "S" in FitSlice which performs a sliding merge: merge n consecutive bins along Y accordingly to what value in option Gn is given.

#### TProfile2D and TProfile3D

- Implement SetBins for variable bin sizes
- Add support for variable bins in TProjectionXY

#### TH2Poly

- The values set by `SetMaximum()` and `SetMinimum()` were not taken into account by `GetMaximum()` and `GetMinimum()`.
- The Palette and the statistics box were not pickable when TH2Poly was drawn with option COLZ.
- TH2Poly was wrongly picked in the canvas area after a zoom along axis.

#### TEfficiency

- list holding the associated functions is created only on demand
- default constructor creates two dummy histograms
- can now be filled with weights (only Bayesian methods and the normal approximation are supported)
- update `TEfficiency::SavePrimitive` to store also the set bits

#### TGraphAsymmErrors

- add option to `TGraphAsymmErrors::Divide` for interpreting the given histograms as ratio of Poisson means

#### TMultiGraph

- The following macro did not show the x-axis in TimeDisplay mode. The `mg->GetYaxis()->UnZoom();` command erased the TimeDisplay attribute of the axis. (fix from beischer@physik.rwth-aachen.de).

      {
         TMultiGraph* mg = new TMultiGraph;
         TGraph* g = new TGraph;
         for (int i = 0; i < 100; i++) g->SetPoint(i, 1289420808+i, i+2);
         mg->Add(g, "P");
         mg->Draw("AP");
         mg->GetXaxis()->SetTimeDisplay(1);
         mg->GetYaxis()->UnZoom();
         gPad->Modified();
         gPad->Update();
      }

#### TPaletteAxis

- In `TPaletteAxis::Paint()` now makes sure the min and max of the palette are not 0 when the histogram content is 0.
- on Ubuntu the following macro crashed. A char variable was too small.

         {
            TCanvas *tmp = new TCanvas();
            TH2F *h1 = new TH2F("h1","h1",40,0.,10.,40,1.e-2,1.e2);
            h1->Fill(5,10);
            h1->Draw("COLZ");
            tmp->SetLogz();
            h1->GetZaxis()->SetNdivisions(110,kFALSE);
         }

#### THistPainter

- The option E0 forces the error bars drawing even if the data point are outside the plot frame. This option did not clip the error bars correctly.
- Make sure the unique canvas name generated in `SetShowProjection` starts with a letter, and not with a number, to avoid to generate wrong macro when the canvas is saved as a .C file.

#### TGraphPainter

- In `TGraphPainter::PaintGraphErrors` and related functions, the caps that are drawn when option "[]" is specified are drawn as a sequence of three separate lines. This results in an ugly concave jag at each corner. The caps are now drawn using TPad::PaintPolyLine, the default miter line joins makes those jags go away.

#### TPainter3dAlgorithms

- Protection against possible NaN added. The following macro produced wrong plots.

         {
            TCanvas * canvas = new TCanvas("glC","C",800,800);
            TH3D *h = new TH3D("h3","h3",150,0,20,150,-5,5,150,-5,5);
            ntuple->Draw("px:py+1:pz+4.7>>h3","","Q");
         }

#### TGraph

- `TGraph::SavePrimitive()` uses a greater precision to output the X and Y vectors. The following macro generated a wrong output (tmp.C).

         void testGraphPrec() {
            double offset=55.0;
            TCanvas* myC = new TCanvas("myC","myC",600,400);
            TGraph* gr=new TGraph();
            for (int i=0; i < 1000; i++) {
               double point_x = 3.0+((double) i)*1e-7;
               double point_y = offset+((double) i)*1e-8;
               gr->SetPoint(i,point_x,point_y);
            }
            gr->Draw("AP");
            myC->Print("tmp.C");
         }

- The constructor from a file is now able to handle delimiters. Like in the .csv files. (Implementation done by Mathieu Trocme)

#### TGraphErrors

- The constructor from a file is now able to handle delimiters. Like in the .csv files. (Implementation done by Mathieu Trocme)

#### TGraph2D

- The constructor from a file is now able to handle delimiters. Like in the .csv files. (Implementation done by Mathieu Trocme)