31#pragma optimize("",off)
187 if (!expression || !*expression) {
188 Error(
"TFormula",
"expression may not be 0 or have 0 length");
194 nch = expression ?
strlen(expression) : 0;
197 for (i=0;i<
nch;i++) {
198 if (expression[i] ==
' ')
continue;
199 if (i > 0 && (expression[i] ==
'*') && (expression[i-1] ==
'*')) {
203 expr[
j] = expression[i];
j++;
213 if (
chaine.Contains(
"++"))
216 if (
chaine.Contains(
"gausn")) {
219 tmp.ReplaceAll(
"gausn",
"");
220 tmp.ReplaceAll(
"landaun",
"");
221 if ( tmp.Contains(
"gaus") )
222 Warning(
"TFormula",
"Cannot use both gaus and gausn - gaus will be treated as gausn");
223 if ( tmp.Contains(
"landau") )
224 Warning(
"TFormula",
"Cannot use both gausn and landau - landau will be treated as landaun");
227 if (
chaine.Contains(
"landaun")) {
230 tmp.ReplaceAll(
"landaun",
"");
231 tmp.ReplaceAll(
"gausn",
"");
232 if ( tmp.Contains(
"gaus") ) {
233 Warning(
"TFormula",
"Cannot use both gaus and landaun - gaus will be treated as gausn");
235 if ( tmp.Contains(
"landau") )
236 Warning(
"TFormula",
"Cannot use both landau and landaun - landau will be treated as landaun");
240 chaine.ReplaceAll(
"gausn",
"gaus");
242 chaine.ReplaceAll(
"landaun",
"landau");
261 Error(
"TFormula",
"The name \'%s\' is reserved as a TFormula variable name.\n"
262 "\tThis function will not be registered in the list of functions",
name);
267 gROOT->GetListOfFunctions()->Remove(old);
269 gROOT->GetListOfFunctions()->Add(
this);
297 formula.TFormula::Copy(*
this);
306 rhs.TFormula::Copy(*
this);
317 gROOT->GetListOfFunctions()->Remove(
this);
370 Error(
"AnalyzeFunction",
"We thought we had a function but we dont (in %s)\n",
chaine.Data());
383 for(i=0; i<args.
Length(); i++) {
390 case '(':
paran++;
break;
391 case ')':
paran--;
break;
392 case '[':
brack++;
break;
393 case ']':
brack--;
break;
397 if ((i+1)==args.
Length()) {
482 if (
prim && (!
IsA()->GetBaseClass(
"TTreeFormula"))) {
491 Error(
"Compile",
"%s requires %d arguments",
492 prim->GetName(),
prim->fNArguments);
496 if (
prim->fType==10){
499 if (
prim->fType==110){
502 if (
prim->fType==1110){
505 if (
prim->fType==-1){
716 Int_t valeur,find,
n,i,
j,k,
lchain,
nomb,
virgule,
inter,
nest;
728 Int_t modulo,
plus,
puiss10,
puiss10bis,
moins,
multi,
divi,
puiss,
et,
ou,
petit,
grand,
egal,
diff,
peteg,
grdeg,
etx,
oux,
rshift,
lshift,
tercond,
terelse;
748 for (i=1; i<=
lchain; ++i) {
756 if (
compt < 0) err = 40;
761 if (
compt > 0) err = 41;
778 for (i=1;i<=
lchain; i++) {
786 }
else if (
strchr(
"+-/[]()&|><=!*/%^\\",t) ) {
798 if (
strchr(
"+-/[]()&|><=!*/%^\\",t)!=
nullptr) {
842 if (
c==
':' &&
chaine(
ip+1)==
':') { ++
ip;
continue; }
843 if (
c==
'<') { ++
depth;
continue; }
931 }
else if (
ou != 0) {
1016 }
else if (
petit != 0) {
1033 }
else if (
grand != 0) {
1050 }
else if (
peteg != 0) {
1067 }
else if (
grdeg != 0) {
1084 }
else if (
egal != 0) {
1109 }
else if (
diff != 0) {
1134 }
else if (
plus != 0) {
1178 }
else if (
modulo != 0) {
1194 }
else if (
rshift != 0) {
1210 }
else if (
lshift != 0) {
1295 for (
j=0;
j<
chaine.Length() && err==0;
j++) {
1324 if (!
strchr(
"0123456789abcdefABCDEF",t) && (
j>1)) {
1389 }
else if ( k >= 0 ) {
1400 }
else if (
chaine(0,1) ==
"!") {
1414 }
else if (
chaine(0,4) ==
"cos(") {
1422 }
else if (
chaine(0,4) ==
"sin(") {
1430 }
else if (
chaine(0,4) ==
"tan(") {
1438 }
else if (
chaine(0,5) ==
"acos(") {
1446 }
else if (
chaine(0,5) ==
"asin(") {
1454 }
else if (
chaine(0,5) ==
"atan(") {
1462 }
else if (
chaine(0,5) ==
"cosh(") {
1470 }
else if (
chaine(0,5) ==
"sinh(") {
1478 }
else if (
chaine(0,5) ==
"tanh(") {
1486 }
else if (
chaine(0,6) ==
"acosh(") {
1494 }
else if (
chaine(0,6) ==
"asinh(") {
1502 }
else if (
chaine(0,6) ==
"atanh(") {
1510 }
else if (
chaine(0,3) ==
"sq(") {
1518 }
else if (
chaine(0,4) ==
"log(") {
1526 }
else if (
chaine(0,6) ==
"log10(") {
1534 }
else if (
chaine(0,4) ==
"exp(") {
1542 }
else if (
chaine(0,4) ==
"abs(") {
1550 }
else if (
chaine(0,5) ==
"sign(") {
1558 }
else if (
chaine(0,4) ==
"int(") {
1566 }
else if (
chaine ==
"rndm" ||
chaine(0,5) ==
"rndm(") {
1571 }
else if (
chaine(0,5) ==
"sqrt(") {
1587 if (
chaine(1,4) ==
"expo") {
1592 else if (
ctemp==
"y") {
1595 else if (
ctemp==
"z") {
1598 else if (
ctemp==
"t") {
1608 if (
chaine(2,4) ==
"expo") {
1609 if (
chaine(0,2) !=
"xy") {
1636 }
else if (
chaine(4,1) ==
"(") {
1641 if (
strchr(
"0123456789",t)==
nullptr && (
ctemp(
j,1)!=
"+" ||
j!=0)) {
1667 }
else if (
chaine==
"gaus"
1672 if (
chaine(1,4) ==
"gaus") {
1677 else if (
ctemp==
"y") {
1680 else if (
ctemp==
"z") {
1683 else if (
ctemp==
"t") {
1693 if (
chaine(2,4) ==
"gaus") {
1694 if (
chaine(0,2) !=
"xy") {
1706 if (
lchain == 4 && err==0) {
1722 }
else if (
chaine(4,1) ==
"(" && err==0) {
1727 if (
strchr(
"0123456789",t)==
nullptr && (
ctemp(
j,1)!=
"+" ||
j!=0)) {
1746 }
else if (err==0) {
1757 if (
chaine(1,6) ==
"landau") {
1762 else if (
ctemp==
"y") {
1765 else if (
ctemp==
"z") {
1768 else if (
ctemp==
"t") {
1778 if (
chaine(2,6) ==
"landau") {
1779 if (
chaine(0,2) !=
"xy") {
1791 if (
lchain == 6 && err==0) {
1807 }
else if (
chaine(6,1) ==
"(" && err==0) {
1812 if (
strchr(
"0123456789",t)==
nullptr && (
ctemp(
j,1)!=
"+" ||
j!=0)) {
1831 }
else if (err==0) {
1838 }
else if (
chaine(0,3) ==
"pol" ||
chaine(1,3) ==
"pol") {
1840 if (
chaine(1,3) ==
"pol") {
1845 else if (
ctemp==
"y") {
1848 else if (
ctemp==
"z") {
1851 else if (
ctemp==
"t") {
1864 if (
nomb == 3) err = 23;
1865 if (
nomb == 0) err = 40;
1869 if (
strchr(
"0123456789",t)==
nullptr && (
ctemp(
j,1)!=
"+" ||
j!=0)) {
1876 if (
inter < 0) err = 20;
1887 if (
n < 0 ) err = 24;
1888 if (
n >= 20) err = 25;
1907 }
else if (
chaine(0,4) ==
"pow(") {
1918 if (
nomb != 1) err = 22;
1931 }
else if (
chaine(0,7) ==
"strstr(") {
1947 if (
nomb != 1) err = 28;
1965 }
else if (
chaine(0,4) ==
"min(") {
1992 }
else if (
chaine(0,4) ==
"max(") {
2020 }
else if (
chaine(0,6) ==
"atan2(") {
2031 if (
nomb != 1) err = 21;
2044 }
else if (
chaine(0,5) ==
"fmod(") {
2085 if (
strchr(
"0123456789",t)==
nullptr && (
ctemp(
j,1)!=
"+" ||
j!=0)) {
2098 }
else if (
chaine ==
"pi") {
2127 case 2 :
er =
" Invalid Floating Point Operation";
break;
2128 case 4 :
er =
" Empty String";
break;
2130 case 6 :
er =
" Too many operators !";
break;
2131 case 7 :
er =
" Too many parameters !";
break;
2132 case 10 :
er =
" z specified but not x and y";
break;
2133 case 11 :
er =
" z and y specified but not x";
break;
2134 case 12 :
er =
" y specified but not x";
break;
2135 case 13 :
er =
" z and x specified but not y";
break;
2136 case 20 :
er =
" Non integer value for parameter number : " +
chaine_error;
break;
2137 case 21 :
er =
" ATAN2 requires two arguments";
break;
2138 case 22 :
er =
" POW requires two arguments";
break;
2139 case 23 :
er =
" Degree of polynomial not specified";
break;
2140 case 24 :
er =
" Degree of polynomial must be positive";
break;
2141 case 25 :
er =
" Degree of polynomial must be less than 20";
break;
2143 case 27 :
er =
" Too many constants in expression";
break;
2144 case 28 :
er =
" strstr requires two arguments";
break;
2145 case 29 :
er =
" TFormula can only call interpreted and compiled functions that return a numerical type: " +
chaine_error;
break;
2146 case 30 :
er =
" Bad numerical expression : " +
chaine_error;
break;
2147 case 31 :
er =
" Part of the Variable " +
chaine_error;
er +=
" exists but some of it is not accessible or useable";
break;
2148 case 40 :
er =
" '(' is expected";
break;
2149 case 41 :
er =
" ')' is expected";
break;
2150 case 42 :
er =
" '[' is expected";
break;
2151 case 43 :
er =
" ']' is expected";
break;
2152 case 44 :
er =
" The function '" +
chaine(0,
err_hint) +
"' requires two arguments.";
break;
2153 case 45 :
er =
"The operator " +
chaine_error +
" requires a numerical operand.";
break;
2154 case 46 :
er =
"Both operands of the operator " +
chaine_error +
" have to be either numbers or strings.";
break;
2155 case 47 :
er =
chaine_error +
" requires 2 string arguments";
break;
2157 Error(
"Compile",
"%s",
er.Data());
2170 Error(
"Compile",
"\"%s\" requires a numerical operand.",
fExpr[
oper].Data());
2190 Error(
"Compile",
"\"%s\" requires two numerical operands.",
fExpr[
oper].Data());
2303 if (
chaine.Contains(
";")) {
2327 for (i=0; i<
gMAXOP; i++) {
2336 for (i=1; i<=
chaine.Length(); i++) {
2340 if (
chaine(i-1,2) ==
"**") {
2343 }
else if (
chaine(i-1,2) ==
"++") {
2346 }
else if (
chaine(i-1,2) ==
"+-" ||
chaine(i-1,2) ==
"-+") {
2349 }
else if (
chaine(i-1,2) ==
"--") {
2352 }
else if (
chaine(i-1,2) ==
"->") {
2355 }
else if (
chaine(i-1,1) ==
"[") {
2363 }
else if (
chaine(i-1,1) ==
" ") {
2412 for (i=0;i<
fNpar;i++)
2447 if (err) {
fNdim = 0;
return 1; }
2451 if (!
IsA()->GetBaseClass(
"TTreeFormula")) {
2474 ((
TFormula&)obj).fParams =
nullptr;
2499 while ( (
fobj = next()) ) {
2627 }
else if (
chaine ==
"y") {
2630 }
else if (
chaine ==
"z") {
2633 }
else if (
chaine ==
"t") {
2640 if (
chaine.Data()[0]==
'x'){
2642 const char ch0 =
'0';
2644 if (dim<0)
return -1;
2645 if (dim>9)
return -1;
2650 const char ch0 =
'0';
2652 if (dim<0)
return -1;
2653 if (dim>99)
return -1;
2707 for (i=0; i<
fNoper; ++i) {
2719 case kAdd : pos--;
tab[pos-1] +=
tab[pos];
continue;
2723 else tab[pos-1] /=
tab[pos];
2757 case kfmod : pos--;
tab[pos-1] = fmod(
tab[pos-1],
tab[pos]);
continue;
2759 case ksq :
tab[pos-1] =
tab[pos-1]*
tab[pos-1];
continue;
2771 else {
tab[pos-1] = 0;}
2774 if (
dexp < -700) {
tab[pos-1] = 0;
continue;}
2778 else {
tab[pos-1] = 0;}
2784 case ksign :
if (
tab[pos-1] < 0)
tab[pos-1] = -1;
else tab[pos-1] = 1;
continue;
2791 case kAnd : pos--;
if (
tab[pos-1]!=0 &&
tab[pos]!=0)
tab[pos-1]=1;
2794 case kOr : pos--;
if (
tab[pos-1]!=0 ||
tab[pos]!=0)
tab[pos-1]=1;
2816 case kNot :
if (
tab[pos-1]!=0)
tab[pos-1] = 0;
else tab[pos-1] = 1;
2841 int op = param % 10;
2843 if (
op == 1 && (!
tab[pos-1]) ) {
2852 }
else if (
op == 2 &&
tab[pos-1] ) {
2874 #define R__EXPO(var) \
2876 pos++; int param = (oper & kTFOperMask); \
2877 tab[pos-1] = TMath::Exp(params[param]+params[param+1]*x[var]); \
2885 tab[pos-1] =
TMath::Exp(params[param]+params[param+1]*
x[0]+params[param+2]*
x[1]);
2888 #define R__GAUS(var) \
2890 pos++; int param = (oper & kTFOperMask); \
2891 tab[pos-1] = params[param]*TMath::Gaus(x[var],params[param+1],params[param+2],IsNormalized()); \
2901 if (params[param+2] == 0) {
2907 if (params[param+4] == 0) {
2915 #define R__LANDAU(var) \
2917 pos++; const int param = (oper & kTFOperMask); \
2918 tab[pos-1] = params[param]*TMath::Landau(x[var],params[param+1],params[param+2],IsNormalized()); \
2932 #define R__POLY(var) \
2934 pos++; int param = (oper & kTFOperMask); \
2935 tab[pos-1] = 0; Double_t intermede = 1; \
2936 Int_t inter = param/100; \
2937 Int_t int1= param-inter*100-1; \
2938 for (j=0 ;j<inter+1;j++) { \
2939 tab[pos-1] += intermede*params[j+int1]; \
2940 intermede *= x[var]; \
2965 pos++;
tab[pos-1] = 0;
2973 int fno = param / 1000;
2974 int nargs = param % 1000;
3133 int nargs = param % 1000;
3156 Error(
"GetExpFormula",
"Internal error, number of argument found is %d",-
offset);
3157 }
else if (
offset == 0) {
3199 ret.ReplaceAll(
"--",
"+");
3200 ret.ReplaceAll(
"+-",
"-");
3248 if (
fNames[ipar].Length() > 0)
return (
const char*)
fNames[ipar];
3249 return Form(
"p%d",ipar);
3282 Printf(
" fExpr[%d] = %s action = %d action param = %d ",
3288 Printf(
"Optimized expression");
3290 Printf(
" fExpr[%d] = %s\t\t action = %d action param = %d ",
3297 for (i=0;i<
fNpar;i++) {
3315 formula.
Insert(0,
"[0]*(");
3359 Error(
"TFormula",
"f_linear not allocated");
3364 gROOT->GetListOfFunctions()->Remove(
f);
3462 if (
b.IsReading()) {
3466 Error(
"Streamer",
"version 6 is not supported");
3481 if (
b.IsReading()) {
3485 Error(
"Streamer",
"version 6 is not supported");
3506 gROOT->GetListOfFunctions()->Add(
this);
3519 Error(
"Streamer",
"error compiling formula");
3554 if (
gROOT->GetListOfFunctions()->FindObject(
GetName()))
return;
3555 gROOT->GetListOfFunctions()->Add(
this);
3601 for (
int z=i; z<
fNoper; ++z) {
3605 }
else if (
action < 100 ) {
3658 }
else if (
action >= 4600) {
3749 cbase.ReplaceAll(
"Double_t ",
"");
3767 if (
prim->fType==10) {
3770 if (
prim->fType==110) {
3773 if (
prim->fType==1110) {
3776 if (
prim->fType==-1) {
3779 if (
prim->fType==0){
3835 for (i=0; i<
fNoper; i++) {
3929 if ((i+1) >=
fNoper)
continue;
3956 if ((i+2) >=
fNoper)
continue;
3993 if ((i+3) >=
fNoper)
continue;
4225 case kAdd : pos--;
tab[pos-1] +=
tab[pos];
continue;
4229 else tab[pos-1] /=
tab[pos];
4259 case kabs :
if (
tab[pos-1]<0)
tab[pos-1]=-
tab[pos-1];
continue;
4260 case ksign :
if (
tab[pos-1] < 0)
tab[pos-1] = -1;
else tab[pos-1] = 1;
continue;
4272 case kfmod : pos--;
tab[pos-1] = fmod(
tab[pos-1],
tab[pos]);
continue;
4292 case kNot :
if (
tab[pos-1]!=0)
tab[pos-1] = 0;
else tab[pos-1] = 1;
4316 int op = param % 10;
4318 if (
op == 1 && (!
tab[pos-1]) ) {
4327 }
else if (
op == 2 &&
tab[pos-1] ) {
4344#define R__EXPO(var) \
4346 pos++; int param = (oper & kTFOperMask); \
4347 tab[pos-1] = TMath::Exp(params[param]+params[param+1]*x[var]); \
4355 tab[pos-1] =
TMath::Exp(params[param]+params[param+1]*
x[0]+params[param+2]*
x[1]);
4360#define R__GAUS(var) \
4362 pos++; int param = (oper & kTFOperMask); \
4363 tab[pos-1] = params[param]*TMath::Gaus(x[var],params[param+1], \
4364 params[param+2],IsNormalized()); \
4374 if (params[param+2] == 0) {
4380 if (params[param+4] == 0) {
4388#define R__LANDAU(var) \
4390 pos++; const int param = (oper & kTFOperMask); \
4391 tab[pos-1] = params[param]*TMath::Landau(x[var],params[param+1],params[param+2],IsNormalized()); \
4405#define R__POLY(var) \
4407 pos++; int param = (oper & kTFOperMask); \
4408 tab[pos-1] = 0; Double_t intermede = 1; \
4409 Int_t inter = param/100; \
4410 Int_t int1= param-inter*100-1; \
4411 for (j=0 ;j<inter+1;j++) { \
4412 tab[pos-1] += intermede*params[j+int1]; \
4413 intermede *= x[var]; \
4438 pos++;
tab[pos-1] = 0;
4446 int fno = param / 1000;
4447 int nargs = param % 1000;
4484 if (str.Length()<3)
return 1;
4485 if (str[str.Length()-1]!=
'+'&&str[str.Length()-2]!=
'+')
return 1;
4486 str[str.Length()-2]=0;
4495 if (
hf ==
nullptr) {
4496 Error(
"PreCompile",
"Unable to open the file %s for writing.",fileName.
Data());
4499 fprintf(
hf,
"/////////////////////////////////////////////////////////////////////////\n");
4500 fprintf(
hf,
"// This code has been automatically generated \n");
4503 fprintf(
hf,
"return (%s);\n}",str.Data());
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.
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
tbb::task_arena is an alias of tbb::interface7::task_arena, which doesn't allow to forward declare tb...
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.