Re: [ROOT] strnage integral values

From: Stanislav Nesterov (Stanislav.Nesterov@pnpi.spb.ru)
Date: Thu Dec 11 2003 - 13:18:20 MET


   Hi,
   You are right. An integral of the absolute value is calculated since 
ver. 1.68 of TF1.cxx (CVS rev.).  I don't know why the statistical 
functions required such thing.
----------------------------------------------------------------------
--- TF1.cxx    14 Jul 2003 12:58:22 -0000    1.67
+++ TF1.cxx    20 Aug 2003 07:00:47 -0000    1.68
@@ -1,4 +1,4 @@
-// @(#)root/hist:$Name:  $:$Id: TF1.cxx,v 1.67 2003/07/14 12:58:22 brun 
Exp $
+// @(#)root/hist:$Name:  $:$Id: TF1.cxx,v 1.68 2003/08/20 07:00:47 brun 
Exp $
 // Author: Rene Brun   18/08/95
 
 /*************************************************************************
@@ -1563,18 +1563,18 @@
   for (i=0;i<4;i++) {
      u     = c2*x[i];
      xx[0] = c1+u;
-     f1    = EvalPar(xx,params);
+     f1    = TMath::Abs(EvalPar(xx,params));
      xx[0] = c1-u;
-     f2    = EvalPar(xx,params);
+     f2    = TMath::Abs(EvalPar(xx,params));
      s8   += w[i]*(f1 + f2);
   }
   s16 = 0;
   for (i=4;i<12;i++) {
      u     = c2*x[i];
      xx[0] = c1+u;
-     f1    = EvalPar(xx,params);
+     f1    = TMath::Abs(EvalPar(xx,params));
      xx[0] = c1-u;
-     f2    = EvalPar(xx,params);
+     f2    = TMath::Abs(EvalPar(xx,params));
      s16  += w[i]*(f1 + f2);
   }
   s16 = c2*s16;
@@ -1749,14 +1749,14 @@
    sum3   = 0;
    for (j=0;j<n;j++) {
       z[j]    = ctr[j] - xl2*wth[j];
-      f2      = EvalPar(z,fParams);
+      f2      = TMath::Abs(EvalPar(z,fParams));
       z[j]    = ctr[j] + xl2*wth[j];
-      f2     += EvalPar(z,fParams);
+      f2     += TMath::Abs(EvalPar(z,fParams));
       wthl[j] = xl4*wth[j];
       z[j]    = ctr[j] - wthl[j];
-      f3      = EvalPar(z,fParams);
+      f3      = TMath::Abs(EvalPar(z,fParams));
       z[j]    = ctr[j] + wthl[j];
-      f3     += EvalPar(z,fParams);
+      f3     += TMath::Abs(EvalPar(z,fParams));
       sum2   += f2;
       sum3   += f3;
       dif     = TMath::Abs(7*f2-f3-12*sum1);
@@ -1777,7 +1777,7 @@
             for (m=0;m<2;m++) {
                wthl[k] = -wthl[k];
                z[k]    = ctr[k] + wthl[k];
-               sum4 += EvalPar(z,fParams);
+               sum4 += TMath::Abs(EvalPar(z,fParams));
             }
          }
          z[k] = ctr[k];
@@ -1791,7 +1791,7 @@
       z[j] = ctr[j] + wthl[j];
    }
 L90:
-   sum5 += EvalPar(z,fParams);
+   sum5 += TMath::Abs(EvalPar(z,fParams));
    for (j=0;j<n;j++) {
       wthl[j] = -wthl[j];
       z[j] = ctr[j] + wthl[j];
--------------------------------------------------------------

As you can see function value everywhere is replaced by its absolute value.
   
                                        Best regards,
                                                             Stanislav.
                                                      
Vincent Roberfroid wrote:

>Yes it's correct !
>This problem is present with root 3.10/00.
>It doesn't exist with root 3.05.
>
>Vincent
>
>On Wednesday 10 December 2003 19:42, Martijn Schellekens wrote:
>  
>
>>Dear Rooters,
>>
>>I have this strange integral result:
>> > TH1 func("func","-x",-50,50)
>> >func.Integral(-1,1)
>>
>>result:
>>	1
>>Can someone explains this result to me???
>>(seems to compute the integral of the absolute value: negatif values are
>>not of this world after all???)
>>
>>Thanks a lot,
>>Martijn Schellekens
>>    
>>



This archive was generated by hypermail 2b29 : Thu Jan 01 2004 - 17:50:17 MET