[ROOT] TH1, TF1 and integrals

From: Julien Bolmont (julien.bolmont@gamum2.in2p3.fr)
Date: Wed Feb 11 2004 - 15:15:54 MET


Hi,

Sorry if this question has already been asked or seems stupid but I 
really don't know what happen...

I really don't know how ROOT does to integrate TF1 and TH1...
For example, I send you a macro. If you run it, you will see (I hope 
because it's what I see) that the integral of a product of a constant c 
with a function f is not equal to the product of the constant c with 
the integral of f.
The other problem is that the integral of the corresponding histogram 
(TH1) is wrong too...

I think I probably miss something important ! But what ?

Could you explain to me why these two cases leads to wrong results ?
Why the result with a TF1 is so different from the result obtained with 
a TH1, even with a big number of bins ?

Thanks a lot for your answer !

Julien.



{

	gROOT->Reset();
	
	// f1 = x**-2
	TF1 *f1 = new TF1("essai1", "pow(x, -2)", 0, 1000000);
	
	// f2 = 8.343e-7 * x**-2
	TF1 *f2 = new TF1("essai2", "8.343e-7 * pow(x, -2)", 0, 1000000);
	
	cout << 8.343e-7 * f1->Integral(0.1, 100000) << "  OK" << endl;
	cout << f2->Integral(0.1, 100000) << "  NOK !!" << endl;
	
	TH1D *h1 = new TH1D("essai3", "essai3", 1000000, 0, 100000);
	h1->Eval(f2, "R");
	
	Int_t imin = h1->FindBin(0.1);
	Int_t imax = h1->FindBin(100000);
	cout << "histo integral with \"width\" = " << h1->Integral(imin, imax, 
"width") << endl;
	
	delete h1;
	
}




------------------------------------------------------
Julien Bolmont
Ingénieur diplômé - doctorant
Groupe d'Astroparticules de Montpellier



This archive was generated by hypermail 2b29 : Sun Jan 02 2005 - 05:50:05 MET