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);
608 const char *bname =
leaf->GetBranch()->GetName();
642 if (
branch->GetBranchCount2()) {
644 if (!
branch->GetBranchCount()) {
646 "Noticed an incorrect in-memory TBranchElement object (%s).\nIt has a BranchCount2 but no BranchCount!\nThe result might be incorrect!",
654 "Already in kDataMember mode when handling multiple variable dimensions");
675 static const char *
altfunc =
"Alt$(";
676 static const char *
minfunc =
"MinIf$(";
677 static const char *
maxfunc =
"MaxIf$(";
682 && expression[
strlen(expression)-1]==
')' ) {
687 && expression[
strlen(expression)-1]==
')' ) {
692 && expression[
strlen(expression)-1]==
')' ) {
704 for(
unsigned int i=start;i<
strlen(expression);++i) {
705 switch (expression[i]) {
706 case '(':
paran++;
break;
707 case ')':
paran--;
break;
708 case '"': instr = instr ? 0 : 1;
break;
709 case '[':
brack++;
break;
710 case ']':
brack--;
break;
712 if (expression[i]==
',' &&
paran==0 && instr==0 &&
brack==0) {
713 part1 = full( start, i-start );
714 part2 = full( i+1, full.Length() -1 - (i+1) );
725 if (
alternate->GetManager()->GetMultiplicity() != 0 ) {
726 Error(
"DefinedVariable",
"The 2nd arguments in %s can not be an array (%s,%d)!",
728 alternate->GetManager()->GetMultiplicity());
735 Error(
"DefinedVariable",
736 "The 2nd arguments in %s has to return the same type as the 1st argument (string)!",
742 Error(
"DefinedVariable",
743 "The 2nd arguments in %s has to return the same type as the 1st argument (numerical type)!",
752 Error(
"DefinedVariable",
753 "The arguments of %s can not be strings!",
807 if (
br->GetInfo() == nullptr ) {
808 Error(
"DefinedVariable",
"Missing StreamerInfo for %s. We will be unable to read!",
819 if (
mom->GetInfo()==
nullptr) {
820 Error(
"DefinedVariable",
"Missing StreamerInfo for %s."
821 " We will be unable to read!",
825 if ((
mom->GetType()) < -1 && !
mom->GetAddress()) {
826 Error(
"DefinedVariable",
"Address not set when the type of the branch is negative for for %s. We will be unable to read!",
mom->GetName());
839 const char*
alias =
nullptr;
857 Error(
"TTreeFormula",
858 "Length of leafname (%d) exceeds maximum allowed by the buffer (%d), formula will be truncated.",
870 if (
leaf->GetBranch()!=
leaf->GetBranch()->GetMother()) {
948 cl =
element->GetClassPointer();
953 cl =
info->GetClass();
960 if (cl &&
branchEl->GetBranchCount()) {
966 "Missing TStreamerElement in object in TClonesArray section");
999 }
else if (
branchEl->GetType()==41) {
1004 Warning(
"DefinedVariable",
"Missing TStreamerElement in object in Collection section");
1010 if ( count->
GetID() >= 0 ) {
1051 }
else if (
branchEl->GetType()==3) {
1124 &&
elemCl->GetCollectionProxy()->GetValueClass()
1125 &&
elemCl->GetCollectionProxy()->GetValueClass()->GetCollectionProxy()) {
1138 elemCl->GetCollectionProxy()->GetValueClass(),
1144 cl =
elemCl->GetCollectionProxy()->GetValueClass();
1158 &&
elemCl->GetCollectionProxy()->GetValueClass()==
nullptr
1159 &&
elemCl->GetCollectionProxy()->GetType()>0) {
1186 }
else if (!
element->IsaPointer()) {
1212 Error(
"DefinedVariable",
"Failed to access class type of reference target (%s)",
element->GetName());
1220 Error(
"ParseWithLeaf",
"Found a numerical leaf but the name has trailing characters: \"%s\"",
subExpression);
1283 if ( !
casted->InheritsFrom(cl) ) {
1284 Error(
"DefinedVariable",
"%s does not inherit from %s. Casting not possible!",
1310 for (i=0, current = &(
work[0]); i<=
nchname;i++ ) {
1312 if (right[i] ==
'(') {
1315 *current++ = right[i++];
1316 }
while(right[i]!=
')' && right[i]);
1317 *current++ = right[i];
1321 *params = 0; params++;
1322 }
else params = (
char *)
")";
1324 Error(
"DefinedVariable",
"Can not call '%s' with a class",
work);
1328 Error(
"DefinedVariable",
"Class probably unavailable:%s",cl->
GetName());
1342 || !
leaf->IsOnTerminalBranch());
1373 || !
leaf->IsOnTerminalBranch());
1396 Warning(
"DefinedVariable",
"Can not call method on content of %s in %s\n",
1403 Error(
"DefinedVariable",
1404 "Could not discover the TClass corresponding to (%s)!",
1415 || !
leaf->IsOnTerminalBranch());
1424 Error(
"DefinedVariable",
1425 "Can not call method %s on class without dictionary (%s)!",
1432 if (!
method->GetMethod()) {
1433 Error(
"DefinedVariable",
"Unknown method:%s in %s",right,cl->
GetName());
1436 switch(
method->ReturnType()) {
1458 Error(
"DefineVariable",
"Method %s from %s has an impossible return type %d",
1473 current = &(
work[0]);
1481 Warning(
"DefinedVariable",
"TTreeFormula support only 2 level of variables size collections. Assuming '@' notation for the collection %s.",
1506 }
else if (right[i] ==
')') {
1524 current = &(
work[0]);
1531 }
else if (i > 0 && (right[i] ==
'.' || right[i] ==
'[' || right[i] ==
'\0') ) {
1613 if (
clbranch->GetListOfBranches()->GetLast()>=0) {
1615 Error(
"DefinedVariable",
"Unimplemented usage of ClonesArray");
1626 "TClonesArray object was not retrievable for %s!",
1681 Error(
"DefinedVariable",
"Could you not find the inner class for %s with coll type = %d",
1685 Warning(
"DefinedVariable",
"No data member in content of %s in %s\n",
1693 if (
leaf)
leaf->GetBranch()->Print();
1694 Warning(
"DefinedVariable",
"Missing class for %s!",
name.Data());
1738 }
else if (
curelem->GetClassPointer() &&
curelem->GetClassPointer()->GetCollectionProxy()) {
1744 curelem->GetClassPointer()->GetCollectionProxy()->GetValueClass();
1750 Warning(
"DefinedVariable",
"TTreeFormula support only 2 level of variables size collections. Assuming '@' notation for the collection %s.",
1800 bool object =
false;
1801 bool pointer =
false;
1833 Error(
"DefinedVariable",
1834 "%s is a datamember of %s BUT is not yet of a supported type (%d)",
1839 Error(
"DefinedVariable",
1840 "%s is a datamember of %s BUT is not of a unknown type (%d)",
1847 ||
element->GetClassPointer()->GetCollectionProxy() ) )
1865 &&
element->GetClassPointer()->GetCollectionProxy()) {
1869 Warning(
"DefinedVariable",
"TTreeFormula support only 2 level of variables size collections. Assuming '@' notation for the collection %s.",
1889 if (
element->GetClassPointer()->GetCollectionProxy()->GetValueClass()==
nullptr) {
1891 element->GetClassPointer()->GetCollectionProxy());
1902 if (
valueCl!=
nullptr &&
valueCl->GetCollectionProxy()!=
nullptr) {
1919 if (
elemCl->GetCollectionProxy() &&
1920 elemCl->GetCollectionProxy()->GetValueClass()==
nullptr) {
1942 }
else if (pointer) {
1954 if (cl)
Error(
"DefinedVariable",
"%s is not a datamember of %s",
work,cl->
GetName());
1971 if ( right[i] !=
'\0' ) {
1978 if (
inf->IsReference() ) {
1987 cl =
refInfo->GetValueClass(ptr);
1989 Error(
"DefinedVariable",
"Failed to access class type of reference target (%s)",
element->GetName());
1995 Error(
"DefinedVariable",
"Failed to access class type of reference target (%s)",
element->GetName());
2000 cl =
element->GetClassPointer();
2004 current = &(
work[0]);
2017 *current++ = right[i];
2038 if (!last)
return action;
2066 if (!last)
return action;
2214 const char *
cname = expression;
2215 char first[
kMaxLen]; first[0] =
'\0';
2216 char second[
kMaxLen*2]; second[0] =
'\0';
2217 char right[
kMaxLen*2]; right[0] =
'\0';
2219 char left[
kMaxLen]; left[0] =
'\0';
2232 for (i=0, current = &(
work[0]); i<=
nchname && !
final;i++ ) {
2234 *current++ =
cname[i];
2236 if (
cname[i] ==
'(') {
2239 if (current==
work+1) {
2254 if (
cname[i] ==
')') {
2271 current = &(
work[0]);
2277 current = &(
work[0]);
2280 "Casting to primary types like \"%s\" is not supported yet",
cast_name.Data());
2289 *params = 0; params++;
2322 Error(
"DefinedVariable",
2323 "The substitution of the branch alias \"%s\" by \"%s\" in \"%s\" failed\n"\
2324 "\tbecause \"%s\" is used [recursively] in its own definition!",
2334 Error(
"DefinedVariable",
2335 "The substitution of the alias \"%s\" by \"%s\" failed.",left,
aliasValue);
2361 current = &(
work[0]);
2449 current = &(
work[0]);
2457 if (
leaf==
nullptr) {
2468 current = &(
work[0]);
2480 current = &(
work[0]);
2491 if (
leaf &&
leaf->IsOnTerminalBranch()) {
2497 current = &(
work[0]);
2506 if (
leaf->IsOnTerminalBranch()) {
2514 current = &(
work[0]);
2517 }
else if (
cname[i] ==
'.') {
2529 current = &(
work[0]);
2536 Error(
"DefinedVariable",
"Unexpected control flow!");
2596 current = &(
work[0]);
2635 if (!
leaf)
return -1;
2637 final =
leaf->IsOnTerminalBranch();
2644 if (
leaf==
nullptr && left[0]!=0) {
2655 Error(
"DefinedVariable",
2656 "The substitution of the branch alias \"%s\" by \"%s\" in \"%s\" failed\n"\
2657 "\tbecause \"%s\" is used [recursively] in its own definition!",
2667 Error(
"DefinedVariable",
2668 "The substitution of the alias \"%s\" by \"%s\" failed.",left,
aliasValue);
2719 if (!
fTree)
return -1;
2723 Error(
"TTreeFormula",
"The length of the variable name (%d) exceeds the maximum allowed (%d)",
name.Length(),
kMaxLen);
2728 if (
name ==
"Entry$") {
2734 if (
name ==
"LocalEntry$") {
2740 if (
name ==
"Entries$") {
2748 if (
name ==
"LocalEntries$") {
2756 if (
name ==
"Iteration$") {
2762 if (
name ==
"Length$") {
2768 static const char *
lenfunc =
"Length$(";
2781 static const char *
minfunc =
"Min$(";
2794 static const char *
maxfunc =
"Max$(";
2807 static const char *
sumfunc =
"Sum$(";
2827 if (res<0)
return res;
2844 for(i=0,k=0; i<
cnamelen; ++i, ++k) {
2845 if (
cname[i] ==
'[') {
2871 if (res<0)
return res;
2873 if (!
leaf && res!=2) {
2882 Error(
"DefinedVariable",
2883 "The substitution of the alias \"%s\" by \"%s\" failed\n"\
2884 "\tbecause \"%s\" is recursively used in its own definition!",
2906 Error(
"DefinedVariable",
2907 "The substitution of the alias \"%s\" by \"%s\" failed.",
cname,
aliasValue);
2930 Error(
"Compile",
" Bad numerical expression : \"%s\"",
thisAlias.Data());
2932 Error(
"Compile",
" Part of the Variable \"%s\" exists but some of it is not accessible or useable",
thisAlias.Data());
2935 Error(
"DefinedVariable",
2936 "The substitution of the alias \"%s\" by \"%s\" failed.",
cname,
aliasValue);
2945 if (
leaf || res==2) {
2948 Error(
"DefinedVariable",
"the branch \"%s\" has to be enabled to be used",
leaf->GetBranch()->GetName());
2957 char *current = &(
dims[0] );
2964 if (current[0] ==
']') {
2976 char *end = (
char*)(
varindex.Data());
2998 current = (
char*)
strstr( current,
"[" );
3006 if (res<0)
return res;
3014 if (
gcut->GetObjectX()) {
3016 gcut->SetObjectX(
nullptr);
3018 if (
gcut->GetObjectY()) {
3020 gcut->SetObjectY(
nullptr);
3045 if (
x[
i2] < min) min =
x[
i2];
3046 if (
x[
i2] > max) max =
x[
i2];
3051 formula +=
gcut->GetVarX();
3053 formula +=
gcut->GetVarX();
3065 Error(
"DefinedVariable",
"Found a TCutG without leaf information (%s)",
3109 leafcur->GetBranch()->GetListOfBranches()->Last()==
nullptr) {
3111 cl =
lobj->GetClass();
3114 if (
lElem->IsOnTerminalBranch()) {
3232 else if (
curelem->GetClassPointer() &&
curelem->GetClassPointer()->GetCollectionProxy()) {
3237 sub_cl =
sub_cl->GetCollectionProxy()->GetValueClass();
3280 cl =
lobj->GetClass();
3286 }
else if (
type > 60) {
3292 cl =
element->GetClassPointer();
3320 if (
bc ==
bc->GetMother()) {
3345 Error(
"BranchHasMethod",
"A TClonesArray was stored in a branch type no yet support (i.e. neither TBranchObject nor TBranchElement): %s",
branch->IsA()->GetName());
3418 Error(
"EvalInstance",
"Index %s is out of bound (%d) in formula %s",
3451 Error(
"EvalInstance",
"Index %s is out of bound (%d) in formula %s",
3541 for (
Int_t dim = 1; dim < max_dim; dim++) {
3561 Error(
"EvalInstance",
"Index %s is out of bound (%d/%d) in formula %s",
3594 Error(
"EvalInstance",
"Index %s is of out bound (%d/%d) in formula %s",
3641 if (
info==
nullptr || !
info->IsCompiled()) {
3646 if (
elem==
nullptr) {
3650 return elem->GetClass();
3661 if (!obj)
return nullptr;
3665 default:
return nullptr;
3702 leaf->GetBranch()->GetTree()->GetReadEntry(),
3712 Warning(
"EvalObject",
"Not yet implement for kDirect and arrays (for %s).\nPlease contact the developers",
GetName());
3714 return leaf->GetValuePointer();
3719 default:
return nullptr;
3748 return (
char*)
leaf->GetValuePointer();
3759#define TT_EVAL_INIT \
3760 TLeaf *leaf = (TLeaf*)fLeaves.UncheckedAt(0); \
3762 const Int_t real_instance = GetRealInstance(instance,0); \
3764 if (instance==0) fNeedLoading = true; \
3765 if (real_instance>=fNdata[0]) return TMath::SignalingNaN(); \
3771 if (fNeedLoading) { \
3772 fNeedLoading = false; \
3773 TBranch *br = leaf->GetBranch(); \
3774 if (br && br->GetTree()) { \
3775 Long64_t tentry = br->GetTree()->GetReadEntry(); \
3776 R__LoadBranch(br,tentry,fQuickLoad); \
3778 Error("TTreeFormula::TT_EVAL_INIT", \
3779 "Could not init branch associated to this leaf (%s).", leaf->GetName()); \
3787 if (fLookupType[0]==kDirect) { \
3788 label = (char*)leaf->GetValuePointer(); \
3790 label = (char*)GetLeafInfo(0)->GetValuePointer(leaf,instance); \
3792 Int_t bin = fAxis->FindBin(label); \
3796#define TREE_EVAL_INIT \
3797 const Int_t real_instance = GetRealInstance(instance,0); \
3799 if (real_instance>=fNdata[0]) return TMath::SignalingNaN(); \
3805 label = (char*)GetLeafInfo(0)->GetValuePointer((TLeaf*)0x0,instance); \
3806 Int_t bin = fAxis->FindBin(label); \
3810#define TT_EVAL_INIT_LOOP \
3811 TLeaf *leaf = (TLeaf*)fLeaves.UncheckedAt(code); \
3814 const Int_t real_instance = GetRealInstance(instance,code); \
3817 TBranch *branch = (TBranch*)fBranches.UncheckedAt(code); \
3819 if (branch->GetTree()) { \
3820 Long64_t treeEntry = branch->GetTree()->GetReadEntry(); \
3821 R__LoadBranch(branch,treeEntry,fQuickLoad); \
3823 Error("TTreeFormula::TT_EVAL_INIT_LOOP", \
3824 "Could not init branch associated to this leaf (%s).", leaf->GetName()); \
3826 } else if (fDidBooleanOptimization) { \
3827 branch = leaf->GetBranch(); \
3828 if (branch->GetTree()) { \
3829 Long64_t treeEntry = branch->GetTree()->GetReadEntry(); \
3830 if (branch->GetReadEntry() != treeEntry) branch->GetEntry( treeEntry ); \
3832 Error("TTreeFormula::TT_EVAL_INIT_LOOP", \
3833 "Could not init branch associated to this leaf (%s).", leaf->GetName()); \
3840 if (fDidBooleanOptimization) { \
3841 TBranch *br = leaf->GetBranch(); \
3842 if (br->GetTree()) { \
3843 Long64_t treeEntry = br->GetTree()->GetReadEntry(); \
3844 if (br->GetReadEntry() != treeEntry) br->GetEntry( treeEntry ); \
3846 Error("TTreeFormula::TT_EVAL_INIT_LOOP", \
3847 "Could not init branch associated to this leaf (%s).", leaf->GetName()); \
3851 if (real_instance>=fNdata[code]) return TMath::SignalingNaN();
3853#define TREE_EVAL_INIT_LOOP \
3855 const Int_t real_instance = GetRealInstance(instance,code); \
3857 if (real_instance>=fNdata[code]) return TMath::SignalingNaN();
3863 for (
int i=0; i<
len; ++i) res +=
sum->EvalInstance<T>(i);
3871 res =
arr->EvalInstance<T>(0);
3872 for (
int i=1; i<
len; ++i) {
3873 T val =
arr->EvalInstance<T>(i);
3886 res =
arr->EvalInstance<T>(0);
3887 for (
int i=1; i<
len; ++i) {
3888 T val =
arr->EvalInstance(i);
3904 condval = condition->EvalInstance<T>(i);
3912 arr->EvalInstance<T>(0);
3915 res =
arr->EvalInstance<T>(i-1);
3916 for (; i<
len; ++i) {
3917 condval = condition->EvalInstance<T>(i);
3919 T val =
arr->EvalInstance<T>(i);
3936 condval = condition->EvalInstance<T>(i);
3944 arr->EvalInstance<T>(0);
3947 res =
arr->EvalInstance<T>(i-1);
3948 for (; i<
len; ++i) {
3949 condval = condition->EvalInstance<T>(i);
3951 T val =
arr->EvalInstance<T>(i);
4154 case kAdd : pos--;
tab[pos-1] +=
tab[pos];
continue;
4158 else tab[pos-1] /=
tab[pos];
4194 case ksq :
tab[pos-1] =
tab[pos-1]*
tab[pos-1];
continue;
4201 case kmin : pos--;
tab[pos-1] = std::min(
tab[pos-1],
tab[pos]);
continue;
4202 case kmax : pos--;
tab[pos-1] = std::max(
tab[pos-1],
tab[pos]);
continue;
4205 else {
tab[pos-1] = 0;}
4208 if (
dexp < -700) {
tab[pos-1] = 0;
continue;}
4213 else {
tab[pos-1] = 0;}
4219 case ksign :
if (
tab[pos-1] < 0)
tab[pos-1] = -1;
else tab[pos-1] = 1;
4225 case kAnd : pos--;
if (
tab[pos-1]!=0 &&
tab[pos]!=0)
tab[pos-1]=1;
4228 case kOr : pos--;
if (
tab[pos-1]!=0 ||
tab[pos]!=0)
tab[pos-1]=1;
4232 case kEqual : pos--;
tab[pos-1] = (
tab[pos-1] ==
tab[pos]) ? 1 : 0;
continue;
4234 case kLess : pos--;
tab[pos-1] = (
tab[pos-1] <
tab[pos]) ? 1 : 0;
continue;
4238 case kNot :
tab[pos-1] = (
tab[pos-1] != 0) ? 0 : 1;
continue;
4282 int op = param % 10;
4284 if (
op == 1 && (!
tab[pos-1]) ) {
4293 }
else if (
op == 2 &&
tab[pos-1] ) {
4315 int fno = param / 1000;
4316 int nargs = param % 1000;
4349 switch (lookupType) {
4371 default:
tab[pos++] = 0;
continue;
4413 tab[pos] = param; pos++;
4433 tab[pos] = param; pos++;
4442 tab[pos] = param; pos++;
4458 tab[pos] = param; pos++;
4532template double TTreeFormula::EvalInstance<double> (
int,
char const**);
4533template long double TTreeFormula::EvalInstance<long double> (
int,
char const**);
4534template long long TTreeFormula::EvalInstance<long long> (
int,
char const**);
4600 Warning(
"GetValueFromMethod",
"No streamer info for branch %s.",
branch->GetName());
4604 char* address =
branch->GetObject();
4608 char* address =
branch->GetObject();
4660 Warning(
"GetValuePointerFromMethod",
"No streamer info for branch %s.",
branch->GetName());
4664 char* address =
branch->GetObject();
4668 char* address =
branch->GetObject();
4719 return subform->IsInteger(
false);
4726 if (
fNoper > 1)
return false;
4731 return subform->IsInteger(
false);
4785 if (
fAxis)
return true;
4792 return info->IsInteger();
4796 if (!
strcmp(
leaf->GetTypeName(),
"Int_t"))
return true;
4797 if (!
strcmp(
leaf->GetTypeName(),
"Short_t"))
return true;
4798 if (!
strcmp(
leaf->GetTypeName(),
"UInt_t"))
return true;
4799 if (!
strcmp(
leaf->GetTypeName(),
"UShort_t"))
return true;
4800 if (!
strcmp(
leaf->GetTypeName(),
"Bool_t"))
return true;
4801 if (!
strcmp(
leaf->GetTypeName(),
"Char_t"))
return true;
4802 if (!
strcmp(
leaf->GetTypeName(),
"UChar_t"))
return true;
4803 if (!
strcmp(
leaf->GetTypeName(),
"Long64_t"))
return true;
4804 if (!
strcmp(
leaf->GetTypeName(),
"ULong64_t"))
return true;
4805 if (!
strcmp(
leaf->GetTypeName(),
"string"))
return true;
4840 return info->IsString();
4847 if (
leaf->GetLenStatic() > 1)
return true;
4851 if (
leaf->GetLeafCount()) {
4865 if (
bid < 0)
return false;
4866 if (
br->GetInfo()==
nullptr || !
br->GetInfo()->IsCompiled()) {
4899 return info->IsString();
4935 }
else if (
mode == -1) {
4937 }
else if (
mode == 0) {
4940 const char * val =
nullptr;
4953 val = (
const char*)
leaf->GetValuePointer();
4975 char *
expo =
nullptr;
5041 char *start =
expo - off;
5074 for(
UInt_t dim=0; dim<max_dim ;++dim) {
5084 for(
Int_t k=0; k <=
n; ++k) {
5107 if (!axis) {
fAxis =
nullptr;
return;}
5132 if (
R__b.IsReading()) {
5226 if (
fx)
fx->UpdateFormulaLeaves();
5227 if (
fy)
fy->UpdateFormulaLeaves();
5243 subform->UpdateFormulaLeaves();
5257 subform->UpdateFormulaLeaves();
5327 switch(
subform->GetMultiplicity()) {
5357 if (!
gcut)
continue;
5362 switch(
fx->GetMultiplicity()) {
5370 switch(
fy->GetMultiplicity()) {
5387 if (!
leaf)
continue;
5396 if (
leaf->GetLeafCount()) {
5458 for (i=0; i<
fNoper ; ++i) {
5460 if (
leaf==
nullptr)
continue;
5470 for (
Int_t dim = 0; dim < max_dim; ++dim) {
5484 if (
fCodes[i] < 0)
continue;
5513 if (
tleaf->GetReadEntry() < 0) {
5522 if (
leaf->GetLeafCount()) {
5547 if (
branch->GetAddress() ==
nullptr) {
5662 for(
int z=0; z<
size; ++z) {
5683 }
else if (
leafinfo->GetMultiplicity()==-1) {
5762 for (
int k=0; k<
fNoper; k++) {
5804 if (!
leaf)
return false;
5809 if (
br->GetType()==31) {
5822 }
else if (
br->GetType()==41) {
5827 if ( count->
GetID() >= 0 ) {
5850 }
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
static constexpr Ssiz_t kNPOS
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 SignalingNaN()
Returns a signaling NaN as defined by IEEE 754](http://en.wikipedia.org/wiki/NaN#Signaling_NaN).
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)