[ROOT] User defined function ?

From: Fred Sarazin (sarazin@triumf.ca)
Date: Sat Oct 05 2002 - 00:14:14 MEST


Dear rooters,

I'd like to create a function with 7 GIVEN parameters. I don't want to
make a fit, I'd just like to DRAW this function
(and eventually use it to multiply a 1D-histogram).
The actual calculation seems to work, but effit->Draw() doesn't work and
effit->Eval() returns an integer. Is it not the
right way to proceed ?

thanks,

Fred

-----------------------------

Double_t func(Double_t *x, Double_t *par)
{

  Double_t E1=100;//100 keV
  Double_t E2=1000;//1000 keV = 1 MeV
  Double_t XX,YY;
  Double_t lowE, highE;
  Double_t Dum,Eff;

  XX = TMath::Log(x[0]/E1);
  YY = TMath::Log(x[0]/E2);

  lowE  = par[0]+par[1]*XX+par[2]*XX*XX;
  highE = par[3]+par[4]*YY+par[5]*YY*YY;

  Dum = TMath::Power(lowE,(-par[6]))+TMath::Power(highE,(-par[6]));
  Eff = TMath::Exp(TMath::Power(Dum,(-1./par[6])));

  // printf("%f %f \n",x[0],Eff);

  return Eff;
}

EffCurve()
{
  Double_t A =  2.4356484;
  Double_t B =  1.6351060;
  Double_t C =  0.0000000;
  Double_t D =  2.2948568;
  Double_t E = -0.71539408;
  Double_t F = -0.032038290;
  Double_t G =  5.2433171;

  TF1 *effit = new TF1("func",func,0,4000,7);
  effit->SetParameter(0,A);
  effit->SetParameter(1,B);
  effit->SetParameter(2,C);
  effit->SetParameter(3,D);
  effit->SetParameter(4,E);
  effit->SetParameter(5,F);
  effit->SetParameter(6,G);

  TCanvas *c = new TCanvas();

  effit->Eval(2000.);
  effit->Draw();
}



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