Hi ROOTers,
I have the following issue.
I have a histogram which I want to fit with the convolution of two functions. Here is my code.
//Signal function
TF1* fit = new TF1( "fit", OutputVoltage, 3.8e-6, 15e-6, 8 );
fit->SetParNames( "t_{0}",
"#alpha_{1}", "#tau_{1}",
"#alpha_{2}","#tau_{2}",
"#tau_{3}",
"#tau_{rise}",
"V_{0}" );
fit->SetParameter( 0, T0 );
fit->SetParLimits( 0, 0., 5e-6 );
fit->SetParameter( 1, ALPHA1 );
fit->SetParLimits( 1, 0., 1. );
fit->SetParameter( 2, DECAY_TIME1 );
fit->SetParLimits( 2, 0.3e-6, 1.3e-6 );
fit->SetParameter( 3, ALPHA2 );
fit->SetParLimits( 3, 0., 1. );
fit->SetParameter( 4, DECAY_TIME2 );
fit->SetParLimits( 4, 1.3e-6, 3e-6 );
fit->SetParameter( 5, DECAY_TIME3 );
fit->SetParLimits( 5, 6e-6, 30e-6 );
fit->SetParameter( 6, RISING_TIME );
fit->SetParLimits( 6, 1e-9, 500e-9 );
fit->SetParameter( 7, 2 );
fit->SetParLimits( 7, 0., 1000. );
//Fit histogram with non-convoluted signal function
//to set the initial parameters
h->Fit( fit, "R" );
//Resolution function
TF1* res = new TF1( "res", "gaus" );
res->SetParameters( 1e6, 0., 50e-9 );
//Create convolution of signal with gaussian
TF1Convolution* f_conv = new TF1Convolution( fit, res, 3e-6, 13e-6, kTRUE );
f_conv->SetRange( 3e-6, 13e-6 );
f_conv->SetNofPointsFFT( 1000 );
//This is the final function to fit histo with
TF1* func_conv = new TF1( "f", *f_conv, 3e-6, 11e-6, f_conv->GetNpar() );
func_conv->SetLineColor( kBlue );
//I THINK that the order of parameters is the following: first parameters of the 1st function
//then parameters of the 2nd function
func_conv->SetParameters(
fit->GetParameter( 0 ),
fit->GetParameter( 1 ),
fit->GetParameter( 2 ),
fit->GetParameter( 3 ),
fit->GetParameter( 4 ),
fit->GetParameter( 5 ),
fit->GetParameter( 6 ),
fit->GetParameter( 7 ),
res->GetParameter( 0 ),
res->GetParameter( 1 ),
res->GetParameter( 2 )
);
h->Fit( func_conv, "R" );
func_conv->Draw( "same" );
}
After the execution of the above code I see the following picture in the terminal
I have a question here: why the parameters the 1st function remain unchanged (exculded the p0
)?
I think that I am missing something.
Thanks in advance
UPDATE
I think the issue with changing the 1st parameter was somehow connected with the function ranges. Now ranges are OK and non of the parameters of the 1st function in convolution are changing.
ROOT Version: 6.16/00
Platform: Ubuntu 16.04
Compiler: Not Provided