125 fDidBooleanOptimization(
false), fDimensionSetup(nullptr)
159 fDidBooleanOptimization(
false), fDimensionSetup(nullptr)
168 const std::vector<std::string>&
aliases)
170 fDidBooleanOptimization(
false), fDimensionSetup(nullptr), fAliasesUsed(
aliases)
215 Warning(
"TTreeFormula",
"Too many items in expression:%s",expression);
225 if (!
leafc)
continue;
273 Error(
"TTreeFormula",
274 "Index %d for dimension #%d in %s is too high (max is %d)",
405 const char * current;
414 if (current[0] !=
'[') current--;
430 current = (
char*)
strstr( current,
"[" );
444 return (
size==-1) ? 1 : 0;
468 if (
elem->GetArrayDim()>0) {
470 ndim =
elem->GetArrayDim();
516 }
else if (
c &&
c->GetReferenceProxy() &&
c->GetReferenceProxy()->HasCounter() ) {
519 }
else if (
elem->GetArrayDim()>0) {
521 ndim =
elem->GetArrayDim();
547 }
while (current<ndim);
592 const char *bname =
leaf->GetBranch()->GetName();
626 if (
branch->GetBranchCount2()) {
628 if (!
branch->GetBranchCount()) {
630 "Noticed an incorrect in-memory TBranchElement object (%s).\nIt has a BranchCount2 but no BranchCount!\nThe result might be incorrect!",
638 "Already in kDataMember mode when handling multiple variable dimensions");
659 static const char *
altfunc =
"Alt$(";
660 static const char *
minfunc =
"MinIf$(";
661 static const char *
maxfunc =
"MaxIf$(";
666 && expression[
strlen(expression)-1]==
')' ) {
671 && expression[
strlen(expression)-1]==
')' ) {
676 && expression[
strlen(expression)-1]==
')' ) {
688 for(
unsigned int i=start;i<
strlen(expression);++i) {
689 switch (expression[i]) {
690 case '(':
paran++;
break;
691 case ')':
paran--;
break;
692 case '"': instr = instr ? 0 : 1;
break;
693 case '[':
brack++;
break;
694 case ']':
brack--;
break;
696 if (expression[i]==
',' &&
paran==0 && instr==0 &&
brack==0) {
697 part1 = full( start, i-start );
698 part2 = full( i+1, full.Length() -1 - (i+1) );
709 if (
alternate->GetManager()->GetMultiplicity() != 0 ) {
710 Error(
"DefinedVariable",
"The 2nd arguments in %s can not be an array (%s,%d)!",
712 alternate->GetManager()->GetMultiplicity());
719 Error(
"DefinedVariable",
720 "The 2nd arguments in %s has to return the same type as the 1st argument (string)!",
726 Error(
"DefinedVariable",
727 "The 2nd arguments in %s has to return the same type as the 1st argument (numerical type)!",
736 Error(
"DefinedVariable",
737 "The arguments of %s can not be strings!",
791 if (
br->GetInfo() == nullptr ) {
792 Error(
"DefinedVariable",
"Missing StreamerInfo for %s. We will be unable to read!",
803 if (
mom->GetInfo()==
nullptr) {
804 Error(
"DefinedVariable",
"Missing StreamerInfo for %s."
805 " We will be unable to read!",
809 if ((
mom->GetType()) < -1 && !
mom->GetAddress()) {
810 Error(
"DefinedVariable",
"Address not set when the type of the branch is negative for for %s. We will be unable to read!",
mom->GetName());
823 const char*
alias =
nullptr;
840 if (
leaf->GetBranch()!=
leaf->GetBranch()->GetMother()) {
918 cl =
element->GetClassPointer();
923 cl =
info->GetClass();
930 if (cl &&
branchEl->GetBranchCount()) {
936 "Missing TStreamerElement in object in TClonesArray section");
969 }
else if (
branchEl->GetType()==41) {
974 Warning(
"DefinedVariable",
"Missing TStreamerElement in object in Collection section");
980 if ( count->
GetID() >= 0 ) {
1021 }
else if (
branchEl->GetType()==3) {
1094 &&
elemCl->GetCollectionProxy()->GetValueClass()
1095 &&
elemCl->GetCollectionProxy()->GetValueClass()->GetCollectionProxy()) {
1108 elemCl->GetCollectionProxy()->GetValueClass(),
1114 cl =
elemCl->GetCollectionProxy()->GetValueClass();
1128 &&
elemCl->GetCollectionProxy()->GetValueClass()==
nullptr
1129 &&
elemCl->GetCollectionProxy()->GetType()>0) {
1156 }
else if (!
element->IsaPointer()) {
1182 Error(
"DefinedVariable",
"Failed to access class type of reference target (%s)",
element->GetName());
1190 Error(
"ParseWithLeaf",
"Found a numerical leaf but the name has trailing characters: \"%s\"",
subExpression);
1253 if ( !
casted->InheritsFrom(cl) ) {
1254 Error(
"DefinedVariable",
"%s does not inherit from %s. Casting not possible!",
1280 for (i=0, current = &(
work[0]); i<=
nchname;i++ ) {
1282 if (right[i] ==
'(') {
1285 *current++ = right[i++];
1286 }
while(right[i]!=
')' && right[i]);
1287 *current++ = right[i];
1291 *params = 0; params++;
1292 }
else params = (
char *)
")";
1294 Error(
"DefinedVariable",
"Can not call '%s' with a class",
work);
1298 Error(
"DefinedVariable",
"Class probably unavailable:%s",cl->
GetName());
1312 || !
leaf->IsOnTerminalBranch());
1343 || !
leaf->IsOnTerminalBranch());
1366 Warning(
"DefinedVariable",
"Can not call method on content of %s in %s\n",
1373 Error(
"DefinedVariable",
1374 "Could not discover the TClass corresponding to (%s)!",
1385 || !
leaf->IsOnTerminalBranch());
1394 Error(
"DefinedVariable",
1395 "Can not call method %s on class without dictionary (%s)!",
1402 if (!
method->GetMethod()) {
1403 Error(
"DefinedVariable",
"Unknown method:%s in %s",right,cl->
GetName());
1406 switch(
method->ReturnType()) {
1428 Error(
"DefineVariable",
"Method %s from %s has an impossible return type %d",
1443 current = &(
work[0]);
1451 Warning(
"DefinedVariable",
"TTreeFormula support only 2 level of variables size collections. Assuming '@' notation for the collection %s.",
1476 }
else if (right[i] ==
')') {
1494 current = &(
work[0]);
1501 }
else if (i > 0 && (right[i] ==
'.' || right[i] ==
'[' || right[i] ==
'\0') ) {
1583 if (
clbranch->GetListOfBranches()->GetLast()>=0) {
1585 Error(
"DefinedVariable",
"Unimplemented usage of ClonesArray");
1596 "TClonesArray object was not retrievable for %s!",
1651 Error(
"DefinedVariable",
"Could you not find the inner class for %s with coll type = %d",
1655 Warning(
"DefinedVariable",
"No data member in content of %s in %s\n",
1663 if (
leaf)
leaf->GetBranch()->Print();
1664 Warning(
"DefinedVariable",
"Missing class for %s!",
name.Data());
1708 }
else if (
curelem->GetClassPointer() &&
curelem->GetClassPointer()->GetCollectionProxy()) {
1714 curelem->GetClassPointer()->GetCollectionProxy()->GetValueClass();
1720 Warning(
"DefinedVariable",
"TTreeFormula support only 2 level of variables size collections. Assuming '@' notation for the collection %s.",
1770 bool object =
false;
1771 bool pointer =
false;
1803 Error(
"DefinedVariable",
1804 "%s is a datamember of %s BUT is not yet of a supported type (%d)",
1809 Error(
"DefinedVariable",
1810 "%s is a datamember of %s BUT is not of a unknown type (%d)",
1817 ||
element->GetClassPointer()->GetCollectionProxy() ) )
1835 &&
element->GetClassPointer()->GetCollectionProxy()) {
1839 Warning(
"DefinedVariable",
"TTreeFormula support only 2 level of variables size collections. Assuming '@' notation for the collection %s.",
1859 if (
element->GetClassPointer()->GetCollectionProxy()->GetValueClass()==
nullptr) {
1861 element->GetClassPointer()->GetCollectionProxy());
1872 if (
valueCl!=
nullptr &&
valueCl->GetCollectionProxy()!=
nullptr) {
1889 if (
elemCl->GetCollectionProxy() &&
1890 elemCl->GetCollectionProxy()->GetValueClass()==
nullptr) {
1912 }
else if (pointer) {
1924 if (cl)
Error(
"DefinedVariable",
"%s is not a datamember of %s",
work,cl->
GetName());
1941 if ( right[i] !=
'\0' ) {
1948 if (
inf->IsReference() ) {
1957 cl =
refInfo->GetValueClass(ptr);
1959 Error(
"DefinedVariable",
"Failed to access class type of reference target (%s)",
element->GetName());
1965 Error(
"DefinedVariable",
"Failed to access class type of reference target (%s)",
element->GetName());
1970 cl =
element->GetClassPointer();
1974 current = &(
work[0]);
1987 *current++ = right[i];
2008 if (!last)
return action;
2036 if (!last)
return action;
2184 const char *
cname = expression;
2185 char first[
kMaxLen]; first[0] =
'\0';
2186 char second[
kMaxLen*2]; second[0] =
'\0';
2187 char right[
kMaxLen*2]; right[0] =
'\0';
2189 char left[
kMaxLen]; left[0] =
'\0';
2202 for (i=0, current = &(
work[0]); i<=
nchname && !
final;i++ ) {
2204 *current++ =
cname[i];
2206 if (
cname[i] ==
'(') {
2209 if (current==
work+1) {
2224 if (
cname[i] ==
')') {
2241 current = &(
work[0]);
2247 current = &(
work[0]);
2250 "Casting to primary types like \"%s\" is not supported yet",
cast_name.Data());
2259 *params = 0; params++;
2291 Error(
"DefinedVariable",
2292 "The substitution of the branch alias \"%s\" by \"%s\" in \"%s\" failed\n"\
2293 "\tbecause \"%s\" is used [recursively] in its own definition!",
2303 Error(
"DefinedVariable",
2304 "The substitution of the alias \"%s\" by \"%s\" failed.",left,
aliasValue);
2330 current = &(
work[0]);
2418 current = &(
work[0]);
2426 if (
leaf==
nullptr) {
2437 current = &(
work[0]);
2449 current = &(
work[0]);
2460 if (
leaf &&
leaf->IsOnTerminalBranch()) {
2466 current = &(
work[0]);
2475 if (
leaf->IsOnTerminalBranch()) {
2483 current = &(
work[0]);
2486 }
else if (
cname[i] ==
'.') {
2498 current = &(
work[0]);
2505 Error(
"DefinedVariable",
"Unexpected control flow!");
2565 current = &(
work[0]);
2604 if (!
leaf)
return -1;
2606 final =
leaf->IsOnTerminalBranch();
2613 if (
leaf==
nullptr && left[0]!=0) {
2624 Error(
"DefinedVariable",
2625 "The substitution of the branch alias \"%s\" by \"%s\" in \"%s\" failed\n"\
2626 "\tbecause \"%s\" is used [recursively] in its own definition!",
2636 Error(
"DefinedVariable",
2637 "The substitution of the alias \"%s\" by \"%s\" failed.",left,
aliasValue);
2688 if (!
fTree)
return -1;
2694 if (
name ==
"Entry$") {
2700 if (
name ==
"LocalEntry$") {
2706 if (
name ==
"Entries$") {
2714 if (
name ==
"LocalEntries$") {
2722 if (
name ==
"Iteration$") {
2728 if (
name ==
"Length$") {
2734 static const char *
lenfunc =
"Length$(";
2747 static const char *
minfunc =
"Min$(";
2760 static const char *
maxfunc =
"Max$(";
2773 static const char *
sumfunc =
"Sum$(";
2793 if (res<0)
return res;
2810 for(i=0,k=0; i<
cnamelen; ++i, ++k) {
2811 if (
cname[i] ==
'[') {
2837 if (res<0)
return res;
2839 if (!
leaf && res!=2) {
2848 Error(
"DefinedVariable",
2849 "The substitution of the alias \"%s\" by \"%s\" failed\n"\
2850 "\tbecause \"%s\" is recursively used in its own definition!",
2873 Error(
"DefinedVariable",
2874 "The substitution of the alias \"%s\" by \"%s\" failed.",
cname,
aliasValue);
2897 Error(
"Compile",
" Bad numerical expression : \"%s\"",
thisAlias.Data());
2899 Error(
"Compile",
" Part of the Variable \"%s\" exists but some of it is not accessible or useable",
thisAlias.Data());
2902 Error(
"DefinedVariable",
2903 "The substitution of the alias \"%s\" by \"%s\" failed.",
cname,
aliasValue);
2912 if (
leaf || res==2) {
2915 Error(
"DefinedVariable",
"the branch \"%s\" has to be enabled to be used",
leaf->GetBranch()->GetName());
2924 char *current = &(
dims[0] );
2931 if (current[0] ==
']') {
2940 char *end = (
char*)(
varindex.Data());
2962 current = (
char*)
strstr( current,
"[" );
2970 if (res<0)
return res;
2978 if (
gcut->GetObjectX()) {
2980 gcut->SetObjectX(
nullptr);
2982 if (
gcut->GetObjectY()) {
2984 gcut->SetObjectY(
nullptr);
3009 if (
x[
i2] < min) min =
x[
i2];
3010 if (
x[
i2] > max) max =
x[
i2];
3015 formula +=
gcut->GetVarX();
3017 formula +=
gcut->GetVarX();
3029 Error(
"DefinedVariable",
"Found a TCutG without leaf information (%s)",
3073 leafcur->GetBranch()->GetListOfBranches()->Last()==
nullptr) {
3075 cl =
lobj->GetClass();
3078 if (
lElem->IsOnTerminalBranch()) {
3196 else if (
curelem->GetClassPointer() &&
curelem->GetClassPointer()->GetCollectionProxy()) {
3201 sub_cl =
sub_cl->GetCollectionProxy()->GetValueClass();
3244 cl =
lobj->GetClass();
3250 }
else if (
type > 60) {
3256 cl =
element->GetClassPointer();
3284 if (
bc ==
bc->GetMother()) {
3309 Error(
"BranchHasMethod",
"A TClonesArray was stored in a branch type no yet support (i.e. neither TBranchObject nor TBranchElement): %s",
branch->IsA()->GetName());
3382 Error(
"EvalInstance",
"Index %s is out of bound (%d) in formula %s",
3415 Error(
"EvalInstance",
"Index %s is out of bound (%d) in formula %s",
3525 Error(
"EvalInstance",
"Index %s is out of bound (%d/%d) in formula %s",
3558 Error(
"EvalInstance",
"Index %s is of out bound (%d/%d) in formula %s",
3605 if (
info==
nullptr || !
info->IsCompiled()) {
3610 if (
elem==
nullptr) {
3614 return elem->GetClass();
3625 if (!obj)
return nullptr;
3629 default:
return nullptr;
3666 leaf->GetBranch()->GetTree()->GetReadEntry(),
3676 Warning(
"EvalObject",
"Not yet implement for kDirect and arrays (for %s).\nPlease contact the developers",
GetName());
3678 return leaf->GetValuePointer();
3683 default:
return nullptr;
3712 return (
char*)
leaf->GetValuePointer();
3723#define TT_EVAL_INIT \
3724 TLeaf *leaf = (TLeaf*)fLeaves.UncheckedAt(0); \
3726 const Int_t real_instance = GetRealInstance(instance,0); \
3728 if (instance==0) fNeedLoading = true; \
3729 if (real_instance>=fNdata[0]) return 0; \
3735 if (fNeedLoading) { \
3736 fNeedLoading = false; \
3737 TBranch *br = leaf->GetBranch(); \
3738 Long64_t tentry = br->GetTree()->GetReadEntry(); \
3739 R__LoadBranch(br,tentry,fQuickLoad); \
3746 if (fLookupType[0]==kDirect) { \
3747 label = (char*)leaf->GetValuePointer(); \
3749 label = (char*)GetLeafInfo(0)->GetValuePointer(leaf,instance); \
3751 Int_t bin = fAxis->FindBin(label); \
3755#define TREE_EVAL_INIT \
3756 const Int_t real_instance = GetRealInstance(instance,0); \
3758 if (real_instance>=fNdata[0]) return 0; \
3764 label = (char*)GetLeafInfo(0)->GetValuePointer((TLeaf*)0x0,instance); \
3765 Int_t bin = fAxis->FindBin(label); \
3769#define TT_EVAL_INIT_LOOP \
3770 TLeaf *leaf = (TLeaf*)fLeaves.UncheckedAt(code); \
3773 const Int_t real_instance = GetRealInstance(instance,code); \
3776 TBranch *branch = (TBranch*)fBranches.UncheckedAt(code); \
3778 Long64_t treeEntry = branch->GetTree()->GetReadEntry(); \
3779 R__LoadBranch(branch,treeEntry,fQuickLoad); \
3780 } else if (fDidBooleanOptimization) { \
3781 branch = leaf->GetBranch(); \
3782 Long64_t treeEntry = branch->GetTree()->GetReadEntry(); \
3783 if (branch->GetReadEntry() != treeEntry) branch->GetEntry( treeEntry ); \
3789 if (fDidBooleanOptimization) { \
3790 TBranch *br = leaf->GetBranch(); \
3791 Long64_t treeEntry = br->GetTree()->GetReadEntry(); \
3792 if (br->GetReadEntry() != treeEntry) br->GetEntry( treeEntry ); \
3795 if (real_instance>=fNdata[code]) return 0;
3797#define TREE_EVAL_INIT_LOOP \
3799 const Int_t real_instance = GetRealInstance(instance,code); \
3801 if (real_instance>=fNdata[code]) return 0;
3807 for (
int i=0; i<
len; ++i) res +=
sum->EvalInstance<T>(i);
3815 res =
arr->EvalInstance<T>(0);
3816 for (
int i=1; i<
len; ++i) {
3817 T val =
arr->EvalInstance<T>(i);
3830 res =
arr->EvalInstance<T>(0);
3831 for (
int i=1; i<
len; ++i) {
3832 T val =
arr->EvalInstance(i);
3856 arr->EvalInstance<T>(0);
3859 res =
arr->EvalInstance<T>(i-1);
3860 for (; i<
len; ++i) {
3863 T val =
arr->EvalInstance<T>(i);
3888 arr->EvalInstance<T>(0);
3891 res =
arr->EvalInstance<T>(i-1);
3892 for (; i<
len; ++i) {
3895 T val =
arr->EvalInstance<T>(i);
4033 case kAdd : pos--;
tab[pos-1] +=
tab[pos];
continue;
4037 else tab[pos-1] /=
tab[pos];
4042 tab[pos-1] = T(int1 % int2);
4073 case ksq :
tab[pos-1] =
tab[pos-1]*
tab[pos-1];
continue;
4080 case kmin : pos--;
tab[pos-1] = std::min(
tab[pos-1],
tab[pos]);
continue;
4081 case kmax : pos--;
tab[pos-1] = std::max(
tab[pos-1],
tab[pos]);
continue;
4084 else {
tab[pos-1] = 0;}
4087 if (
dexp < -700) {
tab[pos-1] = 0;
continue;}
4092 else {
tab[pos-1] = 0;}
4098 case ksign :
if (
tab[pos-1] < 0)
tab[pos-1] = -1;
else tab[pos-1] = 1;
4104 case kAnd : pos--;
if (
tab[pos-1]!=0 &&
tab[pos]!=0)
tab[pos-1]=1;
4107 case kOr : pos--;
if (
tab[pos-1]!=0 ||
tab[pos]!=0)
tab[pos-1]=1;
4111 case kEqual : pos--;
tab[pos-1] = (
tab[pos-1] ==
tab[pos]) ? 1 : 0;
continue;
4113 case kLess : pos--;
tab[pos-1] = (
tab[pos-1] <
tab[pos]) ? 1 : 0;
continue;
4117 case kNot :
tab[pos-1] = (
tab[pos-1] != 0) ? 0 : 1;
continue;
4161 int op = param % 10;
4163 if (
op == 1 && (!
tab[pos-1]) ) {
4172 }
else if (
op == 2 &&
tab[pos-1] ) {
4194 int fno = param / 1000;
4195 int nargs = param % 1000;
4228 switch (lookupType) {
4250 default:
tab[pos++] = 0;
continue;
4292 tab[pos] = param; pos++;
4312 tab[pos] = param; pos++;
4321 tab[pos] = param; pos++;
4337 tab[pos] = param; pos++;
4411template double TTreeFormula::EvalInstance<double> (
int,
char const**);
4412template long double TTreeFormula::EvalInstance<long double> (
int,
char const**);
4413template long long TTreeFormula::EvalInstance<long long> (
int,
char const**);
4479 Warning(
"GetValueFromMethod",
"No streamer info for branch %s.",
branch->GetName());
4483 char* address =
branch->GetObject();
4487 char* address =
branch->GetObject();
4539 Warning(
"GetValuePointerFromMethod",
"No streamer info for branch %s.",
branch->GetName());
4543 char* address =
branch->GetObject();
4547 char* address =
branch->GetObject();
4598 return subform->IsInteger(
false);
4605 if (
fNoper > 1)
return false;
4610 return subform->IsInteger(
false);
4664 if (
fAxis)
return true;
4671 return info->IsInteger();
4675 if (!
strcmp(
leaf->GetTypeName(),
"Int_t"))
return true;
4676 if (!
strcmp(
leaf->GetTypeName(),
"Short_t"))
return true;
4677 if (!
strcmp(
leaf->GetTypeName(),
"UInt_t"))
return true;
4678 if (!
strcmp(
leaf->GetTypeName(),
"UShort_t"))
return true;
4679 if (!
strcmp(
leaf->GetTypeName(),
"Bool_t"))
return true;
4680 if (!
strcmp(
leaf->GetTypeName(),
"Char_t"))
return true;
4681 if (!
strcmp(
leaf->GetTypeName(),
"UChar_t"))
return true;
4682 if (!
strcmp(
leaf->GetTypeName(),
"Long64_t"))
return true;
4683 if (!
strcmp(
leaf->GetTypeName(),
"ULong64_t"))
return true;
4684 if (!
strcmp(
leaf->GetTypeName(),
"string"))
return true;
4719 return info->IsString();
4726 if (
leaf->GetLenStatic() > 1)
return true;
4730 if (
leaf->GetLeafCount()) {
4744 if (
bid < 0)
return false;
4745 if (
br->GetInfo()==
nullptr || !
br->GetInfo()->IsCompiled()) {
4778 return info->IsString();
4814 }
else if (
mode == -1) {
4816 }
else if (
mode == 0) {
4819 const char * val =
nullptr;
4832 val = (
const char*)
leaf->GetValuePointer();
4854 char *
expo =
nullptr;
4920 char *start =
expo - off;
4963 for(
Int_t k=0; k <=
n; ++k) {
4986 if (!axis) {
fAxis =
nullptr;
return;}
5011 if (
R__b.IsReading()) {
5105 if (
fx)
fx->UpdateFormulaLeaves();
5106 if (
fy)
fy->UpdateFormulaLeaves();
5122 subform->UpdateFormulaLeaves();
5136 subform->UpdateFormulaLeaves();
5206 switch(
subform->GetMultiplicity()) {
5236 if (!
gcut)
continue;
5241 switch(
fx->GetMultiplicity()) {
5249 switch(
fy->GetMultiplicity()) {
5266 if (!
leaf)
continue;
5275 if (
leaf->GetLeafCount()) {
5337 for (i=0; i<
fNoper ; ++i) {
5339 if (
leaf==
nullptr)
continue;
5363 if (
fCodes[i] < 0)
continue;
5392 if (
tleaf->GetReadEntry() < 0) {
5401 if (
leaf->GetLeafCount()) {
5426 if (
branch->GetAddress() ==
nullptr) {
5541 for(
int z=0; z<
size; ++z) {
5562 }
else if (
leafinfo->GetMultiplicity()==-1) {
5641 for (
int k=0; k<
fNoper; k++) {
5683 if (!
leaf)
return false;
5688 if (
br->GetType()==31) {
5701 }
else if (
br->GetType()==41) {
5706 if ( count->
GetID() >= 0 ) {
5729 }
else if (
br->GetID()<0) {
static Roo_reg_AGKInteg1D instance
size_t size(const MatrixT &matrix)
retrieve the size of a square matrix
unsigned long long ULong64_t
const Int_t kDoNotProcess
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.
winID h TVirtualViewer3D TVirtualGLPainter p
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 r
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 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 cname
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void value
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 Atom_t Int_t ULong_t ULong_t unsigned char prop_list Atom_t Atom_t Atom_t Time_t UChar_t len
Option_t Option_t TPoint TPoint const char mode
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 Atom_t Int_t ULong_t ULong_t unsigned char prop_list Atom_t Atom_t Atom_t Time_t type
R__EXTERN TRandom * gRandom
char * Form(const char *fmt,...)
Formats a string in a circular formatting buffer.
const_iterator begin() const
const_iterator end() const
void Set(Int_t n) override
Set size of this array to n ints.
const Int_t * GetArray() const
void AddAt(Int_t c, Int_t i)
Add Int_t c at position i. Check for out of bounds.
Class to manage histogram axis.
virtual Int_t FindBin(Double_t x)
Find bin number corresponding to abscissa x.
A Branch for the case of an object.
const char * GetClassName() const override
Return the name of the user class whose content is stored in this branch, if any.
TStreamerInfo * GetInfo() const
Get streamer info for the branch class.
A Branch for the case of an object.
A TTree is a list of TBranches.
Buffer base class used for serializing objects.
TClassRef is used to implement a permanent reference to a TClass object.
TClass instances represent classes, structs and namespaces in the ROOT type system.
Bool_t HasDataMemberInfo() const
ClassInfo_t * GetClassInfo() const
TVirtualStreamerInfo * GetStreamerInfo(Int_t version=0, Bool_t isTransient=kFALSE) const
returns a pointer to the TVirtualStreamerInfo object for version If the object does not exist,...
TVirtualCollectionProxy * GetCollectionProxy() const
Return the proxy describing the collection (if any).
TMethod * GetMethodAllAny(const char *method)
Return pointer to method without looking at parameters.
TVirtualRefProxy * GetReferenceProxy() 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.
An array of clone (identical) objects.
virtual Int_t GetSize() const
Return the capacity of the collection, i.e.
A small helper class to help in keeping track of the array dimensions encountered in the analysis of ...
TDimensionInfo(Int_t code, Int_t oper, Int_t size, TFormLeafInfoMultiVarDim *multiDim)
~TDimensionInfo() override
TFormLeafInfoMultiVarDim * fMultiDim
Describe directory structure in memory.
A List of entry numbers in a TTree or TChain.
virtual Int_t Contains(Long64_t entry, TTree *tree=nullptr)
A TLeaf for the general case when using the branches created via a TStreamerInfo (i....
A TLeaf for a general object derived from TObject.
A TLeaf describes individual elements of a TBranch See TBranch structure in TTree.
void Add(TObject *obj) override
void Delete(Option_t *option="") override
Remove all objects from the list AND delete all heap based objects.
Method or function calling interface.
static const EReturnType kLong
static const EReturnType kString
static const EReturnType kOther
static const EReturnType kDouble
The TNamed class is the base class for all named ROOT classes.
const char * GetName() const override
Returns name of object.
const char * GetTitle() const override
Returns title of object.
virtual void SetName(const char *name)
Set the name of the TNamed.
Int_t GetEntriesFast() const
void AddAt(TObject *obj, Int_t idx) override
Add object at position ids.
virtual void AddAtAndExpand(TObject *obj, Int_t idx)
Add object at position idx.
void Streamer(TBuffer &) override
Stream all objects in the array to or from the I/O buffer.
Int_t GetEntries() const override
Return the number of objects in array (i.e.
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
TObject * FindObject(const char *name) const override
Find an object in this collection using its name.
Int_t GetLast() const override
Return index of last object in array.
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 void Execute(const char *method, const char *params, Int_t *error=nullptr)
Execute method on this object with the given parameter string, e.g.
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.
const char * GetCountName() const
Describes a persistent version of a class.
TStreamerElement * GetElement(Int_t id) const override
const char * Data() const
A TTree represents a columnar dataset.
virtual TBranch * FindBranch(const char *name)
Return the branch that correspond to the path 'branchname', which can include the name of the tree or...
virtual TIterator * GetIteratorOnAllLeaves(bool dir=kIterForward)
Creates a new iterator that will go through all the leaves on the tree itself and its friend.
virtual Long64_t GetEntries() const
virtual TLeaf * GetLeaf(const char *branchname, const char *leafname)
Return pointer to the 1st Leaf named name in any Branch of this Tree or any branch in the list of fri...
virtual Long64_t GetReadEntry() const
virtual TObjArray * GetListOfBranches()
virtual TTree * GetTree() const
virtual Long64_t LoadTree(Long64_t entry)
Set current entry.
virtual const char * GetAlias(const char *aliasName) const
Returns the expanded value of the alias. Search in the friends if any.
virtual Int_t GetTreeNumber() const
virtual TLeaf * FindLeaf(const char *name)
Find leaf..
virtual const char * GetFriendAlias(TTree *) const
If the 'tree' is a friend, this method returns its alias name.
virtual EDataType GetType() const =0
If the value type is a fundamental data type, return its type (see enumeration EDataType).
virtual TClass * GetValueClass() const =0
If the value type is a user-defined class, return a pointer to the TClass representing the value type...
virtual Bool_t HasCounter() const =0
virtual TObjArray * GetElements() const =0
RVec< PromoteTypes< T0, T1 > > fmod(const T0 &x, const RVec< T1 > &v)
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.
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 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.
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.
static uint64_t sum(uint64_t i)