From 1f14ee38eb8d76be090d30151b42066959cfd233 Mon Sep 17 00:00:00 2001
From: Rene Brun <Rene.Brun@cern.ch>
Date: Tue, 29 Jun 2010 14:24:07 +0000
Subject: [PATCH] Fix a sign problem in the algorithm of TGraph::Integral. see
 http://root.cern.ch/phpBB3/viewtopic.php?f=3&t=10680

git-svn-id: http://root.cern.ch/svn/root/trunk@34188 27541ba8-7e3a-0410-8455-c3a389f83636
---
 hist/hist/src/TGraph.cxx | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

diff --git a/hist/hist/src/TGraph.cxx b/hist/hist/src/TGraph.cxx
index 6a2805fe009..8589e918129 100644
--- a/hist/hist/src/TGraph.cxx
+++ b/hist/hist/src/TGraph.cxx
@@ -1656,12 +1656,16 @@ Double_t TGraph::Integral(Int_t first, Int_t last) const
    if (first >= last) return 0;
    Int_t np = last-first+1;
    Double_t sum = 0.0;
+   //for(Int_t i=first;i<=last;i++) {
+   //   Int_t j = first + (i-first+1)%np;
+   //   sum += TMath::Abs(fX[i]*fY[j]);
+   //   sum -= TMath::Abs(fY[i]*fX[j]);
+   //}
    for(Int_t i=first;i<=last;i++) {
       Int_t j = first + (i-first+1)%np;
-      sum += TMath::Abs(fX[i]*fY[j]);
-      sum -= TMath::Abs(fY[i]*fX[j]);
+      sum += (fY[i]+fY[j])*(fX[j]-fX[i]);
    }
-   return 0.5*sum;
+   return 0.5*TMath::Abs(sum);
 }
 
 
-- 
GitLab