I tried to fit a three-term Gaussian function to data using the following code:
import ROOT
#from ROOT import TF1
import numpy as np
data = np.loadtxt('V_lambda_n.dat')
r = data[:, 0]
V = data[:, 1]
graph = ROOT.TGraph()
for i in range(len(V)):
graph.SetPoint(i, r[i], V[i])
def myfunc(x, p):
return p[0]*np.exp(-(x/p[1])**2) + p[1]*np.exp(-(x/p[2])**2) + p[2]*np.exp(-(x/p[3])**2)
func=ROOT.TF1("func", myfunc, 0.0e-15,4e-15, 4)
func.SetParameters(-1.0, -1.0, 1.0, 1.0)
graph.Fit(func)
canvas = ROOT.TCanvas("name", "title", 1024, 768)
graph.GetXaxis().SetTitle("r") # set x-axis title
graph.GetYaxis().SetTitle("V") # set y-axis title
graph.Draw("AP")
I got the following error:
TypeError: none of the 2 overloaded methods succeeded. Full details:
TFitResultPtr TGraph::Fit(const char* formula, const char* option = "", const char* goption = "", double xmin = 0, double xmax = 0) =>
could not convert argument 1 (expected string or Unicode object, TF1 found)
TFitResultPtr TGraph::Fit(TF1* f1, const char* option = "", const char* goption = "", double xmin = 0, double xmax = 0) =>
TFN python function call failed (C++ exception of type runtime_error)
How may I fix this error? It seems to be complaining about the class object "func". Here is the data
r V
0.1700 192.8424
0.1800 168.5586
0.1900 147.4645
0.2000 128.8915
0.2100 112.3266
0.2200 97.3737
0.2300 83.7266
0.2400 71.1502
0.2500 59.4669
0.2600 48.5469
0.2700 38.3009
0.2800 28.6740
0.2900 19.6411
0.3000 11.2018
0.3100 3.3759
0.3200 -3.8022
0.3300 -10.2887
0.3400 -16.0363
0.3500 -21.0003
0.3600 -25.1442
0.3700 -28.4448
0.3800 -30.8960
0.3900 -32.5114
0.4000 -33.3251
0.4100 -33.3908
0.4200 -32.7797
0.4300 -31.5765
0.4400 -29.8754
0.4500 -27.7754
0.4600 -25.3755
0.4700 -22.7709
0.4800 -20.0496
0.4900 -17.2902
0.5000 -14.5601
0.5100 -11.9151
0.5200 -9.3994
0.5300 -7.0462
0.5400 -4.8785
0.5500 -2.9108
0.5600 -1.1499
0.5700 0.4033
0.5800 1.7530
0.5900 2.9069
0.6000 3.8756
0.6100 4.6715
0.6200 5.3081
0.6300 5.7995
0.6400 6.1599
0.6500 6.4034
0.6600 6.5436
0.6700 6.5934
0.6800 6.5651
0.6900 6.4700
0.7000 6.3186
0.7100 6.1206
0.7200 5.8847
0.7300 5.6189
0.7400 5.3303
0.7500 5.0252
0.7600 4.7092
0.7700 4.3874
0.7800 4.0639
0.7900 3.7426
0.8000 3.4266
0.8100 3.1185
0.8200 2.8207
0.8300 2.5348
0.8400 2.2624
0.8500 2.0046
0.8600 1.7620
0.8700 1.5352
0.8800 1.3245
0.8900 1.1298
0.9000 0.9512
0.9100 0.7882
0.9200 0.6405
0.9300 0.5076
0.9400 0.3887
0.9500 0.2832
0.9600 0.1904
0.9700 0.1094
0.9800 0.0395
0.9900 -0.0202
1.0000 -0.0705
1.0100 -0.1122
1.0200 -0.1460
1.0300 -0.1729
1.0400 -0.1934
1.0500 -0.2083
1.0600 -0.2183
1.0700 -0.2240
1.0800 -0.2260
1.0900 -0.2248
1.1000 -0.2209
1.1100 -0.2148
1.1200 -0.2068
1.1300 -0.1974
1.1400 -0.1869
1.1500 -0.1755
1.1600 -0.1636
1.1700 -0.1514
1.1800 -0.1390
1.1900 -0.1266
1.2000 -0.1144
1.2100 -0.1024
1.2200 -0.0909
1.2300 -0.0798
1.2400 -0.0692
1.2500 -0.0592
1.2600 -0.0498
1.2700 -0.0410
1.2800 -0.0328
1.2900 -0.0252
1.3000 -0.0183
1.3100 -0.0120
1.3200 -0.0062
1.3300 -0.0010
1.3400 0.0037
1.3500 0.0078
1.3600 0.0115
1.3700 0.0147
1.3800 0.0175
1.3900 0.0199
1.4000 0.0219
1.4100 0.0236
1.4200 0.0250
1.4300 0.0262
1.4400 0.0270
1.4500 0.0277
1.4600 0.0281
1.4700 0.0284
1.4800 0.0285
1.4900 0.0285
1.5000 0.0284
1.5100 0.0281
1.5200 0.0278
1.5300 0.0273
1.5400 0.0269
1.5500 0.0263
1.5600 0.0258
1.5700 0.0251
1.5800 0.0245
1.5900 0.0239
1.6000 0.0232
1.6100 0.0225
1.6200 0.0219
1.6300 0.0212
1.6400 0.0205
1.6500 0.0199
1.6600 0.0192
1.6700 0.0186
1.6800 0.0180
1.6900 0.0174
1.7000 0.0168
1.7100 0.0162
1.7200 0.0157
1.7300 0.0152
1.7400 0.0147
1.7500 0.0142
1.7600 0.0137
1.7700 0.0133
1.7800 0.0128
1.7900 0.0124
1.8000 0.0120
1.8100 0.0116
1.8200 0.0113
1.8300 0.0109
1.8400 0.0106
1.8500 0.0103
1.8600 0.0099
1.8700 0.0096
1.8800 0.0094
1.8900 0.0091
1.9000 0.0088
1.9100 0.0086
1.9200 0.0083
1.9300 0.0081
1.9400 0.0079
1.9500 0.0076
1.9600 0.0074
1.9700 0.0072
1.9800 0.0070
1.9900 0.0068
2.0000 0.0066
2.0100 0.0065
2.0200 0.0063
2.0300 0.0061
2.0400 0.0060
2.0500 0.0058
2.0600 0.0057
2.0700 0.0055
2.0800 0.0054
2.0900 0.0052
2.1000 0.0051
2.1100 0.0050
2.1200 0.0048
2.1300 0.0047
2.1400 0.0046
2.1500 0.0045
2.1600 0.0043
2.1700 0.0042
2.1800 0.0041
2.1900 0.0040
2.2000 0.0039
2.2100 0.0038
2.2200 0.0037
2.2300 0.0036
2.2400 0.0035
2.2500 0.0034
2.2600 0.0033
2.2700 0.0033
2.2800 0.0032
2.2900 0.0031
2.3000 0.0030
2.3100 0.0029
2.3200 0.0029
2.3300 0.0028
2.3400 0.0027
2.3500 0.0026
2.3600 0.0026
2.3700 0.0025
2.3800 0.0024
2.3900 0.0023
2.4000 0.0023
2.4100 0.0022
2.4200 0.0021
2.4300 0.0021
2.4400 0.0020
2.4500 0.0019
2.4600 0.0019
2.4700 0.0018
2.4800 0.0017
2.4900 0.0017
2.5000 0.0016
2.5100 0.0016
2.5200 0.0015
2.5300 0.0014
2.5400 0.0014
2.5500 0.0013
2.5600 0.0013
2.5700 0.0012
2.5800 0.0011
2.5900 0.0011
2.6000 0.0010
2.6100 0.0010
2.6200 0.0009
2.6300 0.0009
2.6400 0.0008
2.6500 0.0007
2.6600 0.0007
2.6700 0.0006
2.6800 0.0006
2.6900 0.0005
2.7000 0.0005
2.7100 0.0004
2.7200 0.0004
2.7300 0.0003
2.7400 0.0003
2.7500 0.0003
2.7600 0.0002
2.7700 0.0002
2.7800 0.0001
2.7900 0.0001
2.8000 0.0001
2.8100 0.0000
2.8200 -0.0000
2.8300 -0.0001
2.8400 -0.0001
2.8500 -0.0001
2.8600 -0.0001
2.8700 -0.0002
2.8800 -0.0002
2.8900 -0.0002
2.9000 -0.0002
2.9100 -0.0003
2.9200 -0.0003
2.9300 -0.0003
2.9400 -0.0003
2.9500 -0.0004
2.9600 -0.0004
2.9700 -0.0004
2.9800 -0.0004
2.9900 -0.0004
3.0000 -0.0004
3.0100 -0.0004
3.0200 -0.0004
3.0300 -0.0005
3.0400 -0.0005
3.0500 -0.0005
3.0600 -0.0005
3.0700 -0.0005
3.0800 -0.0005
3.0900 -0.0005
3.1000 -0.0005
3.1100 -0.0005
3.1200 -0.0005
3.1300 -0.0005
3.1400 -0.0005
3.1500 -0.0005
3.1600 -0.0006
3.1700 -0.0006
3.1800 -0.0006
3.1900 -0.0006
3.2000 -0.0006
3.2100 -0.0006
3.2200 -0.0006
3.2300 -0.0006
3.2400 -0.0006
3.2500 -0.0006
3.2600 -0.0007
3.2700 -0.0007
3.2800 -0.0007
3.2900 -0.0007
3.3000 -0.0007
3.3100 -0.0007
3.3200 -0.0008
3.3300 -0.0008
3.3400 -0.0008
3.3500 -0.0008
3.3600 -0.0008
3.3700 -0.0008
3.3800 -0.0009
3.3900 -0.0009
3.4000 -0.0009
3.4100 -0.0009
3.4200 -0.0010
3.4300 -0.0010
3.4400 -0.0010
3.4500 -0.0010
3.4600 -0.0010
3.4700 -0.0011
3.4800 -0.0011
3.4900 -0.0011
3.5000 -0.0011
3.5100 -0.0011
3.5200 -0.0012
3.5300 -0.0012
3.5400 -0.0012
3.5500 -0.0012
3.5600 -0.0012
3.5700 -0.0013
3.5800 -0.0013
3.5900 -0.0013
3.6000 -0.0013
3.6100 -0.0013
3.6200 -0.0013
3.6300 -0.0013
3.6400 -0.0013
3.6500 -0.0014
3.6600 -0.0014
3.6700 -0.0014
3.6800 -0.0014
3.6900 -0.0014
3.7000 -0.0014
3.7100 -0.0014
3.7200 -0.0014
3.7300 -0.0014
3.7400 -0.0014
3.7500 -0.0014
3.7600 -0.0014
3.7700 -0.0014
3.7800 -0.0014
3.7900 -0.0014
3.8000 -0.0014
3.8100 -0.0014
3.8200 -0.0014
3.8300 -0.0014
3.8400 -0.0014
3.8500 -0.0014
3.8600 -0.0013
3.8700 -0.0013
3.8800 -0.0013
3.8900 -0.0013
3.9000 -0.0013
3.9100 -0.0013
3.9200 -0.0013
3.9300 -0.0013
3.9400 -0.0013
3.9500 -0.0013
3.9600 -0.0013
3.9700 -0.0013
3.9800 -0.0013
3.9900 -0.0013
4.0000 -0.0013