139 RooAbsArg(
name,title), _plotMin(0), _plotMax(0), _plotBins(100),
140 _value(0), _unit(unit), _forceNumInt(
kFALSE), _specIntegratorConfig(0), _treeVar(
kFALSE), _selectComp(
kTRUE), _lastNSet(0)
153 Double_t inMaxVal,
const char *unit) :
154 RooAbsArg(
name,title), _plotMin(inMinVal), _plotMax(inMaxVal), _plotBins(100),
155 _value(0), _unit(unit), _forceNumInt(
kFALSE), _specIntegratorConfig(0), _treeVar(
kFALSE), _selectComp(
kTRUE), _lastNSet(0)
167 RooAbsArg(other,
name), _plotMin(other._plotMin), _plotMax(other._plotMax),
168 _plotBins(other._plotBins), _value(other._value), _unit(other._unit), _label(other._label),
169 _forceNumInt(other._forceNumInt), _treeVar(other._treeVar), _selectComp(other._selectComp), _lastNSet(0)
221 return (
getVal()==value) ;
241 if (!assumeSameType) {
257 if(appendUnit && 0 != strlen(
getUnit())) {
314 maxSize = ret.size();
354 <<
"): validation failed: " << value << endl ;
374 const RooArgSet* ,
const char* rangeName)
const
405 if (code==0)
return getVal(normSet) ;
419 coutF(
Eval) <<
"RooAbsReal::analyticalIntegral(" <<
GetName() <<
") code " << code <<
" not implemented" << endl ;
480 os <<
indent <<
"--- RooAbsReal ---" << endl;
570 pc.defineString(
"rangeName",
"RangeWithName",0,
"",
kTRUE) ;
571 pc.defineObject(
"normSet",
"NormSet",0,0) ;
572 pc.defineObject(
"numIntConfig",
"NumIntConfig",0,0) ;
575 pc.process(arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8) ;
581 const char* rangeName =
pc.getString(
"rangeName",0,
kTRUE) ;
606 if (!rangeName || strchr(rangeName,
',')==0) {
616 for (
const std::string& token : tokens) {
618 components.
add(*compIntegral);
622 title.
Prepend(
"Integral of ") ;
650 title.
Prepend(
"Integral of ") ;
675 title.
Prepend(
"Integral of ") ;
684 if (integrand !=
this) {
692 if (integrand ==
this && iset.
getSize()>0) {
693 coutI(
Integration) <<
GetName() <<
" : multidimensional integration over observables with parameterized ranges in terms of other integrated observables detected, using recursive integration strategy to construct final integral" << endl ;
697 integrand = integral ;
705 coutE(
Integration) <<
GetName() <<
" : ERROR while defining recursive integral over observables with parameterized integration ranges, please check that integration rangs specify uniquely defined integral " << endl;
714 if (cacheParamsStr && strlen(cacheParamsStr)) {
722 if (cacheParams->
getSize()>0) {
724 <<
"-dim value cache for integral over " << iset2 <<
" as a function of " << *cacheParams <<
" in range " << (rangeName?rangeName:
"<none>") << endl ;
734 integral = cachedIntegral ;
765 for (
const auto aarg : allObs) {
778 obsWithParamRange.
add(*aarg) ;
779 obsWithFixedRange.
remove(*aarg) ;
780 obsServingAsRangeParams.
add(*loBoundObs,
kFALSE) ;
781 obsServingAsRangeParams.
add(*hiBoundObs,
kFALSE) ;
790 RooArgSet obsWithFixedRangeNP(obsWithFixedRange) ;
791 obsWithFixedRangeNP.
remove(obsServingAsRangeParams) ;
794 RooArgSet obsWithParamRangeNP(obsWithParamRange) ;
795 obsWithParamRangeNP.
remove(obsServingAsRangeParams) ;
799 innerObs.
add(obsWithFixedRangeNP) ;
800 innerObs.
add(obsWithParamRangeNP) ;
817 name.Append(
"_Int[") ;
832 name.Append(rangeName) ;
835 }
else if (!omitEmpty) {
836 name.Append(
"_Int[]") ;
839 if (nset && nset->
getSize()>0 ) {
844 name.Append(
"_Norm[") ;
931 for (
const auto arg : dependentVars) {
932 if(!arg->isFundamental() && !
dynamic_cast<const RooAbsLValue*
>(arg)) {
934 <<
"\" of wrong type: " << arg->ClassName() << endl;
941 <<
"\" is not a dependent and will be ignored." << endl;
946 leafNodes.
replace(*found,*arg);
948 leafNodes.
add(*arg) ;
951 RooArgSet* lvDep = arg->getObservables(&leafNodes) ;
952 for (
const auto lvs : *lvDep) {
956 leafNodes.
add(*lvs) ;
963 if(0 != projectedVars && projectedVars->
find(arg->GetName())) {
965 <<
"\" cannot be both a dependent and a projected variable." << endl;
971 if(0 != projectedVars) leafNodes.
remove(*projectedVars,
kTRUE);
976 coutE(
Plotting) <<
"RooAbsPdf::createPlotProjection(" <<
GetName() <<
") Couldn't deep-clone PDF, abort," << endl ;
989 delete plotLeafNodes ;
993 if(0 != projectedVars) normSet.
add(*projectedVars);
1002 if(0 == projectedVars) projectedVars= ∅
1008 title.
Prepend(
"Projection of ");
1013 if(0 == projected || !projected->
isValid()) {
1017 if(0 != projected)
delete projected;
1022 static_cast<RooRealIntegral*
>(projected)->setAllowComponentSelection(
true);
1065 if(hdim != plotVars.
getSize()) {
1074 for(
Int_t index= 0; index < plotVars.
getSize(); index++) {
1079 <<
"\" of type " << var->
ClassName() << endl;
1084 <<
":fillHistogram: WARNING: variable is not an explicit dependent: " << realVar->
GetName() << endl;
1100 if (projectedVars) {
1101 allDeps.
add(*projectedVars) ;
1115 Int_t xbins(0),ybins(1),zbins(1);
1127 assert(0 != zvar && 0 != zaxis);
1128 if (scaleForDensity) {
1136 assert(0 != yvar && 0 != yaxis);
1137 if (scaleForDensity) {
1145 assert(0 != xvar && 0 != xaxis);
1146 if (scaleForDensity) {
1152 << hdim <<
" dimensions" << endl;
1159 Int_t xbin(0),ybin(0),zbin(0);
1160 Int_t bins= xbins*ybins*zbins;
1161 for(
Int_t bin= 0; bin < bins; bin++) {
1164 if(bin % (xbins*ybins) == 0) {
1170 if(bin % xbins == 0) {
1171 ybin= (ybin%ybins) + 1;
1176 xbin= (xbin%xbins) + 1;
1186 coutW(
Plotting) <<
"WARNING: Function evaluation error(s) at coordinates [x]=" << xvar->
getVal() ;
1259 if (showProgress && (i%onePct==0)) {
1263 Double_t binVal = theClone->
getVal(normSet?normSet:obs)*scaleFactor ;
1264 if (correctForBinSize) {
1296 strlcpy(buf,varNameList,1024) ;
1297 char* varName = strtok(buf,
",:") ;
1302 varName = strtok(0,
",") ;
1304 varName = strtok(0,
",") ;
1396 pc.defineInt(
"scaling",
"Scaling",0,1) ;
1397 pc.defineInt(
"intBinning",
"IntrinsicBinning",0,2) ;
1398 pc.defineInt(
"extended",
"Extended",0,2) ;
1400 pc.defineObject(
"compSet",
"SelectCompSet",0) ;
1401 pc.defineString(
"compSpec",
"SelectCompSpec",0) ;
1402 pc.defineSet(
"projObs",
"ProjectedObservables",0,0) ;
1403 pc.defineObject(
"yvar",
"YVar",0,0) ;
1404 pc.defineObject(
"zvar",
"ZVar",0,0) ;
1405 pc.defineMutex(
"SelectCompSet",
"SelectCompSpec") ;
1406 pc.defineMutex(
"IntrinsicBinning",
"Binning") ;
1407 pc.defineMutex(
"IntrinsicBinning",
"BinningName") ;
1408 pc.defineMutex(
"IntrinsicBinning",
"BinningSpec") ;
1409 pc.allowUndefined() ;
1412 pc.process(argList) ;
1430 Bool_t doScaling =
pc.getInt(
"scaling") ;
1431 Int_t doIntBinning =
pc.getInt(
"intBinning") ;
1432 Int_t doExtended =
pc.getInt(
"extended") ;
1436 if (!pdfSelf && doExtended>0) {
1437 coutW(
InputArguments) <<
"RooAbsReal::createHistogram(" <<
GetName() <<
") WARNING extended mode requested for a non-pdf object, ignored" << endl ;
1441 coutW(
InputArguments) <<
"RooAbsReal::createHistogram(" <<
GetName() <<
") WARNING extended mode requested for a non-extendable pdf, ignored" << endl ;
1444 if (pdfSelf && doExtended==2) {
1448 const char* compSpec =
pc.getString(
"compSpec") ;
1450 Bool_t haveCompSel = ( (compSpec && strlen(compSpec)>0) || compSet) ;
1453 if (doIntBinning>0) {
1458 if (doIntBinning==1) {
1460 <<
") WARNING, intrinsic model binning requested for histogram, but model does not define bin boundaries, reverting to default binning"<< endl ;
1463 if (doIntBinning==2) {
1465 <<
") INFO: Model has intrinsic binning definition, selecting that binning for the histogram"<< endl ;
1468 for (list<double>::iterator it=bl->begin() ; it!=bl->end() ; ++it) { ba[i++] = *it ; }
1469 intBinning =
new RooBinning(bl->size()-1,ba) ;
1475 pc.stripCmdList(argListCreate,
"Scaling,ProjectedObservables,IntrinsicBinning,SelectCompSet,SelectCompSpec,Extended") ;
1480 argListCreate.
Add(&tmp) ;
1499 branchNodeSet.
remove(*arg) ;
1510 if (dirSelNodes->
getSize()>0) {
1511 coutI(
Plotting) <<
"RooAbsPdf::createHistogram(" <<
GetName() <<
") directly selected PDF components: " << *dirSelNodes << endl ;
1517 coutE(
Plotting) <<
"RooAbsPdf::createHistogram(" <<
GetName() <<
") ERROR: component selection set " << *compSet <<
" does not match any components of p.d.f." << endl ;
1519 coutE(
Plotting) <<
"RooAbsPdf::createHistogram(" <<
GetName() <<
") ERROR: component selection expression '" << compSpec <<
"' does not select any components of p.d.f." << endl ;
1523 delete dirSelNodes ;
1559 for (
unsigned int i = 0; i < branchNodeSet.
size(); ++i) {
1560 const auto arg = branchNodeSet[i];
1562 branchNodeSet.
remove(*arg) ;
1569 for (
const auto arg : branchNodeSet) {
1578 for (
const auto arg : branchNodeSet) {
1579 for (
const auto selNode : *selNodes) {
1580 if (selNode->dependsOn(*arg)) {
1587 for (
const auto arg : branchNodeSet) {
1588 if (arg->dependsOn(*selNodes)) {
1593 tmp.
remove(*selNodes,
true);
1596 coutI(
Plotting) <<
"RooAbsPdf::plotOn(" <<
GetName() <<
") indirectly selected PDF components: " << tmp << endl ;
1599 for (
const auto arg : branchNodeSet) {
1600 Bool_t select = selNodes->
find(arg->GetName()) !=
nullptr;
1745 argList.
Add(&rnorm) ;
1747 std::vector<string> rlist;
1751 rlist.emplace_back(rangeNameToken);
1754 for (
const auto& rangeString : rlist) {
1756 rcmd->
setString(0, rangeString.c_str());
1765 pc.defineString(
"drawOption",
"DrawOption",0,
"L") ;
1766 pc.defineString(
"projectionRangeName",
"ProjectionRange",0,
"",
kTRUE) ;
1767 pc.defineString(
"curveNameSuffix",
"CurveNameSuffix",0,
"") ;
1768 pc.defineString(
"sliceCatState",
"SliceCat",0,
"",
kTRUE) ;
1769 pc.defineDouble(
"scaleFactor",
"Normalization",0,1.0) ;
1770 pc.defineInt(
"scaleType",
"Normalization",0,
Relative) ;
1771 pc.defineObject(
"sliceSet",
"SliceVars",0) ;
1772 pc.defineObject(
"sliceCatList",
"SliceCat",0,0,
kTRUE) ;
1773 pc.defineObject(
"projSet",
"Project",0) ;
1774 pc.defineObject(
"asymCat",
"Asymmetry",0) ;
1775 pc.defineDouble(
"precision",
"Precision",0,1
e-3) ;
1776 pc.defineDouble(
"evalErrorVal",
"EvalErrorValue",0,0) ;
1777 pc.defineInt(
"doEvalError",
"EvalErrorValue",0,0) ;
1778 pc.defineInt(
"shiftToZero",
"ShiftToZero",0,0) ;
1779 pc.defineObject(
"projDataSet",
"ProjData",0) ;
1780 pc.defineObject(
"projData",
"ProjData",1) ;
1781 pc.defineObject(
"errorFR",
"VisualizeError",0) ;
1782 pc.defineDouble(
"errorZ",
"VisualizeError",0,1.) ;
1783 pc.defineSet(
"errorPars",
"VisualizeError",0) ;
1784 pc.defineInt(
"linearMethod",
"VisualizeError",0,0) ;
1785 pc.defineInt(
"binProjData",
"ProjData",0,0) ;
1786 pc.defineDouble(
"rangeLo",
"Range",0,-999.) ;
1787 pc.defineDouble(
"rangeHi",
"Range",1,-999.) ;
1788 pc.defineInt(
"numee",
"PrintEvalErrors",0,10) ;
1789 pc.defineInt(
"rangeAdjustNorm",
"Range",0,0) ;
1790 pc.defineInt(
"rangeWNAdjustNorm",
"RangeWithName",0,0) ;
1791 pc.defineInt(
"VLines",
"VLines",0,2) ;
1792 pc.defineString(
"rangeName",
"RangeWithName",0,
"") ;
1793 pc.defineString(
"normRangeName",
"NormRange",0,
"") ;
1794 pc.defineInt(
"markerColor",
"MarkerColor",0,-999) ;
1795 pc.defineInt(
"markerStyle",
"MarkerStyle",0,-999) ;
1796 pc.defineDouble(
"markerSize",
"MarkerSize",0,-999) ;
1797 pc.defineInt(
"lineColor",
"LineColor",0,-999) ;
1798 pc.defineInt(
"lineStyle",
"LineStyle",0,-999) ;
1799 pc.defineInt(
"lineWidth",
"LineWidth",0,-999) ;
1800 pc.defineInt(
"fillColor",
"FillColor",0,-999) ;
1801 pc.defineInt(
"fillStyle",
"FillStyle",0,-999) ;
1802 pc.defineString(
"curveName",
"Name",0,
"") ;
1803 pc.defineInt(
"curveInvisible",
"Invisible",0,0) ;
1804 pc.defineInt(
"showProg",
"ShowProgress",0,0) ;
1805 pc.defineInt(
"numCPU",
"NumCPU",0,1) ;
1806 pc.defineInt(
"interleave",
"NumCPU",1,0) ;
1807 pc.defineString(
"addToCurveName",
"AddTo",0,
"") ;
1808 pc.defineDouble(
"addToWgtSelf",
"AddTo",0,1.) ;
1809 pc.defineDouble(
"addToWgtOther",
"AddTo",1,1.) ;
1810 pc.defineInt(
"moveToBack",
"MoveToBack",0,0) ;
1811 pc.defineMutex(
"SliceVars",
"Project") ;
1812 pc.defineMutex(
"AddTo",
"Asymmetry") ;
1813 pc.defineMutex(
"Range",
"RangeWithName") ;
1814 pc.defineMutex(
"VisualizeError",
"VisualizeErrorData") ;
1817 pc.process(argList) ;
1823 TString drawOpt(
pc.getString(
"drawOption"));
1828 Bool_t linMethod =
pc.getInt(
"linearMethod") ;
1829 if (!drawOpt.
Contains(
"P") && errFR) {
1836 o.
numee =
pc.getInt(
"numee") ;
1846 o.
eeval =
pc.getDouble(
"evalErrorVal") ;
1856 const char* sliceCatState =
pc.getString(
"sliceCatState",0,
kTRUE) ;
1857 const RooLinkedList& sliceCatList =
pc.getObjectList(
"sliceCatList") ;
1858 if (sliceCatState) {
1867 strlcpy(buf,sliceCatState,1024) ;
1868 const char* slabel = strtok(buf,
",") ;
1880 slabel = strtok(0,
",") ;
1887 Int_t vlines =
pc.getInt(
"VLines");
1888 if (
pc.hasProcessed(
"Range")) {
1892 if (vlines==2) vlines=0 ;
1893 }
else if (
pc.hasProcessed(
"RangeWithName")) {
1898 if (vlines==2) vlines=0 ;
1903 if (
pc.hasProcessed(
"NormRange")) {
1924 cxcoutD(
Plotting) <<
"RooAbsReal::plotOn(" <<
GetName() <<
") Preprocessing: have slice " << *sliceSet << endl ;
1934 projectedVars.
remove(*arg) ;
1937 << sliceArg->
GetName() <<
" was not projected anyway" << endl ;
1941 }
else if (projSet) {
1942 cxcoutD(
Plotting) <<
"RooAbsReal::plotOn(" <<
GetName() <<
") Preprocessing: have projSet " << *projSet << endl ;
1945 cxcoutD(
Plotting) <<
"RooAbsReal::plotOn(" <<
GetName() <<
") Preprocessing: have neither sliceSet nor projSet " << endl ;
1950 cxcoutD(
Plotting) <<
"RooAbsReal::plotOn(" <<
GetName() <<
") Preprocessing: projectedVars = " << projectedVars << endl ;
1965 Int_t lineColor =
pc.getInt(
"lineColor") ;
1966 Int_t lineStyle =
pc.getInt(
"lineStyle") ;
1967 Int_t lineWidth =
pc.getInt(
"lineWidth") ;
1968 Int_t markerColor =
pc.getInt(
"markerColor") ;
1969 Int_t markerStyle =
pc.getInt(
"markerStyle") ;
1970 Size_t markerSize =
pc.getDouble(
"markerSize") ;
1971 Int_t fillColor =
pc.getInt(
"fillColor") ;
1972 Int_t fillStyle =
pc.getInt(
"fillStyle") ;
1983 if (
pc.getInt(
"moveToBack") && frame->
numItems()>1) {
2022 projDataVars.
add(*tmp) ;
2045 cxcoutD(
Plotting) <<
"RooAbsReal::plotOn(" <<
GetName() <<
") frame->getNormVars() that are also observables = " << *sliceSetTmp << endl ;
2058 << frame->
getPlotVar()->
GetName() <<
" represents a slice in " << *sliceSetTmp << endl ;
2060 sliceSet.
add(*sliceSetTmp) ;
2061 delete sliceSetTmp ;
2067 cxcoutD(
Plotting) <<
"RooAbsReal::plotOn(" <<
GetName() <<
") projectedVars = " << projectedVars <<
" sliceSet = " << sliceSet << endl ;
2080 if (!plotCloneSet) {
2081 coutE(
Plotting) <<
"RooAbsReal::plotOn(" <<
GetName() <<
") Couldn't deep-clone self, abort," << endl ;
2087 if (projectedVars.
getSize()) {
2089 <<
" integrates over variables " << projectedVars
2092 if (projDataNeededVars && projDataNeededVars->
getSize()>0) {
2094 <<
" averages using data variables " << *projDataNeededVars << endl ;
2102 if (projDataNeededVars) {
2106 deps->
add(*plotVar) ;
2112 coutE(
Plotting) <<
"RooAbsReal::plotOn(" <<
GetName() <<
") error in checkObservables, abort" << endl ;
2114 delete plotCloneSet ;
2115 if (projDataNeededVars)
delete projDataNeededVars ;
2130 fullNormSet.
add(projectedVars) ;
2131 if (projDataNeededVars && projDataNeededVars->
getSize()>0) {
2132 fullNormSet.
add(*projDataNeededVars) ;
2148 if (o.
projData && projDataNeededVars && projDataNeededVars->
getSize()>0) {
2158 if (sliceDataSet->
getSize()>0) {
2179 delete sliceDataSet ;
2181 if (!cutString.
IsNull()) {
2183 coutI(
Plotting) <<
"RooAbsReal::plotOn(" <<
GetName() <<
") reducing given projection dataset to entries with " << cutString << endl ;
2188 <<
") only the following components of the projection data will be used: " << *projDataNeededVars << endl ;
2204 coutI(
Plotting) <<
"RooAbsReal::plotOn(" <<
GetName() <<
") unbinned projection dataset consist only of discrete variables,"
2205 <<
" performing projection with binned copy for optimization." << endl ;
2213 if (projDataSel!=o.
projData)
delete projDataSel ;
2220 projection->
getVal(projDataSel->
get()) ;
2278 if (projDataSel!=o.
projData)
delete projDataSel ;
2361 if (projDataNeededVars)
delete projDataNeededVars ;
2363 delete projectionCompList ;
2364 delete plotCloneSet ;
2386 projectedVars.
remove(*arg) ;
2389 << sliceArg->
GetName() <<
" was not projected anyway" << endl ;
2432 projDataVars.
add(*tmp) ;
2442 <<
") function doesn't depend on asymmetry category " << asymCat.
GetName() << endl ;
2449 <<
") asymmetry category must have 2 or 3 states with index values -1,0,1" << endl ;
2473 << frame->
getPlotVar()->
GetName() <<
" represents a slice in " << *sliceSetTmp << endl ;
2475 sliceSet.
add(*sliceSetTmp) ;
2476 delete sliceSetTmp ;
2500 if (projectedVars.
getSize()) {
2502 <<
" projects variables " << projectedVars << endl ;
2504 if (projDataNeededVars && projDataNeededVars->
getSize()>0) {
2506 <<
" averages using data variables "<< *projDataNeededVars << endl ;
2525 RooArgSet *posProjCompList, *negProjCompList ;
2531 depPos.
add(projDataVars) ;
2532 depNeg.
add(projDataVars) ;
2536 if (!posProj || !negProj) {
2537 coutE(
Plotting) <<
"RooAbsReal::plotAsymOn(" <<
GetName() <<
") Unable to create projections, abort" << endl ;
2543 asymName.
Append(
"_Asym[") ;
2547 asymTitle.
Append(
" Asymmetry of ") ;
2560 if (sliceDataSet->
getSize()>0) {
2581 delete sliceDataSet ;
2583 if (!cutString.
IsNull()) {
2586 <<
") reducing given projection dataset to entries with " << cutString << endl ;
2591 <<
") only the following components of the projection data will be used: " << *projDataNeededVars << endl ;
2601 ((
RooAbsReal*)posProj)->attachDataSet(*projDataSel) ;
2602 ((
RooAbsReal*)negProj)->attachDataSet(*projDataSel) ;
2636 if (projDataSel!=o.
projData)
delete projDataSel ;
2675 delete posProjCompList ;
2676 delete negProjCompList ;
2708 fpf_stripped.
add(*frv);
2722 vector<int> fpf_idx;
2726 paramList.
add(*par);
2727 fpf_idx.push_back(i);
2731 vector<Double_t> plusVar, minusVar ;
2738 for (
Int_t ivar=0 ; ivar<paramList.
getSize() ; ivar++) {
2746 ((
RooRealVar*)paramList.
at(ivar))->setVal(cenVal+errVal) ;
2747 plusVar.push_back(cloneFunc->
getVal(nset)) ;
2750 ((
RooRealVar*)paramList.
at(ivar))->setVal(cenVal-errVal) ;
2751 minusVar.push_back(cloneFunc->
getVal(nset)) ;
2757 vector<double> errVec(paramList.
getSize()) ;
2758 for (
int i=0 ; i<paramList.
getSize() ; i++) {
2759 errVec[i] =
sqrt(V(i,i)) ;
2760 for (
int j=i ; j<paramList.
getSize() ; j++) {
2761 C(i,j) = V(i,j)/
sqrt(V(i,i)*V(j,j)) ;
2768 for (
unsigned int j=0 ; j<plusVar.size() ; j++) {
2769 F[j] = (plusVar[j]-minusVar[j])/2 ;
2776 delete errorParams ;
2828 pc.stripCmdList(plotArgListTmp,
"VisualizeError,MoveToBack") ;
2835 if (std::string(
"Normalization")==cmd->
GetName()) {
2838 plotArgList.
Add(cmd) ;
2841 plotArgList.
Add(cmd) ;
2872 coutI(
Plotting) <<
"RooAbsReal::plotOn(" <<
GetName() <<
") INFO: visualizing " << Z <<
"-sigma uncertainties in parameters "
2873 << *errorParams <<
" from fit result " << fr.
GetName() <<
" using " <<
n <<
" samplings." << endl ;
2879 vector<RooCurve*> cvec ;
2880 for (
int i=0 ; i<
d->numEntries() ; i++) {
2881 *cloneParams = (*
d->get(i)) ;
2883 cloneFunc->
plotOn(frame,tmp2) ;
2884 cvec.push_back(frame->
getCurve()) ;
2897 for (vector<RooCurve*>::iterator i=cvec.begin() ; i!=cvec.end() ; ++i) {
2919 fpf_stripped.
add(*frv);
2932 vector<int> fpf_idx ;
2936 paramList.add(*par) ;
2937 fpf_idx.push_back(i) ;
2941 vector<RooCurve*> plusVar, minusVar ;
2950 for (
Int_t ivar=0 ; ivar<paramList.getSize() ; ivar++) {
2958 ((
RooRealVar*)paramList.at(ivar))->setVal(cenVal+Z*errVal) ;
2962 cloneFunc->
plotOn(frame,tmp2) ;
2963 plusVar.push_back(frame->
getCurve()) ;
2968 ((
RooRealVar*)paramList.at(ivar))->setVal(cenVal-Z*errVal) ;
2970 cloneFunc->
plotOn(frame,tmp3) ;
2971 minusVar.push_back(frame->
getCurve()) ;
2974 ((
RooRealVar*)paramList.at(ivar))->setVal(cenVal) ;
2978 vector<double> errVec(paramList.getSize()) ;
2979 for (
int i=0 ; i<paramList.getSize() ; i++) {
2980 errVec[i] =
sqrt(V(i,i)) ;
2981 for (
int j=i ; j<paramList.getSize() ; j++) {
2982 C(i,j) = V(i,j)/
sqrt(V(i,i)*V(j,j)) ;
2992 for (vector<RooCurve*>::iterator i=plusVar.begin() ; i!=plusVar.end() ; ++i) {
2995 for (vector<RooCurve*>::iterator i=minusVar.begin() ; i!=minusVar.end() ; ++i) {
3002 if (!band)
return frame ;
3005 pc.defineString(
"drawOption",
"DrawOption",0,
"F") ;
3006 pc.defineString(
"curveNameSuffix",
"CurveNameSuffix",0,
"") ;
3007 pc.defineInt(
"lineColor",
"LineColor",0,-999) ;
3008 pc.defineInt(
"lineStyle",
"LineStyle",0,-999) ;
3009 pc.defineInt(
"lineWidth",
"LineWidth",0,-999) ;
3010 pc.defineInt(
"markerColor",
"MarkerColor",0,-999) ;
3011 pc.defineInt(
"markerStyle",
"MarkerStyle",0,-999) ;
3012 pc.defineDouble(
"markerSize",
"MarkerSize",0,-999) ;
3013 pc.defineInt(
"fillColor",
"FillColor",0,-999) ;
3014 pc.defineInt(
"fillStyle",
"FillStyle",0,-999) ;
3015 pc.defineString(
"curveName",
"Name",0,
"") ;
3016 pc.defineInt(
"curveInvisible",
"Invisible",0,0) ;
3017 pc.defineInt(
"moveToBack",
"MoveToBack",0,0) ;
3018 pc.allowUndefined() ;
3021 pc.process(argList) ;
3027 frame->
addPlotable(band,
pc.getString(
"drawOption"),
pc.getInt(
"curveInvisible")) ;
3030 Int_t lineColor =
pc.getInt(
"lineColor") ;
3031 Int_t lineStyle =
pc.getInt(
"lineStyle") ;
3032 Int_t lineWidth =
pc.getInt(
"lineWidth") ;
3033 Int_t markerColor =
pc.getInt(
"markerColor") ;
3034 Int_t markerStyle =
pc.getInt(
"markerStyle") ;
3035 Size_t markerSize =
pc.getDouble(
"markerSize") ;
3036 Int_t fillColor =
pc.getInt(
"fillColor") ;
3037 Int_t fillStyle =
pc.getInt(
"fillStyle") ;
3048 if (
pc.getString(
"curveName",0,
kTRUE)) {
3050 }
else if (
pc.getString(
"curveNameSuffix",0,
kTRUE)) {
3052 name.Append(
pc.getString(
"curveNameSuffix",0,
kTRUE)) ;
3057 if (
pc.getInt(
"moveToBack") && frame->
numItems()>1) {
3083 <<
":plotOn: frame does not specify a plot variable" << endl;
3118 <<
" allVars = " << (allVars?(*allVars):
RooArgSet()) << endl ;
3121 if (!allVars) return ;
3124 projectedVars.
add(*allVars) ;
3129 projectedVars.
remove(*found);
3139 <<
" from projection set because it a server of " << plotVar->
GetName() << endl ;
3140 projectedVars.
remove(*tmp) ;
3144 delete plotServers ;
3148 <<
") WARNING: cannot project out frame variable ("
3149 << found->
GetName() <<
"), ignoring" << endl ;
3161 <<
") function doesn't depend on projection variable "
3162 << arg->
GetName() <<
", ignoring" << endl ;
3201 if(binding && !binding->
isValid()) {
3218 auto other =
static_cast<const RooAbsReal*
>(source);
3219 assert(
dynamic_cast<const RooAbsReal*
>(source));
3221 if (!other->_treeVar) {
3225 _value = other->_floatValue ;
3226 }
else if (source->
getAttribute(
"INTEGER_TREE_BRANCH")) {
3227 _value = other->_intValue ;
3229 _value = other->_byteValue ;
3231 _value = other->_boolValue ;
3232 }
else if (source->
getAttribute(
"SIGNEDBYTE_TREE_BRANCH")) {
3233 _value = other->_sbyteValue ;
3234 }
else if (source->
getAttribute(
"UNSIGNED_INTEGER_TREE_BRANCH")) {
3235 _value = other->_uintValue ;
3285 <<
" is an array and cannot be attached to a RooAbsReal" << endl ;
3293 <<
" will be converted to double precision" << endl ;
3297 }
else if (!typeName.
CompareTo(
"Int_t")) {
3299 <<
" will be converted to double precision" << endl ;
3303 }
else if (!typeName.
CompareTo(
"UChar_t")) {
3305 <<
" will be converted to double precision" << endl ;
3309 }
else if (!typeName.
CompareTo(
"Bool_t")) {
3311 <<
" will be converted to double precision" << endl ;
3315 }
else if (!typeName.
CompareTo(
"Char_t")) {
3317 <<
" will be converted to double precision" << endl ;
3321 }
else if (!typeName.
CompareTo(
"UInt_t")) {
3323 <<
" will be converted to double precision" << endl ;
3327 }
else if (!typeName.
CompareTo(
"Double_t")) {
3330 coutE(
InputArguments) <<
"RooAbsReal::attachToTree(" <<
GetName() <<
") data type " << typeName <<
" is not supported" << endl ;
3496 const TList &nameList)
const
3505 matched.
add(*found);
3519 if(isMatched) matchedArgs.
add(matched);
3568 if (config)
return config ;
3581 if (config)
return config ;
3683 if (inLogEvalError) {
3686 inLogEvalError =
kTRUE ;
3691 if (serverValueString) {
3696 oocoutE((
TObject*)0,
Eval) <<
"RooAbsReal::logEvalError(" <<
"<STATIC>" <<
") evaluation error, " << endl
3697 <<
" origin : " << origName << endl
3698 <<
" message : " << ee.
_msg << endl
3699 <<
" server values: " << ee.
_srvval << endl ;
3706 inLogEvalError =
kFALSE ;
3738 if (inLogEvalError) {
3741 inLogEvalError =
kTRUE ;
3746 if (serverValueString) {
3766 ostringstream oss2 ;
3770 coutE(
Eval) <<
"RooAbsReal::logEvalError(" <<
GetName() <<
") evaluation error, " << endl
3771 <<
" origin : " << oss2.str() << endl
3772 <<
" message : " << ee.
_msg << endl
3773 <<
" server values: " << ee.
_srvval << endl ;
3782 <<
") delayed evaluation error, " << endl
3783 <<
" origin : " << oss2.str() << endl
3784 <<
" message : " << oee.
_msg << endl
3785 <<
" server values: " << oee.
_srvval << endl ;
3792 inLogEvalError =
kFALSE ;
3828 if (maxPerNode<0) return ;
3830 map<const RooAbsArg*,pair<string,list<EvalError> > >::iterator iter =
_evalErrorList.begin() ;
3833 if (maxPerNode==0) {
3836 os << iter->second.first ;
3838 os <<
" has " << iter->second.second.size() <<
" errors" << endl ;
3843 os << iter->second.first << endl ;
3847 std::list<EvalError>::iterator iter2 = iter->second.second.begin() ;
3848 for(;iter2!=iter->second.second.end() ; ++iter2, i++) {
3849 os <<
" " << iter2->_msg <<
" @ " << iter2->_srvval << endl ;
3851 os <<
" ... (remaining " << iter->second.second.size() - maxPerNode <<
" messages suppressed)" << endl ;
3871 map<const RooAbsArg*,pair<string,list<EvalError> > >::iterator iter =
_evalErrorList.begin() ;
3873 ntot += iter->second.second.size() ;
3948 orderedObs.
add(obs) ;
4006 pc.defineObject(
"supNormSet",
"SupNormSet",0,0) ;
4007 pc.defineInt(
"numScanBins",
"ScanParameters",0,1000) ;
4008 pc.defineInt(
"intOrder",
"ScanParameters",1,2) ;
4009 pc.defineInt(
"doScanNum",
"ScanNum",0,1) ;
4010 pc.defineInt(
"doScanAll",
"ScanAll",0,0) ;
4011 pc.defineInt(
"doScanNon",
"ScanNone",0,0) ;
4012 pc.defineMutex(
"ScanNum",
"ScanAll",
"ScanNone") ;
4015 pc.process(arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8) ;
4026 Int_t numScanBins =
pc.getInt(
"numScanBins") ;
4027 Int_t intOrder =
pc.getInt(
"intOrder") ;
4028 Int_t doScanNum =
pc.getInt(
"doScanNum") ;
4029 Int_t doScanAll =
pc.getInt(
"doScanAll") ;
4030 Int_t doScanNon =
pc.getInt(
"doScanNon") ;
4045 coutI(
NumIntegration) <<
"RooAbsPdf::createRunningIntegral(" <<
GetName() <<
") integration over observable(s) " << iset <<
" involves numeric integration," << endl
4046 <<
" constructing cdf though numeric integration of sampled pdf in " << numScanBins <<
" bins and applying order "
4047 << intOrder <<
" interpolation on integrated histogram." << endl
4048 <<
" To override this choice of technique use argument ScanNone(), to change scan parameters use ScanParameters(nbins,order) argument" << endl ;
4066 ivar->
setBins(numScanBins,
"numcdf") ;
4110 cloneList.
add(*cloneArg) ;
4116 loList.
add(*cloneLo) ;
4149 coutE(
InputArguments) <<
"RooAbsReal::functor(" <<
GetName() <<
") ERROR: one or more specified observables are not variables of this p.d.f" << endl ;
4155 coutE(
InputArguments) <<
"RooAbsReal::functor(" <<
GetName() <<
") ERROR: one or more specified parameters are not variables of this p.d.f" << endl ;
4176 coutE(
InputArguments) <<
"RooAbsReal::functor(" <<
GetName() <<
") ERROR: one or more specified observables are not variables of this p.d.f" << endl ;
4182 coutE(
InputArguments) <<
"RooAbsReal::functor(" <<
GetName() <<
") ERROR: one or more specified parameters are not variables of this p.d.f" << endl ;
4190 for (
int i=0 ; i<obs.
getSize() ; i++) {
4196 for (
int i=0 ; i<pars.
getSize() ; i++) {
4230 <<
" observables specified, but a ROOT TFx can only have 1,2 or 3 observables" << endl ;
4235 for (
int i=0 ; i<pars.
getSize() ; i++) {
4265 return new RooDerivative(
name.c_str(),title.c_str(),*
this,obs,normSet,order,eps) ;
4280 string title=
Form(
"%sMoment of order %d of %s w.r.t %s ",(central?
"Central ":
""),order,
GetName(),obs.
GetName()) ;
4282 if (order==2)
return new RooSecondMoment(
name.c_str(),title.c_str(),*
this,obs,central,takeRoot) ;
4283 return new RooMoment(
name.c_str(),title.c_str(),*
this,obs,order,central,takeRoot) ;
4299 string title=
Form(
"%sMoment of order %d of %s w.r.t %s ",(central?
"Central ":
""),order,
GetName(),obs.
GetName()) ;
4301 if (order==1)
return new RooFirstMoment(
name.c_str(),title.c_str(),*
this,obs,normObs,intNormObs) ;
4302 if (order==2)
return new RooSecondMoment(
name.c_str(),title.c_str(),*
this,obs,normObs,central,takeRoot,intNormObs) ;
4303 return new RooMoment(
name.c_str(),title.c_str(),*
this,obs,normObs,order,central,takeRoot,intNormObs) ;
4403 RooLinkedList chi2CmdList =
pc.filterCmdList(fitCmdList,
"Range,RangeWithName,NumCPU,Optimize") ;
4436 return new RooChi2Var(
name.c_str(),
name.c_str(),*
this,data,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8) ;
4461 return createChi2(data,*cmds[0],*cmds[1],*cmds[2],*cmds[3],*cmds[4],*cmds[5],*cmds[6],*cmds[7]) ;
4527 RooLinkedList chi2CmdList =
pc.filterCmdList(fitCmdList,
"YVar,Integrate") ;
4576 pc.defineInt(
"integrate",
"Integrate",0,0) ;
4577 pc.defineObject(
"yvar",
"YVar",0,0) ;
4580 pc.process(cmdList) ;
4586 Bool_t integrate =
pc.getInt(
"integrate") ;
4611 pc.defineString(
"fitOpt",
"FitOptions",0,
"") ;
4613 pc.defineInt(
"optConst",
"Optimize",0,1) ;
4614 pc.defineInt(
"verbose",
"Verbose",0,0) ;
4615 pc.defineInt(
"doSave",
"Save",0,0) ;
4616 pc.defineInt(
"doTimer",
"Timer",0,0) ;
4617 pc.defineInt(
"plevel",
"PrintLevel",0,1) ;
4618 pc.defineInt(
"strat",
"Strategy",0,1) ;
4619 pc.defineInt(
"initHesse",
"InitialHesse",0,0) ;
4620 pc.defineInt(
"hesse",
"Hesse",0,1) ;
4621 pc.defineInt(
"minos",
"Minos",0,0) ;
4622 pc.defineInt(
"ext",
"Extended",0,2) ;
4623 pc.defineInt(
"numee",
"PrintEvalErrors",0,10) ;
4624 pc.defineInt(
"doWarn",
"Warnings",0,1) ;
4625 pc.defineString(
"mintype",
"Minimizer",0,
"Minuit") ;
4626 pc.defineString(
"minalg",
"Minimizer",1,
"minuit") ;
4627 pc.defineObject(
"minosSet",
"Minos",0,0) ;
4629 pc.defineMutex(
"FitOptions",
"Verbose") ;
4630 pc.defineMutex(
"FitOptions",
"Save") ;
4631 pc.defineMutex(
"FitOptions",
"Timer") ;
4632 pc.defineMutex(
"FitOptions",
"Strategy") ;
4633 pc.defineMutex(
"FitOptions",
"InitialHesse") ;
4634 pc.defineMutex(
"FitOptions",
"Hesse") ;
4635 pc.defineMutex(
"FitOptions",
"Minos") ;
4638 pc.process(cmdList) ;
4644 const char* fitOpt =
pc.getString(
"fitOpt",0,
kTRUE) ;
4645#ifdef __ROOFIT_NOROOMINIMIZER
4646 const char* minType =0 ;
4648 const char* minType =
pc.getString(
"mintype",
"Minuit") ;
4649 const char* minAlg =
pc.getString(
"minalg",
"minuit") ;
4651 Int_t optConst =
pc.getInt(
"optConst") ;
4653 Int_t doSave =
pc.getInt(
"doSave") ;
4654 Int_t doTimer =
pc.getInt(
"doTimer") ;
4655 Int_t plevel =
pc.getInt(
"plevel") ;
4656 Int_t strat =
pc.getInt(
"strat") ;
4657 Int_t initHesse=
pc.getInt(
"initHesse") ;
4658 Int_t hesse =
pc.getInt(
"hesse") ;
4659 Int_t minos =
pc.getInt(
"minos") ;
4660 Int_t numee =
pc.getInt(
"numee") ;
4661 Int_t doWarn =
pc.getInt(
"doWarn") ;
4666#ifdef __ROOFIT_NOROOMINIMIZER
4669 if (
"OldMinuit" ==
string(minType)) {
4678 m.setPrintEvalErrors(numee) ;
4680 m.setPrintLevel(plevel) ;
4685 m.optimizeConst(optConst);
4691 ret =
m.fit(fitOpt) ;
4706 m.setStrategy(strat) ;
4725 m.minos(*minosSet) ;
4734 string title =
Form(
"Result of fit of %s ",
GetName()) ;
4735 ret =
m.save(
name.c_str(),title.c_str()) ;
4740#ifndef __ROOFIT_NOROOMINIMIZER
4743 m.setMinimizerType(minType);
4749 m.setPrintEvalErrors(numee) ;
4751 m.setPrintLevel(plevel) ;
4756 m.optimizeConst(optConst);
4762 ret =
m.fit(fitOpt) ;
4777 m.setStrategy(strat) ;
4786 m.minimize(minType, minAlg) ;
4796 m.minos(*minosSet) ;
4805 string title =
Form(
"Result of fit of %s ",
GetName()) ;
4806 ret =
m.save(
name.c_str(),title.c_str()) ;
4848 while((arg=iter.
next())) {
4851 <<
") function does not depend on listed parameter " << arg->
GetName() <<
", ignoring" << endl ;
4854 if (plist.size()>0) plist +=
":" ;
4876 coutI(
Optimization) <<
"The class " << IsA()->GetName() <<
" does not have the faster batch evaluation interface."
4877 <<
" Consider requesting this feature on ROOT's JIRA tracker." << std::endl;
4882 std::vector<std::tuple<RooRealVar*, RooSpan<const double>,
double>> batchLeafs;
4883 for (
auto leaf : allLeafs) {
4884 auto leafRRV =
dynamic_cast<RooRealVar*
>(leaf);
4888 auto leafBatch = leafRRV->
getValBatch(begin, maxSize);
4889 if (leafBatch.empty())
4892 maxSize = std::min(maxSize, leafBatch.size());
4893 batchLeafs.emplace_back(leafRRV, leafBatch, leafRRV->_value);
4896 if (batchLeafs.empty() || maxSize == 0)
4902 for (std::size_t i = 0; i <
output.size(); ++i) {
4903 for (
auto& tup : batchLeafs) {
4905 auto batch = std::get<1>(tup);
4914 for (
auto& tup : batchLeafs) {
4915 std::get<0>(tup)->setVal(std::get<2>(tup));
4933 const bool tmpFast =
_fast;
4934 const double tmp =
_value;
4936 double fullEval = 0.;
4938 fullEval =
getValV(normalisationSet);
4947 if (std::isfinite(ret) && ( ret != 0. ? (ret - fullEval)/ret : ret - fullEval) > 1.E-9) {
4950 formatter <<
"--> (Scalar computation wrong here:)\n"
4951 <<
GetName() <<
" " <<
this <<
" _fast=" << tmpFast
4952 <<
"\n\tcached _value=" << std::setprecision(16) << tmp
4953 <<
"\n\treturning =" << ret
4954 <<
"\n\trecomputed =" << fullEval
4955 <<
"\n\tnew _value =" <<
_value <<
"] ";
4956 formatter <<
"\nServers:";
4972 auto realServer =
dynamic_cast<RooAbsReal*
>(server);
4984 const double batchVal = batch[0];
4989 formatter <<
"--> (Batch computation wrong here:)\n";
4991 formatter << std::setprecision(17)
4992 <<
"\n _batch[" << std::setw(7) << evtNo-1 <<
"]= " << (enclosingBatch.
empty() ? 0 : enclosingBatch[0])
4993 <<
"\n _batch[" << std::setw(7) << evtNo <<
"]= " << batchVal <<
" !!!"
4994 <<
"\n expected ('_value'): " <<
_value
4995 <<
"\n delta " <<
" = " <<
_value - batchVal
4996 <<
"\n rel delta " <<
" = " << relDiff
4997 <<
"\n _batch[" << std::setw(7) << evtNo+1 <<
"]= " << (enclosingBatch.
empty() ? 0 : enclosingBatch[2]);
4999 formatter <<
"\n" << std::left << std::setw(24) <<
"evaluate(unnorm.)" <<
'=' <<
evaluate();
5001 formatter <<
"\nServers: ";
5003 formatter <<
"\n - ";
5005 formatter << std::setprecision(17);
5007 auto serverAsReal =
dynamic_cast<RooAbsReal*
>(server);
5011 if (!theBatch.
empty()) {
5012 formatter <<
"\n _batch[" << evtNo-1 <<
"]=" << theBatch[0]
5013 <<
"\n _batch[" << evtNo <<
"]=" << theBatch[1]
5014 <<
"\n _batch[" << evtNo+1 <<
"]=" << theBatch[2];
5017 formatter << std::setprecision(17)
5018 <<
"\n getVal()=" << serverAsReal->getVal(normSet);
static RooMathCoreReg dummy
static void indent(ostringstream &buf, int indent_level)
char * Form(const char *fmt,...)
R__EXTERN TSystem * gSystem
Status_t status(std::size_t begin, std::size_t size) const
Return the status of the batch starting at begin.
RooSpan< const double > getBatch(std::size_t begin, std::size_t batchSize) const
bool setStatus(std::size_t begin, std::size_t size, Status_t stat)
Set the status of a batch with the given start point and size.
void print(std::ostream &os, const std::string &indent) const
Print to given output stream.
void markDirty()
Mark all batches dirty. This will trigger recomputations.
void attachForeignStorage(const std::vector< double > &vec)
Attach a foreign storage. Batches coming from this storage will be read only.
RooSpan< double > makeWritableBatchUnInit(std::size_t begin, std::size_t batchSize)
Make a batch and return a span pointing to the pdf-local memory.
RooAbsArg is the common abstract base class for objects that represent a value (of arbitrary type) an...
virtual Bool_t checkObservables(const RooArgSet *nset) const
Overloadable function in which derived classes can implement consistency checks of the variables.
virtual RooAbsArg * cloneTree(const char *newname=0) const
Clone tree expression of objects.
RooArgSet * getObservables(const RooArgSet &set, Bool_t valueOnly=kTRUE) const
Return the observables of this pdf given a set of observables.
void setShapeDirty()
Notify that a shape-like property (e.g. binning) has changed.
Bool_t dependsOn(const RooAbsCollection &serverList, const RooAbsArg *ignoreArg=0, Bool_t valueOnly=kFALSE) const
Test whether we depend on (ie, are served by) any object in the specified collection.
void setStringAttribute(const Text_t *key, const Text_t *value)
Associate string 'value' to this object under key 'key'.
void leafNodeServerList(RooAbsCollection *list, const RooAbsArg *arg=0, Bool_t recurseNonDerived=kFALSE) const
Fill supplied list with all leaf nodes of the arg tree, starting with ourself as top node.
virtual void printMultiline(std::ostream &os, Int_t contents, Bool_t verbose=kFALSE, TString indent="") const
Implement multi-line detailed printing.
virtual TObject * Clone(const char *newname=0) const
Make a clone of an object using the Streamer facility.
const Text_t * getStringAttribute(const Text_t *key) const
Get string attribute mapped under key 'key'.
void treeNodeServerList(RooAbsCollection *list, const RooAbsArg *arg=0, Bool_t doBranch=kTRUE, Bool_t doLeaf=kTRUE, Bool_t valueOnly=kFALSE, Bool_t recurseNonDerived=kFALSE) const
Fill supplied list with nodes of the arg tree, following all server links, starting with ourself as t...
RooArgSet * getParameters(const RooAbsData *data, Bool_t stripDisconnected=kTRUE) const
Create a list of leaf nodes in the arg tree starting with ourself as top node that don't match any of...
void setAttribute(const Text_t *name, Bool_t value=kTRUE)
Set (default) or clear a named boolean attribute of this object.
RooArgSet * getVariables(Bool_t stripDisconnected=kTRUE) const
Return RooArgSet with all variables (tree leaf nodes of expresssion tree)
static Bool_t _inhibitDirty
void setOperMode(OperMode mode, Bool_t recurseADirty=kTRUE)
Change cache operation mode to given mode.
OperMode _operMode
Mark batches as dirty (only meaningful for RooAbsReal).
void setValueDirty()
Mark the element dirty. This forces a re-evaluation when a value is requested.
Bool_t addOwnedComponents(const RooArgSet &comps)
Take ownership of the contents of 'comps'.
TString cleanBranchName() const
Construct a mangled name from the actual name that is free of any math symbols that might be interpre...
Int_t numProxies() const
Return the number of registered proxies.
Bool_t getAttribute(const Text_t *name) const
Check if a named attribute is set. By default, all attributes are unset.
friend class RooCustomizer
Bool_t dependsOnValue(const RooAbsCollection &serverList, const RooAbsArg *ignoreArg=0) const
void setProxyNormSet(const RooArgSet *nset)
Forward a change in the cached normalization argset to all the registered proxies.
RooAbsProxy * getProxy(Int_t index) const
Return the nth proxy from the proxy list.
RooAbsArg & operator=(const RooAbsArg &other)
Assign all boolean and string properties of the original object.
Bool_t isValueDirtyAndClear() const
RefCountList_t _serverList
RooArgSet * getComponents() const
void branchNodeServerList(RooAbsCollection *list, const RooAbsArg *arg=0, Bool_t recurseNonDerived=kFALSE) const
Fill supplied list with all branch nodes of the arg tree starting with ourself as top node.
Bool_t recursiveRedirectServers(const RooAbsCollection &newServerList, Bool_t mustReplaceAll=kFALSE, Bool_t nameChange=kFALSE, Bool_t recurseInNewSet=kTRUE)
void attachDataSet(const RooAbsData &set)
Replace server nodes with names matching the dataset variable names with those data set variables,...
void SetName(const char *name)
Set the name of the TNamed.
OperMode operMode() const
RooAbsBinning is the abstract base class for RooRealVar binning definitions This class defines the in...
virtual Bool_t isParameterized() const
virtual RooAbsReal * highBoundFunc() const
virtual RooAbsReal * lowBoundFunc() const
void setInterpolationOrder(Int_t order)
Set interpolation order of RooHistFunct representing cache histogram.
RooAbsCategoryLValue is the common abstract base class for objects that represent a discrete value th...
virtual Bool_t setIndex(Int_t index, Bool_t printError=kTRUE)=0
virtual Int_t getIndex() const
Return index number of current state.
Bool_t isSignType(Bool_t mustHaveZero=kFALSE) const
Determine if category has 2 or 3 states with index values -1,0,1.
RooFIter fwdIterator() const R__SUGGEST_ALTERNATIVE("begin()
One-time forward iterator.
virtual void removeAll()
Remove all arguments from our set, deleting them if we own them.
RooAbsCollection * selectCommon(const RooAbsCollection &refColl) const
Create a subset of the current collection, consisting only of those elements that are contained as we...
virtual Bool_t replace(const RooAbsArg &var1, const RooAbsArg &var2)
Replace var1 with var2 and return kTRUE for success.
void sort(Bool_t reverse=false)
Sort collection using std::sort and name comparison.
virtual TObject * Clone(const char *newname=0) const
Make a clone of an object using the Streamer facility.
virtual Bool_t add(const RooAbsArg &var, Bool_t silent=kFALSE)
Add the specified argument to list.
Storage_t::size_type size() const
RooAbsArg * first() const
RooAbsCollection * selectByName(const char *nameList, Bool_t verbose=kFALSE) const
Create a subset of the current collection, consisting only of those elements with names matching the ...
Bool_t overlaps(const RooAbsCollection &otherColl) const
Check if this and other collection have common entries.
std::string contentsString() const
Return comma separated list of contained object names as STL string.
TIterator * createIterator(Bool_t dir=kIterForward) const R__SUGGEST_ALTERNATIVE("begin()
TIterator-style iteration over contained elements.
virtual Bool_t remove(const RooAbsArg &var, Bool_t silent=kFALSE, Bool_t matchByNameOnly=kFALSE)
Remove the specified argument from our list.
RooAbsArg * find(const char *name) const
Find object with given name in list.
RooAbsData is the common abstract base class for binned and unbinned datasets.
virtual const RooArgSet * get() const
RooAbsData * reduce(const RooCmdArg &arg1, const RooCmdArg &arg2=RooCmdArg(), const RooCmdArg &arg3=RooCmdArg(), const RooCmdArg &arg4=RooCmdArg(), const RooCmdArg &arg5=RooCmdArg(), const RooCmdArg &arg6=RooCmdArg(), const RooCmdArg &arg7=RooCmdArg(), const RooCmdArg &arg8=RooCmdArg())
Create a reduced copy of this dataset.
Abstract interface for evaluating a real-valued function of one real variable and performing numerica...
Abstract base class for objects that are lvalues, i.e.
RooAbsMoment represents the first, second, or third order derivative of any RooAbsReal as calculated ...
void constOptimizeTestStatistic(ConstOpCode opcode, Bool_t doAlsoTrackingOpt=kTRUE)
Driver function to propagate constant term optimizations in test statistic.
const char * normRange() const
virtual Double_t expectedEvents(const RooArgSet *nset) const
Return expected number of events from this p.d.f for use in extended likelihood calculations.
virtual ExtendMode extendMode() const
RooAbsProxy is the abstact interface for proxy classes.
virtual void print(std::ostream &os, Bool_t addContents=kFALSE) const
Print proxy name.
RooAbsRealLValue is the common abstract base class for objects that represent a real value that may a...
virtual Double_t getMax(const char *name=0) const
Get maximum of currently defined range.
virtual const RooAbsBinning & getBinning(const char *name=0, Bool_t verbose=kTRUE, Bool_t createOnTheFly=kFALSE) const =0
Retrive binning configuration with given name or default binning.
TH1 * createHistogram(const char *name, const RooCmdArg &arg1=RooCmdArg::none(), const RooCmdArg &arg2=RooCmdArg::none(), const RooCmdArg &arg3=RooCmdArg::none(), const RooCmdArg &arg4=RooCmdArg::none(), const RooCmdArg &arg5=RooCmdArg::none(), const RooCmdArg &arg6=RooCmdArg::none(), const RooCmdArg &arg7=RooCmdArg::none(), const RooCmdArg &arg8=RooCmdArg::none()) const
virtual Double_t getMin(const char *name=0) const
Get miniminum of currently defined range.
void setServerValues(const char *tmp)
void setMessage(const char *tmp)
RooAbsReal is the common abstract base class for objects that represent a real value and implements f...
void plotOnCompSelect(RooArgSet *selNodes) const
Helper function for plotting of composite p.d.fs.
RooGenFunction * iGenFunction(RooRealVar &x, const RooArgSet &nset=RooArgSet())
virtual RooPlot * plotSliceOn(RooPlot *frame, const RooArgSet &sliceSet, Option_t *drawOptions="L", Double_t scaleFactor=1.0, ScaleType stype=Relative, const RooAbsData *projData=0) const
virtual Bool_t readFromStream(std::istream &is, Bool_t compact, Bool_t verbose=kFALSE)
Read object contents from stream (dummy for now)
virtual Bool_t isIdentical(const RooAbsArg &other, Bool_t assumeSameType=kFALSE)
TH1 * fillHistogram(TH1 *hist, const RooArgList &plotVars, Double_t scaleFactor=1, const RooArgSet *projectedVars=0, Bool_t scaling=kTRUE, const RooArgSet *condObs=0, Bool_t setError=kTRUE) const
Fill the ROOT histogram 'hist' with values sampled from this function at the bin centers.
virtual void selectNormalizationRange(const char *rangeName=0, Bool_t force=kFALSE)
Interface function to force use of a given normalization range to interpret function value.
TString getTitle(Bool_t appendUnit=kFALSE) const
Return this variable's title string.
static Int_t numEvalErrorItems()
static void setHideOffset(Bool_t flag)
RooAbsReal()
coverity[UNINIT_CTOR] Default constructor
virtual Int_t getAnalyticalIntegralWN(RooArgSet &allVars, RooArgSet &analVars, const RooArgSet *normSet, const char *rangeName=0) const
Variant of getAnalyticalIntegral that is also passed the normalization set that should be applied to ...
friend class RooRealBinding
RooAbsReal * createScanRI(const RooArgSet &iset, const RooArgSet &nset, Int_t numScanBins, Int_t intOrder)
Utility function for createRunningIntegral that construct an object implementing the numeric scanning...
UChar_t _byteValue
Transient cache for bool values from tree branches.
Bool_t isSelectedComp() const
If true, the current pdf is a selected component (for use in plotting)
virtual RooAbsReal * createChi2(RooDataHist &data, const RooLinkedList &cmdList)
Create a variable from a histogram and this function.
RooDerivative * derivative(RooRealVar &obs, Int_t order=1, Double_t eps=0.001)
Return function representing first, second or third order derivative of this function.
virtual Bool_t isValidReal(Double_t value, Bool_t printError=kFALSE) const
Interface function to check if given value is a valid value for this object.
virtual RooPlot * plotOn(RooPlot *frame, const RooCmdArg &arg1=RooCmdArg(), const RooCmdArg &arg2=RooCmdArg(), const RooCmdArg &arg3=RooCmdArg(), const RooCmdArg &arg4=RooCmdArg(), const RooCmdArg &arg5=RooCmdArg(), const RooCmdArg &arg6=RooCmdArg(), const RooCmdArg &arg7=RooCmdArg(), const RooCmdArg &arg8=RooCmdArg(), const RooCmdArg &arg9=RooCmdArg(), const RooCmdArg &arg10=RooCmdArg()) const
Plot (project) PDF on specified frame.
void setParameterizeIntegral(const RooArgSet ¶mVars)
static Bool_t hideOffset()
virtual Double_t evaluate() const =0
Evaluate this PDF / function / constant. Needs to be overridden by all derived classes.
virtual void setTreeBranchStatus(TTree &t, Bool_t active)
(De)Activate associated tree branch
virtual RooAbsReal * createProfile(const RooArgSet ¶msOfInterest)
Create a RooProfileLL object that eliminates all nuisance parameters in the present function.
TString integralNameSuffix(const RooArgSet &iset, const RooArgSet *nset=0, const char *rangeName=0, Bool_t omitEmpty=kFALSE) const
Construct string with unique suffix name to give to integral object that encodes integrated observabl...
virtual RooSpan< double > evaluateBatch(std::size_t begin, std::size_t maxSize) const
Evaluate function for a batch of input data points.
Double_t _DEBUG_getVal(const RooArgSet *normalisationSet) const
Debug version of getVal(), which is slow and does error checking.
Double_t traceEval(const RooArgSet *set) const
Calculate current value of object, with error tracing wrapper.
Int_t _intValue
Transient cache for floating point values from tree branches.
virtual void copyCache(const RooAbsArg *source, Bool_t valueOnly=kFALSE, Bool_t setValDirty=kTRUE)
Copy the cached value of another RooAbsArg to our cache.
virtual void fixAddCoefRange(const char *rangeName=0, Bool_t force=kTRUE)
Fix the interpretation of the coefficient of any RooAddPdf component in the expression tree headed by...
TH1 * createHistogram(const char *varNameList, Int_t xbins=0, Int_t ybins=0, Int_t zbins=0) const
Create and fill a ROOT histogram TH1, TH2 or TH3 with the values of this function for the variables w...
static EvalErrorIter evalErrorIter()
RooAbsReal & operator=(const RooAbsReal &other)
Assign values, name and configs from another RooAbsReal.
Double_t findRoot(RooRealVar &x, Double_t xmin, Double_t xmax, Double_t yval)
Return value of x (in range xmin,xmax) at which function equals yval.
RooAbsReal * createIntRI(const RooArgSet &iset, const RooArgSet &nset=RooArgSet())
Utility function for createRunningIntegral.
TF1 * asTF(const RooArgList &obs, const RooArgList &pars=RooArgList(), const RooArgSet &nset=RooArgSet()) const
Return a ROOT TF1,2,3 object bound to this RooAbsReal with given definition of observables and parame...
virtual Double_t analyticalIntegralWN(Int_t code, const RooArgSet *normSet, const char *rangeName=0) const
Implements the actual analytical integral(s) advertised by getAnalyticalIntegral.
virtual RooSpan< const double > getValBatch(std::size_t begin, std::size_t maxSize, const RooArgSet *normSet=nullptr) const
Return value of object for all data events in the batch.
virtual void attachToVStore(RooVectorDataStore &vstore)
TString _unit
Value storage for batches of events.
static RooNumIntConfig * defaultIntegratorConfig()
Returns the default numeric integration configuration for all RooAbsReals.
RooFitResult * chi2FitDriver(RooAbsReal &fcn, RooLinkedList &cmdList)
Internal driver function for chi2 fits.
virtual std::list< Double_t > * binBoundaries(RooAbsRealLValue &, Double_t, Double_t) const
virtual void attachToTree(TTree &t, Int_t bufSize=32000)
Attach object to a branch of given TTree.
Bool_t matchArgs(const RooArgSet &allDeps, RooArgSet &numDeps, const RooArgProxy &a) const
Utility function for use in getAnalyticalIntegral().
RooNumIntConfig * _specIntegratorConfig
virtual RooPlot * plotAsymOn(RooPlot *frame, const RooAbsCategoryLValue &asymCat, PlotOpt o) const
static ErrorLoggingMode evalErrorLoggingMode()
Return current evaluation error logging mode.
void setIntegratorConfig()
Remove the specialized numeric integration configuration associated with this object.
virtual void selectNormalization(const RooArgSet *depSet=0, Bool_t force=kFALSE)
Interface function to force use of a given set of observables to interpret function value.
virtual void printMultiline(std::ostream &os, Int_t contents, Bool_t verbose=kFALSE, TString indent="") const
Structure printing.
friend class RooRealIntegral
Double_t getVal(const RooArgSet *normalisationSet=nullptr) const
Evaluate object.
RooAbsMoment * moment(RooRealVar &obs, Int_t order, Bool_t central, Bool_t takeRoot)
Return function representing moment of function of given order.
static ErrorLoggingMode _evalErrorMode
Double_t getPropagatedError(const RooFitResult &fr, const RooArgSet &nset=RooArgSet()) const
Calculate error on self by propagated errors on parameters with correlations as given by fit result T...
static Int_t _evalErrorCount
virtual Bool_t isValid() const
Check if current value is valid.
static void globalSelectComp(Bool_t flag)
Global switch controlling the activation of the selectComp() functionality.
RooAbsArg * createFundamental(const char *newname=0) const
Create a RooRealVar fundamental object with our properties.
std::map< constRooAbsArg *, std::pair< std::string, std::list< EvalError > > >::const_iterator EvalErrorIter
virtual Double_t maxVal(Int_t code) const
Return maximum value for set of observables identified by code assigned in getMaxVal.
static Bool_t _globalSelectComp
Component selection flag for RooAbsPdf::plotCompOn.
RooAbsReal * createIntegral(const RooArgSet &iset, const RooCmdArg &arg1, const RooCmdArg &arg2=RooCmdArg::none(), const RooCmdArg &arg3=RooCmdArg::none(), const RooCmdArg &arg4=RooCmdArg::none(), const RooCmdArg &arg5=RooCmdArg::none(), const RooCmdArg &arg6=RooCmdArg::none(), const RooCmdArg &arg7=RooCmdArg::none(), const RooCmdArg &arg8=RooCmdArg::none()) const
Create an object that represents the integral of the function over one or more observables listed in ...
RooNumIntConfig * specialIntegratorConfig() const
Returns the specialized integrator configuration for this RooAbsReal.
RooAbsReal * createIntObj(const RooArgSet &iset, const RooArgSet *nset, const RooNumIntConfig *cfg, const char *rangeName) const
Internal utility function for createIntegral() that creates the actual integral object.
BatchHelpers::BatchData _batchData
static std::map< const RooAbsArg *, std::pair< std::string, std::list< EvalError > > > _evalErrorList
Bool_t plotSanityChecks(RooPlot *frame) const
Utility function for plotOn(), perform general sanity check on frame to ensure safe plotting operatio...
Char_t _sbyteValue
Transient cache for byte values from tree branches.
const char * getPlotLabel() const
Get the label associated with the variable.
virtual RooFitResult * chi2FitTo(RooDataHist &data, const RooCmdArg &arg1=RooCmdArg::none(), const RooCmdArg &arg2=RooCmdArg::none(), const RooCmdArg &arg3=RooCmdArg::none(), const RooCmdArg &arg4=RooCmdArg::none(), const RooCmdArg &arg5=RooCmdArg::none(), const RooCmdArg &arg6=RooCmdArg::none(), const RooCmdArg &arg7=RooCmdArg::none(), const RooCmdArg &arg8=RooCmdArg::none())
Perform a fit to given histogram.
virtual void fillTreeBranch(TTree &t)
Fill the tree branch that associated with this object with its current value.
Bool_t operator==(Double_t value) const
Equality operator comparing to a Double_t.
RooAbsFunc * bindVars(const RooArgSet &vars, const RooArgSet *nset=0, Bool_t clipInvalid=kFALSE) const
Create an interface adaptor f(vars) that binds us to the specified variables (in arbitrary order).
static Int_t numEvalErrors()
Return the number of logged evaluation errors since the last clearing.
static void setEvalErrorLoggingMode(ErrorLoggingMode m)
Set evaluation error logging mode.
Bool_t matchArgsByName(const RooArgSet &allArgs, RooArgSet &matchedArgs, const TList &nameList) const
Check if allArgs contains matching elements for each name in nameList.
virtual Double_t analyticalIntegral(Int_t code, const char *rangeName=0) const
Implements the actual analytical integral(s) advertised by getAnalyticalIntegral.
virtual Int_t getAnalyticalIntegral(RooArgSet &allVars, RooArgSet &analVars, const char *rangeName=0) const
Interface function getAnalyticalIntergral advertises the analytical integrals that are supported.
virtual void preferredObservableScanOrder(const RooArgSet &obs, RooArgSet &orderedObs) const
Interface method for function objects to indicate their preferred order of observables for scanning t...
void findInnerMostIntegration(const RooArgSet &allObs, RooArgSet &innerObs, const char *rangeName) const
Utility function for createIntObj() that aids in the construct of recursive integrals over functions ...
void selectComp(Bool_t flag)
static Bool_t _hideOffset
const Text_t * getUnit() const
virtual void printValue(std::ostream &os) const
Print object value.
const RooNumIntConfig * getIntegratorConfig() const
Return the numeric integration configuration used for this object.
Bool_t _boolValue
Transient cache for integer values from tree branches.
RooPlot * plotOnWithErrorBand(RooPlot *frame, const RooFitResult &fr, Double_t Z, const RooArgSet *params, const RooLinkedList &argList, Bool_t method1) const
Plot function or PDF on frame with support for visualization of the uncertainty encoded in the given ...
virtual Double_t getValV(const RooArgSet *normalisationSet=nullptr) const
Return value of object.
static void printEvalErrors(std::ostream &os=std::cout, Int_t maxPerNode=10000000)
Print all outstanding logged evaluation error on the given ostream.
virtual void fixAddCoefNormalization(const RooArgSet &addNormSet=RooArgSet(), Bool_t force=kTRUE)
Fix the interpretation of the coefficient of any RooAddPdf component in the expression tree headed by...
void logEvalError(const char *message, const char *serverValueString=0) const
Log evaluation error message.
static void clearEvalErrorLog()
Clear the stack of evaluation error messages.
void checkBatchComputation(std::size_t evtNo, const RooArgSet *normSet=nullptr, double relAccuracy=1.E-13) const
RooFunctor * functor(const RooArgList &obs, const RooArgList &pars=RooArgList(), const RooArgSet &nset=RooArgSet()) const
Return a RooFunctor object bound to this RooAbsReal with given definition of observables and paramete...
UInt_t _uintValue
Transient cache for signed byte values from tree branches.
void makeProjectionSet(const RooAbsArg *plotVar, const RooArgSet *allVars, RooArgSet &projectedVars, Bool_t silent) const
Utility function for plotOn() that constructs the set of observables to project when plotting ourselv...
void setPlotLabel(const char *label)
Set the label associated with this variable.
virtual ~RooAbsReal()
Destructor.
virtual Int_t getMaxVal(const RooArgSet &vars) const
Advertise capability to determine maximum value of function for given set of observables.
virtual void writeToStream(std::ostream &os, Bool_t compact) const
Write object contents to stream (dummy for now)
const RooAbsReal * createPlotProjection(const RooArgSet &depVars, const RooArgSet &projVars) const
Utility function for plotOn() that creates a projection of a function or p.d.f to be plotted on a Roo...
RooDataHist * fillDataHist(RooDataHist *hist, const RooArgSet *nset, Double_t scaleFactor, Bool_t correctForBinVolume=kFALSE, Bool_t showProgress=kFALSE) const
Fill a RooDataHist with values sampled from this function at the bin centers.
virtual Double_t offset() const
RooAbsReal * createRunningIntegral(const RooArgSet &iset, const RooArgSet &nset=RooArgSet())
Calls createRunningIntegral(const RooArgSet&, const RooCmdArg&, const RooCmdArg&, const RooCmdArg&,...
RooAddition calculates the sum of a set of RooAbsReal terms, or when constructed with two sets,...
RooArgList is a container object that can hold multiple RooAbsArg objects.
RooAbsArg * at(Int_t idx) const
Return object at given index, or nullptr if index is out of range.
RooArgProxy is the abstact interface for RooAbsArg proxy classes.
RooArgSet is a container object that can hold multiple RooAbsArg objects.
virtual Bool_t addOwned(const RooAbsCollection &col, Bool_t silent=kFALSE)
Add a collection of arguments to this collection by calling addOwned() for each element in the source...
virtual Bool_t add(const RooAbsCollection &col, Bool_t silent=kFALSE)
Add a collection of arguments to this collection by calling add() for each element in the source coll...
virtual void addClone(const RooAbsCollection &col, Bool_t silent=kFALSE)
Add a collection of arguments to this collection by calling addOwned() for each element in the source...
Class RooBinning is an implements RooAbsBinning in terms of an array of boundary values,...
Implement the abstract 1-dimensional root finding interface using the Brent-Decker method.
virtual Bool_t findRoot(Double_t &result, Double_t xlo, Double_t xhi, Double_t value=0) const
Do the root finding using the Brent-Decker method.
RooCachedReal is an implementation of RooAbsCachedReal that can cache any external RooAbsReal input f...
void setCacheSource(Bool_t flag)
RooCategory represents a fundamental (non-derived) discrete value object.
virtual Bool_t setLabel(const char *label, Bool_t printError=kTRUE)
Set value by specifying the name of the desired state If printError is set, a message will be printed...
Class RooChi2Var implements a simple chi^2 calculation from a binned dataset and a PDF.
RooCmdArg is a named container for two doubles, two integers two object points and three string point...
static const RooCmdArg & none()
Return reference to null argument.
const char * getString(Int_t idx) const
void setString(Int_t idx, const char *value)
virtual TObject * Clone(const char *newName=0) const
Make a clone of an object using the Streamer facility.
Class RooCmdConfig is a configurable parser for RooCmdArg named arguments.
A RooCurve is a one-dimensional graphical representation of a real-valued function.
RooCurve * makeErrorBand(const std::vector< RooCurve * > &variations, Double_t Z=1) const
Construct filled RooCurve represented error band that captures alpha% of the variations of the curves...
RooCustomizer is a factory class to produce clones of a prototype composite PDF object with the same ...
void setCloneBranchSet(RooArgSet &cloneBranchSet)
Install the input RooArgSet as container in which all cloned branches will be stored.
void replaceArg(const RooAbsArg &orig, const RooAbsArg &subst)
Replace any occurence of arg 'orig' with arg 'subst'.
void setOwning(Bool_t flag)
RooAbsArg * build(const char *masterCatState, Bool_t verbose=kFALSE)
Build a clone of the prototype executing all registered 'replace' rules and 'split' rules for the mas...
The RooDataHist is a container class to hold N-dimensional binned data.
void set(Double_t weight, Double_t wgtErr=-1)
Set the weight and weight error of the bin enclosing the current (i.e.
virtual Int_t numEntries() const
Return the number of bins.
virtual const RooArgSet * get() const
Double_t binVolume() const
RooDataSet is a container class to hold unbinned data.
Class RooDataWeightedAverage calculate a weighted average of a function or p.d.f given a dataset with...
RooDerivative represents the first, second, or third order derivative of any RooAbsReal as calculated...
A one-time forward iterator working on RooLinkedList or RooAbsCollection.
RooAbsArg * next()
Return next element or nullptr if at end.
RooFirstMoment represents the first, second, or third order derivative of any RooAbsReal as calculate...
RooFitResult is a container class to hold the input and output of a PDF fit to a dataset.
const TMatrixDSym & covarianceMatrix() const
Return covariance matrix.
TMatrixDSym reducedCovarianceMatrix(const RooArgList ¶ms) const
Return a reduced covariance matrix (Note that Vred is a simple sub-matrix of V, row/columns are order...
const RooArgList & floatParsFinal() const
RooAbsPdf * createHessePdf(const RooArgSet ¶ms) const
Return a p.d.f that represents the fit result as a multi-variate probability densisty function on the...
Lightweight interface adaptor that exports a RooAbsPdf as a functor.
Lightweight interface adaptor that exports a RooAbsReal as a ROOT::Math::IGenFunction.
A RooHist is a graphical representation of binned data based on the TGraphAsymmErrors class.
RooLinkedList is an collection class for internal use, storing a collection of RooAbsArg pointers in ...
TObject * FindObject(const char *name) const
Return pointer to obejct with given name.
RooFIter fwdIterator() const
Create a one-time-use forward iterator for this list.
TIterator * MakeIterator(Bool_t forward=kTRUE) const
Create a TIterator for this list.
void Delete(Option_t *o=0)
Remove all elements in collection and delete all elements NB: Collection does not own elements,...
virtual void Add(TObject *arg)
RooMinimizer is a wrapper class around ROOT::Fit:Fitter that provides a seamless interface between th...
RooMinuit is a wrapper class around TFitter/TMinuit that provides a seamless interface between the MI...
RooMoment represents the first, second, or third order derivative of any RooAbsReal as calculated (nu...
static RooMsgService & instance()
Return reference to singleton instance.
Lightweight interface adaptor that exports a RooAbsReal as a ROOT::Math::IMultiGenFunction.
RooNameSet is a utility class that stores the names the objects in a RooArget.
RooArgSet * select(const RooArgSet &list) const
Construct a RooArgSet of objects in input 'list' whose names match to those in the internal name list...
void setNameList(const char *givenList)
RooNumIntConfig holds the configuration parameters of the various numeric integrators used by RooReal...
static RooNumIntConfig & defaultConfig()
Return reference to instance of default numeric integrator configuration object.
Class RooNumRunningInt is an implementation of RooAbsCachedReal that represents a running integral.
Class RooParamBinning is an implementation of RooAbsBinning that constructs a binning with a range de...
A RooPlot is a plot frame and a container for graphics objects within that frame.
Bool_t drawBefore(const char *before, const char *target)
Change the order in which our contained objects are drawn so that the target object is drawn just bef...
TAttMarker * getAttMarker(const char *name=0) const
Return a pointer to the marker attributes of the named object in this plot, or zero if the named obje...
Double_t GetMinimum(Double_t minval=-FLT_MAX) const
const RooArgSet * getNormVars() const
TAttFill * getAttFill(const char *name=0) const
Return a pointer to the fill attributes of the named object in this plot, or zero if the named object...
virtual void SetMinimum(Double_t minimum=-1111)
Set minimum value of Y axis.
TObject * getObject(Int_t idx) const
Return the name of the object at slot 'idx' in this RooPlot.
RooAbsRealLValue * getPlotVar() const
TAttLine * getAttLine(const char *name=0) const
Return a pointer to the line attributes of the named object in this plot, or zero if the named object...
Double_t GetMaximum(Double_t maxval=FLT_MAX) const
void addPlotable(RooPlotable *plotable, Option_t *drawOptions="", Bool_t invisible=kFALSE, Bool_t refreshNorm=kFALSE)
Add the specified plotable object to our plot.
virtual void SetMaximum(Double_t maximum=-1111)
Set maximum value of Y axis.
TObject * findObject(const char *name, const TClass *clas=0) const
Find the named object in our list of items and return a pointer to it.
RooCurve * getCurve(const char *name=0) const
Return a RooCurve pointer of the named object in this plot, or zero if the named object does not exis...
void remove(const char *name=0, Bool_t deleteToo=kTRUE)
Remove object with given name, or last object added if no name is given.
virtual void printStream(std::ostream &os, Int_t contents, StyleOption style, TString indent="") const
Print description of object on ostream, printing contents set by contents integer,...
Class RooProfileLL implements the profile likelihood estimator for a given likelihood and set of para...
Lightweight interface adaptor that binds a RooAbsReal object to a subset of its servers and present i...
RooRealIntegral performs hybrid numerical/analytical integrals of RooAbsReal objects.
const RooArgSet & numIntRealVars() const
RooRealVar represents a variable that can be changed from the outside.
void setBins(Int_t nBins, const char *name=0)
Create a uniform binning under name 'name' for this variable.
RooSpan< const double > getValBatch(std::size_t begin, std::size_t batchSize, const RooArgSet *=nullptr) const
Return batch of data between begin and end.
void setRange(const char *name, Double_t min, Double_t max)
Set range named 'name to [min,max].
void removeRange(const char *name=0)
Remove range limits for binning with given name. Empty name means default range.
Double_t getError() const
void setBinning(const RooAbsBinning &binning, const char *name=0)
Add given binning under name 'name' with this variable.
virtual TObject * clone(const char *newname) const
virtual void setVal(Double_t value)
Set value of variable to 'value'.
Lightweight RooAbsFunction implementation that applies a constant scale factor to another RooAbsFunc.
RooSecondMoment represents the first, second, or third order derivative of any RooAbsReal as calculat...
A simple container to hold a batch of data values.
constexpr bool empty() const noexcept
void setBuffer(RooAbsReal *real, Double_t *newBuf)
const std::vector< double > & data() const
RooVectorDataStore is the abstract base class for data collection that use a TTree as internal storag...
RealVector * addReal(RooAbsReal *real)
virtual void SetFillColor(Color_t fcolor)
Set the fill area color.
virtual void SetFillStyle(Style_t fstyle)
Set the fill area style.
virtual void SetLineStyle(Style_t lstyle)
Set the line style.
virtual void SetLineWidth(Width_t lwidth)
Set the line width.
virtual void SetLineColor(Color_t lcolor)
Set the line color.
virtual void SetMarkerColor(Color_t mcolor=1)
Set the marker color.
virtual void SetMarkerStyle(Style_t mstyle=1)
Set the marker style.
virtual void SetMarkerSize(Size_t msize=1)
Set the marker size.
Class to manage histogram axis.
virtual Double_t GetBinCenter(Int_t bin) const
Return center of bin.
A TTree is a list of TBranches.
TObjArray * GetListOfLeaves()
virtual Int_t GetSize() const
Return the capacity of the collection, i.e.
virtual void SetParName(Int_t ipar, const char *name)
Set name of parameter number ipar.
virtual void SetParameter(Int_t param, Double_t value)
A 2-Dim function with parameters.
A 3-Dim function with parameters.
virtual void SetName(const char *name="")
Set graph name.
virtual Int_t GetNbinsY() const
virtual Int_t GetNbinsZ() const
virtual Int_t GetDimension() const
TAxis * GetXaxis()
Get the behaviour adopted by the object about the statoverflows. See EStatOverflows for more informat...
virtual Int_t GetBin(Int_t binx, Int_t biny=0, Int_t binz=0) const
Return Global bin number corresponding to binx,y,z.
virtual Int_t GetNbinsX() const
virtual void SetBinError(Int_t bin, Double_t error)
Set the bin Error Note that this resets the bin eror option to be of Normal Type and for the non-empt...
virtual void SetBinContent(Int_t bin, Double_t content)
Set bin content see convention for numbering bins in TH1::GetBin In case the bin number is greater th...
Iterator abstract base class.
virtual TObject * Next()=0
A TLeaf describes individual elements of a TBranch See TBranch structure in TTree.
virtual const char * GetTypeName() const
virtual TLeaf * GetLeafCounter(Int_t &countval) const
Return a pointer to the counter of this leaf (if any) or store the number of elements that the leaf c...
virtual void Add(TObject *obj)
virtual TIterator * MakeIterator(Bool_t dir=kIterForward) const
Return a list iterator.
virtual void Delete(Option_t *option="")
Remove all objects from the list AND delete all heap based objects.
virtual void SetTitle(const char *title="")
Set the title of the TNamed.
virtual const char * GetTitle() const
Returns title of object.
virtual const char * GetName() const
Returns name of object.
TObject * At(Int_t idx) const
Collectable string class.
Mother of all ROOT objects.
virtual const char * GetName() const
Returns name of object.
virtual const char * ClassName() const
Returns name of class to which the object belongs.
virtual Bool_t InheritsFrom(const char *classname) const
Returns kTRUE if object inherits from class "classname".
int CompareTo(const char *cs, ECaseCompare cmp=kExact) const
Compare a string to char *cs2.
const char * Data() const
TString & Prepend(const char *cs)
TString & Append(const char *cs)
Bool_t Contains(const char *pat, ECaseCompare cmp=kExact) const
virtual void StackTrace()
Print a stack trace.
A TTree represents a columnar dataset.
virtual TBranch * GetBranch(const char *name)
Return pointer to the branch with the given name in this tree or its friends.
virtual Int_t SetBranchAddress(const char *bname, void *add, TBranch **ptr=0)
Change branch address, dealing with clone trees properly.
TBranch * Branch(const char *name, T *obj, Int_t bufsize=32000, Int_t splitlevel=99)
Add a new branch, and infer the data type from the type of obj being passed.
virtual void SetBranchStatus(const char *bname, Bool_t status=1, UInt_t *found=0)
Set branch status to Process or DoNotProcess.
VecExpr< UnaryOp< Fabs< T >, VecExpr< A, T, D >, T >, T, D > fabs(const VecExpr< A, T, D > &rhs)
RooCmdArg Binning(const RooAbsBinning &binning)
RooCmdArg NormRange(const char *rangeNameList)
RooCmdArg YVar(const RooAbsRealLValue &var, const RooCmdArg &arg=RooCmdArg::none())
RooCmdArg ZVar(const RooAbsRealLValue &var, const RooCmdArg &arg=RooCmdArg::none())
RooCmdArg SupNormSet(const RooArgSet &nset)
std::vector< std::string > tokenise(const std::string &str, const std::string &delims)
Tokenise the string by splitting at the characters in delims.
static constexpr double pc
static constexpr double second
static constexpr double ps
Double_t Erfc(Double_t x)
Compute the complementary error function erfc(x).
Bool_t postRangeFracScale
const char * normRangeName
RooFit::MPSplit interleave
const char * projectionRangeName
const RooArgSet * projDataSet
const char * curveNameSuffix
const char * addToCurveName
const RooFitResult * errorFR
const RooArgSet * projSet
const RooAbsData * projData
static long int sum(long int i)
static void output(int code)