#include Double_t Novosibirsk(Double_t * x, Double_t * par) { Double_t qa=0,qb=0,qc=0,qx=0,qy=0; Double_t peak = par[1]; Double_t width = par[2]; static const Double_t sln4 = TMath::Sqrt(TMath::Log(4)); Double_t y = par[3]*sln4; Double_t tail = -TMath::Log(y + TMath::Sqrt(1 + y*y))/sln4; if(TMath::Abs(tail) < 1.e-7) { qc = 0.5*TMath::Power(((x[0]-peak)/width),2); } else { qa = tail*sln4; qb = sinh(qa)/qa; qx = (x[0]-peak)/width*qb; qy = 1.+tail*qx; if( qy > 1.E-7) { qc = 0.5*(TMath::Power((TMath::Log(qy)/tail),2) + tail*tail); } else { qc = 15.0; } } return par[0]*TMath::Exp(-qc); } // TF1: // TF1 f_novo("f_novo",Novosibirsk,0,10,4);