31#pragma optimize("",off)
184 if (!expression || !*expression) {
185 Error(
"TFormula",
"expression may not be 0 or have 0 length");
191 nch = expression ?
strlen(expression) : 0;
194 for (i=0;i<
nch;i++) {
195 if (expression[i] ==
' ')
continue;
196 if (i > 0 && (expression[i] ==
'*') && (expression[i-1] ==
'*')) {
200 expr[
j] = expression[i];
j++;
210 if (
chaine.Contains(
"++"))
213 if (
chaine.Contains(
"gausn")) {
216 tmp.ReplaceAll(
"gausn",
"");
217 tmp.ReplaceAll(
"landaun",
"");
218 if ( tmp.Contains(
"gaus") )
219 Warning(
"TFormula",
"Cannot use both gaus and gausn - gaus will be treated as gausn");
220 if ( tmp.Contains(
"landau") )
221 Warning(
"TFormula",
"Cannot use both gausn and landau - landau will be treated as landaun");
224 if (
chaine.Contains(
"landaun")) {
227 tmp.ReplaceAll(
"landaun",
"");
228 tmp.ReplaceAll(
"gausn",
"");
229 if ( tmp.Contains(
"gaus") ) {
230 Warning(
"TFormula",
"Cannot use both gaus and landaun - gaus will be treated as gausn");
232 if ( tmp.Contains(
"landau") )
233 Warning(
"TFormula",
"Cannot use both landau and landaun - landau will be treated as landaun");
237 chaine.ReplaceAll(
"gausn",
"gaus");
239 chaine.ReplaceAll(
"landaun",
"landau");
258 Error(
"TFormula",
"The name \'%s\' is reserved as a TFormula variable name.\n"
259 "\tThis function will not be registered in the list of functions",
name);
264 gROOT->GetListOfFunctions()->Remove(old);
266 gROOT->GetListOfFunctions()->Add(
this);
294 formula.TFormula::Copy(*
this);
303 rhs.TFormula::Copy(*
this);
314 gROOT->GetListOfFunctions()->Remove(
this);
367 Error(
"AnalyzeFunction",
"We thought we had a function but we dont (in %s)\n",
chaine.Data());
380 for(i=0; i<args.
Length(); i++) {
387 case '(':
paran++;
break;
388 case ')':
paran--;
break;
389 case '[':
brack++;
break;
390 case ']':
brack--;
break;
394 if ((i+1)==args.
Length()) {
497 Error(
"Compile",
"%s requires %d arguments",
498 prim->GetName(),
prim->fNArguments);
502 if (
prim->fType==10){
505 if (
prim->fType==110){
508 if (
prim->fType==1110){
511 if (
prim->fType==-1){
722 Int_t valeur,find,
n,i,
j,k,
lchain,
nomb,
virgule,
inter,
nest;
734 Int_t modulo,
plus,
puiss10,
puiss10bis,
moins,
multi,
divi,
puiss,
et,
ou,
petit,
grand,
egal,
diff,
peteg,
grdeg,
etx,
oux,
rshift,
lshift,
tercond,
terelse;
754 for (i=1; i<=
lchain; ++i) {
762 if (
compt < 0) err = 40;
767 if (
compt > 0) err = 41;
784 for (i=1;i<=
lchain; i++) {
792 }
else if (
strchr(
"+-/[]()&|><=!*/%^\\",t) ) {
804 if (
strchr(
"+-/[]()&|><=!*/%^\\",t)!=
nullptr) {
848 if (
c==
':' &&
chaine(
ip+1)==
':') { ++
ip;
continue; }
849 if (
c==
'<') { ++
depth;
continue; }
937 }
else if (
ou != 0) {
1005 }
else if (
etx!=0) {
1022 }
else if (
petit != 0) {
1039 }
else if (
grand != 0) {
1056 }
else if (
peteg != 0) {
1073 }
else if (
grdeg != 0) {
1090 }
else if (
egal != 0) {
1115 }
else if (
diff != 0) {
1140 }
else if (
plus != 0) {
1184 }
else if (
modulo != 0) {
1200 }
else if (
rshift != 0) {
1216 }
else if (
lshift != 0) {
1301 for (
j=0;
j<
chaine.Length() && err==0;
j++) {
1330 if (!
strchr(
"0123456789abcdefABCDEF",t) && (
j>1)) {
1395 }
else if ( k >= 0 ) {
1406 }
else if (
chaine(0,1) ==
"!") {
1420 }
else if (
chaine(0,4) ==
"cos(") {
1428 }
else if (
chaine(0,4) ==
"sin(") {
1436 }
else if (
chaine(0,4) ==
"tan(") {
1444 }
else if (
chaine(0,5) ==
"acos(") {
1452 }
else if (
chaine(0,5) ==
"asin(") {
1460 }
else if (
chaine(0,5) ==
"atan(") {
1468 }
else if (
chaine(0,5) ==
"cosh(") {
1476 }
else if (
chaine(0,5) ==
"sinh(") {
1484 }
else if (
chaine(0,5) ==
"tanh(") {
1492 }
else if (
chaine(0,6) ==
"acosh(") {
1500 }
else if (
chaine(0,6) ==
"asinh(") {
1508 }
else if (
chaine(0,6) ==
"atanh(") {
1516 }
else if (
chaine(0,3) ==
"sq(") {
1524 }
else if (
chaine(0,4) ==
"log(") {
1532 }
else if (
chaine(0,6) ==
"log10(") {
1540 }
else if (
chaine(0,4) ==
"exp(") {
1548 }
else if (
chaine(0,4) ==
"abs(") {
1556 }
else if (
chaine(0,5) ==
"sign(") {
1564 }
else if (
chaine(0,4) ==
"int(") {
1572 }
else if (
chaine ==
"rndm" ||
chaine(0,5) ==
"rndm(") {
1577 }
else if (
chaine(0,5) ==
"sqrt(") {
1593 if (
chaine(1,4) ==
"expo") {
1598 else if (
ctemp==
"y") {
1601 else if (
ctemp==
"z") {
1604 else if (
ctemp==
"t") {
1614 if (
chaine(2,4) ==
"expo") {
1615 if (
chaine(0,2) !=
"xy") {
1642 }
else if (
chaine(4,1) ==
"(") {
1647 if (
strchr(
"0123456789",t)==
nullptr && (
ctemp(
j,1)!=
"+" ||
j!=0)) {
1654 if (res == 1 &&
inter >= 0) {
1675 }
else if (
chaine==
"gaus"
1680 if (
chaine(1,4) ==
"gaus") {
1685 else if (
ctemp==
"y") {
1688 else if (
ctemp==
"z") {
1691 else if (
ctemp==
"t") {
1701 if (
chaine(2,4) ==
"gaus") {
1702 if (
chaine(0,2) !=
"xy") {
1714 if (
lchain == 4 && err==0) {
1730 }
else if (
chaine(4,1) ==
"(" && err==0) {
1735 if (
strchr(
"0123456789",t)==
nullptr && (
ctemp(
j,1)!=
"+" ||
j!=0)) {
1742 if (res == 1 &&
inter >= 0) {
1755 }
else if (err == 0) {
1766 if (
chaine(1,6) ==
"landau") {
1771 else if (
ctemp==
"y") {
1774 else if (
ctemp==
"z") {
1777 else if (
ctemp==
"t") {
1787 if (
chaine(2,6) ==
"landau") {
1788 if (
chaine(0,2) !=
"xy") {
1800 if (
lchain == 6 && err==0) {
1816 }
else if (
chaine(6,1) ==
"(" && err==0) {
1821 if (
strchr(
"0123456789",t)==
nullptr && (
ctemp(
j,1)!=
"+" ||
j!=0)) {
1828 if (res == 1 &&
inter >= 0) {
1841 }
else if (err == 0) {
1848 }
else if (
chaine(0,3) ==
"pol" ||
chaine(1,3) ==
"pol") {
1850 if (
chaine(1,3) ==
"pol") {
1855 else if (
ctemp==
"y") {
1858 else if (
ctemp==
"z") {
1861 else if (
ctemp==
"t") {
1874 if (
nomb == 3) err = 23;
1875 if (
nomb == 0) err = 40;
1879 if (
strchr(
"0123456789",t)==
nullptr && (
ctemp(
j,1)!=
"+" ||
j!=0)) {
1886 if (res != 1 ||
inter < 0)
1898 if (
n < 0 ) err = 24;
1899 if (
n >= 20) err = 25;
1918 }
else if (
chaine(0,4) ==
"pow(") {
1929 if (
nomb != 1) err = 22;
1942 }
else if (
chaine(0,7) ==
"strstr(") {
1958 if (
nomb != 1) err = 28;
1976 }
else if (
chaine(0,4) ==
"min(") {
2003 }
else if (
chaine(0,4) ==
"max(") {
2031 }
else if (
chaine(0,6) ==
"atan2(") {
2042 if (
nomb != 1) err = 21;
2055 }
else if (
chaine(0,5) ==
"fmod(") {
2096 if (
strchr(
"0123456789",t)==
nullptr && (
ctemp(
j,1)!=
"+" ||
j!=0)) {
2111 }
else if (
chaine ==
"pi") {
2140 case 2 :
er =
" Invalid Floating Point Operation";
break;
2141 case 4 :
er =
" Empty String";
break;
2143 case 6 :
er =
" Too many operators !";
break;
2144 case 7 :
er =
" Too many parameters !";
break;
2145 case 10 :
er =
" z specified but not x and y";
break;
2146 case 11 :
er =
" z and y specified but not x";
break;
2147 case 12 :
er =
" y specified but not x";
break;
2148 case 13 :
er =
" z and x specified but not y";
break;
2149 case 20 :
er =
" Non integer value for parameter number : " +
chaine_error;
break;
2150 case 21 :
er =
" ATAN2 requires two arguments";
break;
2151 case 22 :
er =
" POW requires two arguments";
break;
2152 case 23 :
er =
" Degree of polynomial not specified";
break;
2153 case 24 :
er =
" Degree of polynomial must be positive";
break;
2154 case 25 :
er =
" Degree of polynomial must be less than 20";
break;
2156 case 27 :
er =
" Too many constants in expression";
break;
2157 case 28 :
er =
" strstr requires two arguments";
break;
2158 case 29 :
er =
" TFormula can only call interpreted and compiled functions that return a numerical type: " +
chaine_error;
break;
2159 case 30 :
er =
" Bad numerical expression : " +
chaine_error;
break;
2160 case 31 :
er =
" Part of the Variable " +
chaine_error;
er +=
" exists but some of it is not accessible or useable";
break;
2161 case 40 :
er =
" '(' is expected";
break;
2162 case 41 :
er =
" ')' is expected";
break;
2163 case 42 :
er =
" '[' is expected";
break;
2164 case 43 :
er =
" ']' is expected";
break;
2165 case 44 :
er =
" The function '" +
chaine(0,
err_hint) +
"' requires two arguments.";
break;
2166 case 45 :
er =
"The operator " +
chaine_error +
" requires a numerical operand.";
break;
2167 case 46 :
er =
"Both operands of the operator " +
chaine_error +
" have to be either numbers or strings.";
break;
2168 case 47 :
er =
chaine_error +
" requires 2 string arguments";
break;
2170 Error(
"Compile",
"%s",
er.Data());
2183 Error(
"Compile",
"\"%s\" requires a numerical operand.",
fExpr[
oper].Data());
2203 Error(
"Compile",
"\"%s\" requires two numerical operands.",
fExpr[
oper].Data());
2315 if (
chaine.Contains(
";")) {
2339 for (i=0; i<
gMAXOP; i++) {
2348 for (i=1; i<=
chaine.Length(); i++) {
2352 if (
chaine(i-1,2) ==
"**") {
2355 }
else if (
chaine(i-1,2) ==
"++") {
2358 }
else if (
chaine(i-1,2) ==
"+-" ||
chaine(i-1,2) ==
"-+") {
2361 }
else if (
chaine(i-1,2) ==
"--") {
2364 }
else if (
chaine(i-1,2) ==
"->") {
2367 }
else if (
chaine(i-1,1) ==
"[") {
2372 if (
ctemp.IsDigit()) {
2379 }
else if (
chaine(i-1,1) ==
" ") {
2428 for (i=0;i<
fNpar;i++)
2463 if (err) {
fNdim = 0;
return 1; }
2486 ((
TFormula&)obj).fParams =
nullptr;
2511 while ( (
fobj = next()) ) {
2636 }
else if (
chaine ==
"y") {
2639 }
else if (
chaine ==
"z") {
2642 }
else if (
chaine ==
"t") {
2647 if (
chaine.Data()[0]==
'x'){
2649 const char ch0 =
'0';
2651 if (dim<0)
return -1;
2652 if (dim>9)
return -1;
2657 const char ch0 =
'0';
2659 if (dim<0)
return -1;
2660 if (dim>99)
return -1;
2714 for (i=0; i<
fNoper; ++i) {
2726 case kAdd : pos--;
tab[pos-1] +=
tab[pos];
continue;
2730 else tab[pos-1] /=
tab[pos];
2764 case kfmod : pos--;
tab[pos-1] = fmod(
tab[pos-1],
tab[pos]);
continue;
2766 case ksq :
tab[pos-1] =
tab[pos-1]*
tab[pos-1];
continue;
2778 else {
tab[pos-1] = 0;}
2781 if (
dexp < -700) {
tab[pos-1] = 0;
continue;}
2785 else {
tab[pos-1] = 0;}
2791 case ksign :
if (
tab[pos-1] < 0)
tab[pos-1] = -1;
else tab[pos-1] = 1;
continue;
2798 case kAnd : pos--;
if (
tab[pos-1]!=0 &&
tab[pos]!=0)
tab[pos-1]=1;
2801 case kOr : pos--;
if (
tab[pos-1]!=0 ||
tab[pos]!=0)
tab[pos-1]=1;
2823 case kNot :
if (
tab[pos-1]!=0)
tab[pos-1] = 0;
else tab[pos-1] = 1;
2848 int op = param % 10;
2850 if (
op == 1 && (!
tab[pos-1]) ) {
2859 }
else if (
op == 2 &&
tab[pos-1] ) {
2881 #define R__EXPO(var) \
2883 pos++; int param = (oper & kTFOperMask); \
2884 tab[pos-1] = TMath::Exp(params[param]+params[param+1]*x[var]); \
2892 tab[pos-1] =
TMath::Exp(params[param]+params[param+1]*
x[0]+params[param+2]*
x[1]);
2895 #define R__GAUS(var) \
2897 pos++; int param = (oper & kTFOperMask); \
2898 tab[pos-1] = params[param]*TMath::Gaus(x[var],params[param+1],params[param+2],IsNormalized()); \
2908 if (params[param+2] == 0) {
2914 if (params[param+4] == 0) {
2922 #define R__LANDAU(var) \
2924 pos++; const int param = (oper & kTFOperMask); \
2925 tab[pos-1] = params[param]*TMath::Landau(x[var],params[param+1],params[param+2],IsNormalized()); \
2939 #define R__POLY(var) \
2941 pos++; int param = (oper & kTFOperMask); \
2942 tab[pos-1] = 0; Double_t intermede = 1; \
2943 Int_t inter = param/100; \
2944 Int_t int1= param-inter*100-1; \
2945 for (j=0 ;j<inter+1;j++) { \
2946 tab[pos-1] += intermede*params[j+int1]; \
2947 intermede *= x[var]; \
2972 pos++;
tab[pos-1] = 0;
2980 int fno = param / 1000;
2981 int nargs = param % 1000;
3143 int nargs = param % 1000;
3166 Error(
"GetExpFormula",
"Internal error, number of argument found is %d",-
offset);
3167 }
else if (
offset == 0) {
3209 ret.ReplaceAll(
"--",
"+");
3210 ret.ReplaceAll(
"+-",
"-");
3258 if (
fNames[ipar].Length() > 0)
return (
const char*)
fNames[ipar];
3259 return Form(
"p%d",ipar);
3292 Printf(
" fExpr[%d] = %s action = %d action param = %d ",
3297 Printf(
"Optimized expression");
3299 Printf(
" fExpr[%d] = %s\t\t action = %d action param = %d ",
3306 for (i=0;i<
fNpar;i++) {
3324 formula.
Insert(0,
"[0]*(");
3368 Error(
"TFormula",
"f_linear not allocated");
3373 gROOT->GetListOfFunctions()->Remove(
f);
3471 if (
b.IsReading()) {
3475 Error(
"Streamer",
"version 6 is not supported");
3490 if (
b.IsReading()) {
3494 Error(
"Streamer",
"version 6 is not supported");
3515 gROOT->GetListOfFunctions()->Add(
this);
3528 Error(
"Streamer",
"error compiling formula");
3563 if (
gROOT->GetListOfFunctions()->FindObject(
GetName()))
return;
3564 gROOT->GetListOfFunctions()->Add(
this);
3610 for (
int z=i; z<
fNoper; ++z) {
3614 }
else if (
action < 100 ) {
3667 }
else if (
action >= 4600) {
3758 cbase.ReplaceAll(
"Double_t ",
"");
3776 if (
prim->fType==10) {
3779 if (
prim->fType==110) {
3782 if (
prim->fType==1110) {
3785 if (
prim->fType==-1) {
3788 if (
prim->fType==0){
3844 for (i=0; i<
fNoper; i++) {
3938 if ((i+1) >=
fNoper)
continue;
3965 if ((i+2) >=
fNoper)
continue;
4002 if ((i+3) >=
fNoper)
continue;
4234 case kAdd : pos--;
tab[pos-1] +=
tab[pos];
continue;
4238 else tab[pos-1] /=
tab[pos];
4268 case kabs :
if (
tab[pos-1]<0)
tab[pos-1]=-
tab[pos-1];
continue;
4269 case ksign :
if (
tab[pos-1] < 0)
tab[pos-1] = -1;
else tab[pos-1] = 1;
continue;
4281 case kfmod : pos--;
tab[pos-1] = fmod(
tab[pos-1],
tab[pos]);
continue;
4301 case kNot :
if (
tab[pos-1]!=0)
tab[pos-1] = 0;
else tab[pos-1] = 1;
4325 int op = param % 10;
4327 if (
op == 1 && (!
tab[pos-1]) ) {
4336 }
else if (
op == 2 &&
tab[pos-1] ) {
4353#define R__EXPO(var) \
4355 pos++; int param = (oper & kTFOperMask); \
4356 tab[pos-1] = TMath::Exp(params[param]+params[param+1]*x[var]); \
4364 tab[pos-1] =
TMath::Exp(params[param]+params[param+1]*
x[0]+params[param+2]*
x[1]);
4369#define R__GAUS(var) \
4371 pos++; int param = (oper & kTFOperMask); \
4372 tab[pos-1] = params[param]*TMath::Gaus(x[var],params[param+1], \
4373 params[param+2],IsNormalized()); \
4383 if (params[param+2] == 0) {
4389 if (params[param+4] == 0) {
4397#define R__LANDAU(var) \
4399 pos++; const int param = (oper & kTFOperMask); \
4400 tab[pos-1] = params[param]*TMath::Landau(x[var],params[param+1],params[param+2],IsNormalized()); \
4414#define R__POLY(var) \
4416 pos++; int param = (oper & kTFOperMask); \
4417 tab[pos-1] = 0; Double_t intermede = 1; \
4418 Int_t inter = param/100; \
4419 Int_t int1= param-inter*100-1; \
4420 for (j=0 ;j<inter+1;j++) { \
4421 tab[pos-1] += intermede*params[j+int1]; \
4422 intermede *= x[var]; \
4447 pos++;
tab[pos-1] = 0;
4455 int fno = param / 1000;
4456 int nargs = param % 1000;
4493 if (str.Length()<3)
return 1;
4494 if (str[str.Length()-1]!=
'+'&&str[str.Length()-2]!=
'+')
return 1;
4495 str[str.Length()-2]=0;
4504 if (
hf ==
nullptr) {
4505 Error(
"PreCompile",
"Unable to open the file %s for writing.",fileName.
Data());
4508 fprintf(
hf,
"/////////////////////////////////////////////////////////////////////////\n");
4509 fprintf(
hf,
"// This code has been automatically generated \n");
4512 fprintf(
hf,
"return (%s);\n}",str.Data());
int Int_t
Signed integer 4 bytes (int)
long Longptr_t
Integer large enough to hold a pointer (platform-dependent)
short Version_t
Class version identifier (short)
unsigned long ULong_t
Unsigned long integer 4 bytes (unsigned long). Size depends on architecture.
unsigned int UInt_t
Unsigned integer 4 bytes (unsigned int)
float Float_t
Float 4 bytes (float)
double Double_t
Double 8 bytes.
const char Option_t
Option string (const char)
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.
#define R__ASSERT(e)
Checks condition e and reports a fatal error if it's false.
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h offset
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t result
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t index
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void value
R__EXTERN TVirtualMutex * gROOTMutex
R__EXTERN TRandom * gRandom
char * Form(const char *fmt,...)
Formats a string in a circular formatting buffer.
void Printf(const char *fmt,...)
Formats a string in a circular formatting buffer and prints the string.
#define R__LOCKGUARD(mutex)
TOperOffset()
TOper offset - helper class for TFormula* specify type of operand fTypeX = kVariable = kParameter = k...
Bool_t TestBitNumber(UInt_t bitnumber) const
void SetBitNumber(UInt_t bitnumber, Bool_t value=kTRUE)
Buffer base class used for serializing objects.
TClass instances represent classes, structs and namespaces in the ROOT type system.
ClassInfo_t * GetClassInfo() const
static TClass * GetClass(const char *name, Bool_t load=kTRUE, Bool_t silent=kFALSE)
Static method returning pointer to TClass of the specified class name.
Method or function calling interface.
static const EReturnType kOther
The TNamed class is the base class for all named ROOT classes.
void Copy(TObject &named) const override
Copy this to obj.
virtual void SetTitle(const char *title="")
Set the title of the TNamed.
const char * GetName() const override
Returns name of object.
void Streamer(TBuffer &) override
Stream an object of class TObject.
const char * GetTitle() const override
Returns title of object.
virtual void Expand(Int_t newSize)
Expand or shrink the array to newSize elements.
void Delete(Option_t *option="") override
Remove all objects from the array AND delete all heap based objects.
TObject * At(Int_t idx) const override
TObject * UncheckedAt(Int_t i) const
Bool_t IsEmpty() const override
Int_t GetLast() const override
Return index of last object in array.
void Add(TObject *obj) override
Collectable string class.
Mother of all ROOT objects.
R__ALWAYS_INLINE Bool_t TestBit(UInt_t f) const
virtual void Warning(const char *method, const char *msgfmt,...) const
Issue warning message.
virtual TObject * FindObject(const char *name) const
Must be redefined in derived classes.
void SetBit(UInt_t f, Bool_t set)
Set or unset the user status bits as specified in f.
virtual void Error(const char *method, const char *msgfmt,...) const
Issue error message.
Double_t Rndm() override
Machine independent random number generator.
void ToLower()
Change string to lower-case.
TString & Insert(Ssiz_t pos, const char *s)
TString & Replace(Ssiz_t pos, Ssiz_t n, const char *s)
const char * Data() const
TString & Append(const char *cs)
static TString Format(const char *fmt,...)
Static method which formats a string using a printf style format descriptor and return a TString.
void Form(const char *fmt,...)
Formats a string using a printf style format descriptor.
Bool_t Contains(const char *pat, ECaseCompare cmp=kExact) const
Double_t CosH(Double_t)
Returns the hyperbolic cosine of x.
Double_t ACos(Double_t)
Returns the principal value of the arc cosine of x, expressed in radians.
Short_t Max(Short_t a, Short_t b)
Returns the largest of a and b.
Double_t ASin(Double_t)
Returns the principal value of the arc sine of x, expressed in radians.
Double_t Exp(Double_t x)
Returns the base-e exponential function of x, which is e raised to the power x.
Double_t ATan(Double_t)
Returns the principal value of the arc tangent of x, expressed in radians.
Double_t ASinH(Double_t)
Returns the area hyperbolic sine of x.
Double_t Landau(Double_t x, Double_t mpv=0, Double_t sigma=1, Bool_t norm=kFALSE)
The LANDAU function.
Double_t TanH(Double_t)
Returns the hyperbolic tangent of x.
Double_t ACosH(Double_t)
Returns the nonnegative area hyperbolic cosine of x.
Double_t ATan2(Double_t y, Double_t x)
Returns the principal value of the arc tangent of y/x, expressed in radians.
Double_t Log(Double_t x)
Returns the natural logarithm of x.
Double_t Sqrt(Double_t x)
Returns the square root of x.
LongDouble_t Power(LongDouble_t x, LongDouble_t y)
Returns x raised to the power y.
Short_t Min(Short_t a, Short_t b)
Returns the smallest of a and b.
Double_t Cos(Double_t)
Returns the cosine of an angle of x radians.
Double_t Sin(Double_t)
Returns the sine of an angle of x radians.
Double_t Tan(Double_t)
Returns the tangent of an angle of x radians.
Double_t ATanH(Double_t)
Returns the area hyperbolic tangent of x.
Double_t Log10(Double_t x)
Returns the common (base-10) logarithm of x.
Short_t Abs(Short_t d)
Returns the absolute value of parameter Short_t d.
Double_t SinH(Double_t)
Returns the hyperbolic sine of `x.