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;
841 Error(
"TTreeFormula",
842 "Length of leafname (%d) exceeds maximum allowed by the buffer (%d), formula will be truncated.",
854 if (
leaf->GetBranch()!=
leaf->GetBranch()->GetMother()) {
932 cl =
element->GetClassPointer();
937 cl =
info->GetClass();
944 if (cl &&
branchEl->GetBranchCount()) {
950 "Missing TStreamerElement in object in TClonesArray section");
983 }
else if (
branchEl->GetType()==41) {
988 Warning(
"DefinedVariable",
"Missing TStreamerElement in object in Collection section");
994 if ( count->
GetID() >= 0 ) {
1035 }
else if (
branchEl->GetType()==3) {
1108 &&
elemCl->GetCollectionProxy()->GetValueClass()
1109 &&
elemCl->GetCollectionProxy()->GetValueClass()->GetCollectionProxy()) {
1122 elemCl->GetCollectionProxy()->GetValueClass(),
1128 cl =
elemCl->GetCollectionProxy()->GetValueClass();
1142 &&
elemCl->GetCollectionProxy()->GetValueClass()==
nullptr
1143 &&
elemCl->GetCollectionProxy()->GetType()>0) {
1170 }
else if (!
element->IsaPointer()) {
1196 Error(
"DefinedVariable",
"Failed to access class type of reference target (%s)",
element->GetName());
1204 Error(
"ParseWithLeaf",
"Found a numerical leaf but the name has trailing characters: \"%s\"",
subExpression);
1267 if ( !
casted->InheritsFrom(cl) ) {
1268 Error(
"DefinedVariable",
"%s does not inherit from %s. Casting not possible!",
1294 for (i=0, current = &(
work[0]); i<=
nchname;i++ ) {
1296 if (right[i] ==
'(') {
1299 *current++ = right[i++];
1300 }
while(right[i]!=
')' && right[i]);
1301 *current++ = right[i];
1305 *params = 0; params++;
1306 }
else params = (
char *)
")";
1308 Error(
"DefinedVariable",
"Can not call '%s' with a class",
work);
1312 Error(
"DefinedVariable",
"Class probably unavailable:%s",cl->
GetName());
1326 || !
leaf->IsOnTerminalBranch());
1357 || !
leaf->IsOnTerminalBranch());
1380 Warning(
"DefinedVariable",
"Can not call method on content of %s in %s\n",
1387 Error(
"DefinedVariable",
1388 "Could not discover the TClass corresponding to (%s)!",
1399 || !
leaf->IsOnTerminalBranch());
1408 Error(
"DefinedVariable",
1409 "Can not call method %s on class without dictionary (%s)!",
1416 if (!
method->GetMethod()) {
1417 Error(
"DefinedVariable",
"Unknown method:%s in %s",right,cl->
GetName());
1420 switch(
method->ReturnType()) {
1442 Error(
"DefineVariable",
"Method %s from %s has an impossible return type %d",
1457 current = &(
work[0]);
1465 Warning(
"DefinedVariable",
"TTreeFormula support only 2 level of variables size collections. Assuming '@' notation for the collection %s.",
1490 }
else if (right[i] ==
')') {
1508 current = &(
work[0]);
1515 }
else if (i > 0 && (right[i] ==
'.' || right[i] ==
'[' || right[i] ==
'\0') ) {
1597 if (
clbranch->GetListOfBranches()->GetLast()>=0) {
1599 Error(
"DefinedVariable",
"Unimplemented usage of ClonesArray");
1610 "TClonesArray object was not retrievable for %s!",
1665 Error(
"DefinedVariable",
"Could you not find the inner class for %s with coll type = %d",
1669 Warning(
"DefinedVariable",
"No data member in content of %s in %s\n",
1677 if (
leaf)
leaf->GetBranch()->Print();
1678 Warning(
"DefinedVariable",
"Missing class for %s!",
name.Data());
1722 }
else if (
curelem->GetClassPointer() &&
curelem->GetClassPointer()->GetCollectionProxy()) {
1728 curelem->GetClassPointer()->GetCollectionProxy()->GetValueClass();
1734 Warning(
"DefinedVariable",
"TTreeFormula support only 2 level of variables size collections. Assuming '@' notation for the collection %s.",
1784 bool object =
false;
1785 bool pointer =
false;
1817 Error(
"DefinedVariable",
1818 "%s is a datamember of %s BUT is not yet of a supported type (%d)",
1823 Error(
"DefinedVariable",
1824 "%s is a datamember of %s BUT is not of a unknown type (%d)",
1831 ||
element->GetClassPointer()->GetCollectionProxy() ) )
1849 &&
element->GetClassPointer()->GetCollectionProxy()) {
1853 Warning(
"DefinedVariable",
"TTreeFormula support only 2 level of variables size collections. Assuming '@' notation for the collection %s.",
1873 if (
element->GetClassPointer()->GetCollectionProxy()->GetValueClass()==
nullptr) {
1875 element->GetClassPointer()->GetCollectionProxy());
1886 if (
valueCl!=
nullptr &&
valueCl->GetCollectionProxy()!=
nullptr) {
1903 if (
elemCl->GetCollectionProxy() &&
1904 elemCl->GetCollectionProxy()->GetValueClass()==
nullptr) {
1926 }
else if (pointer) {
1938 if (cl)
Error(
"DefinedVariable",
"%s is not a datamember of %s",
work,cl->
GetName());
1955 if ( right[i] !=
'\0' ) {
1962 if (
inf->IsReference() ) {
1971 cl =
refInfo->GetValueClass(ptr);
1973 Error(
"DefinedVariable",
"Failed to access class type of reference target (%s)",
element->GetName());
1979 Error(
"DefinedVariable",
"Failed to access class type of reference target (%s)",
element->GetName());
1984 cl =
element->GetClassPointer();
1988 current = &(
work[0]);
2001 *current++ = right[i];
2022 if (!last)
return action;
2050 if (!last)
return action;
2198 const char *
cname = expression;
2199 char first[
kMaxLen]; first[0] =
'\0';
2200 char second[
kMaxLen*2]; second[0] =
'\0';
2201 char right[
kMaxLen*2]; right[0] =
'\0';
2203 char left[
kMaxLen]; left[0] =
'\0';
2216 for (i=0, current = &(
work[0]); i<=
nchname && !
final;i++ ) {
2218 *current++ =
cname[i];
2220 if (
cname[i] ==
'(') {
2223 if (current==
work+1) {
2238 if (
cname[i] ==
')') {
2255 current = &(
work[0]);
2261 current = &(
work[0]);
2264 "Casting to primary types like \"%s\" is not supported yet",
cast_name.Data());
2273 *params = 0; params++;
2305 Error(
"DefinedVariable",
2306 "The substitution of the branch alias \"%s\" by \"%s\" in \"%s\" failed\n"\
2307 "\tbecause \"%s\" is used [recursively] in its own definition!",
2317 Error(
"DefinedVariable",
2318 "The substitution of the alias \"%s\" by \"%s\" failed.",left,
aliasValue);
2344 current = &(
work[0]);
2432 current = &(
work[0]);
2440 if (
leaf==
nullptr) {
2451 current = &(
work[0]);
2463 current = &(
work[0]);
2474 if (
leaf &&
leaf->IsOnTerminalBranch()) {
2480 current = &(
work[0]);
2489 if (
leaf->IsOnTerminalBranch()) {
2497 current = &(
work[0]);
2500 }
else if (
cname[i] ==
'.') {
2512 current = &(
work[0]);
2519 Error(
"DefinedVariable",
"Unexpected control flow!");
2579 current = &(
work[0]);
2618 if (!
leaf)
return -1;
2620 final =
leaf->IsOnTerminalBranch();
2627 if (
leaf==
nullptr && left[0]!=0) {
2638 Error(
"DefinedVariable",
2639 "The substitution of the branch alias \"%s\" by \"%s\" in \"%s\" failed\n"\
2640 "\tbecause \"%s\" is used [recursively] in its own definition!",
2650 Error(
"DefinedVariable",
2651 "The substitution of the alias \"%s\" by \"%s\" failed.",left,
aliasValue);
2702 if (!
fTree)
return -1;
2706 Error(
"TTreeFormula",
"The length of the variable name (%d) exceeds the maximum allowed (%d)",
name.Length(),
kMaxLen);
2711 if (
name ==
"Entry$") {
2717 if (
name ==
"LocalEntry$") {
2723 if (
name ==
"Entries$") {
2731 if (
name ==
"LocalEntries$") {
2739 if (
name ==
"Iteration$") {
2745 if (
name ==
"Length$") {
2751 static const char *
lenfunc =
"Length$(";
2764 static const char *
minfunc =
"Min$(";
2777 static const char *
maxfunc =
"Max$(";
2790 static const char *
sumfunc =
"Sum$(";
2810 if (res<0)
return res;
2827 for(i=0,k=0; i<
cnamelen; ++i, ++k) {
2828 if (
cname[i] ==
'[') {
2854 if (res<0)
return res;
2856 if (!
leaf && res!=2) {
2865 Error(
"DefinedVariable",
2866 "The substitution of the alias \"%s\" by \"%s\" failed\n"\
2867 "\tbecause \"%s\" is recursively used in its own definition!",
2890 Error(
"DefinedVariable",
2891 "The substitution of the alias \"%s\" by \"%s\" failed.",
cname,
aliasValue);
2914 Error(
"Compile",
" Bad numerical expression : \"%s\"",
thisAlias.Data());
2916 Error(
"Compile",
" Part of the Variable \"%s\" exists but some of it is not accessible or useable",
thisAlias.Data());
2919 Error(
"DefinedVariable",
2920 "The substitution of the alias \"%s\" by \"%s\" failed.",
cname,
aliasValue);
2929 if (
leaf || res==2) {
2932 Error(
"DefinedVariable",
"the branch \"%s\" has to be enabled to be used",
leaf->GetBranch()->GetName());
2941 char *current = &(
dims[0] );
2948 if (current[0] ==
']') {
2957 char *end = (
char*)(
varindex.Data());
2979 current = (
char*)
strstr( current,
"[" );
2987 if (res<0)
return res;
2995 if (
gcut->GetObjectX()) {
2997 gcut->SetObjectX(
nullptr);
2999 if (
gcut->GetObjectY()) {
3001 gcut->SetObjectY(
nullptr);
3012 gcut->SetObjectY(fy);
3026 if (
x[
i2] < min) min =
x[
i2];
3027 if (
x[
i2] > max) max =
x[
i2];
3032 formula +=
gcut->GetVarX();
3034 formula +=
gcut->GetVarX();
3046 Error(
"DefinedVariable",
"Found a TCutG without leaf information (%s)",
3090 leafcur->GetBranch()->GetListOfBranches()->Last()==
nullptr) {
3092 cl =
lobj->GetClass();
3095 if (
lElem->IsOnTerminalBranch()) {
3213 else if (
curelem->GetClassPointer() &&
curelem->GetClassPointer()->GetCollectionProxy()) {
3218 sub_cl =
sub_cl->GetCollectionProxy()->GetValueClass();
3261 cl =
lobj->GetClass();
3267 }
else if (
type > 60) {
3273 cl =
element->GetClassPointer();
3301 if (
bc ==
bc->GetMother()) {
3326 Error(
"BranchHasMethod",
"A TClonesArray was stored in a branch type no yet support (i.e. neither TBranchObject nor TBranchElement): %s",
branch->IsA()->GetName());
3399 Error(
"EvalInstance",
"Index %s is out of bound (%d) in formula %s",
3432 Error(
"EvalInstance",
"Index %s is out of bound (%d) in formula %s",
3522 for (
Int_t dim = 1; dim < max_dim; dim++) {
3542 Error(
"EvalInstance",
"Index %s is out of bound (%d/%d) in formula %s",
3575 Error(
"EvalInstance",
"Index %s is of out bound (%d/%d) in formula %s",
3622 if (
info==
nullptr || !
info->IsCompiled()) {
3627 if (
elem==
nullptr) {
3631 return elem->GetClass();
3642 if (!obj)
return nullptr;
3646 default:
return nullptr;
3683 leaf->GetBranch()->GetTree()->GetReadEntry(),
3693 Warning(
"EvalObject",
"Not yet implement for kDirect and arrays (for %s).\nPlease contact the developers",
GetName());
3695 return leaf->GetValuePointer();
3700 default:
return nullptr;
3729 return (
char*)
leaf->GetValuePointer();
3740#define TT_EVAL_INIT \
3741 TLeaf *leaf = (TLeaf*)fLeaves.UncheckedAt(0); \
3743 const Int_t real_instance = GetRealInstance(instance,0); \
3745 if (instance==0) fNeedLoading = true; \
3746 if (real_instance>=fNdata[0]) return 0; \
3752 if (fNeedLoading) { \
3753 fNeedLoading = false; \
3754 TBranch *br = leaf->GetBranch(); \
3755 if (br && br->GetTree()) { \
3756 Long64_t tentry = br->GetTree()->GetReadEntry(); \
3757 R__LoadBranch(br,tentry,fQuickLoad); \
3759 Error("TTreeFormula::TT_EVAL_INIT", \
3760 "Could not init branch associated to this leaf (%s).", leaf->GetName()); \
3768 if (fLookupType[0]==kDirect) { \
3769 label = (char*)leaf->GetValuePointer(); \
3771 label = (char*)GetLeafInfo(0)->GetValuePointer(leaf,instance); \
3773 Int_t bin = fAxis->FindBin(label); \
3777#define TREE_EVAL_INIT \
3778 const Int_t real_instance = GetRealInstance(instance,0); \
3780 if (real_instance>=fNdata[0]) return 0; \
3786 label = (char*)GetLeafInfo(0)->GetValuePointer((TLeaf*)0x0,instance); \
3787 Int_t bin = fAxis->FindBin(label); \
3791#define TT_EVAL_INIT_LOOP \
3792 TLeaf *leaf = (TLeaf*)fLeaves.UncheckedAt(code); \
3795 const Int_t real_instance = GetRealInstance(instance,code); \
3798 TBranch *branch = (TBranch*)fBranches.UncheckedAt(code); \
3800 if (branch->GetTree()) { \
3801 Long64_t treeEntry = branch->GetTree()->GetReadEntry(); \
3802 R__LoadBranch(branch,treeEntry,fQuickLoad); \
3804 Error("TTreeFormula::TT_EVAL_INIT_LOOP", \
3805 "Could not init branch associated to this leaf (%s).", leaf->GetName()); \
3807 } else if (fDidBooleanOptimization) { \
3808 branch = leaf->GetBranch(); \
3809 if (branch->GetTree()) { \
3810 Long64_t treeEntry = branch->GetTree()->GetReadEntry(); \
3811 if (branch->GetReadEntry() != treeEntry) branch->GetEntry( treeEntry ); \
3813 Error("TTreeFormula::TT_EVAL_INIT_LOOP", \
3814 "Could not init branch associated to this leaf (%s).", leaf->GetName()); \
3821 if (fDidBooleanOptimization) { \
3822 TBranch *br = leaf->GetBranch(); \
3823 if (br->GetTree()) { \
3824 Long64_t treeEntry = br->GetTree()->GetReadEntry(); \
3825 if (br->GetReadEntry() != treeEntry) br->GetEntry( treeEntry ); \
3827 Error("TTreeFormula::TT_EVAL_INIT_LOOP", \
3828 "Could not init branch associated to this leaf (%s).", leaf->GetName()); \
3832 if (real_instance>=fNdata[code]) return 0;
3834#define TREE_EVAL_INIT_LOOP \
3836 const Int_t real_instance = GetRealInstance(instance,code); \
3838 if (real_instance>=fNdata[code]) return 0;
3844 for (
int i=0; i<
len; ++i) res +=
sum->EvalInstance<T>(i);
3852 res =
arr->EvalInstance<T>(0);
3853 for (
int i=1; i<
len; ++i) {
3854 T val =
arr->EvalInstance<T>(i);
3867 res =
arr->EvalInstance<T>(0);
3868 for (
int i=1; i<
len; ++i) {
3869 T val =
arr->EvalInstance(i);
3893 arr->EvalInstance<T>(0);
3896 res =
arr->EvalInstance<T>(i-1);
3897 for (; i<
len; ++i) {
3900 T val =
arr->EvalInstance<T>(i);
3925 arr->EvalInstance<T>(0);
3928 res =
arr->EvalInstance<T>(i-1);
3929 for (; i<
len; ++i) {
3932 T val =
arr->EvalInstance<T>(i);
4074 case kAdd : pos--;
tab[pos-1] +=
tab[pos];
continue;
4078 else tab[pos-1] /=
tab[pos];
4114 case ksq :
tab[pos-1] =
tab[pos-1]*
tab[pos-1];
continue;
4121 case kmin : pos--;
tab[pos-1] = std::min(
tab[pos-1],
tab[pos]);
continue;
4122 case kmax : pos--;
tab[pos-1] = std::max(
tab[pos-1],
tab[pos]);
continue;
4125 else {
tab[pos-1] = 0;}
4128 if (
dexp < -700) {
tab[pos-1] = 0;
continue;}
4133 else {
tab[pos-1] = 0;}
4139 case ksign :
if (
tab[pos-1] < 0)
tab[pos-1] = -1;
else tab[pos-1] = 1;
4145 case kAnd : pos--;
if (
tab[pos-1]!=0 &&
tab[pos]!=0)
tab[pos-1]=1;
4148 case kOr : pos--;
if (
tab[pos-1]!=0 ||
tab[pos]!=0)
tab[pos-1]=1;
4152 case kEqual : pos--;
tab[pos-1] = (
tab[pos-1] ==
tab[pos]) ? 1 : 0;
continue;
4154 case kLess : pos--;
tab[pos-1] = (
tab[pos-1] <
tab[pos]) ? 1 : 0;
continue;
4158 case kNot :
tab[pos-1] = (
tab[pos-1] != 0) ? 0 : 1;
continue;
4202 int op = param % 10;
4204 if (
op == 1 && (!
tab[pos-1]) ) {
4213 }
else if (
op == 2 &&
tab[pos-1] ) {
4235 int fno = param / 1000;
4236 int nargs = param % 1000;
4269 switch (lookupType) {
4291 default:
tab[pos++] = 0;
continue;
4333 tab[pos] = param; pos++;
4353 tab[pos] = param; pos++;
4362 tab[pos] = param; pos++;
4378 tab[pos] = param; pos++;
4452template double TTreeFormula::EvalInstance<double> (
int,
char const**);
4453template long double TTreeFormula::EvalInstance<long double> (
int,
char const**);
4454template long long TTreeFormula::EvalInstance<long long> (
int,
char const**);
4520 Warning(
"GetValueFromMethod",
"No streamer info for branch %s.",
branch->GetName());
4524 char* address =
branch->GetObject();
4528 char* address =
branch->GetObject();
4580 Warning(
"GetValuePointerFromMethod",
"No streamer info for branch %s.",
branch->GetName());
4584 char* address =
branch->GetObject();
4588 char* address =
branch->GetObject();
4639 return subform->IsInteger(
false);
4646 if (
fNoper > 1)
return false;
4651 return subform->IsInteger(
false);
4705 if (
fAxis)
return true;
4712 return info->IsInteger();
4716 if (!
strcmp(
leaf->GetTypeName(),
"Int_t"))
return true;
4717 if (!
strcmp(
leaf->GetTypeName(),
"Short_t"))
return true;
4718 if (!
strcmp(
leaf->GetTypeName(),
"UInt_t"))
return true;
4719 if (!
strcmp(
leaf->GetTypeName(),
"UShort_t"))
return true;
4720 if (!
strcmp(
leaf->GetTypeName(),
"Bool_t"))
return true;
4721 if (!
strcmp(
leaf->GetTypeName(),
"Char_t"))
return true;
4722 if (!
strcmp(
leaf->GetTypeName(),
"UChar_t"))
return true;
4723 if (!
strcmp(
leaf->GetTypeName(),
"Long64_t"))
return true;
4724 if (!
strcmp(
leaf->GetTypeName(),
"ULong64_t"))
return true;
4725 if (!
strcmp(
leaf->GetTypeName(),
"string"))
return true;
4760 return info->IsString();
4767 if (
leaf->GetLenStatic() > 1)
return true;
4771 if (
leaf->GetLeafCount()) {
4785 if (
bid < 0)
return false;
4786 if (
br->GetInfo()==
nullptr || !
br->GetInfo()->IsCompiled()) {
4819 return info->IsString();
4855 }
else if (
mode == -1) {
4857 }
else if (
mode == 0) {
4860 const char * val =
nullptr;
4873 val = (
const char*)
leaf->GetValuePointer();
4895 char *
expo =
nullptr;
4961 char *start =
expo - off;
4994 for(
UInt_t dim=0; dim<max_dim ;++dim) {
5004 for(
Int_t k=0; k <=
n; ++k) {
5027 if (!axis) {
fAxis =
nullptr;
return;}
5052 if (
R__b.IsReading()) {
5146 if (
fx)
fx->UpdateFormulaLeaves();
5163 subform->UpdateFormulaLeaves();
5177 subform->UpdateFormulaLeaves();
5247 switch(
subform->GetMultiplicity()) {
5277 if (!
gcut)
continue;
5282 switch(
fx->GetMultiplicity()) {
5307 if (!
leaf)
continue;
5316 if (
leaf->GetLeafCount()) {
5378 for (i=0; i<
fNoper ; ++i) {
5380 if (
leaf==
nullptr)
continue;
5390 for (
Int_t dim = 0; dim < max_dim; ++dim) {
5404 if (
fCodes[i] < 0)
continue;
5433 if (
tleaf->GetReadEntry() < 0) {
5442 if (
leaf->GetLeafCount()) {
5467 if (
branch->GetAddress() ==
nullptr) {
5582 for(
int z=0; z<
size; ++z) {
5603 }
else if (
leafinfo->GetMultiplicity()==-1) {
5682 for (
int k=0; k<
fNoper; k++) {
5724 if (!
leaf)
return false;
5729 if (
br->GetType()==31) {
5742 }
else if (
br->GetType()==41) {
5747 if ( count->
GetID() >= 0 ) {
5770 }
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.
#define R__ASSERT(e)
Checks condition e and reports a fatal error if it's false.
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)