[ROOT] Problem with TF3::GetRandom3

From: Ben Morgan (B.Morgan@sheffield.ac.uk)
Date: Tue Oct 15 2002 - 18:03:22 MEST


Hi ROOTers,
           I've written a simple script that defines a TF3 with a simple 
Maxwell-Boltzman like velocity distribution and uses this to fill a TH3. I 
then use the GetRandom3 methods of TF3 and TH3 to generate three random 
numbers and use these numbers to get the speed distributions (filled into 
two TH1Fs). I expected 
to find the two speed distributions to be identical, but that generated by 
the call to TF3::GetRandom3 produces the wrong distribution, it's double 
peaked rather than single peaked (the script code is included below). In 
the application I'm developing, I'd rather use the TF3 directly rather 
than having to fill a histogram first.

Is there some mistake in how I've defined the TFormula and TF3, or is it a 
problem with TF3::GetRandom3? I'm using ROOT 3.02/07 on a RH7.1 Linux PC. 
Thanks in advance for any advice,

Ben Morgan.


{
gROOT->Reset();
Float_t x,y,z;
Axis_t v1,v2,v3;
Double_t w1,w2,w3;

hmodel = new TFormula("MB","exp(-1*(pow(x,2)+pow(y,2)+pow(z,2))/1)");
maxbolt = new TF3("Maxwell-Boltzmann","MB",-10,10,-10,10,-10,10);

TH3F *t1 = new TH3F("t1","gaussian",100,-5,5,100,-5,5,100,-5,5); 
TH1F *v = new TH1F("v1","Speed",100,0,5);
TH1F *w = new TH1F("w1","Speed",100,0,5);

t1->FillRandom("Maxwell-Boltzmann",1000000);

for(Int_t i=0; i<1000000; i++)
{
  t1->GetRandom3(v1,v2,v3);
  Float_t vel = sqrt(pow(v1,2)+pow(v2,2)+pow(v3,2));
  v->Fill(vel);

  maxbolt->GetRandom3(w1,w2,w3);
  vel = sqrt(pow(w1,2)+pow(w2,2)+pow(w3,2));
  w->Fill(vel+1); //Shifts w distribution to make differences obvious

}

v->Draw();
w->Draw("same");
}


-- 
-------------------------------------------------------------------------------
Mr. Ben Morgan                               Tel: 44 (0)114 22 23553 (Work)
Postgraduate Student
University of Sheffield
Department of Physics & Astronomy
Hicks Building
Hounsfield Road
Sheffield  S3 7RH
-------------------------------------------------------------------------------



This archive was generated by hypermail 2b29 : Sat Jan 04 2003 - 23:51:14 MET