31#pragma optimize("",off)
185 if (!expression || !*expression) {
186 Error(
"TFormula",
"expression may not be 0 or have 0 length");
192 nch = expression ?
strlen(expression) : 0;
195 for (i=0;i<
nch;i++) {
196 if (expression[i] ==
' ')
continue;
197 if (i > 0 && (expression[i] ==
'*') && (expression[i-1] ==
'*')) {
201 expr[
j] = expression[i];
j++;
211 if (
chaine.Contains(
"++"))
214 if (
chaine.Contains(
"gausn")) {
217 tmp.ReplaceAll(
"gausn",
"");
218 tmp.ReplaceAll(
"landaun",
"");
219 if ( tmp.Contains(
"gaus") )
220 Warning(
"TFormula",
"Cannot use both gaus and gausn - gaus will be treated as gausn");
221 if ( tmp.Contains(
"landau") )
222 Warning(
"TFormula",
"Cannot use both gausn and landau - landau will be treated as landaun");
225 if (
chaine.Contains(
"landaun")) {
228 tmp.ReplaceAll(
"landaun",
"");
229 tmp.ReplaceAll(
"gausn",
"");
230 if ( tmp.Contains(
"gaus") ) {
231 Warning(
"TFormula",
"Cannot use both gaus and landaun - gaus will be treated as gausn");
233 if ( tmp.Contains(
"landau") )
234 Warning(
"TFormula",
"Cannot use both landau and landaun - landau will be treated as landaun");
238 chaine.ReplaceAll(
"gausn",
"gaus");
240 chaine.ReplaceAll(
"landaun",
"landau");
259 Error(
"TFormula",
"The name \'%s\' is reserved as a TFormula variable name.\n"
260 "\tThis function will not be registered in the list of functions",
name);
265 gROOT->GetListOfFunctions()->Remove(old);
267 gROOT->GetListOfFunctions()->Add(
this);
295 formula.TFormula::Copy(*
this);
304 rhs.TFormula::Copy(*
this);
315 gROOT->GetListOfFunctions()->Remove(
this);
368 Error(
"AnalyzeFunction",
"We thought we had a function but we dont (in %s)\n",
chaine.Data());
381 for(i=0; i<args.
Length(); i++) {
388 case '(':
paran++;
break;
389 case ')':
paran--;
break;
390 case '[':
brack++;
break;
391 case ']':
brack--;
break;
395 if ((i+1)==args.
Length()) {
498 Error(
"Compile",
"%s requires %d arguments",
499 prim->GetName(),
prim->fNArguments);
503 if (
prim->fType==10){
506 if (
prim->fType==110){
509 if (
prim->fType==1110){
512 if (
prim->fType==-1){
723 Int_t valeur,find,
n,i,
j,k,
lchain,
nomb,
virgule,
inter,
nest;
735 Int_t modulo,
plus,
puiss10,
puiss10bis,
moins,
multi,
divi,
puiss,
et,
ou,
petit,
grand,
egal,
diff,
peteg,
grdeg,
etx,
oux,
rshift,
lshift,
tercond,
terelse;
755 for (i=1; i<=
lchain; ++i) {
763 if (
compt < 0) err = 40;
768 if (
compt > 0) err = 41;
785 for (i=1;i<=
lchain; i++) {
793 }
else if (
strchr(
"+-/[]()&|><=!*/%^\\",t) ) {
805 if (
strchr(
"+-/[]()&|><=!*/%^\\",t)!=
nullptr) {
849 if (
c==
':' &&
chaine(
ip+1)==
':') { ++
ip;
continue; }
850 if (
c==
'<') { ++
depth;
continue; }
938 }
else if (
ou != 0) {
1006 }
else if (
etx!=0) {
1023 }
else if (
petit != 0) {
1040 }
else if (
grand != 0) {
1057 }
else if (
peteg != 0) {
1074 }
else if (
grdeg != 0) {
1091 }
else if (
egal != 0) {
1116 }
else if (
diff != 0) {
1141 }
else if (
plus != 0) {
1185 }
else if (
modulo != 0) {
1201 }
else if (
rshift != 0) {
1217 }
else if (
lshift != 0) {
1302 for (
j=0;
j<
chaine.Length() && err==0;
j++) {
1331 if (!
strchr(
"0123456789abcdefABCDEF",t) && (
j>1)) {
1396 }
else if ( k >= 0 ) {
1407 }
else if (
chaine(0,1) ==
"!") {
1421 }
else if (
chaine(0,4) ==
"cos(") {
1429 }
else if (
chaine(0,4) ==
"sin(") {
1437 }
else if (
chaine(0,4) ==
"tan(") {
1445 }
else if (
chaine(0,5) ==
"acos(") {
1453 }
else if (
chaine(0,5) ==
"asin(") {
1461 }
else if (
chaine(0,5) ==
"atan(") {
1469 }
else if (
chaine(0,5) ==
"cosh(") {
1477 }
else if (
chaine(0,5) ==
"sinh(") {
1485 }
else if (
chaine(0,5) ==
"tanh(") {
1493 }
else if (
chaine(0,6) ==
"acosh(") {
1501 }
else if (
chaine(0,6) ==
"asinh(") {
1509 }
else if (
chaine(0,6) ==
"atanh(") {
1517 }
else if (
chaine(0,3) ==
"sq(") {
1525 }
else if (
chaine(0,4) ==
"log(") {
1533 }
else if (
chaine(0,6) ==
"log10(") {
1541 }
else if (
chaine(0,4) ==
"exp(") {
1549 }
else if (
chaine(0,4) ==
"abs(") {
1557 }
else if (
chaine(0,5) ==
"sign(") {
1565 }
else if (
chaine(0,4) ==
"int(") {
1573 }
else if (
chaine ==
"rndm" ||
chaine(0,5) ==
"rndm(") {
1578 }
else if (
chaine(0,5) ==
"sqrt(") {
1594 if (
chaine(1,4) ==
"expo") {
1599 else if (
ctemp==
"y") {
1602 else if (
ctemp==
"z") {
1605 else if (
ctemp==
"t") {
1615 if (
chaine(2,4) ==
"expo") {
1616 if (
chaine(0,2) !=
"xy") {
1643 }
else if (
chaine(4,1) ==
"(") {
1648 if (
strchr(
"0123456789",t)==
nullptr && (
ctemp(
j,1)!=
"+" ||
j!=0)) {
1655 if (res == 1 &&
inter >= 0) {
1676 }
else if (
chaine==
"gaus"
1681 if (
chaine(1,4) ==
"gaus") {
1686 else if (
ctemp==
"y") {
1689 else if (
ctemp==
"z") {
1692 else if (
ctemp==
"t") {
1702 if (
chaine(2,4) ==
"gaus") {
1703 if (
chaine(0,2) !=
"xy") {
1715 if (
lchain == 4 && err==0) {
1731 }
else if (
chaine(4,1) ==
"(" && err==0) {
1736 if (
strchr(
"0123456789",t)==
nullptr && (
ctemp(
j,1)!=
"+" ||
j!=0)) {
1743 if (res == 1 &&
inter >= 0) {
1756 }
else if (err == 0) {
1767 if (
chaine(1,6) ==
"landau") {
1772 else if (
ctemp==
"y") {
1775 else if (
ctemp==
"z") {
1778 else if (
ctemp==
"t") {
1788 if (
chaine(2,6) ==
"landau") {
1789 if (
chaine(0,2) !=
"xy") {
1801 if (
lchain == 6 && err==0) {
1817 }
else if (
chaine(6,1) ==
"(" && err==0) {
1822 if (
strchr(
"0123456789",t)==
nullptr && (
ctemp(
j,1)!=
"+" ||
j!=0)) {
1829 if (res == 1 &&
inter >= 0) {
1842 }
else if (err == 0) {
1849 }
else if (
chaine(0,3) ==
"pol" ||
chaine(1,3) ==
"pol") {
1851 if (
chaine(1,3) ==
"pol") {
1856 else if (
ctemp==
"y") {
1859 else if (
ctemp==
"z") {
1862 else if (
ctemp==
"t") {
1875 if (
nomb == 3) err = 23;
1876 if (
nomb == 0) err = 40;
1880 if (
strchr(
"0123456789",t)==
nullptr && (
ctemp(
j,1)!=
"+" ||
j!=0)) {
1887 if (res != 1 ||
inter < 0)
1899 if (
n < 0 ) err = 24;
1900 if (
n >= 20) err = 25;
1919 }
else if (
chaine(0,4) ==
"pow(") {
1930 if (
nomb != 1) err = 22;
1943 }
else if (
chaine(0,7) ==
"strstr(") {
1959 if (
nomb != 1) err = 28;
1977 }
else if (
chaine(0,4) ==
"min(") {
2004 }
else if (
chaine(0,4) ==
"max(") {
2032 }
else if (
chaine(0,6) ==
"atan2(") {
2043 if (
nomb != 1) err = 21;
2056 }
else if (
chaine(0,5) ==
"fmod(") {
2097 if (
strchr(
"0123456789",t)==
nullptr && (
ctemp(
j,1)!=
"+" ||
j!=0)) {
2112 }
else if (
chaine ==
"pi") {
2141 case 2 :
er =
" Invalid Floating Point Operation";
break;
2142 case 4 :
er =
" Empty String";
break;
2144 case 6 :
er =
" Too many operators !";
break;
2145 case 7 :
er =
" Too many parameters !";
break;
2146 case 10 :
er =
" z specified but not x and y";
break;
2147 case 11 :
er =
" z and y specified but not x";
break;
2148 case 12 :
er =
" y specified but not x";
break;
2149 case 13 :
er =
" z and x specified but not y";
break;
2150 case 20 :
er =
" Non integer value for parameter number : " +
chaine_error;
break;
2151 case 21 :
er =
" ATAN2 requires two arguments";
break;
2152 case 22 :
er =
" POW requires two arguments";
break;
2153 case 23 :
er =
" Degree of polynomial not specified";
break;
2154 case 24 :
er =
" Degree of polynomial must be positive";
break;
2155 case 25 :
er =
" Degree of polynomial must be less than 20";
break;
2157 case 27 :
er =
" Too many constants in expression";
break;
2158 case 28 :
er =
" strstr requires two arguments";
break;
2159 case 29 :
er =
" TFormula can only call interpreted and compiled functions that return a numerical type: " +
chaine_error;
break;
2160 case 30 :
er =
" Bad numerical expression : " +
chaine_error;
break;
2161 case 31 :
er =
" Part of the Variable " +
chaine_error;
er +=
" exists but some of it is not accessible or useable";
break;
2162 case 40 :
er =
" '(' is expected";
break;
2163 case 41 :
er =
" ')' is expected";
break;
2164 case 42 :
er =
" '[' is expected";
break;
2165 case 43 :
er =
" ']' is expected";
break;
2166 case 44 :
er =
" The function '" +
chaine(0,
err_hint) +
"' requires two arguments.";
break;
2167 case 45 :
er =
"The operator " +
chaine_error +
" requires a numerical operand.";
break;
2168 case 46 :
er =
"Both operands of the operator " +
chaine_error +
" have to be either numbers or strings.";
break;
2169 case 47 :
er =
chaine_error +
" requires 2 string arguments";
break;
2171 Error(
"Compile",
"%s",
er.Data());
2184 Error(
"Compile",
"\"%s\" requires a numerical operand.",
fExpr[
oper].Data());
2204 Error(
"Compile",
"\"%s\" requires two numerical operands.",
fExpr[
oper].Data());
2316 if (
chaine.Contains(
";")) {
2340 for (i=0; i<
gMAXOP; i++) {
2349 for (i=1; i<=
chaine.Length(); i++) {
2353 if (
chaine(i-1,2) ==
"**") {
2356 }
else if (
chaine(i-1,2) ==
"++") {
2359 }
else if (
chaine(i-1,2) ==
"+-" ||
chaine(i-1,2) ==
"-+") {
2362 }
else if (
chaine(i-1,2) ==
"--") {
2365 }
else if (
chaine(i-1,2) ==
"->") {
2368 }
else if (
chaine(i-1,1) ==
"[") {
2373 if (
ctemp.IsDigit()) {
2380 }
else if (
chaine(i-1,1) ==
" ") {
2429 for (i=0;i<
fNpar;i++)
2464 if (err) {
fNdim = 0;
return 1; }
2487 ((
TFormula&)obj).fParams =
nullptr;
2512 while ( (
fobj = next()) ) {
2637 }
else if (
chaine ==
"y") {
2640 }
else if (
chaine ==
"z") {
2643 }
else if (
chaine ==
"t") {
2648 if (
chaine.Data()[0]==
'x'){
2650 const char ch0 =
'0';
2652 if (dim<0)
return -1;
2653 if (dim>9)
return -1;
2658 const char ch0 =
'0';
2660 if (dim<0)
return -1;
2661 if (dim>99)
return -1;
2715 for (i=0; i<
fNoper; ++i) {
2727 case kAdd : pos--;
tab[pos-1] +=
tab[pos];
continue;
2731 else tab[pos-1] /=
tab[pos];
2765 case kfmod : pos--;
tab[pos-1] = fmod(
tab[pos-1],
tab[pos]);
continue;
2767 case ksq :
tab[pos-1] =
tab[pos-1]*
tab[pos-1];
continue;
2779 else {
tab[pos-1] = 0;}
2782 if (
dexp < -700) {
tab[pos-1] = 0;
continue;}
2786 else {
tab[pos-1] = 0;}
2792 case ksign :
if (
tab[pos-1] < 0)
tab[pos-1] = -1;
else tab[pos-1] = 1;
continue;
2799 case kAnd : pos--;
if (
tab[pos-1]!=0 &&
tab[pos]!=0)
tab[pos-1]=1;
2802 case kOr : pos--;
if (
tab[pos-1]!=0 ||
tab[pos]!=0)
tab[pos-1]=1;
2824 case kNot :
if (
tab[pos-1]!=0)
tab[pos-1] = 0;
else tab[pos-1] = 1;
2849 int op = param % 10;
2851 if (
op == 1 && (!
tab[pos-1]) ) {
2860 }
else if (
op == 2 &&
tab[pos-1] ) {
2882 #define R__EXPO(var) \
2884 pos++; int param = (oper & kTFOperMask); \
2885 tab[pos-1] = TMath::Exp(params[param]+params[param+1]*x[var]); \
2893 tab[pos-1] =
TMath::Exp(params[param]+params[param+1]*
x[0]+params[param+2]*
x[1]);
2896 #define R__GAUS(var) \
2898 pos++; int param = (oper & kTFOperMask); \
2899 tab[pos-1] = params[param]*TMath::Gaus(x[var],params[param+1],params[param+2],IsNormalized()); \
2909 if (params[param+2] == 0) {
2915 if (params[param+4] == 0) {
2923 #define R__LANDAU(var) \
2925 pos++; const int param = (oper & kTFOperMask); \
2926 tab[pos-1] = params[param]*TMath::Landau(x[var],params[param+1],params[param+2],IsNormalized()); \
2940 #define R__POLY(var) \
2942 pos++; int param = (oper & kTFOperMask); \
2943 tab[pos-1] = 0; Double_t intermede = 1; \
2944 Int_t inter = param/100; \
2945 Int_t int1= param-inter*100-1; \
2946 for (j=0 ;j<inter+1;j++) { \
2947 tab[pos-1] += intermede*params[j+int1]; \
2948 intermede *= x[var]; \
2973 pos++;
tab[pos-1] = 0;
2981 int fno = param / 1000;
2982 int nargs = param % 1000;
3144 int nargs = param % 1000;
3167 Error(
"GetExpFormula",
"Internal error, number of argument found is %d",-
offset);
3168 }
else if (
offset == 0) {
3210 ret.ReplaceAll(
"--",
"+");
3211 ret.ReplaceAll(
"+-",
"-");
3259 if (
fNames[ipar].Length() > 0)
return (
const char*)
fNames[ipar];
3260 return Form(
"p%d",ipar);
3293 Printf(
" fExpr[%d] = %s action = %d action param = %d ",
3298 Printf(
"Optimized expression");
3300 Printf(
" fExpr[%d] = %s\t\t action = %d action param = %d ",
3307 for (i=0;i<
fNpar;i++) {
3325 formula.
Insert(0,
"[0]*(");
3369 Error(
"TFormula",
"f_linear not allocated");
3374 gROOT->GetListOfFunctions()->Remove(
f);
3472 if (
b.IsReading()) {
3476 Error(
"Streamer",
"version 6 is not supported");
3491 if (
b.IsReading()) {
3495 Error(
"Streamer",
"version 6 is not supported");
3516 gROOT->GetListOfFunctions()->Add(
this);
3529 Error(
"Streamer",
"error compiling formula");
3564 if (
gROOT->GetListOfFunctions()->FindObject(
GetName()))
return;
3565 gROOT->GetListOfFunctions()->Add(
this);
3611 for (
int z=i; z<
fNoper; ++z) {
3615 }
else if (
action < 100 ) {
3668 }
else if (
action >= 4600) {
3759 cbase.ReplaceAll(
"Double_t ",
"");
3777 if (
prim->fType==10) {
3780 if (
prim->fType==110) {
3783 if (
prim->fType==1110) {
3786 if (
prim->fType==-1) {
3789 if (
prim->fType==0){
3845 for (i=0; i<
fNoper; i++) {
3939 if ((i+1) >=
fNoper)
continue;
3966 if ((i+2) >=
fNoper)
continue;
4003 if ((i+3) >=
fNoper)
continue;
4235 case kAdd : pos--;
tab[pos-1] +=
tab[pos];
continue;
4239 else tab[pos-1] /=
tab[pos];
4269 case kabs :
if (
tab[pos-1]<0)
tab[pos-1]=-
tab[pos-1];
continue;
4270 case ksign :
if (
tab[pos-1] < 0)
tab[pos-1] = -1;
else tab[pos-1] = 1;
continue;
4282 case kfmod : pos--;
tab[pos-1] = fmod(
tab[pos-1],
tab[pos]);
continue;
4302 case kNot :
if (
tab[pos-1]!=0)
tab[pos-1] = 0;
else tab[pos-1] = 1;
4326 int op = param % 10;
4328 if (
op == 1 && (!
tab[pos-1]) ) {
4337 }
else if (
op == 2 &&
tab[pos-1] ) {
4354#define R__EXPO(var) \
4356 pos++; int param = (oper & kTFOperMask); \
4357 tab[pos-1] = TMath::Exp(params[param]+params[param+1]*x[var]); \
4365 tab[pos-1] =
TMath::Exp(params[param]+params[param+1]*
x[0]+params[param+2]*
x[1]);
4370#define R__GAUS(var) \
4372 pos++; int param = (oper & kTFOperMask); \
4373 tab[pos-1] = params[param]*TMath::Gaus(x[var],params[param+1], \
4374 params[param+2],IsNormalized()); \
4384 if (params[param+2] == 0) {
4390 if (params[param+4] == 0) {
4398#define R__LANDAU(var) \
4400 pos++; const int param = (oper & kTFOperMask); \
4401 tab[pos-1] = params[param]*TMath::Landau(x[var],params[param+1],params[param+2],IsNormalized()); \
4415#define R__POLY(var) \
4417 pos++; int param = (oper & kTFOperMask); \
4418 tab[pos-1] = 0; Double_t intermede = 1; \
4419 Int_t inter = param/100; \
4420 Int_t int1= param-inter*100-1; \
4421 for (j=0 ;j<inter+1;j++) { \
4422 tab[pos-1] += intermede*params[j+int1]; \
4423 intermede *= x[var]; \
4448 pos++;
tab[pos-1] = 0;
4456 int fno = param / 1000;
4457 int nargs = param % 1000;
4494 if (str.Length()<3)
return 1;
4495 if (str[str.Length()-1]!=
'+'&&str[str.Length()-2]!=
'+')
return 1;
4496 str[str.Length()-2]=0;
4505 if (
hf ==
nullptr) {
4506 Error(
"PreCompile",
"Unable to open the file %s for writing.",fileName.
Data());
4509 fprintf(
hf,
"/////////////////////////////////////////////////////////////////////////\n");
4510 fprintf(
hf,
"// This code has been automatically generated \n");
4513 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
Namespace for new ROOT classes and functions.
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.