103   if (numberPeaks <= 0){
 
  104      Error (
"TSpectrumFit",
"Invalid number of peaks, must be > than 0");
 
  179   Double_t da1 = 0.1740121, da2 = -0.0479399, da3 = 0.3739278, dap = 0.47047;
 
  191   c = 
c * t * (da1 + t * (da2 + t * da3));
 
  203   Double_t da1 = 0.1740121, da2 = -0.0479399, da3 = 0.3739278, dap = 0.47047;
 
  214   c = (-1.) * dap * 
c * t * t * (da1 + t * (2. * da2 + t * 3. * da3)) -
 
  233   p = (i - i0) / 
sigma;
 
  248      r = 
r * 
Erfc(p + 1. / (2. * 
b));
 
  270   p = (i - i0) / 
sigma;
 
  280      c = p + 1. / (2. * 
b);
 
  290   r1 = amp * (r1 + r2 + r3 + r4);
 
  307   p = (i - i0) / 
sigma;
 
  315   r2 = 0, r3 = 0, r4 = 0;
 
  316   r1 = amp * (r1 + r2 + r3 + r4);
 
  339   for (j = 0; j < num_of_fitted_peaks; j++) {
 
  340      p = (i - parameter[2 * j + 1]) / 
sigma;
 
  344            r1 = 2. * p * p * 
exp(-p * p) / 
sigma;
 
  352         c = p + 1. / (2. * 
b);
 
  362      r = 
r + parameter[2 * j] * (r1 + r2 + r3 + r4);
 
  382   for (j = 0; j < num_of_fitted_peaks; j++) {
 
  383      p = (i - parameter[2 * j + 1]) / 
sigma;
 
  387            r1 = 
exp(-p * p) * p * p * (4. * p * p - 6) / (
sigma * 
sigma);
 
  393      r2 = 0, r3 = 0, r4 = 0;
 
  394      r = 
r + parameter[2 * j] * (r1 + r2 + r3 + r4);
 
  415   for (j = 0; j < num_of_fitted_peaks; j++) {
 
  416      p = (i - parameter[2 * j + 1]) / 
sigma;
 
  417      c = p + 1. / (2. * 
b);
 
  422      r = 
r + parameter[2 * j] * r1;
 
  443   for (j = 0; j < num_of_fitted_peaks; j++) {
 
  444      p = (i - parameter[2 * j + 1]) / 
sigma;
 
  446      r = 
r + parameter[2 * j] * r1;
 
  470   for (j = 0; j < num_of_fitted_peaks && t != 0; j++) {
 
  471      p = (i - parameter[2 * j + 1]) / 
sigma;
 
  472      c = p + 1. / (2. * 
b);
 
  483      r = 
r + parameter[2 * j] * r1;
 
  485   r = -
r * t / (2. * 
b * 
b);
 
  524   for (j = 0; j < num_of_fitted_peaks; j++) {
 
  526         p = (i - parameter[2 * j + 1]) / 
sigma;
 
  529         if (i == parameter[2 * j + 1])
 
  546         c = p + 1. / (2. * 
b);
 
  554         r3 = 
s * 
Erfc(p) / 2.;
 
  555      r = 
r + parameter[2 * j] * (r1 + r2 + r3);
 
  557   r = 
r + a0 + a1 * i + a2 * i * i;
 
  620      r = 
a * (odm_pi + t * 
b * 
exp(
r));
 
  661   r = (-1) * 0.25 / (
b * 
b);
 
  684   if (pw > 10) 
c *= a2;
 
  685   if (pw > 12) 
c *= a2;
 
  822   Int_t i, j, k, shift =
 
  823       2 * 
fNPeaks + 7, peak_vel, rozmer, iter, pw, regul_cycle,
 
  825   Double_t a, 
b, 
c, 
d = 0, alpha, chi_opt, yw, ywm, 
f, chi2, chi_min, chi =
 
  826       0, 
pi, pmin = 0, chi_cel = 0, chi_er;
 
  828   for (i = 0, j = 0; i < 
fNPeaks; i++) {
 
  831         working_space[shift + j] = 
fAmpInit[i];        
 
  846   working_space[2 * i + 1] = 
fTInit;        
 
  847   if (
fFixT == 
false) {
 
  848      working_space[shift + j] = 
fTInit;        
 
  851   working_space[2 * i + 2] = 
fBInit;        
 
  852   if (
fFixB == 
false) {
 
  853      working_space[shift + j] = 
fBInit;        
 
  856   working_space[2 * i + 3] = 
fSInit;        
 
  857   if (
fFixS == 
false) {
 
  858      working_space[shift + j] = 
fSInit;        
 
  861   working_space[2 * i + 4] = 
fA0Init;        
 
  863      working_space[shift + j] = 
fA0Init;        
 
  866   working_space[2 * i + 5] = 
fA1Init;        
 
  868      working_space[shift + j] = 
fA1Init;        
 
  871   working_space[2 * i + 6] = 
fA2Init;        
 
  873      working_space[shift + j] = 
fA2Init;        
 
  878      delete [] working_space;
 
  879      Error (
"FitAwmi",
"All parameters are fixed");
 
  883      delete [] working_space;
 
  884      Error (
"FitAwmi",
"Number of fitted parameters is larger than # of fitted points");
 
  888      for (j = 0; j < rozmer; j++) {
 
  889         working_space[2 * shift + j] = 0, working_space[3 * shift + j] = 0;        
 
  894      chi_opt = 0, pw = 
fPower - 2;
 
  899                    working_space[peak_vel], working_space[peak_vel + 1],
 
  900                    working_space[peak_vel + 3],
 
  901                    working_space[peak_vel + 2],
 
  902                    working_space[peak_vel + 4],
 
  903                    working_space[peak_vel + 5],
 
  904                    working_space[peak_vel + 6]);
 
  912               chi_opt += (yw - 
f) * (yw - 
f) / ywm;
 
  932             for (j = 0, k = 0; j < 
fNPeaks; j++) {
 
  935                           working_space[peak_vel],
 
  936                           working_space[peak_vel + 1],
 
  937                           working_space[peak_vel + 3],
 
  938                           working_space[peak_vel + 2]);
 
  942                     b = 
a * (yw * yw - 
f * 
f) / (ywm * ywm);
 
  943                     working_space[2 * shift + k] += 
b * 
c;        
 
  944                     b = 
a * 
a * (4 * yw - 2 * 
f) / (ywm * ywm);
 
  945                     working_space[3 * shift + k] += 
b * 
c;        
 
  949                     b = 
a * (yw - 
f) / ywm;
 
  950                     working_space[2 * shift + k] += 
b * 
c;        
 
  952                     working_space[3 * shift + k] += 
b * 
c;        
 
  959                          working_space[2 * j + 1],
 
  960                          working_space[peak_vel],
 
  961                          working_space[peak_vel + 1],
 
  962                          working_space[peak_vel + 3],
 
  963                          working_space[peak_vel + 2]);
 
  966                                working_space[2 * j + 1],
 
  967                                working_space[peak_vel]);
 
  973                     if (((
a + 
d) <= 0 && 
a >= 0) || ((
a + 
d) >= 0 && 
a <= 0))
 
  981                     b = 
a * (yw * yw - 
f * 
f) / (ywm * ywm);
 
  982                     working_space[2 * shift + k] += 
b * 
c;        
 
  983                     b = 
a * 
a * (4 * yw - 2 * 
f) / (ywm * ywm);
 
  984                     working_space[3 * shift + k] += 
b * 
c;        
 
  988                     b = 
a * (yw - 
f) / ywm;
 
  989                     working_space[2 * shift + k] += 
b * 
c;        
 
  991                     working_space[3 * shift + k] += 
b * 
c;        
 
  999                          working_space[peak_vel],
 
 1000                          working_space[peak_vel + 1],
 
 1001                          working_space[peak_vel + 3],
 
 1002                          working_space[peak_vel + 2]);
 
 1005                                working_space, working_space[peak_vel]);
 
 1011                  if (((
a + 
d) <= 0 && 
a >= 0) || ((
a + 
d) >= 0 && 
a <= 0))
 
 1019                  b = 
a * (yw * yw - 
f * 
f) / (ywm * ywm);
 
 1020                  working_space[2 * shift + k] += 
b * 
c;        
 
 1021                  b = 
a * 
a * (4 * yw - 2 * 
f) / (ywm * ywm);
 
 1022                  working_space[3 * shift + k] += 
b * 
c;        
 
 1026                  b = 
a * (yw - 
f) / ywm;
 
 1027                  working_space[2 * shift + k] += 
b * 
c;        
 
 1029                  working_space[3 * shift + k] += 
b * 
c;        
 
 1034         if (
fFixT == 
false) {
 
 1036                      working_space[peak_vel],
 
 1037                      working_space[peak_vel + 2]);
 
 1041                  b = 
a * (yw * yw - 
f * 
f) / (ywm * ywm);
 
 1042                  working_space[2 * shift + k] += 
b * 
c;        
 
 1043                  b = 
a * 
a * (4 * yw - 2 * 
f) / (ywm * ywm);
 
 1044                  working_space[3 * shift + k] += 
b * 
c;        
 
 1048                  b = 
a * (yw - 
f) / ywm;
 
 1049                  working_space[2 * shift + k] += 
b * 
c;        
 
 1051                  working_space[3 * shift + k] += 
b * 
c;        
 
 1056         if (
fFixB == 
false) {
 
 1058                      working_space[peak_vel], working_space[peak_vel + 1],
 
 1059                      working_space[peak_vel + 2]);
 
 1063                  b = 
a * (yw * yw - 
f * 
f) / (ywm * ywm);
 
 1064                  working_space[2 * shift + k] += 
b * 
c;        
 
 1065                  b = 
a * 
a * (4 * yw - 2 * 
f) / (ywm * ywm);
 
 1066                  working_space[3 * shift + k] += 
b * 
c;        
 
 1070                  b = 
a * (yw - 
f) / ywm;
 
 1071                  working_space[2 * shift + k] += 
b * 
c;        
 
 1073                  working_space[3 * shift + k] += 
b * 
c;        
 
 1078         if (
fFixS == 
false) {
 
 1080                      working_space[peak_vel]);
 
 1084                  b = 
a * (yw * yw - 
f * 
f) / (ywm * ywm);
 
 1085                  working_space[2 * shift + k] += 
b * 
c;        
 
 1086                  b = 
a * 
a * (4 * yw - 2 * 
f) / (ywm * ywm);
 
 1087                  working_space[3 * shift + k] += 
b * 
c;        
 
 1091                  b = 
a * (yw - 
f) / ywm;
 
 1092                  working_space[2 * shift + k] += 
b * 
c;        
 
 1094                  working_space[3 * shift + k] += 
b * 
c;        
 
 1104                  b = 
a * (yw * yw - 
f * 
f) / (ywm * ywm);
 
 1105                  working_space[2 * shift + k] += 
b * 
c;        
 
 1106                  b = 
a * 
a * (4 * yw - 2 * 
f) / (ywm * ywm);
 
 1107                  working_space[3 * shift + k] += 
b * 
c;        
 
 1111                  b = 
a * (yw - 
f) / ywm;
 
 1112                  working_space[2 * shift + k] += 
b * 
c;        
 
 1114                  working_space[3 * shift + k] += 
b * 
c;        
 
 1124                  b = 
a * (yw * yw - 
f * 
f) / (ywm * ywm);
 
 1125                  working_space[2 * shift + k] += 
b * 
c;        
 
 1126                  b = 
a * 
a * (4 * yw - 2 * 
f) / (ywm * ywm);
 
 1127                  working_space[3 * shift + k] += 
b * 
c;        
 
 1131                  b = 
a * (yw - 
f) / ywm;
 
 1132                  working_space[2 * shift + k] += 
b * 
c;        
 
 1134                  working_space[3 * shift + k] += 
b * 
c;        
 
 1144                  b = 
a * (yw * yw - 
f * 
f) / (ywm * ywm);
 
 1145                  working_space[2 * shift + k] += 
b * 
c;        
 
 1146                  b = 
a * 
a * (4 * yw - 2 * 
f) / (ywm * ywm);
 
 1147                  working_space[3 * shift + k] += 
b * 
c;        
 
 1151                  b = 
a * (yw - 
f) / ywm;
 
 1152                  working_space[2 * shift + k] += 
b * 
c;        
 
 1154                  working_space[3 * shift + k] += 
b * 
c;        
 
 1160      for (j = 0; j < rozmer; j++) {
 
 1161         if (
TMath::Abs(working_space[3 * shift + j]) > 0.000001)
 
 1162            working_space[2 * shift + j] = working_space[2 * shift + j] / 
TMath::Abs(working_space[3 * shift + j]);        
 
 1164            working_space[2 * shift + j] = 0;        
 
 1173      for (j = 0; j < rozmer; j++) {
 
 1174         working_space[4 * shift + j] = working_space[shift + j];        
 
 1180               chi_min = 10000 * chi2;
 
 1183               chi_min = 0.1 * chi2;
 
 1185            for (
pi = 0.1; flag == 0 && 
pi <= 100; 
pi += 0.1) {
 
 1186               for (j = 0; j < rozmer; j++) {
 
 1187                  working_space[shift + j] = working_space[4 * shift + j] + 
pi * alpha * working_space[2 * shift + j];        
 
 1189               for (i = 0, j = 0; i < 
fNPeaks; i++) {
 
 1191                     if (working_space[shift + j] < 0)        
 
 1192                        working_space[shift + j] = 0;        
 
 1193                     working_space[2 * i] = working_space[shift + j];        
 
 1197                     if (working_space[shift + j] < 
fXmin)        
 
 1198                        working_space[shift + j] = 
fXmin;        
 
 1199                     if (working_space[shift + j] > 
fXmax)        
 
 1200                        working_space[shift + j] = 
fXmax;        
 
 1201                     working_space[2 * i + 1] = working_space[shift + j];        
 
 1206                  if (working_space[shift + j] < 0.001) {        
 
 1207                     working_space[shift + j] = 0.001;        
 
 1209                  working_space[peak_vel] = working_space[shift + j];        
 
 1212               if (
fFixT == 
false) {
 
 1213                  working_space[peak_vel + 1] = working_space[shift + j];        
 
 1216               if (
fFixB == 
false) {
 
 1217                  if (
TMath::Abs(working_space[shift + j]) < 0.001) {        
 
 1218                     if (working_space[shift + j] < 0)        
 
 1219                        working_space[shift + j] = -0.001;        
 
 1221                        working_space[shift + j] = 0.001;        
 
 1223                  working_space[peak_vel + 2] = working_space[shift + j];        
 
 1226               if (
fFixS == 
false) {
 
 1227                  working_space[peak_vel + 3] = working_space[shift + j];        
 
 1231                  working_space[peak_vel + 4] = working_space[shift + j];        
 
 1235                  working_space[peak_vel + 5] = working_space[shift + j];        
 
 1239                  working_space[peak_vel + 6] = working_space[shift + j];        
 
 1247                  working_space[peak_vel],
 
 1248                  working_space[peak_vel + 1],
 
 1249                  working_space[peak_vel + 3],
 
 1250                  working_space[peak_vel + 2],
 
 1251                  working_space[peak_vel + 4],
 
 1252                  working_space[peak_vel + 5],
 
 1253                  working_space[peak_vel + 6]);
 
 1266                        chi2 += (yw - 
f) * (yw - 
f) / ywm;
 
 1273                  pmin = 
pi, chi_min = chi2;
 
 1283               for (j = 0; j < rozmer; j++) {
 
 1284                  working_space[shift + j] = working_space[4 * shift + j] + pmin * alpha * working_space[2 * shift + j];        
 
 1286               for (i = 0, j = 0; i < 
fNPeaks; i++) {
 
 1288                     if (working_space[shift + j] < 0)        
 
 1289                        working_space[shift + j] = 0;        
 
 1290                     working_space[2 * i] = working_space[shift + j];        
 
 1294                     if (working_space[shift + j] < 
fXmin)        
 
 1295                        working_space[shift + j] = 
fXmin;        
 
 1296                     if (working_space[shift + j] > 
fXmax)        
 
 1297                        working_space[shift + j] = 
fXmax;        
 
 1298                     working_space[2 * i + 1] = working_space[shift + j];        
 
 1303                  if (working_space[shift + j] < 0.001) {        
 
 1304                     working_space[shift + j] = 0.001;        
 
 1306                  working_space[peak_vel] = working_space[shift + j];        
 
 1309               if (
fFixT == 
false) {
 
 1310                  working_space[peak_vel + 1] = working_space[shift + j];        
 
 1313               if (
fFixB == 
false) {
 
 1314                  if (
TMath::Abs(working_space[shift + j]) < 0.001) {        
 
 1315                     if (working_space[shift + j] < 0)        
 
 1316                        working_space[shift + j] = -0.001;        
 
 1318                        working_space[shift + j] = 0.001;        
 
 1320                  working_space[peak_vel + 2] = working_space[shift + j];        
 
 1323               if (
fFixS == 
false) {
 
 1324                  working_space[peak_vel + 3] = working_space[shift + j];        
 
 1328                  working_space[peak_vel + 4] = working_space[shift + j];        
 
 1332                  working_space[peak_vel + 5] = working_space[shift + j];        
 
 1336                  working_space[peak_vel + 6] = working_space[shift + j];        
 
 1344            for (j = 0; j < rozmer; j++) {
 
 1345               working_space[shift + j] = working_space[4 * shift + j] + alpha * working_space[2 * shift + j];        
 
 1347            for (i = 0, j = 0; i < 
fNPeaks; i++) {
 
 1349                  if (working_space[shift + j] < 0)        
 
 1350                     working_space[shift + j] = 0;        
 
 1351                  working_space[2 * i] = working_space[shift + j];        
 
 1355                  if (working_space[shift + j] < 
fXmin)        
 
 1356                     working_space[shift + j] = 
fXmin;        
 
 1357                  if (working_space[shift + j] > 
fXmax)        
 
 1358                     working_space[shift + j] = 
fXmax;        
 
 1359                  working_space[2 * i + 1] = working_space[shift + j];        
 
 1364               if (working_space[shift + j] < 0.001) {        
 
 1365                  working_space[shift + j] = 0.001;        
 
 1367               working_space[peak_vel] = working_space[shift + j];        
 
 1370            if (
fFixT == 
false) {
 
 1371               working_space[peak_vel + 1] = working_space[shift + j];        
 
 1374            if (
fFixB == 
false) {
 
 1375               if (
TMath::Abs(working_space[shift + j]) < 0.001) {        
 
 1376                  if (working_space[shift + j] < 0)        
 
 1377                     working_space[shift + j] = -0.001;        
 
 1379                     working_space[shift + j] = 0.001;        
 
 1381               working_space[peak_vel + 2] = working_space[shift + j];        
 
 1384            if (
fFixS == 
false) {
 
 1385               working_space[peak_vel + 3] = working_space[shift + j];        
 
 1389               working_space[peak_vel + 4] = working_space[shift + j];        
 
 1393               working_space[peak_vel + 5] = working_space[shift + j];        
 
 1397               working_space[peak_vel + 6] = working_space[shift + j];        
 
 1405               working_space[peak_vel],
 
 1406               working_space[peak_vel + 1],
 
 1407               working_space[peak_vel + 3],
 
 1408               working_space[peak_vel + 2],
 
 1409               working_space[peak_vel + 4],
 
 1410               working_space[peak_vel + 5],
 
 1411               working_space[peak_vel + 6]);
 
 1424                     chi += (yw - 
f) * (yw - 
f) / ywm;
 
 1431            alpha = alpha * chi_opt / (2 * chi);
 
 1434            alpha = alpha / 10.0;
 
 1437      } 
while (((chi > chi_opt
 
 1442      for (j = 0; j < rozmer; j++) {
 
 1443         working_space[4 * shift + j] = 0;        
 
 1444         working_space[2 * shift + j] = 0;        
 
 1446      for (i = 
fXmin, chi_cel = 0; i <= 
fXmax; i++) {
 
 1451         working_space[peak_vel], working_space[peak_vel + 1],
 
 1452         working_space[peak_vel + 3],
 
 1453         working_space[peak_vel + 2],
 
 1454         working_space[peak_vel + 4],
 
 1455         working_space[peak_vel + 5],
 
 1456         working_space[peak_vel + 6]);
 
 1457         chi_opt = (yw - 
f) * (yw - 
f) / yw;
 
 1458         chi_cel += (yw - 
f) * (yw - 
f) / yw;
 
 1461         for (j = 0, k = 0; j < 
fNPeaks; j++) {
 
 1464               working_space[peak_vel],
 
 1465               working_space[peak_vel + 1],
 
 1466               working_space[peak_vel + 3],
 
 1467               working_space[peak_vel + 2]);
 
 1470                  working_space[2 * shift + k] += chi_opt * 
c;        
 
 1472                  working_space[4 * shift + k] += 
b * 
c;        
 
 1478               working_space[2 * j + 1],
 
 1479               working_space[peak_vel],
 
 1480               working_space[peak_vel + 1],
 
 1481               working_space[peak_vel + 3],
 
 1482               working_space[peak_vel + 2]);
 
 1485                  working_space[2 * shift + k] += chi_opt * 
c;        
 
 1487                  working_space[4 * shift + k] += 
b * 
c;        
 
 1494            working_space[peak_vel],
 
 1495            working_space[peak_vel + 1],
 
 1496            working_space[peak_vel + 3],
 
 1497            working_space[peak_vel + 2]);
 
 1500               working_space[2 * shift + k] += chi_opt * 
c;        
 
 1502               working_space[4 * shift + k] += 
b * 
c;        
 
 1506         if (
fFixT == 
false) {
 
 1508            working_space[peak_vel],
 
 1509            working_space[peak_vel + 2]);
 
 1512               working_space[2 * shift + k] += chi_opt * 
c;        
 
 1514               working_space[4 * shift + k] += 
b * 
c;        
 
 1518         if (
fFixB == 
false) {
 
 1520            working_space[peak_vel], working_space[peak_vel + 1],
 
 1521            working_space[peak_vel + 2]);
 
 1524               working_space[2 * shift + k] += chi_opt * 
c;        
 
 1526               working_space[4 * shift + k] += 
b * 
c;        
 
 1530         if (
fFixS == 
false) {
 
 1532            working_space[peak_vel]);
 
 1535               working_space[2 * shift + k] += chi_opt * 
c;        
 
 1537               working_space[4 * shift + k] += 
b * 
c;        
 
 1545               working_space[2 * shift + k] += chi_opt * 
c;        
 
 1547               working_space[4 * shift + k] += 
b * 
c;        
 
 1555               working_space[2 * shift + k] += chi_opt * 
c;        
 
 1557               working_space[4 * shift + k] += 
b * 
c;        
 
 1565               working_space[2 * shift + k] += chi_opt * 
c;        
 
 1567               working_space[4 * shift + k] += 
b * 
c;        
 
 1574   chi_er = chi_cel / 
b;
 
 1575   for (i = 0, j = 0; i < 
fNPeaks; i++) {
 
 1577          Area(working_space[2 * i], working_space[peak_vel],
 
 1578               working_space[peak_vel + 1], working_space[peak_vel + 2]);
 
 1580         fAmpCalc[i] = working_space[shift + j];        
 
 1581         if (working_space[3 * shift + j] != 0)
 
 1584            a = 
Derpa(working_space[peak_vel],
 
 1585                       working_space[peak_vel + 1],
 
 1586                       working_space[peak_vel + 2]);
 
 1587            b = working_space[4 * shift + j];        
 
 1608         if (working_space[3 * shift + j] != 0)        
 
 1620      if (working_space[3 * shift + j] != 0)        
 
 1629   if (
fFixT == 
false) {
 
 1630      fTCalc = working_space[shift + j];        
 
 1631      if (working_space[3 * shift + j] != 0)        
 
 1640   if (
fFixB == 
false) {
 
 1641      fBCalc = working_space[shift + j];        
 
 1642      if (working_space[3 * shift + j] != 0)        
 
 1651   if (
fFixS == 
false) {
 
 1652      fSCalc = working_space[shift + j];        
 
 1653      if (working_space[3 * shift + j] != 0)        
 
 1663      fA0Calc = working_space[shift + j];        
 
 1664      if (working_space[3 * shift + j] != 0)        
 
 1674      fA1Calc = working_space[shift + j];        
 
 1675      if (working_space[3 * shift + j] != 0)        
 
 1685      fA2Calc = working_space[shift + j];        
 
 1686      if (working_space[3 * shift + j] != 0)        
 
 1699                 working_space[peak_vel], working_space[peak_vel + 1],
 
 1700                 working_space[peak_vel + 3], working_space[peak_vel + 2],
 
 1701                 working_space[peak_vel + 4], working_space[peak_vel + 5],
 
 1702                 working_space[peak_vel + 6]);
 
 1705   delete[]working_space;
 
 1724   Double_t sk = 0, 
b, lambdak, normk, normk_old = 0;
 
 1730          for (i = 0; i < size; i++) {
 
 1731         a[i][size + 2] = -
a[i][size];        
 
 1732         for (j = 0; j < size; j++) {
 
 1733            a[i][size + 2] += 
a[i][j] * 
a[j][size + 1];        
 
 1735         normk += 
a[i][size + 2] * 
a[i][size + 2];        
 
 1740         sk = normk / normk_old;
 
 1744      for (i = 0; i < size; i++) {
 
 1745         a[i][size + 3] = -
a[i][size + 2] + sk * 
a[i][size + 3];        
 
 1750      for (i = 0; i < size; i++) {
 
 1751         for (j = 0, 
b = 0; j < size; j++) {
 
 1752            b += 
a[i][j] * 
a[j][size + 3];        
 
 1754         lambdak += 
b * 
a[i][size + 3];
 
 1757         lambdak = normk / lambdak;
 
 1761      for (i = 0; i < size; i++)
 
 1762         a[i][size + 1] += lambdak * 
a[i][size + 3];        
 
 1859   Int_t i, j, k, shift =
 
 1860       2 * 
fNPeaks + 7, peak_vel, rozmer, iter, regul_cycle,
 
 1862   Double_t a, 
b, alpha, chi_opt, yw, ywm, 
f, chi2, chi_min, chi =
 
 1863       0, 
pi, pmin = 0, chi_cel = 0, chi_er;
 
 1865   for (i = 0, j = 0; i < 
fNPeaks; i++) {
 
 1866      working_space[2 * i] = 
fAmpInit[i];        
 
 1868         working_space[shift + j] = 
fAmpInit[i];        
 
 1883   working_space[2 * i + 1] = 
fTInit;        
 
 1884   if (
fFixT == 
false) {
 
 1885      working_space[shift + j] = 
fTInit;        
 
 1888   working_space[2 * i + 2] = 
fBInit;        
 
 1889   if (
fFixB == 
false) {
 
 1890      working_space[shift + j] = 
fBInit;        
 
 1893   working_space[2 * i + 3] = 
fSInit;        
 
 1894   if (
fFixS == 
false) {
 
 1895      working_space[shift + j] = 
fSInit;        
 
 1898   working_space[2 * i + 4] = 
fA0Init;        
 
 1900      working_space[shift + j] = 
fA0Init;        
 
 1903   working_space[2 * i + 5] = 
fA1Init;        
 
 1905      working_space[shift + j] = 
fA1Init;        
 
 1908   working_space[2 * i + 6] = 
fA2Init;        
 
 1910      working_space[shift + j] = 
fA2Init;        
 
 1915      Error (
"FitAwmi",
"All parameters are fixed");
 
 1916      delete [] working_space;
 
 1920      Error (
"FitAwmi",
"Number of fitted parameters is larger than # of fitted points");
 
 1921      delete [] working_space;
 
 1925   for (i = 0; i < rozmer; i++)
 
 1926      working_matrix[i] = 
new Double_t[rozmer + 4];
 
 1928      for (j = 0; j < rozmer; j++) {
 
 1929         working_space[3 * shift + j] = 0;        
 
 1930         for (k = 0; k < (rozmer + 4); k++) {
 
 1931            working_matrix[j][k] = 0;
 
 1941             for (j = 0, k = 0; j < 
fNPeaks; j++) {
 
 1943               working_space[2 * shift + k] =
 
 1945               working_space[peak_vel],
 
 1946               working_space[peak_vel + 1],
 
 1947               working_space[peak_vel + 3],
 
 1948               working_space[peak_vel + 2]);
 
 1952               working_space[2 * shift + k] =
 
 1954               working_space[2 * j + 1], working_space[peak_vel],
 
 1955               working_space[peak_vel + 1],
 
 1956               working_space[peak_vel + 3],
 
 1957               working_space[peak_vel + 2]);
 
 1961            working_space[2 * shift + k] =
 
 1963            working_space[peak_vel],
 
 1964            working_space[peak_vel + 1],
 
 1965            working_space[peak_vel + 3],
 
 1966            working_space[peak_vel + 2]);
 
 1969         if (
fFixT == 
false) {
 
 1970            working_space[2 * shift + k] =
 
 1972            working_space[peak_vel], working_space[peak_vel + 2]);
 
 1975         if (
fFixB == 
false) {
 
 1976            working_space[2 * shift + k] =
 
 1978            working_space[peak_vel], working_space[peak_vel + 1],
 
 1979            working_space[peak_vel + 2]);
 
 1982         if (
fFixS == 
false) {
 
 1983            working_space[2 * shift + k] =
 
 1985            working_space[peak_vel]);
 
 1989            working_space[2 * shift + k] = 1.;
 
 2003         working_space[peak_vel], working_space[peak_vel + 1],
 
 2004         working_space[peak_vel + 3],
 
 2005         working_space[peak_vel + 2],
 
 2006         working_space[peak_vel + 4],
 
 2007         working_space[peak_vel + 5],
 
 2008         working_space[peak_vel + 6]);
 
 2016               chi_opt += (yw - 
f) * (yw - 
f) / ywm;
 
 2034         for (j = 0; j < rozmer; j++) {
 
 2035            for (k = 0; k < rozmer; k++) {
 
 2036               b = working_space[2 * shift +
 
 2037                                  j] * working_space[2 * shift + k] / ywm;
 
 2039                  b = 
b * (4 * yw - 2 * 
f) / ywm;
 
 2040               working_matrix[j][k] += 
b;
 
 2042                  working_space[3 * shift + j] += 
b;
 
 2046            b = (
f * 
f - yw * yw) / (ywm * ywm);
 
 2050         for (j = 0; j < rozmer; j++) {
 
 2051            working_matrix[j][rozmer] -= 
b * working_space[2 * shift + j];
 
 2054      for (i = 0; i < rozmer; i++) {
 
 2055         working_matrix[i][rozmer + 1] = 0;        
 
 2058      for (i = 0; i < rozmer; i++) {
 
 2059         working_space[2 * shift + i] = working_matrix[i][rozmer + 1];        
 
 2068      for (j = 0; j < rozmer; j++) {
 
 2069         working_space[4 * shift + j] = working_space[shift + j];        
 
 2075               chi_min = 10000 * chi2;
 
 2078               chi_min = 0.1 * chi2;
 
 2080            for (
pi = 0.1; flag == 0 && 
pi <= 100; 
pi += 0.1) {
 
 2081               for (j = 0; j < rozmer; j++) {
 
 2082                  working_space[shift + j] = working_space[4 * shift + j] + 
pi * alpha * working_space[2 * shift + j];        
 
 2084               for (i = 0, j = 0; i < 
fNPeaks; i++) {
 
 2086                     if (working_space[shift + j] < 0)        
 
 2087                        working_space[shift + j] = 0;        
 
 2088                     working_space[2 * i] = working_space[shift + j];        
 
 2092                     if (working_space[shift + j] < 
fXmin)        
 
 2093                        working_space[shift + j] = 
fXmin;        
 
 2094                     if (working_space[shift + j] > 
fXmax)        
 
 2095                        working_space[shift + j] = 
fXmax;        
 
 2096                     working_space[2 * i + 1] = working_space[shift + j];        
 
 2101                  if (working_space[shift + j] < 0.001) {        
 
 2102                     working_space[shift + j] = 0.001;        
 
 2104                  working_space[peak_vel] = working_space[shift + j];        
 
 2107               if (
fFixT == 
false) {
 
 2108                  working_space[peak_vel + 1] = working_space[shift + j];        
 
 2111               if (
fFixB == 
false) {
 
 2112                  if (
TMath::Abs(working_space[shift + j]) < 0.001) {        
 
 2113                     if (working_space[shift + j] < 0)        
 
 2114                        working_space[shift + j] = -0.001;        
 
 2116                        working_space[shift + j] = 0.001;        
 
 2118                  working_space[peak_vel + 2] = working_space[shift + j];        
 
 2121               if (
fFixS == 
false) {
 
 2122                  working_space[peak_vel + 3] = working_space[shift + j];        
 
 2126                  working_space[peak_vel + 4] = working_space[shift + j];        
 
 2130                  working_space[peak_vel + 5] = working_space[shift + j];        
 
 2134                  working_space[peak_vel + 6] = working_space[shift + j];        
 
 2142                  working_space[peak_vel],
 
 2143                  working_space[peak_vel + 1],
 
 2144                  working_space[peak_vel + 3],
 
 2145                  working_space[peak_vel + 2],
 
 2146                  working_space[peak_vel + 4],
 
 2147                  working_space[peak_vel + 5],
 
 2148                  working_space[peak_vel + 6]);
 
 2161                        chi2 += (yw - 
f) * (yw - 
f) / ywm;
 
 2168                  pmin = 
pi, chi_min = chi2;
 
 2178               for (j = 0; j < rozmer; j++) {
 
 2179                  working_space[shift + j] = working_space[4 * shift + j] + pmin * alpha * working_space[2 * shift + j];        
 
 2181               for (i = 0, j = 0; i < 
fNPeaks; i++) {
 
 2183                     if (working_space[shift + j] < 0)        
 
 2184                        working_space[shift + j] = 0;        
 
 2185                     working_space[2 * i] = working_space[shift + j];        
 
 2189                     if (working_space[shift + j] < 
fXmin)        
 
 2190                        working_space[shift + j] = 
fXmin;        
 
 2191                     if (working_space[shift + j] > 
fXmax)        
 
 2192                        working_space[shift + j] = 
fXmax;        
 
 2193                     working_space[2 * i + 1] = working_space[shift + j];        
 
 2198                  if (working_space[shift + j] < 0.001) {        
 
 2199                     working_space[shift + j] = 0.001;        
 
 2201                  working_space[peak_vel] = working_space[shift + j];        
 
 2204               if (
fFixT == 
false) {
 
 2205                  working_space[peak_vel + 1] = working_space[shift + j];        
 
 2208               if (
fFixB == 
false) {
 
 2209                  if (
TMath::Abs(working_space[shift + j]) < 0.001) {        
 
 2210                     if (working_space[shift + j] < 0)        
 
 2211                        working_space[shift + j] = -0.001;        
 
 2213                        working_space[shift + j] = 0.001;        
 
 2215                  working_space[peak_vel + 2] = working_space[shift + j];        
 
 2218               if (
fFixS == 
false) {
 
 2219                  working_space[peak_vel + 3] = working_space[shift + j];        
 
 2223                  working_space[peak_vel + 4] = working_space[shift + j];        
 
 2227                  working_space[peak_vel + 5] = working_space[shift + j];        
 
 2231                  working_space[peak_vel + 6] = working_space[shift + j];        
 
 2239            for (j = 0; j < rozmer; j++) {
 
 2240               working_space[shift + j] = working_space[4 * shift + j] + alpha * working_space[2 * shift + j];        
 
 2242            for (i = 0, j = 0; i < 
fNPeaks; i++) {
 
 2244                  if (working_space[shift + j] < 0)        
 
 2245                     working_space[shift + j] = 0;        
 
 2246                  working_space[2 * i] = working_space[shift + j];        
 
 2250                  if (working_space[shift + j] < 
fXmin)        
 
 2251                     working_space[shift + j] = 
fXmin;        
 
 2252                  if (working_space[shift + j] > 
fXmax)        
 
 2253                     working_space[shift + j] = 
fXmax;        
 
 2254                  working_space[2 * i + 1] = working_space[shift + j];        
 
 2259               if (working_space[shift + j] < 0.001) {        
 
 2260                  working_space[shift + j] = 0.001;        
 
 2262               working_space[peak_vel] = working_space[shift + j];        
 
 2265            if (
fFixT == 
false) {
 
 2266               working_space[peak_vel + 1] = working_space[shift + j];        
 
 2269            if (
fFixB == 
false) {
 
 2270               if (
TMath::Abs(working_space[shift + j]) < 0.001) {        
 
 2271                  if (working_space[shift + j] < 0)        
 
 2272                     working_space[shift + j] = -0.001;        
 
 2274                     working_space[shift + j] = 0.001;        
 
 2276               working_space[peak_vel + 2] = working_space[shift + j];        
 
 2279            if (
fFixS == 
false) {
 
 2280               working_space[peak_vel + 3] = working_space[shift + j];        
 
 2284               working_space[peak_vel + 4] = working_space[shift + j];        
 
 2288               working_space[peak_vel + 5] = working_space[shift + j];        
 
 2292               working_space[peak_vel + 6] = working_space[shift + j];        
 
 2300               working_space[peak_vel],
 
 2301               working_space[peak_vel + 1],
 
 2302               working_space[peak_vel + 3],
 
 2303               working_space[peak_vel + 2],
 
 2304               working_space[peak_vel + 4],
 
 2305               working_space[peak_vel + 5],
 
 2306               working_space[peak_vel + 6]);
 
 2319                     chi += (yw - 
f) * (yw - 
f) / ywm;
 
 2326            alpha = alpha * chi_opt / (2 * chi);
 
 2329            alpha = alpha / 10.0;
 
 2332      } 
while (((chi > chi_opt
 
 2337      for (j = 0; j < rozmer; j++) {
 
 2338         working_space[4 * shift + j] = 0;        
 
 2339         working_space[2 * shift + j] = 0;        
 
 2341      for (i = 
fXmin, chi_cel = 0; i <= 
fXmax; i++) {
 
 2346         working_space[peak_vel], working_space[peak_vel + 1],
 
 2347         working_space[peak_vel + 3],
 
 2348         working_space[peak_vel + 2],
 
 2349         working_space[peak_vel + 4],
 
 2350         working_space[peak_vel + 5],
 
 2351         working_space[peak_vel + 6]);
 
 2352         chi_opt = (yw - 
f) * (yw - 
f) / yw;
 
 2353         chi_cel += (yw - 
f) * (yw - 
f) / yw;
 
 2356             for (j = 0, k = 0; j < 
fNPeaks; j++) {
 
 2359               working_space[peak_vel],
 
 2360               working_space[peak_vel + 1],
 
 2361               working_space[peak_vel + 3],
 
 2362               working_space[peak_vel + 2]);
 
 2364                  working_space[2 * shift + k] += chi_opt;        
 
 2366                  working_space[4 * shift + k] += 
b;        
 
 2372               working_space[2 * j + 1],
 
 2373               working_space[peak_vel],
 
 2374               working_space[peak_vel + 1],
 
 2375               working_space[peak_vel + 3],
 
 2376               working_space[peak_vel + 2]);
 
 2378                  working_space[2 * shift + k] += chi_opt;        
 
 2380                  working_space[4 * shift + k] += 
b;        
 
 2387            working_space[peak_vel],
 
 2388            working_space[peak_vel + 1],
 
 2389            working_space[peak_vel + 3],
 
 2390           working_space[peak_vel + 2]);
 
 2392               working_space[2 * shift + k] += chi_opt;        
 
 2394               working_space[4 * shift + k] += 
b;        
 
 2398         if (
fFixT == 
false) {
 
 2400            working_space[peak_vel],
 
 2401            working_space[peak_vel + 2]);
 
 2403               working_space[2 * shift + k] += chi_opt;        
 
 2405               working_space[4 * shift + k] += 
b;        
 
 2409         if (
fFixB == 
false) {
 
 2411            working_space[peak_vel], working_space[peak_vel + 1],
 
 2412            working_space[peak_vel + 2]);
 
 2414               working_space[2 * shift + k] += chi_opt;        
 
 2416               working_space[4 * shift + k] += 
b;        
 
 2420         if (
fFixS == 
false) {
 
 2422            working_space[peak_vel]);
 
 2424               working_space[2 * shift + k] += chi_opt;        
 
 2426               working_space[4 * shift + k] += 
b;        
 
 2433               working_space[2 * shift + k] += chi_opt;        
 
 2435               working_space[4 * shift + k] += 
b;        
 
 2442               working_space[2 * shift + k] += chi_opt;        
 
 2444               working_space[4 * shift + k] += 
b;        
 
 2451               working_space[2 * shift + k] += chi_opt;        
 
 2453               working_space[4 * shift + k] += 
b;        
 
 2460   chi_er = chi_cel / 
b;
 
 2461   for (i = 0, j = 0; i < 
fNPeaks; i++) {
 
 2463          Area(working_space[2 * i], working_space[peak_vel],
 
 2464               working_space[peak_vel + 1], working_space[peak_vel + 2]);
 
 2466         fAmpCalc[i] = working_space[shift + j];        
 
 2467         if (working_space[3 * shift + j] != 0)
 
 2470            a = 
Derpa(working_space[peak_vel],
 
 2471            working_space[peak_vel + 1],
 
 2472            working_space[peak_vel + 2]);
 
 2473            b = working_space[4 * shift + j];        
 
 2494         if (working_space[3 * shift + j] != 0)        
 
 2506      if (working_space[3 * shift + j] != 0)        
 
 2515   if (
fFixT == 
false) {
 
 2516      fTCalc = working_space[shift + j];        
 
 2517      if (working_space[3 * shift + j] != 0)        
 
 2526   if (
fFixB == 
false) {
 
 2527      fBCalc = working_space[shift + j];        
 
 2528      if (working_space[3 * shift + j] != 0)        
 
 2537   if (
fFixS == 
false) {
 
 2538      fSCalc = working_space[shift + j];        
 
 2539      if (working_space[3 * shift + j] != 0)        
 
 2549      fA0Calc = working_space[shift + j];        
 
 2550      if (working_space[3 * shift + j] != 0)        
 
 2560      fA1Calc = working_space[shift + j];        
 
 2561      if (working_space[3 * shift + j] != 0)        
 
 2571      fA2Calc = working_space[shift + j];        
 
 2572      if (working_space[3 * shift + j] != 0)        
 
 2585      working_space[peak_vel], working_space[peak_vel + 1],
 
 2586      working_space[peak_vel + 3], working_space[peak_vel + 2],
 
 2587      working_space[peak_vel + 4], working_space[peak_vel + 5],
 
 2588      working_space[peak_vel + 6]);
 
 2591   for (i = 0; i < rozmer; i++)
 
 2592      delete [] working_matrix[i];
 
 2593   delete [] working_matrix;
 
 2594   delete [] working_space;
 
 2611      Error(
"SetFitParameters", 
"Wrong range");
 
 2614   if (numberIterations <= 0){
 
 2615      Error(
"SetFitParameters",
"Invalid number of iterations, must be positive");
 
 2618   if (alpha <= 0 || alpha > 1){
 
 2619      Error (
"SetFitParameters",
"Invalid step coefficient alpha, must be > than 0 and <=1");
 
 2625      Error(
"SetFitParameters",
"Wrong type of statistic");
 
 2630      Error(
"SetFitParameters",
"Wrong optimization algorithm");
 
 2636      Error(
"SetFitParameters",
"Wrong power");
 
 2641      Error(
"SetFitParameters",
"Wrong order of Taylor development");
 
 2660      Error (
"SetPeakParameters",
"Invalid sigma, must be > than 0");
 
 2665         Error (
"SetPeakParameters",
"Invalid peak position, must be in the range fXmin, fXmax");
 
 2669         Error (
"SetPeakParameters",
"Invalid peak amplitude, must be > than 0");
 
The TNamed class is the base class for all named ROOT classes.
 
virtual void Error(const char *method, const char *msgfmt,...) const
Issue error message.
 
Advanced 1-dimensional spectra fitting functions.
 
Bool_t fFixSigma
logical value of sigma parameter, which allows to fix the parameter (not to fit).
 
Double_t Ders(Int_t num_of_fitted_peaks, Double_t i, const Double_t *parameter, Double_t sigma)
This function calculates derivative of peaks shape function (see manual) according to relative amplit...
 
Double_t Area(Double_t a, Double_t sigma, Double_t t, Double_t b)
This function calculates area of a peak Function parameters:
 
Double_t * fAmpErr
[fNPeaks] array of amplitude errors
 
void SetPeakParameters(Double_t sigma, Bool_t fixSigma, const Double_t *positionInit, const Bool_t *fixPosition, const Double_t *ampInit, const Bool_t *fixAmp)
This function sets the following fitting parameters of peaks:
 
virtual ~TSpectrumFit()
Destructor.
 
Double_t fAlpha
convergence coefficient, input parameter, it should be positive number and <=1, for details see refer...
 
Double_t Deri0(Double_t i, Double_t amp, Double_t i0, Double_t sigma, Double_t t, Double_t s, Double_t b)
This function calculates derivative of peak shape function (see manual) according to peak position.
 
Double_t Ourpowl(Double_t a, Int_t pw)
Power function.
 
Int_t fAlphaOptim
optimization of convergence algorithm, possible values kFitAlphaHalving, kFitAlphaOptimal
 
Double_t fA1Init
initial value of background a1 parameter(backgroud is estimated as a0+a1*x+a2*x*x)
 
void FitStiefel(Double_t *source)
This function fits the source spectrum.
 
Double_t Derdersigma(Int_t num_of_fitted_peaks, Double_t i, const Double_t *parameter, Double_t sigma)
This function calculates second derivative of peaks shape function (see manual) according to sigma of...
 
Double_t * fPositionCalc
[fNPeaks] array of calculated values of fitted positions, output parameters
 
Double_t fSInit
initial value of s parameter (relative amplitude of step), for details see html manual and references
 
Double_t fA1Calc
calculated value of background a1 parameter
 
Double_t fSigmaErr
error value of sigma parameter
 
Bool_t * fFixAmp
[fNPeaks] array of logical values which allow to fix appropriate amplitudes (not fit)....
 
Double_t * fAmpCalc
[fNPeaks] array of calculated values of fitted amplitudes, output parameters
 
Bool_t fFixB
logical value of b parameter, which allows to fix the parameter (not to fit).
 
Double_t Dersigma(Int_t num_of_fitted_peaks, Double_t i, const Double_t *parameter, Double_t sigma, Double_t t, Double_t s, Double_t b)
This function calculates derivative of peaks shape function (see manual) according to sigma of peaks.
 
Double_t fBErr
error value of b parameter
 
void FitAwmi(Double_t *source)
This function fits the source spectrum.
 
Int_t fNumberIterations
number of iterations in fitting procedure, input parameter, it should be > 0
 
Double_t * fAmpInit
[fNPeaks] array of initial values of peaks amplitudes, input parameters
 
Double_t fA1Err
error value of background a1 parameter
 
Double_t fA2Err
error value of background a2 parameter
 
Bool_t * fFixPosition
[fNPeaks] array of logical values which allow to fix appropriate positions (not fit)....
 
Double_t fA0Calc
calculated value of background a0 parameter
 
Int_t fNPeaks
number of peaks present in fit, input parameter, it should be > 0
 
Double_t fBCalc
calculated value of b parameter
 
Bool_t fFixA2
logical value of a2 parameter, which allows to fix the parameter (not to fit).
 
Double_t Erfc(Double_t x)
 
TSpectrumFit(void)
Default constructor.
 
Double_t fA2Init
initial value of background a2 parameter(backgroud is estimated as a0+a1*x+a2*x*x)
 
Double_t Derpt(Double_t a, Double_t sigma, Double_t b)
This function calculates derivative of the area of peak according to t parameter.
 
Bool_t fFixA1
logical value of a1 parameter, which allows to fix the parameter (not to fit).
 
Double_t fA2Calc
calculated value of background a2 parameter
 
Double_t Derpb(Double_t a, Double_t sigma, Double_t t, Double_t b)
This function calculates derivative of the area of peak according to b parameter.
 
Double_t * fPositionErr
[fNPeaks] array of position errors
 
Double_t fTInit
initial value of t parameter (relative amplitude of tail), for details see html manual and references
 
Bool_t fFixT
logical value of t parameter, which allows to fix the parameter (not to fit).
 
void GetSigma(Double_t &sigma, Double_t &sigmaErr)
This function gets the sigma parameter and its error.
 
Int_t fFitTaylor
order of Taylor expansion, possible values kFitTaylorOrderFirst, kFitTaylorOrderSecond....
 
Double_t Dera1(Double_t i)
Derivative of background according to a1.
 
Double_t fSigmaCalc
calculated value of sigma parameter
 
Double_t Derpsigma(Double_t a, Double_t t, Double_t b)
This function calculates derivative of the area of peak according to sigma of peaks.
 
Double_t fSErr
error value of s parameter
 
Bool_t fFixA0
logical value of a0 parameter, which allows to fix the parameter (not to fit).
 
Int_t fPower
possible values kFitPower2,4,6,8,10,12, for details see references. It applies only for Awmi fitting ...
 
Double_t fChi
here the fitting functions return resulting chi square
 
Double_t * fArea
[fNPeaks] array of calculated areas of peaks
 
Double_t Dera2(Double_t i)
Derivative of background according to a2.
 
Double_t fBInit
initial value of b parameter (slope), for details see html manual and references
 
Double_t * fPositionInit
[fNPeaks] array of initial values of peaks positions, input parameters
 
void GetTailParameters(Double_t &t, Double_t &tErr, Double_t &b, Double_t &bErr, Double_t &s, Double_t &sErr)
This function gets the tail parameters and their errors.
 
Bool_t fFixS
logical value of s parameter, which allows to fix the parameter (not to fit).
 
Double_t fA0Init
initial value of background a0 parameter(backgroud is estimated as a0+a1*x+a2*x*x)
 
Int_t fXmin
first fitted channel
 
void SetFitParameters(Int_t xmin, Int_t xmax, Int_t numberIterations, Double_t alpha, Int_t statisticType, Int_t alphaOptim, Int_t power, Int_t fitTaylor)
This function sets the following fitting parameters:
 
Double_t fSCalc
calculated value of s parameter
 
void SetTailParameters(Double_t tInit, Bool_t fixT, Double_t bInit, Bool_t fixB, Double_t sInit, Bool_t fixS)
This function sets the following fitting parameters of tails of peaks.
 
Int_t fXmax
last fitted channel
 
Int_t fStatisticType
type of statistics, possible values kFitOptimChiCounts (chi square statistics with counts as weightin...
 
Double_t fTErr
error value of t parameter
 
Double_t Dert(Int_t num_of_fitted_peaks, Double_t i, const Double_t *parameter, Double_t sigma, Double_t b)
This function calculates derivative of peaks shape function (see manual) according to relative amplit...
 
Double_t Derb(Int_t num_of_fitted_peaks, Double_t i, const Double_t *parameter, Double_t sigma, Double_t t, Double_t b)
This function calculates derivative of peaks shape function (see manual) according to slope b.
 
Double_t Derpa(Double_t sigma, Double_t t, Double_t b)
This function calculates derivative of the area of peak according to its amplitude.
 
Double_t fSigmaInit
initial value of sigma parameter
 
Double_t Deramp(Double_t i, Double_t i0, Double_t sigma, Double_t t, Double_t s, Double_t b)
This function calculates derivative of peak shape function (see manual) according to amplitude of pea...
 
Double_t Derderi0(Double_t i, Double_t amp, Double_t i0, Double_t sigma)
This function calculates second derivative of peak shape function (see manual) according to peak posi...
 
Double_t fA0Err
error value of background a0 parameter
 
Double_t fTCalc
calculated value of t parameter
 
Double_t Shape(Int_t num_of_fitted_peaks, Double_t i, const Double_t *parameter, Double_t sigma, Double_t t, Double_t s, Double_t b, Double_t a0, Double_t a1, Double_t a2)
This function calculates peaks shape function (see manual) Function parameters:
 
Double_t * fAreaErr
[fNPeaks] array of errors of peak areas
 
void StiefelInversion(Double_t **a, Int_t rozmer)
This function calculates solution of the system of linear equations.
 
Double_t Derfc(Double_t x)
This function calculates derivative of error function of x.
 
void SetBackgroundParameters(Double_t a0Init, Bool_t fixA0, Double_t a1Init, Bool_t fixA1, Double_t a2Init, Bool_t fixA2)
This function sets the following fitting parameters of background:
 
void GetBackgroundParameters(Double_t &a0, Double_t &a0Err, Double_t &a1, Double_t &a1Err, Double_t &a2, Double_t &a2Err)
This function gets the background parameters and their errors.
 
static constexpr double s
 
static constexpr double pi
 
constexpr Double_t E()
Base of natural log:
 
Double_t Sqrt(Double_t x)