126 fDidBooleanOptimization(
false), fDimensionSetup(nullptr)
158 fDidBooleanOptimization(
false), fDimensionSetup(nullptr)
167 const std::vector<std::string>&
aliases)
169 fDidBooleanOptimization(
false), fDimensionSetup(nullptr), fAliasesUsed(
aliases)
214 Warning(
"TTreeFormula",
"Too many items in expression:%s",expression);
224 if (!
leafc)
continue;
272 Error(
"TTreeFormula",
273 "Index %d for dimension #%d in %s is too high (max is %d)",
404 const char * current;
413 if (current[0] !=
'[') current--;
429 current = (
char*)
strstr( current,
"[" );
443 return (
size==-1) ? 1 : 0;
467 if (
elem->GetArrayDim()>0) {
469 ndim =
elem->GetArrayDim();
515 }
else if (
c &&
c->GetReferenceProxy() &&
c->GetReferenceProxy()->HasCounter() ) {
518 }
else if (
elem->GetArrayDim()>0) {
520 ndim =
elem->GetArrayDim();
546 }
while (current<ndim);
591 const char *bname =
leaf->GetBranch()->GetName();
625 if (
branch->GetBranchCount2()) {
627 if (!
branch->GetBranchCount()) {
629 "Noticed an incorrect in-memory TBranchElement object (%s).\nIt has a BranchCount2 but no BranchCount!\nThe result might be incorrect!",
637 "Already in kDataMember mode when handling multiple variable dimensions");
658 static const char *
altfunc =
"Alt$(";
659 static const char *
minfunc =
"MinIf$(";
660 static const char *
maxfunc =
"MaxIf$(";
665 && expression[
strlen(expression)-1]==
')' ) {
670 && expression[
strlen(expression)-1]==
')' ) {
675 && expression[
strlen(expression)-1]==
')' ) {
687 for(
unsigned int i=start;i<
strlen(expression);++i) {
688 switch (expression[i]) {
689 case '(':
paran++;
break;
690 case ')':
paran--;
break;
691 case '"': instr = instr ? 0 : 1;
break;
692 case '[':
brack++;
break;
693 case ']':
brack--;
break;
695 if (expression[i]==
',' &&
paran==0 && instr==0 &&
brack==0) {
696 part1 = full( start, i-start );
697 part2 = full( i+1, full.Length() -1 - (i+1) );
708 if (
alternate->GetManager()->GetMultiplicity() != 0 ) {
709 Error(
"DefinedVariable",
"The 2nd arguments in %s can not be an array (%s,%d)!",
711 alternate->GetManager()->GetMultiplicity());
718 Error(
"DefinedVariable",
719 "The 2nd arguments in %s has to return the same type as the 1st argument (string)!",
725 Error(
"DefinedVariable",
726 "The 2nd arguments in %s has to return the same type as the 1st argument (numerical type)!",
735 Error(
"DefinedVariable",
736 "The arguments of %s can not be strings!",
790 if (
br->GetInfo() == nullptr ) {
791 Error(
"DefinedVariable",
"Missing StreamerInfo for %s. We will be unable to read!",
802 if (
mom->GetInfo()==
nullptr) {
803 Error(
"DefinedVariable",
"Missing StreamerInfo for %s."
804 " We will be unable to read!",
808 if ((
mom->GetType()) < -1 && !
mom->GetAddress()) {
809 Error(
"DefinedVariable",
"Address not set when the type of the branch is negative for for %s. We will be unable to read!",
mom->GetName());
822 const char*
alias =
nullptr;
840 Error(
"TTreeFormula",
841 "Length of leafname (%d) exceeds maximum allowed by the buffer (%d), formula will be truncated.",
853 if (
leaf->GetBranch()!=
leaf->GetBranch()->GetMother()) {
931 cl =
element->GetClassPointer();
936 cl =
info->GetClass();
943 if (cl &&
branchEl->GetBranchCount()) {
949 "Missing TStreamerElement in object in TClonesArray section");
982 }
else if (
branchEl->GetType()==41) {
987 Warning(
"DefinedVariable",
"Missing TStreamerElement in object in Collection section");
993 if ( count->
GetID() >= 0 ) {
1034 }
else if (
branchEl->GetType()==3) {
1107 &&
elemCl->GetCollectionProxy()->GetValueClass()
1108 &&
elemCl->GetCollectionProxy()->GetValueClass()->GetCollectionProxy()) {
1121 elemCl->GetCollectionProxy()->GetValueClass(),
1127 cl =
elemCl->GetCollectionProxy()->GetValueClass();
1141 &&
elemCl->GetCollectionProxy()->GetValueClass()==
nullptr
1142 &&
elemCl->GetCollectionProxy()->GetType()>0) {
1169 }
else if (!
element->IsaPointer()) {
1195 Error(
"DefinedVariable",
"Failed to access class type of reference target (%s)",
element->GetName());
1203 Error(
"ParseWithLeaf",
"Found a numerical leaf but the name has trailing characters: \"%s\"",
subExpression);
1266 if ( !
casted->InheritsFrom(cl) ) {
1267 Error(
"DefinedVariable",
"%s does not inherit from %s. Casting not possible!",
1293 for (i=0, current = &(
work[0]); i<=
nchname;i++ ) {
1295 if (right[i] ==
'(') {
1298 *current++ = right[i++];
1299 }
while(right[i]!=
')' && right[i]);
1300 *current++ = right[i];
1304 *params = 0; params++;
1305 }
else params = (
char *)
")";
1307 Error(
"DefinedVariable",
"Can not call '%s' with a class",
work);
1311 Error(
"DefinedVariable",
"Class probably unavailable:%s",cl->
GetName());
1325 || !
leaf->IsOnTerminalBranch());
1356 || !
leaf->IsOnTerminalBranch());
1379 Warning(
"DefinedVariable",
"Can not call method on content of %s in %s\n",
1386 Error(
"DefinedVariable",
1387 "Could not discover the TClass corresponding to (%s)!",
1398 || !
leaf->IsOnTerminalBranch());
1407 Error(
"DefinedVariable",
1408 "Can not call method %s on class without dictionary (%s)!",
1415 if (!
method->GetMethod()) {
1416 Error(
"DefinedVariable",
"Unknown method:%s in %s",right,cl->
GetName());
1419 switch(
method->ReturnType()) {
1441 Error(
"DefineVariable",
"Method %s from %s has an impossible return type %d",
1456 current = &(
work[0]);
1464 Warning(
"DefinedVariable",
"TTreeFormula support only 2 level of variables size collections. Assuming '@' notation for the collection %s.",
1489 }
else if (right[i] ==
')') {
1507 current = &(
work[0]);
1514 }
else if (i > 0 && (right[i] ==
'.' || right[i] ==
'[' || right[i] ==
'\0') ) {
1596 if (
clbranch->GetListOfBranches()->GetLast()>=0) {
1598 Error(
"DefinedVariable",
"Unimplemented usage of ClonesArray");
1609 "TClonesArray object was not retrievable for %s!",
1664 Error(
"DefinedVariable",
"Could you not find the inner class for %s with coll type = %d",
1668 Warning(
"DefinedVariable",
"No data member in content of %s in %s\n",
1676 if (
leaf)
leaf->GetBranch()->Print();
1677 Warning(
"DefinedVariable",
"Missing class for %s!",
name.Data());
1721 }
else if (
curelem->GetClassPointer() &&
curelem->GetClassPointer()->GetCollectionProxy()) {
1727 curelem->GetClassPointer()->GetCollectionProxy()->GetValueClass();
1733 Warning(
"DefinedVariable",
"TTreeFormula support only 2 level of variables size collections. Assuming '@' notation for the collection %s.",
1783 bool object =
false;
1784 bool pointer =
false;
1816 Error(
"DefinedVariable",
1817 "%s is a datamember of %s BUT is not yet of a supported type (%d)",
1822 Error(
"DefinedVariable",
1823 "%s is a datamember of %s BUT is not of a unknown type (%d)",
1830 ||
element->GetClassPointer()->GetCollectionProxy() ) )
1848 &&
element->GetClassPointer()->GetCollectionProxy()) {
1852 Warning(
"DefinedVariable",
"TTreeFormula support only 2 level of variables size collections. Assuming '@' notation for the collection %s.",
1872 if (
element->GetClassPointer()->GetCollectionProxy()->GetValueClass()==
nullptr) {
1874 element->GetClassPointer()->GetCollectionProxy());
1885 if (
valueCl!=
nullptr &&
valueCl->GetCollectionProxy()!=
nullptr) {
1902 if (
elemCl->GetCollectionProxy() &&
1903 elemCl->GetCollectionProxy()->GetValueClass()==
nullptr) {
1925 }
else if (pointer) {
1937 if (cl)
Error(
"DefinedVariable",
"%s is not a datamember of %s",
work,cl->
GetName());
1954 if ( right[i] !=
'\0' ) {
1961 if (
inf->IsReference() ) {
1970 cl =
refInfo->GetValueClass(ptr);
1972 Error(
"DefinedVariable",
"Failed to access class type of reference target (%s)",
element->GetName());
1978 Error(
"DefinedVariable",
"Failed to access class type of reference target (%s)",
element->GetName());
1983 cl =
element->GetClassPointer();
1987 current = &(
work[0]);
2000 *current++ = right[i];
2021 if (!last)
return action;
2049 if (!last)
return action;
2197 const char *
cname = expression;
2198 char first[
kMaxLen]; first[0] =
'\0';
2199 char second[
kMaxLen*2]; second[0] =
'\0';
2200 char right[
kMaxLen*2]; right[0] =
'\0';
2202 char left[
kMaxLen]; left[0] =
'\0';
2215 for (i=0, current = &(
work[0]); i<=
nchname && !
final;i++ ) {
2217 *current++ =
cname[i];
2219 if (
cname[i] ==
'(') {
2222 if (current==
work+1) {
2237 if (
cname[i] ==
')') {
2254 current = &(
work[0]);
2260 current = &(
work[0]);
2263 "Casting to primary types like \"%s\" is not supported yet",
cast_name.Data());
2272 *params = 0; params++;
2304 Error(
"DefinedVariable",
2305 "The substitution of the branch alias \"%s\" by \"%s\" in \"%s\" failed\n"\
2306 "\tbecause \"%s\" is used [recursively] in its own definition!",
2316 Error(
"DefinedVariable",
2317 "The substitution of the alias \"%s\" by \"%s\" failed.",left,
aliasValue);
2343 current = &(
work[0]);
2431 current = &(
work[0]);
2439 if (
leaf==
nullptr) {
2450 current = &(
work[0]);
2462 current = &(
work[0]);
2473 if (
leaf &&
leaf->IsOnTerminalBranch()) {
2479 current = &(
work[0]);
2488 if (
leaf->IsOnTerminalBranch()) {
2496 current = &(
work[0]);
2499 }
else if (
cname[i] ==
'.') {
2511 current = &(
work[0]);
2518 Error(
"DefinedVariable",
"Unexpected control flow!");
2578 current = &(
work[0]);
2617 if (!
leaf)
return -1;
2619 final =
leaf->IsOnTerminalBranch();
2626 if (
leaf==
nullptr && left[0]!=0) {
2637 Error(
"DefinedVariable",
2638 "The substitution of the branch alias \"%s\" by \"%s\" in \"%s\" failed\n"\
2639 "\tbecause \"%s\" is used [recursively] in its own definition!",
2649 Error(
"DefinedVariable",
2650 "The substitution of the alias \"%s\" by \"%s\" failed.",left,
aliasValue);
2701 if (!
fTree)
return -1;
2705 Error(
"TTreeFormula",
"The length of the variable name (%d) exceeds the maximum allowed (%d)",
name.Length(),
kMaxLen);
2710 if (
name ==
"Entry$") {
2716 if (
name ==
"LocalEntry$") {
2722 if (
name ==
"Entries$") {
2730 if (
name ==
"LocalEntries$") {
2738 if (
name ==
"Iteration$") {
2744 if (
name ==
"Length$") {
2750 static const char *
lenfunc =
"Length$(";
2763 static const char *
minfunc =
"Min$(";
2776 static const char *
maxfunc =
"Max$(";
2789 static const char *
sumfunc =
"Sum$(";
2809 if (res<0)
return res;
2826 for(i=0,k=0; i<
cnamelen; ++i, ++k) {
2827 if (
cname[i] ==
'[') {
2853 if (res<0)
return res;
2855 if (!
leaf && res!=2) {
2864 Error(
"DefinedVariable",
2865 "The substitution of the alias \"%s\" by \"%s\" failed\n"\
2866 "\tbecause \"%s\" is recursively used in its own definition!",
2889 Error(
"DefinedVariable",
2890 "The substitution of the alias \"%s\" by \"%s\" failed.",
cname,
aliasValue);
2913 Error(
"Compile",
" Bad numerical expression : \"%s\"",
thisAlias.Data());
2915 Error(
"Compile",
" Part of the Variable \"%s\" exists but some of it is not accessible or useable",
thisAlias.Data());
2918 Error(
"DefinedVariable",
2919 "The substitution of the alias \"%s\" by \"%s\" failed.",
cname,
aliasValue);
2928 if (
leaf || res==2) {
2931 Error(
"DefinedVariable",
"the branch \"%s\" has to be enabled to be used",
leaf->GetBranch()->GetName());
2940 char *current = &(
dims[0] );
2947 if (current[0] ==
']') {
2956 char *end = (
char*)(
varindex.Data());
2978 current = (
char*)
strstr( current,
"[" );
2986 if (res<0)
return res;
2994 if (
gcut->GetObjectX()) {
2996 gcut->SetObjectX(
nullptr);
2998 if (
gcut->GetObjectY()) {
3000 gcut->SetObjectY(
nullptr);
3025 if (
x[
i2] < min) min =
x[
i2];
3026 if (
x[
i2] > max) max =
x[
i2];
3031 formula +=
gcut->GetVarX();
3033 formula +=
gcut->GetVarX();
3045 Error(
"DefinedVariable",
"Found a TCutG without leaf information (%s)",
3089 leafcur->GetBranch()->GetListOfBranches()->Last()==
nullptr) {
3091 cl =
lobj->GetClass();
3094 if (
lElem->IsOnTerminalBranch()) {
3212 else if (
curelem->GetClassPointer() &&
curelem->GetClassPointer()->GetCollectionProxy()) {
3217 sub_cl =
sub_cl->GetCollectionProxy()->GetValueClass();
3260 cl =
lobj->GetClass();
3266 }
else if (
type > 60) {
3272 cl =
element->GetClassPointer();
3300 if (
bc ==
bc->GetMother()) {
3325 Error(
"BranchHasMethod",
"A TClonesArray was stored in a branch type no yet support (i.e. neither TBranchObject nor TBranchElement): %s",
branch->IsA()->GetName());
3398 Error(
"EvalInstance",
"Index %s is out of bound (%d) in formula %s",
3431 Error(
"EvalInstance",
"Index %s is out of bound (%d) in formula %s",
3521 for (
Int_t dim = 1; dim < max_dim; dim++) {
3541 Error(
"EvalInstance",
"Index %s is out of bound (%d/%d) in formula %s",
3574 Error(
"EvalInstance",
"Index %s is of out bound (%d/%d) in formula %s",
3621 if (
info==
nullptr || !
info->IsCompiled()) {
3626 if (
elem==
nullptr) {
3630 return elem->GetClass();
3641 if (!obj)
return nullptr;
3645 default:
return nullptr;
3682 leaf->GetBranch()->GetTree()->GetReadEntry(),
3692 Warning(
"EvalObject",
"Not yet implement for kDirect and arrays (for %s).\nPlease contact the developers",
GetName());
3694 return leaf->GetValuePointer();
3699 default:
return nullptr;
3728 return (
char*)
leaf->GetValuePointer();
3739#define TT_EVAL_INIT \
3740 TLeaf *leaf = (TLeaf*)fLeaves.UncheckedAt(0); \
3742 const Int_t real_instance = GetRealInstance(instance,0); \
3744 if (instance==0) fNeedLoading = true; \
3745 if (real_instance>=fNdata[0]) return 0; \
3751 if (fNeedLoading) { \
3752 fNeedLoading = false; \
3753 TBranch *br = leaf->GetBranch(); \
3754 if (br && br->GetTree()) { \
3755 Long64_t tentry = br->GetTree()->GetReadEntry(); \
3756 R__LoadBranch(br,tentry,fQuickLoad); \
3758 Error("TTreeFormula::TT_EVAL_INIT", \
3759 "Could not init branch associated to this leaf (%s).", leaf->GetName()); \
3767 if (fLookupType[0]==kDirect) { \
3768 label = (char*)leaf->GetValuePointer(); \
3770 label = (char*)GetLeafInfo(0)->GetValuePointer(leaf,instance); \
3772 Int_t bin = fAxis->FindBin(label); \
3776#define TREE_EVAL_INIT \
3777 const Int_t real_instance = GetRealInstance(instance,0); \
3779 if (real_instance>=fNdata[0]) return 0; \
3785 label = (char*)GetLeafInfo(0)->GetValuePointer((TLeaf*)0x0,instance); \
3786 Int_t bin = fAxis->FindBin(label); \
3790#define TT_EVAL_INIT_LOOP \
3791 TLeaf *leaf = (TLeaf*)fLeaves.UncheckedAt(code); \
3794 const Int_t real_instance = GetRealInstance(instance,code); \
3797 TBranch *branch = (TBranch*)fBranches.UncheckedAt(code); \
3799 if (branch->GetTree()) { \
3800 Long64_t treeEntry = branch->GetTree()->GetReadEntry(); \
3801 R__LoadBranch(branch,treeEntry,fQuickLoad); \
3803 Error("TTreeFormula::TT_EVAL_INIT_LOOP", \
3804 "Could not init branch associated to this leaf (%s).", leaf->GetName()); \
3806 } else if (fDidBooleanOptimization) { \
3807 branch = leaf->GetBranch(); \
3808 if (branch->GetTree()) { \
3809 Long64_t treeEntry = branch->GetTree()->GetReadEntry(); \
3810 if (branch->GetReadEntry() != treeEntry) branch->GetEntry( treeEntry ); \
3812 Error("TTreeFormula::TT_EVAL_INIT_LOOP", \
3813 "Could not init branch associated to this leaf (%s).", leaf->GetName()); \
3820 if (fDidBooleanOptimization) { \
3821 TBranch *br = leaf->GetBranch(); \
3822 if (br->GetTree()) { \
3823 Long64_t treeEntry = br->GetTree()->GetReadEntry(); \
3824 if (br->GetReadEntry() != treeEntry) br->GetEntry( treeEntry ); \
3826 Error("TTreeFormula::TT_EVAL_INIT_LOOP", \
3827 "Could not init branch associated to this leaf (%s).", leaf->GetName()); \
3831 if (real_instance>=fNdata[code]) return 0;
3833#define TREE_EVAL_INIT_LOOP \
3835 const Int_t real_instance = GetRealInstance(instance,code); \
3837 if (real_instance>=fNdata[code]) return 0;
3843 for (
int i=0; i<
len; ++i) res +=
sum->EvalInstance<T>(i);
3851 res =
arr->EvalInstance<T>(0);
3852 for (
int i=1; i<
len; ++i) {
3853 T val =
arr->EvalInstance<T>(i);
3866 res =
arr->EvalInstance<T>(0);
3867 for (
int i=1; i<
len; ++i) {
3868 T val =
arr->EvalInstance(i);
3892 arr->EvalInstance<T>(0);
3895 res =
arr->EvalInstance<T>(i-1);
3896 for (; i<
len; ++i) {
3899 T val =
arr->EvalInstance<T>(i);
3924 arr->EvalInstance<T>(0);
3927 res =
arr->EvalInstance<T>(i-1);
3928 for (; i<
len; ++i) {
3931 T val =
arr->EvalInstance<T>(i);
4073 case kAdd : pos--;
tab[pos-1] +=
tab[pos];
continue;
4077 else tab[pos-1] /=
tab[pos];
4113 case ksq :
tab[pos-1] =
tab[pos-1]*
tab[pos-1];
continue;
4120 case kmin : pos--;
tab[pos-1] = std::min(
tab[pos-1],
tab[pos]);
continue;
4121 case kmax : pos--;
tab[pos-1] = std::max(
tab[pos-1],
tab[pos]);
continue;
4124 else {
tab[pos-1] = 0;}
4127 if (
dexp < -700) {
tab[pos-1] = 0;
continue;}
4132 else {
tab[pos-1] = 0;}
4138 case ksign :
if (
tab[pos-1] < 0)
tab[pos-1] = -1;
else tab[pos-1] = 1;
4144 case kAnd : pos--;
if (
tab[pos-1]!=0 &&
tab[pos]!=0)
tab[pos-1]=1;
4147 case kOr : pos--;
if (
tab[pos-1]!=0 ||
tab[pos]!=0)
tab[pos-1]=1;
4151 case kEqual : pos--;
tab[pos-1] = (
tab[pos-1] ==
tab[pos]) ? 1 : 0;
continue;
4153 case kLess : pos--;
tab[pos-1] = (
tab[pos-1] <
tab[pos]) ? 1 : 0;
continue;
4157 case kNot :
tab[pos-1] = (
tab[pos-1] != 0) ? 0 : 1;
continue;
4201 int op = param % 10;
4203 if (
op == 1 && (!
tab[pos-1]) ) {
4212 }
else if (
op == 2 &&
tab[pos-1] ) {
4234 int fno = param / 1000;
4235 int nargs = param % 1000;
4268 switch (lookupType) {
4290 default:
tab[pos++] = 0;
continue;
4332 tab[pos] = param; pos++;
4352 tab[pos] = param; pos++;
4361 tab[pos] = param; pos++;
4377 tab[pos] = param; pos++;
4451template double TTreeFormula::EvalInstance<double> (
int,
char const**);
4452template long double TTreeFormula::EvalInstance<long double> (
int,
char const**);
4453template long long TTreeFormula::EvalInstance<long long> (
int,
char const**);
4519 Warning(
"GetValueFromMethod",
"No streamer info for branch %s.",
branch->GetName());
4523 char* address =
branch->GetObject();
4527 char* address =
branch->GetObject();
4579 Warning(
"GetValuePointerFromMethod",
"No streamer info for branch %s.",
branch->GetName());
4583 char* address =
branch->GetObject();
4587 char* address =
branch->GetObject();
4638 return subform->IsInteger(
false);
4645 if (
fNoper > 1)
return false;
4650 return subform->IsInteger(
false);
4704 if (
fAxis)
return true;
4711 return info->IsInteger();
4715 if (!
strcmp(
leaf->GetTypeName(),
"Int_t"))
return true;
4716 if (!
strcmp(
leaf->GetTypeName(),
"Short_t"))
return true;
4717 if (!
strcmp(
leaf->GetTypeName(),
"UInt_t"))
return true;
4718 if (!
strcmp(
leaf->GetTypeName(),
"UShort_t"))
return true;
4719 if (!
strcmp(
leaf->GetTypeName(),
"Bool_t"))
return true;
4720 if (!
strcmp(
leaf->GetTypeName(),
"Char_t"))
return true;
4721 if (!
strcmp(
leaf->GetTypeName(),
"UChar_t"))
return true;
4722 if (!
strcmp(
leaf->GetTypeName(),
"Long64_t"))
return true;
4723 if (!
strcmp(
leaf->GetTypeName(),
"ULong64_t"))
return true;
4724 if (!
strcmp(
leaf->GetTypeName(),
"string"))
return true;
4759 return info->IsString();
4766 if (
leaf->GetLenStatic() > 1)
return true;
4770 if (
leaf->GetLeafCount()) {
4784 if (
bid < 0)
return false;
4785 if (
br->GetInfo()==
nullptr || !
br->GetInfo()->IsCompiled()) {
4818 return info->IsString();
4854 }
else if (
mode == -1) {
4856 }
else if (
mode == 0) {
4859 const char * val =
nullptr;
4872 val = (
const char*)
leaf->GetValuePointer();
4894 char *
expo =
nullptr;
4960 char *start =
expo - off;
4993 for(
UInt_t dim=0; dim<max_dim ;++dim) {
5003 for(
Int_t k=0; k <=
n; ++k) {
5026 if (!axis) {
fAxis =
nullptr;
return;}
5051 if (
R__b.IsReading()) {
5145 if (
fx)
fx->UpdateFormulaLeaves();
5146 if (
fy)
fy->UpdateFormulaLeaves();
5162 subform->UpdateFormulaLeaves();
5176 subform->UpdateFormulaLeaves();
5246 switch(
subform->GetMultiplicity()) {
5276 if (!
gcut)
continue;
5281 switch(
fx->GetMultiplicity()) {
5289 switch(
fy->GetMultiplicity()) {
5306 if (!
leaf)
continue;
5315 if (
leaf->GetLeafCount()) {
5377 for (i=0; i<
fNoper ; ++i) {
5379 if (
leaf==
nullptr)
continue;
5389 for (
Int_t dim = 0; dim < max_dim; ++dim) {
5403 if (
fCodes[i] < 0)
continue;
5432 if (
tleaf->GetReadEntry() < 0) {
5441 if (
leaf->GetLeafCount()) {
5466 if (
branch->GetAddress() ==
nullptr) {
5581 for(
int z=0; z<
size; ++z) {
5602 }
else if (
leafinfo->GetMultiplicity()==-1) {
5681 for (
int k=0; k<
fNoper; k++) {
5723 if (!
leaf)
return false;
5728 if (
br->GetType()==31) {
5741 }
else if (
br->GetType()==41) {
5746 if ( count->
GetID() >= 0 ) {
5769 }
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)