115 std::istringstream
iss(str);
117 return iss >> std::noskipws >> number &&
iss.eof();
140 fDidBooleanOptimization(
false), fDimensionSetup(nullptr)
172 fDidBooleanOptimization(
false), fDimensionSetup(nullptr)
181 const std::vector<std::string>&
aliases)
183 fDidBooleanOptimization(
false), fDimensionSetup(nullptr), fAliasesUsed(
aliases)
228 Warning(
"TTreeFormula",
"Too many items in expression:%s",expression);
238 if (!
leafc)
continue;
286 Error(
"TTreeFormula",
287 "Index %d for dimension #%d in %s is too high (max is %d)",
418 const char * current;
427 if (current[0] !=
'[') current--;
443 current = (
char*)
strstr( current,
"[" );
457 return (
size==-1) ? 1 : 0;
481 if (
elem->GetArrayDim()>0) {
483 ndim =
elem->GetArrayDim();
529 }
else if (
c &&
c->GetReferenceProxy() &&
c->GetReferenceProxy()->HasCounter() ) {
532 }
else if (
elem->GetArrayDim()>0) {
534 ndim =
elem->GetArrayDim();
560 }
while (current<ndim);
605 const char *bname =
leaf->GetBranch()->GetName();
639 if (
branch->GetBranchCount2()) {
641 if (!
branch->GetBranchCount()) {
643 "Noticed an incorrect in-memory TBranchElement object (%s).\nIt has a BranchCount2 but no BranchCount!\nThe result might be incorrect!",
651 "Already in kDataMember mode when handling multiple variable dimensions");
672 static const char *
altfunc =
"Alt$(";
673 static const char *
minfunc =
"MinIf$(";
674 static const char *
maxfunc =
"MaxIf$(";
679 && expression[
strlen(expression)-1]==
')' ) {
684 && expression[
strlen(expression)-1]==
')' ) {
689 && expression[
strlen(expression)-1]==
')' ) {
701 for(
unsigned int i=start;i<
strlen(expression);++i) {
702 switch (expression[i]) {
703 case '(':
paran++;
break;
704 case ')':
paran--;
break;
705 case '"': instr = instr ? 0 : 1;
break;
706 case '[':
brack++;
break;
707 case ']':
brack--;
break;
709 if (expression[i]==
',' &&
paran==0 && instr==0 &&
brack==0) {
710 part1 = full( start, i-start );
711 part2 = full( i+1, full.Length() -1 - (i+1) );
722 if (
alternate->GetManager()->GetMultiplicity() != 0 ) {
723 Error(
"DefinedVariable",
"The 2nd arguments in %s can not be an array (%s,%d)!",
725 alternate->GetManager()->GetMultiplicity());
732 Error(
"DefinedVariable",
733 "The 2nd arguments in %s has to return the same type as the 1st argument (string)!",
739 Error(
"DefinedVariable",
740 "The 2nd arguments in %s has to return the same type as the 1st argument (numerical type)!",
749 Error(
"DefinedVariable",
750 "The arguments of %s can not be strings!",
804 if (
br->GetInfo() == nullptr ) {
805 Error(
"DefinedVariable",
"Missing StreamerInfo for %s. We will be unable to read!",
816 if (
mom->GetInfo()==
nullptr) {
817 Error(
"DefinedVariable",
"Missing StreamerInfo for %s."
818 " We will be unable to read!",
822 if ((
mom->GetType()) < -1 && !
mom->GetAddress()) {
823 Error(
"DefinedVariable",
"Address not set when the type of the branch is negative for for %s. We will be unable to read!",
mom->GetName());
836 const char*
alias =
nullptr;
854 Error(
"TTreeFormula",
855 "Length of leafname (%d) exceeds maximum allowed by the buffer (%d), formula will be truncated.",
867 if (
leaf->GetBranch()!=
leaf->GetBranch()->GetMother()) {
945 cl =
element->GetClassPointer();
950 cl =
info->GetClass();
957 if (cl &&
branchEl->GetBranchCount()) {
963 "Missing TStreamerElement in object in TClonesArray section");
996 }
else if (
branchEl->GetType()==41) {
1001 Warning(
"DefinedVariable",
"Missing TStreamerElement in object in Collection section");
1007 if ( count->
GetID() >= 0 ) {
1048 }
else if (
branchEl->GetType()==3) {
1121 &&
elemCl->GetCollectionProxy()->GetValueClass()
1122 &&
elemCl->GetCollectionProxy()->GetValueClass()->GetCollectionProxy()) {
1135 elemCl->GetCollectionProxy()->GetValueClass(),
1141 cl =
elemCl->GetCollectionProxy()->GetValueClass();
1155 &&
elemCl->GetCollectionProxy()->GetValueClass()==
nullptr
1156 &&
elemCl->GetCollectionProxy()->GetType()>0) {
1183 }
else if (!
element->IsaPointer()) {
1209 Error(
"DefinedVariable",
"Failed to access class type of reference target (%s)",
element->GetName());
1217 Error(
"ParseWithLeaf",
"Found a numerical leaf but the name has trailing characters: \"%s\"",
subExpression);
1280 if ( !
casted->InheritsFrom(cl) ) {
1281 Error(
"DefinedVariable",
"%s does not inherit from %s. Casting not possible!",
1307 for (i=0, current = &(
work[0]); i<=
nchname;i++ ) {
1309 if (right[i] ==
'(') {
1312 *current++ = right[i++];
1313 }
while(right[i]!=
')' && right[i]);
1314 *current++ = right[i];
1318 *params = 0; params++;
1319 }
else params = (
char *)
")";
1321 Error(
"DefinedVariable",
"Can not call '%s' with a class",
work);
1325 Error(
"DefinedVariable",
"Class probably unavailable:%s",cl->
GetName());
1339 || !
leaf->IsOnTerminalBranch());
1370 || !
leaf->IsOnTerminalBranch());
1393 Warning(
"DefinedVariable",
"Can not call method on content of %s in %s\n",
1400 Error(
"DefinedVariable",
1401 "Could not discover the TClass corresponding to (%s)!",
1412 || !
leaf->IsOnTerminalBranch());
1421 Error(
"DefinedVariable",
1422 "Can not call method %s on class without dictionary (%s)!",
1429 if (!
method->GetMethod()) {
1430 Error(
"DefinedVariable",
"Unknown method:%s in %s",right,cl->
GetName());
1433 switch(
method->ReturnType()) {
1455 Error(
"DefineVariable",
"Method %s from %s has an impossible return type %d",
1470 current = &(
work[0]);
1478 Warning(
"DefinedVariable",
"TTreeFormula support only 2 level of variables size collections. Assuming '@' notation for the collection %s.",
1503 }
else if (right[i] ==
')') {
1521 current = &(
work[0]);
1528 }
else if (i > 0 && (right[i] ==
'.' || right[i] ==
'[' || right[i] ==
'\0') ) {
1610 if (
clbranch->GetListOfBranches()->GetLast()>=0) {
1612 Error(
"DefinedVariable",
"Unimplemented usage of ClonesArray");
1623 "TClonesArray object was not retrievable for %s!",
1678 Error(
"DefinedVariable",
"Could you not find the inner class for %s with coll type = %d",
1682 Warning(
"DefinedVariable",
"No data member in content of %s in %s\n",
1690 if (
leaf)
leaf->GetBranch()->Print();
1691 Warning(
"DefinedVariable",
"Missing class for %s!",
name.Data());
1735 }
else if (
curelem->GetClassPointer() &&
curelem->GetClassPointer()->GetCollectionProxy()) {
1741 curelem->GetClassPointer()->GetCollectionProxy()->GetValueClass();
1747 Warning(
"DefinedVariable",
"TTreeFormula support only 2 level of variables size collections. Assuming '@' notation for the collection %s.",
1797 bool object =
false;
1798 bool pointer =
false;
1830 Error(
"DefinedVariable",
1831 "%s is a datamember of %s BUT is not yet of a supported type (%d)",
1836 Error(
"DefinedVariable",
1837 "%s is a datamember of %s BUT is not of a unknown type (%d)",
1844 ||
element->GetClassPointer()->GetCollectionProxy() ) )
1862 &&
element->GetClassPointer()->GetCollectionProxy()) {
1866 Warning(
"DefinedVariable",
"TTreeFormula support only 2 level of variables size collections. Assuming '@' notation for the collection %s.",
1886 if (
element->GetClassPointer()->GetCollectionProxy()->GetValueClass()==
nullptr) {
1888 element->GetClassPointer()->GetCollectionProxy());
1899 if (
valueCl!=
nullptr &&
valueCl->GetCollectionProxy()!=
nullptr) {
1916 if (
elemCl->GetCollectionProxy() &&
1917 elemCl->GetCollectionProxy()->GetValueClass()==
nullptr) {
1939 }
else if (pointer) {
1951 if (cl)
Error(
"DefinedVariable",
"%s is not a datamember of %s",
work,cl->
GetName());
1968 if ( right[i] !=
'\0' ) {
1975 if (
inf->IsReference() ) {
1984 cl =
refInfo->GetValueClass(ptr);
1986 Error(
"DefinedVariable",
"Failed to access class type of reference target (%s)",
element->GetName());
1992 Error(
"DefinedVariable",
"Failed to access class type of reference target (%s)",
element->GetName());
1997 cl =
element->GetClassPointer();
2001 current = &(
work[0]);
2014 *current++ = right[i];
2035 if (!last)
return action;
2063 if (!last)
return action;
2211 const char *
cname = expression;
2212 char first[
kMaxLen]; first[0] =
'\0';
2213 char second[
kMaxLen*2]; second[0] =
'\0';
2214 char right[
kMaxLen*2]; right[0] =
'\0';
2216 char left[
kMaxLen]; left[0] =
'\0';
2229 for (i=0, current = &(
work[0]); i<=
nchname && !
final;i++ ) {
2231 *current++ =
cname[i];
2233 if (
cname[i] ==
'(') {
2236 if (current==
work+1) {
2251 if (
cname[i] ==
')') {
2268 current = &(
work[0]);
2274 current = &(
work[0]);
2277 "Casting to primary types like \"%s\" is not supported yet",
cast_name.Data());
2286 *params = 0; params++;
2319 Error(
"DefinedVariable",
2320 "The substitution of the branch alias \"%s\" by \"%s\" in \"%s\" failed\n"\
2321 "\tbecause \"%s\" is used [recursively] in its own definition!",
2331 Error(
"DefinedVariable",
2332 "The substitution of the alias \"%s\" by \"%s\" failed.",left,
aliasValue);
2358 current = &(
work[0]);
2446 current = &(
work[0]);
2454 if (
leaf==
nullptr) {
2465 current = &(
work[0]);
2477 current = &(
work[0]);
2488 if (
leaf &&
leaf->IsOnTerminalBranch()) {
2494 current = &(
work[0]);
2503 if (
leaf->IsOnTerminalBranch()) {
2511 current = &(
work[0]);
2514 }
else if (
cname[i] ==
'.') {
2526 current = &(
work[0]);
2533 Error(
"DefinedVariable",
"Unexpected control flow!");
2593 current = &(
work[0]);
2632 if (!
leaf)
return -1;
2634 final =
leaf->IsOnTerminalBranch();
2641 if (
leaf==
nullptr && left[0]!=0) {
2652 Error(
"DefinedVariable",
2653 "The substitution of the branch alias \"%s\" by \"%s\" in \"%s\" failed\n"\
2654 "\tbecause \"%s\" is used [recursively] in its own definition!",
2664 Error(
"DefinedVariable",
2665 "The substitution of the alias \"%s\" by \"%s\" failed.",left,
aliasValue);
2716 if (!
fTree)
return -1;
2720 Error(
"TTreeFormula",
"The length of the variable name (%d) exceeds the maximum allowed (%d)",
name.Length(),
kMaxLen);
2725 if (
name ==
"Entry$") {
2731 if (
name ==
"LocalEntry$") {
2737 if (
name ==
"Entries$") {
2745 if (
name ==
"LocalEntries$") {
2753 if (
name ==
"Iteration$") {
2759 if (
name ==
"Length$") {
2765 static const char *
lenfunc =
"Length$(";
2778 static const char *
minfunc =
"Min$(";
2791 static const char *
maxfunc =
"Max$(";
2804 static const char *
sumfunc =
"Sum$(";
2824 if (res<0)
return res;
2841 for(i=0,k=0; i<
cnamelen; ++i, ++k) {
2842 if (
cname[i] ==
'[') {
2868 if (res<0)
return res;
2870 if (!
leaf && res!=2) {
2879 Error(
"DefinedVariable",
2880 "The substitution of the alias \"%s\" by \"%s\" failed\n"\
2881 "\tbecause \"%s\" is recursively used in its own definition!",
2903 Error(
"DefinedVariable",
2904 "The substitution of the alias \"%s\" by \"%s\" failed.",
cname,
aliasValue);
2927 Error(
"Compile",
" Bad numerical expression : \"%s\"",
thisAlias.Data());
2929 Error(
"Compile",
" Part of the Variable \"%s\" exists but some of it is not accessible or useable",
thisAlias.Data());
2932 Error(
"DefinedVariable",
2933 "The substitution of the alias \"%s\" by \"%s\" failed.",
cname,
aliasValue);
2942 if (
leaf || res==2) {
2945 Error(
"DefinedVariable",
"the branch \"%s\" has to be enabled to be used",
leaf->GetBranch()->GetName());
2954 char *current = &(
dims[0] );
2961 if (current[0] ==
']') {
2970 char *end = (
char*)(
varindex.Data());
2992 current = (
char*)
strstr( current,
"[" );
3000 if (res<0)
return res;
3008 if (
gcut->GetObjectX()) {
3010 gcut->SetObjectX(
nullptr);
3012 if (
gcut->GetObjectY()) {
3014 gcut->SetObjectY(
nullptr);
3039 if (
x[
i2] < min) min =
x[
i2];
3040 if (
x[
i2] > max) max =
x[
i2];
3045 formula +=
gcut->GetVarX();
3047 formula +=
gcut->GetVarX();
3059 Error(
"DefinedVariable",
"Found a TCutG without leaf information (%s)",
3103 leafcur->GetBranch()->GetListOfBranches()->Last()==
nullptr) {
3105 cl =
lobj->GetClass();
3108 if (
lElem->IsOnTerminalBranch()) {
3226 else if (
curelem->GetClassPointer() &&
curelem->GetClassPointer()->GetCollectionProxy()) {
3231 sub_cl =
sub_cl->GetCollectionProxy()->GetValueClass();
3274 cl =
lobj->GetClass();
3280 }
else if (
type > 60) {
3286 cl =
element->GetClassPointer();
3314 if (
bc ==
bc->GetMother()) {
3339 Error(
"BranchHasMethod",
"A TClonesArray was stored in a branch type no yet support (i.e. neither TBranchObject nor TBranchElement): %s",
branch->IsA()->GetName());
3412 Error(
"EvalInstance",
"Index %s is out of bound (%d) in formula %s",
3445 Error(
"EvalInstance",
"Index %s is out of bound (%d) in formula %s",
3535 for (
Int_t dim = 1; dim < max_dim; dim++) {
3555 Error(
"EvalInstance",
"Index %s is out of bound (%d/%d) in formula %s",
3588 Error(
"EvalInstance",
"Index %s is of out bound (%d/%d) in formula %s",
3635 if (
info==
nullptr || !
info->IsCompiled()) {
3640 if (
elem==
nullptr) {
3644 return elem->GetClass();
3655 if (!obj)
return nullptr;
3659 default:
return nullptr;
3696 leaf->GetBranch()->GetTree()->GetReadEntry(),
3706 Warning(
"EvalObject",
"Not yet implement for kDirect and arrays (for %s).\nPlease contact the developers",
GetName());
3708 return leaf->GetValuePointer();
3713 default:
return nullptr;
3742 return (
char*)
leaf->GetValuePointer();
3753#define TT_EVAL_INIT \
3754 TLeaf *leaf = (TLeaf*)fLeaves.UncheckedAt(0); \
3756 const Int_t real_instance = GetRealInstance(instance,0); \
3758 if (instance==0) fNeedLoading = true; \
3759 if (real_instance>=fNdata[0]) return 0; \
3765 if (fNeedLoading) { \
3766 fNeedLoading = false; \
3767 TBranch *br = leaf->GetBranch(); \
3768 if (br && br->GetTree()) { \
3769 Long64_t tentry = br->GetTree()->GetReadEntry(); \
3770 R__LoadBranch(br,tentry,fQuickLoad); \
3772 Error("TTreeFormula::TT_EVAL_INIT", \
3773 "Could not init branch associated to this leaf (%s).", leaf->GetName()); \
3781 if (fLookupType[0]==kDirect) { \
3782 label = (char*)leaf->GetValuePointer(); \
3784 label = (char*)GetLeafInfo(0)->GetValuePointer(leaf,instance); \
3786 Int_t bin = fAxis->FindBin(label); \
3790#define TREE_EVAL_INIT \
3791 const Int_t real_instance = GetRealInstance(instance,0); \
3793 if (real_instance>=fNdata[0]) return 0; \
3799 label = (char*)GetLeafInfo(0)->GetValuePointer((TLeaf*)0x0,instance); \
3800 Int_t bin = fAxis->FindBin(label); \
3804#define TT_EVAL_INIT_LOOP \
3805 TLeaf *leaf = (TLeaf*)fLeaves.UncheckedAt(code); \
3808 const Int_t real_instance = GetRealInstance(instance,code); \
3811 TBranch *branch = (TBranch*)fBranches.UncheckedAt(code); \
3813 if (branch->GetTree()) { \
3814 Long64_t treeEntry = branch->GetTree()->GetReadEntry(); \
3815 R__LoadBranch(branch,treeEntry,fQuickLoad); \
3817 Error("TTreeFormula::TT_EVAL_INIT_LOOP", \
3818 "Could not init branch associated to this leaf (%s).", leaf->GetName()); \
3820 } else if (fDidBooleanOptimization) { \
3821 branch = leaf->GetBranch(); \
3822 if (branch->GetTree()) { \
3823 Long64_t treeEntry = branch->GetTree()->GetReadEntry(); \
3824 if (branch->GetReadEntry() != treeEntry) branch->GetEntry( treeEntry ); \
3826 Error("TTreeFormula::TT_EVAL_INIT_LOOP", \
3827 "Could not init branch associated to this leaf (%s).", leaf->GetName()); \
3834 if (fDidBooleanOptimization) { \
3835 TBranch *br = leaf->GetBranch(); \
3836 if (br->GetTree()) { \
3837 Long64_t treeEntry = br->GetTree()->GetReadEntry(); \
3838 if (br->GetReadEntry() != treeEntry) br->GetEntry( treeEntry ); \
3840 Error("TTreeFormula::TT_EVAL_INIT_LOOP", \
3841 "Could not init branch associated to this leaf (%s).", leaf->GetName()); \
3845 if (real_instance>=fNdata[code]) return 0;
3847#define TREE_EVAL_INIT_LOOP \
3849 const Int_t real_instance = GetRealInstance(instance,code); \
3851 if (real_instance>=fNdata[code]) return 0;
3857 for (
int i=0; i<
len; ++i) res +=
sum->EvalInstance<T>(i);
3865 res =
arr->EvalInstance<T>(0);
3866 for (
int i=1; i<
len; ++i) {
3867 T val =
arr->EvalInstance<T>(i);
3880 res =
arr->EvalInstance<T>(0);
3881 for (
int i=1; i<
len; ++i) {
3882 T val =
arr->EvalInstance(i);
3898 condition->EvalInstance<T>(i);
3906 arr->EvalInstance<T>(0);
3909 res =
arr->EvalInstance<T>(i-1);
3910 for (; i<
len; ++i) {
3911 condition->EvalInstance<T>(i);
3913 T val =
arr->EvalInstance<T>(i);
3930 condition->EvalInstance<T>(i);
3938 arr->EvalInstance<T>(0);
3941 res =
arr->EvalInstance<T>(i-1);
3942 for (; i<
len; ++i) {
3943 condition->EvalInstance<T>(i);
3945 T val =
arr->EvalInstance<T>(i);
4087 case kAdd : pos--;
tab[pos-1] +=
tab[pos];
continue;
4091 else tab[pos-1] /=
tab[pos];
4127 case ksq :
tab[pos-1] =
tab[pos-1]*
tab[pos-1];
continue;
4134 case kmin : pos--;
tab[pos-1] = std::min(
tab[pos-1],
tab[pos]);
continue;
4135 case kmax : pos--;
tab[pos-1] = std::max(
tab[pos-1],
tab[pos]);
continue;
4138 else {
tab[pos-1] = 0;}
4141 if (
dexp < -700) {
tab[pos-1] = 0;
continue;}
4146 else {
tab[pos-1] = 0;}
4152 case ksign :
if (
tab[pos-1] < 0)
tab[pos-1] = -1;
else tab[pos-1] = 1;
4158 case kAnd : pos--;
if (
tab[pos-1]!=0 &&
tab[pos]!=0)
tab[pos-1]=1;
4161 case kOr : pos--;
if (
tab[pos-1]!=0 ||
tab[pos]!=0)
tab[pos-1]=1;
4165 case kEqual : pos--;
tab[pos-1] = (
tab[pos-1] ==
tab[pos]) ? 1 : 0;
continue;
4167 case kLess : pos--;
tab[pos-1] = (
tab[pos-1] <
tab[pos]) ? 1 : 0;
continue;
4171 case kNot :
tab[pos-1] = (
tab[pos-1] != 0) ? 0 : 1;
continue;
4215 int op = param % 10;
4217 if (
op == 1 && (!
tab[pos-1]) ) {
4226 }
else if (
op == 2 &&
tab[pos-1] ) {
4248 int fno = param / 1000;
4249 int nargs = param % 1000;
4282 switch (lookupType) {
4304 default:
tab[pos++] = 0;
continue;
4346 tab[pos] = param; pos++;
4366 tab[pos] = param; pos++;
4375 tab[pos] = param; pos++;
4391 tab[pos] = param; pos++;
4465template double TTreeFormula::EvalInstance<double> (
int,
char const**);
4466template long double TTreeFormula::EvalInstance<long double> (
int,
char const**);
4467template long long TTreeFormula::EvalInstance<long long> (
int,
char const**);
4533 Warning(
"GetValueFromMethod",
"No streamer info for branch %s.",
branch->GetName());
4537 char* address =
branch->GetObject();
4541 char* address =
branch->GetObject();
4593 Warning(
"GetValuePointerFromMethod",
"No streamer info for branch %s.",
branch->GetName());
4597 char* address =
branch->GetObject();
4601 char* address =
branch->GetObject();
4652 return subform->IsInteger(
false);
4659 if (
fNoper > 1)
return false;
4664 return subform->IsInteger(
false);
4718 if (
fAxis)
return true;
4725 return info->IsInteger();
4729 if (!
strcmp(
leaf->GetTypeName(),
"Int_t"))
return true;
4730 if (!
strcmp(
leaf->GetTypeName(),
"Short_t"))
return true;
4731 if (!
strcmp(
leaf->GetTypeName(),
"UInt_t"))
return true;
4732 if (!
strcmp(
leaf->GetTypeName(),
"UShort_t"))
return true;
4733 if (!
strcmp(
leaf->GetTypeName(),
"Bool_t"))
return true;
4734 if (!
strcmp(
leaf->GetTypeName(),
"Char_t"))
return true;
4735 if (!
strcmp(
leaf->GetTypeName(),
"UChar_t"))
return true;
4736 if (!
strcmp(
leaf->GetTypeName(),
"Long64_t"))
return true;
4737 if (!
strcmp(
leaf->GetTypeName(),
"ULong64_t"))
return true;
4738 if (!
strcmp(
leaf->GetTypeName(),
"string"))
return true;
4773 return info->IsString();
4780 if (
leaf->GetLenStatic() > 1)
return true;
4784 if (
leaf->GetLeafCount()) {
4798 if (
bid < 0)
return false;
4799 if (
br->GetInfo()==
nullptr || !
br->GetInfo()->IsCompiled()) {
4832 return info->IsString();
4868 }
else if (
mode == -1) {
4870 }
else if (
mode == 0) {
4873 const char * val =
nullptr;
4886 val = (
const char*)
leaf->GetValuePointer();
4908 char *
expo =
nullptr;
4974 char *start =
expo - off;
5007 for(
UInt_t dim=0; dim<max_dim ;++dim) {
5017 for(
Int_t k=0; k <=
n; ++k) {
5040 if (!axis) {
fAxis =
nullptr;
return;}
5065 if (
R__b.IsReading()) {
5159 if (
fx)
fx->UpdateFormulaLeaves();
5160 if (
fy)
fy->UpdateFormulaLeaves();
5176 subform->UpdateFormulaLeaves();
5190 subform->UpdateFormulaLeaves();
5260 switch(
subform->GetMultiplicity()) {
5290 if (!
gcut)
continue;
5295 switch(
fx->GetMultiplicity()) {
5303 switch(
fy->GetMultiplicity()) {
5320 if (!
leaf)
continue;
5329 if (
leaf->GetLeafCount()) {
5391 for (i=0; i<
fNoper ; ++i) {
5393 if (
leaf==
nullptr)
continue;
5403 for (
Int_t dim = 0; dim < max_dim; ++dim) {
5417 if (
fCodes[i] < 0)
continue;
5446 if (
tleaf->GetReadEntry() < 0) {
5455 if (
leaf->GetLeafCount()) {
5480 if (
branch->GetAddress() ==
nullptr) {
5595 for(
int z=0; z<
size; ++z) {
5616 }
else if (
leafinfo->GetMultiplicity()==-1) {
5695 for (
int k=0; k<
fNoper; k++) {
5737 if (!
leaf)
return false;
5742 if (
br->GetType()==31) {
5755 }
else if (
br->GetType()==41) {
5760 if ( count->
GetID() >= 0 ) {
5783 }
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
Describe one element (data member) to be Streamed.
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)