Re: [ROOT] Piecewise functions

From: Rene Brun (Rene.Brun@cern.ch)
Date: Thu Jun 21 2001 - 18:12:09 MEST


Hi Erik,

Do for example:

void erik() {
   
   TF1 *f1 = new TF1("f1", "(x<10)*(1/7)*exp(-((x-2)/5)^2) + \
                            (x>10)*(1/5)*exp(-((x-4)/5)^2)", 0, 20);

   TH1F *h1 = new TH1F("h1","h1",100,0,20);
   double data;
   for (int i = 0; i < 10000; i++) {
      data = f1->GetRandom();
      h1->Fill(data);
   }
   h1->Draw();
}

Rene Brun

Erik Jakobsen wrote:
> 
> Hi All,
> 
> I'm trying to create a histogram filled with random numbers generated from
> a function, which is a piecewise function. Now how do you define the
> intervals that seperate the piecewise functions?
> 
> Example. Say I have two gaussian funcions (1/7)*exp(-((x-2)/5)^2) and
> (1/5)*exp(-((x-4)/5)^2) that I want to piece together from [0,10] and
> [10,20] respectively. How is this then stated in the following histogram
> declaration?
> 
> Double_t*  data;
> TF1 *f1 = new TF1("f1", "(1/7)*exp(-((x-2)/5)^2) +
> (1/5)*exp(-((x-4)/5)^2)", 0, 2000);
> 
> for (i = 0; i < 1000000; i++) {
>   data = f1->GetRandom();
>   h1->Fill(data[8],1);
> }
> 
> Thanks!
> 
> Erik Jakobsen
> 
> P.S. I'm not on the ROOT Talk list, so please answer to jakobsen@nbi.dk



This archive was generated by hypermail 2b29 : Tue Jan 01 2002 - 17:50:50 MET