python 2.7 - Three-term Gaussian fit to data in pyROOT -
i tried fit three-term gaussian function data using following code:
import root #from root import tf1 import numpy np data = np.loadtxt('v_lambda_n.dat') r = data[:, 0] v = data[:, 1] graph = root.tgraph() 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 following error:
typeerror: none of 2 overloaded methods succeeded. full details: tfitresultptr tgraph::fit(const char* formula, const char* option = "", const char* goption = "", double xmin = 0, double xmax = 0) => 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 fix error? seems complaining class object "func". here 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
here coefficients get, along graph of fit:
p[0] = 1.5810626020436172e+04 p[1] = -2.5558082863192549e-01 p[2] = -1.5386798252451177e+04 p[3] = -2.5799976733673363e-01
Comments
Post a Comment