70 template<
typename It_t>
76 for (
auto it = first; it != last; ++it) {
144 _allRRV(other._allRRV)
151 for (
auto item : other.
_list) {
163 _list(std::move(other._list)),
164 _ownCont(other._ownCont),
165 _name(std::move(other._name)),
166 _allRRV(other._allRRV),
167 _sizeThresholdForMapSearch(other._sizeThresholdForMapSearch)
195 for (
auto item :
_list) {
224 snapName.
Append(
"Snapshot of ") ;
278 if (&other==
this) return ;
280 for (
auto elem :
_list) {
281 auto theirs = other.
find(*elem);
282 if(!theirs)
continue;
284 elem->copyCache(theirs) ;
285 elem->setAttribute(
"Constant",theirs->isConstant()) ;
300 if (&other==
this)
return *
this;
303 if (
size()==1 &&
size() == other.
size() && forceIfSizeOne) {
309 for (
auto elem :
_list) {
310 auto theirs = other.
find(*elem);
311 if(!theirs)
continue;
313 elem->copyCache(theirs,
true) ;
326 if (&other==
this) return ;
329 auto iter2 = other.
_list.begin();
330 for (
auto iter1 =
_list.begin();
331 iter1 !=
_list.end() && iter2 != other.
_list.end();
338 auto theirs =
static_cast<RooRealVar*
>(*iter2);
341 (*iter2)->syncCache() ;
342 (*iter1)->copyCache(*iter2,
true,setValDirty) ;
366 coutE(ObjectHandling) <<
ClassName() <<
"::" <<
GetName() <<
"::addOwned: can only add to an owned list" << std::endl;
392 auto errMsg = std::string(
"RooAbsCollection::addOwned could not add the argument to the")
393 +
" collection! The ownership would not be well defined if we ignore this.";
394 coutE(ObjectHandling) << errMsg << std::endl;
395 throw std::runtime_error(errMsg);
415 coutE(ObjectHandling) <<
ClassName() <<
"::" <<
GetName() <<
"::addClone: can only add to an owned list" << std::endl;
442 coutE(ObjectHandling) <<
ClassName() <<
"::" <<
GetName() <<
"::add: cannot add to an owned list" << std::endl;
469 throw std::invalid_argument(
"Passing an owning RooAbsCollection by const& to"
470 " RooAbsCollection::addOwned is forbidden because the ownership"
471 " would be ambiguous! Please std::move() the RooAbsCollection in this case."
472 " Note that the passed RooAbsCollection is invalid afterwards.");
479 for (
auto item : list.
_list) {
496 if(list.isOwning()) {
497 list._ownCont =
false;
499 if(list.empty())
return false;
504 auto errMsg = std::string(
"RooAbsCollection::addOwned could not add the argument to the")
505 +
" collection! The ownership would not be well defined if we ignore this.";
506 coutE(ObjectHandling) << errMsg << std::endl;
507 throw std::runtime_error(errMsg);
528 for (
auto item : list.
_list) {
543 std::stringstream errMsg;
544 errMsg <<
"RooAbsCollection: cannot replace variables in a copied list";
545 coutE(ObjectHandling) << errMsg.str() << std::endl;
547 throw std::invalid_argument(errMsg.str());
551 for (
const auto * arg : other.
_list) {
553 auto found =
find(*arg);
554 if (found)
replace(*found,*arg);
564 auto var1It = std::find(
_list.begin(),
_list.end(), &var1);
566 if (var1It ==
_list.end()) {
567 coutE(ObjectHandling) <<
"RooAbsCollection: variable \"" <<
name <<
"\" is not in the list"
568 <<
" and cannot be replaced" << std::endl;
576 if(other !=
nullptr && other != &var1) {
577 coutE(ObjectHandling) <<
"RooAbsCollection: cannot replace \"" <<
name
578 <<
"\" with already existing \"" << var2.
GetName() <<
"\"" << std::endl;
607 std::string errMsg =
"RooAbsCollection: cannot replace variables in a copied list";
608 coutE(ObjectHandling) << errMsg << std::endl;
609 throw std::runtime_error(errMsg);
626 "RooAbsCollection::replace(RooAbsArg *, std::unique_ptr<RooAbsArg>) can't be used on a non-owning collection!";
627 coutE(ObjectHandling) << errMsg << std::endl;
628 throw std::runtime_error(errMsg);
631 bool success =
replaceImpl(*var1, *var2.release());
633 auto errMsg = std::string(
"RooAbsCollection::replace(RooAbsArg *, std::unique_ptr<RooAbsArg>) did not succeed!") +
634 "The ownership would not be well defined if we ignore this.";
635 coutE(ObjectHandling) << errMsg << std::endl;
636 throw std::runtime_error(errMsg);
652 const auto sizeBefore =
_list.size();
654 if (matchByNameOnly) {
657 return elm->GetName() ==
name;
659 std::set<RooAbsArg*> toBeDeleted;
663 if (nameMatch(elm)) {
664 toBeDeleted.insert(elm);
671 for (
auto arg : toBeDeleted)
674 _list.erase(std::remove(_list.begin(), _list.end(), &var), _list.end());
677 if (_hashAssistedFind && sizeBefore != _list.size()) {
678 _hashAssistedFind->erase(&var);
681 return sizeBefore != _list.size();
696 auto oldSize =
_list.size();
697 std::vector<const RooAbsArg*> markedItems;
699 if (matchByNameOnly) {
703 auto nameMatchAndMark = [&list, &markedItems](
const RooAbsArg* elm) {
705 markedItems.push_back(elm);
715 auto argMatchAndMark = [&list, &markedItems](
const RooAbsArg* elm) {
717 markedItems.push_back(elm);
727 for(
auto& var : markedItems ) {
733 std::set<const RooAbsArg*> toBeDeleted(markedItems.begin(), markedItems.end());
734 for (
auto arg : toBeDeleted) {
739 return oldSize !=
_list.size();
770 for (
auto arg :
_list) {
786 selName.
Append(
"_selection") ;
790 for (
auto arg :
_list) {
813 for (
auto arg :
_list) {
814 if (refColl.
find(*arg))
844 selName.
Append(
"_selection") ;
847 const size_t bufSize = strlen(nameList) + 1;
848 std::vector<char> buf(bufSize);
849 strlcpy(buf.data(),nameList,bufSize) ;
850 char* wcExpr = strtok(buf.data(),
",") ;
854 cxcoutD(ObjectHandling) <<
"RooAbsCollection::selectByName(" <<
GetName() <<
") processing expression '" << wcExpr <<
"'" << std::endl;
857 for (
auto const* arg : *
this) {
860 cxcoutD(ObjectHandling) <<
"RooAbsCollection::selectByName(" <<
GetName() <<
") selected element " << arg->GetName() << std::endl;
865 wcExpr = strtok(
nullptr,
",") ;
880 if (
size() != otherColl.
size())
return false ;
884 return left->
namePtr() == right->namePtr();
887 return std::is_permutation(
_list.begin(),
_list.end(),
888 otherColl.
_list.begin(),
896template<
class Collection_t>
897RooAbsArg* findUsingNamePointer(
const Collection_t& coll,
const TNamed* ptr) {
898 auto findByNamePtr = [ptr](
const RooAbsArg* elm) {
899 return ptr == elm->namePtr();
902 auto item = std::find_if(coll.begin(), coll.end(), findByNamePtr);
904 return item != coll.end() ? *item :
nullptr;
919 if (!nptr)
return nullptr;
929 return findUsingNamePointer(
_list, nptr);
939 const auto nptr = arg.
namePtr();
949 return findUsingNamePointer(
_list, nptr);
956 const std::string theName(
name);
958 return elm->GetName() == theName;
960 return item !=
_list.end() ? item -
_list.begin() : -1;
972 if (verbose)
coutE(InputArguments) <<
"RooAbsCollection::getRealValue(" <<
GetName() <<
") ERROR no object with name '" <<
name <<
"' found" << std::endl;
977 if (verbose)
coutE(InputArguments) <<
"RooAbsCollection::getRealValue(" <<
GetName() <<
") ERROR object '" <<
name <<
"' is not of type RooAbsReal" << std::endl;
993 if (verbose)
coutE(InputArguments) <<
"RooAbsCollection::setRealValue(" <<
GetName() <<
") ERROR no object with name '" <<
name <<
"' found" << std::endl;
998 if (verbose)
coutE(InputArguments) <<
"RooAbsCollection::setRealValue(" <<
GetName() <<
") ERROR object '" <<
name <<
"' is not of type RooAbsRealLValue" << std::endl;
1015 if (verbose)
coutE(InputArguments) <<
"RooAbsCollection::getCatLabel(" <<
GetName() <<
") ERROR no object with name '" <<
name <<
"' found" << std::endl;
1020 if (verbose)
coutE(InputArguments) <<
"RooAbsCollection::getCatLabel(" <<
GetName() <<
") ERROR object '" <<
name <<
"' is not of type RooAbsCategory" << std::endl;
1036 if (verbose)
coutE(InputArguments) <<
"RooAbsCollection::setCatLabel(" <<
GetName() <<
") ERROR no object with name '" <<
name <<
"' found" << std::endl;
1041 if (verbose)
coutE(InputArguments) <<
"RooAbsCollection::setCatLabel(" <<
GetName() <<
") ERROR object '" <<
name <<
"' is not of type RooAbsCategory" << std::endl;
1058 if (verbose)
coutE(InputArguments) <<
"RooAbsCollection::getCatLabel(" <<
GetName() <<
") ERROR no object with name '" <<
name <<
"' found" << std::endl;
1063 if (verbose)
coutE(InputArguments) <<
"RooAbsCollection::getCatLabel(" <<
GetName() <<
") ERROR object '" <<
name <<
"' is not of type RooAbsCategory" << std::endl;
1066 return rac->getCurrentIndex() ;
1079 if (verbose)
coutE(InputArguments) <<
"RooAbsCollection::setCatLabel(" <<
GetName() <<
") ERROR no object with name '" <<
name <<
"' found" << std::endl;
1084 if (verbose)
coutE(InputArguments) <<
"RooAbsCollection::setCatLabel(" <<
GetName() <<
") ERROR object '" <<
name <<
"' is not of type RooAbsCategory" << std::endl;
1101 if (verbose)
coutE(InputArguments) <<
"RooAbsCollection::getStringValue(" <<
GetName() <<
") ERROR no object with name '" <<
name <<
"' found" << std::endl;
1106 if (verbose)
coutE(InputArguments) <<
"RooAbsCollection::getStringValue(" <<
GetName() <<
") ERROR object '" <<
name <<
"' is not of type RooStringVar" << std::endl;
1123 if (verbose)
coutE(InputArguments) <<
"RooAbsCollection::setStringValue(" <<
GetName() <<
") ERROR no object with name '" <<
name <<
"' found" << std::endl;
1128 if (verbose)
coutE(InputArguments) <<
"RooAbsCollection::setStringValue(" <<
GetName() <<
") ERROR object '" <<
name <<
"' is not of type RooStringVar" << std::endl;
1140 std::string retVal ;
1141 for (
auto arg :
_list) {
1142 retVal += arg->GetName();
1146 retVal.erase(retVal.end()-1);
1191 if (opt &&
TString(opt)==
"I") {
1194 if (opt &&
TString(opt).Contains(
"v")) {
1212 for (
auto arg :
_list) {
1219 os << '\'' << (static_cast<RooStringVar *>(arg))->getVal() <<
'\'';
1221 os << arg->GetName();
1243 Int_t maxNameLen(1) ;
1245 if (nameFieldLengthSaved==0) {
1246 for (
auto next :
_list) {
1247 Int_t len = strlen(next->GetName()) ;
1248 if (
len>maxNameLen) maxNameLen =
len ;
1253 unsigned int idx = 0;
1254 for (
auto next :
_list) {
1255 os <<
indent << std::setw(3) << ++idx <<
") ";
1270 for (
auto arg :
_list) {
1271 std::cout << arg <<
" " << arg->ClassName() <<
"::" << arg->GetName() <<
" (" << arg->GetTitle() <<
")" << std::endl ;
1324 pc.
defineInt(
"dummy",
"FormatArgs",0,0) ;
1335 pc.
process(arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8) ;
1340 const char* outFile = pc.
getString(
"outputFile") ;
1341 if (outFile && strlen(outFile)) {
1342 std::ofstream ofs(outFile) ;
1383 sibFormatCmd = *formatCmd ;
1385 tmp.ReplaceAll(
"N",
"") ;
1386 tmp.ReplaceAll(
"n",
"") ;
1387 static char buf[100] ;
1388 strlcpy(buf,tmp.Data(),100) ;
1396 for(
auto * col : static_range_cast<RooAbsCollection*>(siblingList)) {
1404 for(
auto * col : static_range_cast<RooAbsCollection*>(listList)) {
1406 for (
auto* arg : *col) {
1411 coutW(InputArguments) <<
"RooAbsCollection::printLatex: can only print RooRealVar in LateX, skipping non-RooRealVar object named "
1412 << arg->GetName() << std::endl;
1415 coutW(InputArguments) <<
"RooAbsCollection::printLatex: WARNING: naming and/or ordering of sibling list is different" << std::endl;
1418 listListRRV.
Add(list) ;
1419 if (prevList && list->
size() != prevList->
size()) {
1420 coutW(InputArguments) <<
"RooAbsCollection::printLatex: ERROR: sibling list(s) must have same length as self" << std::endl;
1431 for (k=0 ; k<nlist ; k++) subheader +=
"c" ;
1433 TString header =
"\\begin{tabular}{" ;
1434 for (j=0 ; j<ncol ; j++) {
1435 if (j>0) header +=
"|" ;
1436 header += subheader ;
1439 ofs << header << std::endl;
1443 for (i=0 ; i<nrow ; i++) {
1444 for (j=0 ; j<ncol ; j++) {
1445 for (k=0 ; k<nlist ; k++) {
1449 ofs << *std::unique_ptr<TString>{par->
format(sigDigit,(k==0)?
option:sibOption.
Data())};
1451 ofs << *std::unique_ptr<TString>{par->
format((k==0)?*formatCmd:sibFormatCmd)};
1454 if (!(j==ncol-1 && k==nlist-1)) {
1459 ofs <<
"\\\\" << std::endl;
1462 ofs <<
"\\end{tabular}" << std::endl;
1475 if (!rangeSpec)
return true ;
1478 std::vector<std::string> cutVec ;
1479 if (rangeSpec && strlen(rangeSpec)>0) {
1480 if (strchr(rangeSpec,
',')==
nullptr) {
1481 cutVec.push_back(rangeSpec) ;
1483 const size_t bufSize = strlen(rangeSpec)+1;
1484 std::vector<char> buf(bufSize);
1485 strlcpy(buf.data(),rangeSpec,bufSize) ;
1486 const char* oneRange = strtok(buf.data(),
",") ;
1488 cutVec.push_back(oneRange) ;
1489 oneRange = strtok(
nullptr,
",") ;
1495 bool selectByRange = true ;
1496 for (
auto arg :
_list) {
1497 bool selectThisArg = false ;
1499 for (icut=0 ; icut<cutVec.size() ; icut++) {
1500 if (arg->inRange(cutVec[icut].c_str())) {
1501 selectThisArg = true ;
1505 if (!selectThisArg) {
1506 selectByRange = false ;
1511 return selectByRange ;
1532 return strcmp(
l->
GetName(),
r->GetName()) > 0;
1535 std::sort(
_list.begin(),
_list.end(), cmpReverse);
1539 return strcmp(
l->
GetName(),
r->GetName()) < 0;
1551 std::unordered_set<TNamed const *> seenArgs;
1552 for (std::size_t iArg = 0; iArg <
_list.size(); ++iArg) {
1554 bool movedArg =
false;
1556 if (seenArgs.find(server->namePtr()) == seenArgs.end()) {
1557 auto found = std::find_if(
_list.begin(),
_list.end(),
1558 [server](
RooAbsArg *elem) { return elem->namePtr() == server->namePtr(); });
1559 if (found !=
_list.end()) {
1571 seenArgs.insert(arg->
namePtr());
1578std::unique_ptr<RooAbsCollection::LegacyIterator_t> RooAbsCollection::makeLegacyIterator (
bool forward)
const {
1580 ccoutE(DataHandling) <<
"The legacy RooFit collection iterators don't support reverse iterations, any more. "
1581 <<
"Use begin() and end()" << std::endl;
1583 return std::make_unique<LegacyIterator_t>(
_list);
1590 _list.push_back(item);
1609#if ROOT_VERSION_CODE >= ROOT_VERSION(6, 33, 00)
1610 if (flag && !
dynamic_cast<RooArgSet const *
>(
this)) {
1612 std::stringstream msg;
1613 msg <<
"RooAbsCollection::useHashMapForFind() ERROR: this collection is not a RooArgSet but a RooArgList, so "
1614 "hash-assisted finding can't be enabled!"
1616 oocoutE(
nullptr, ObjectHandling) << msg.str() << std::endl;
1617 throw std::runtime_error(msg.str());
1630 for (
unsigned int i=0; i < std::min(
_list.size(), other.
size()); ++i) {
1631 if (
_list[i]->namePtr() != other.
_list[i]->namePtr())
1640 std::string typeName = klass->
GetName();
1641 std::stringstream msg;
1642 msg <<
"RooAbsCollection::addTyped<" << typeName <<
">() ERROR: component " << arg->
GetName() <<
" is not of type "
1644 oocoutE(
nullptr, InputArguments) << msg.str() << std::endl;
1645 throw std::invalid_argument(msg.str());
static Roo_reg_AGKInteg1D instance
static void indent(ostringstream &buf, int indent_level)
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 sel
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 Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t result
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
Common abstract base class for objects that represent a value and a "shape" in RooFit.
TIterator Use servers() and begin()
virtual void copyCache(const RooAbsArg *source, bool valueOnly=false, bool setValDirty=true)=0
const TNamed * namePtr() const
De-duplicated pointer to this object's name.
virtual void syncCache(const RooArgSet *nset=nullptr)=0
TObject * Clone(const char *newname=nullptr) const override
Make a clone of an object using the Streamer facility.
Abstract base class for objects that represent a discrete value that can be set from the outside,...
virtual bool setIndex(value_type index, bool printError=true)=0
Change category state by specifying the index code of the desired state.
virtual bool setLabel(const char *label, bool printError=true)=0
Change category state by specifying a state name.
A space to attach TBranches.
virtual const char * getCurrentLabel() const
Return label string of current state.
Abstract container object that can hold multiple RooAbsArg objects.
RooAbsCollection * selectByAttrib(const char *name, bool value) const
Create a subset of the current collection, consisting only of those elements with the specified attri...
bool equals(const RooAbsCollection &otherColl) const
Check if this and other collection have identically-named contents.
std::unique_ptr< HashAssistedFind > _hashAssistedFind
!
double getRealValue(const char *name, double defVal=0.0, bool verbose=false) const
Get value of a RooAbsReal stored in set with given name.
virtual void removeAll()
Remove all arguments from our set, deleting them if we own them.
void deleteList()
Delete contents of the list.
Int_t getCatIndex(const char *name, Int_t defVal=0, bool verbose=false) const
Get index value of a RooAbsCategory stored in set with given name.
virtual bool remove(const RooAbsArg &var, bool silent=false, bool matchByNameOnly=false)
Remove the specified argument from our list.
RooAbsCollection & assignValueOnly(const RooAbsCollection &other, bool forceIfSizeOne=false)
Sets the value of any argument in our set that also appears in the other set.
virtual TObject * create(const char *newname) const =0
Int_t defaultPrintContents(Option_t *opt) const override
Define default RooPrinable print options for given Print() flag string For inline printing only show ...
bool allInRange(const char *rangeSpec) const
Return true if all contained object report to have their value inside the specified range.
void assignFast(const RooAbsCollection &other, bool setValDirty=true) const
Functional equivalent of assign() but assumes this and other collection have same layout.
void sortTopologically()
Sort collection topologically: the servers of any RooAbsArg will be before that RooAbsArg in the coll...
const char * getStringValue(const char *name, const char *defVal="", bool verbose=false) const
Get string value of a RooStringVar stored in set with given name.
bool contains(const RooAbsArg &var) const
Check if collection contains an argument with the same name as var.
virtual bool canBeAdded(const RooAbsArg &arg, bool silent) const =0
Determine whether it's possible to add a given RooAbsArg to the collection or not.
RooAbsCollection * snapshot(bool deepCopy=true) const
Take a snap shot of current collection contents.
RooAbsCollection()
Default constructor.
void printValue(std::ostream &os) const override
Print value of collection, i.e.
void printLatex(const RooCmdArg &arg1={}, const RooCmdArg &arg2={}, const RooCmdArg &arg3={}, const RooCmdArg &arg4={}, const RooCmdArg &arg5={}, const RooCmdArg &arg6={}, const RooCmdArg &arg7={}, const RooCmdArg &arg8={}) const
Output content of collection as LaTex table.
~RooAbsCollection() override
Destructor.
bool setStringValue(const char *name, const char *newVal="", bool verbose=false)
Set string value of a RooStringVar stored in set with given name to newVal.
const char * GetName() const override
Returns name of object.
virtual bool add(const RooAbsArg &var, bool silent=false)
Add the specified argument to list.
void setAttribAll(const Text_t *name, bool value=true)
Set given attribute in each element of the collection by calling each elements setAttribute() functio...
void printTitle(std::ostream &os) const override
Return collection title.
Int_t index(const RooAbsArg *arg) const
Returns index of given arg, or -1 if arg is not in the collection.
bool _allRRV
All contents are RRV.
bool hasSameLayout(const RooAbsCollection &other) const
Check that all entries where the collections overlap have the same name.
void RecursiveRemove(TObject *obj) override
If one of the TObject we have a referenced to is deleted, remove the reference.
void assign(const RooAbsCollection &other) const
Sets the value, cache and constant attribute of any argument in our set that also appears in the othe...
Storage_t::size_type size() const
RooAbsArg * first() const
virtual bool replace(const RooAbsArg &var1, const RooAbsArg &var2)
Replace var1 with var2 and return true for success.
bool setCatIndex(const char *name, Int_t newVal=0, bool verbose=false)
Set index value of a RooAbsCategoryLValue stored in set with given name to newVal.
void clear()
Clear contents. If the collection is owning, it will also delete the contents.
void printMultiline(std::ostream &os, Int_t contents, bool verbose=false, TString indent="") const override
Implement multiline printing of collection, one line for each contained object showing the requested ...
static void throwAddTypedException(TClass *klass, RooAbsArg *arg)
bool setCatLabel(const char *name, const char *newVal="", bool verbose=false)
Set state name of a RooAbsCategoryLValue stored in set with given name to newVal.
virtual bool addOwned(RooAbsArg &var, bool silent=false)
Add an argument and transfer the ownership to the collection.
Storage_t _list
Actual object storage.
RooAbsCollection * selectByName(const char *nameList, bool verbose=false) const
Create a subset of the current collection, consisting only of those elements with names matching the ...
bool setRealValue(const char *name, double newVal=0.0, bool verbose=false)
Set value of a RooAbsRealLValue stored in set with given name to newVal No error messages are printed...
bool _ownCont
Flag to identify a list that owns its contents.
virtual RooAbsArg * addClone(const RooAbsArg &var, bool silent=false)
Add a clone of the specified argument to list.
void printName(std::ostream &os) const override
Return collection name.
void sort(bool reverse=false)
Sort collection using std::sort and name comparison.
std::size_t _sizeThresholdForMapSearch
!
void dump() const
Base contents dumper for debugging purposes.
bool selectCommon(const RooAbsCollection &refColl, RooAbsCollection &outColl) const
Create a subset of the current collection, consisting only of those elements that are contained as we...
const char * getCatLabel(const char *name, const char *defVal="", bool verbose=false) const
Get state name of a RooAbsCategory stored in set with given name.
virtual bool containsInstance(const RooAbsArg &var) const
Check if this exact instance is in this collection.
void useHashMapForFind(bool flag) const
bool replaceImpl(const RooAbsArg &var1, const RooAbsArg &var2)
std::string contentsString() const
Return comma separated list of contained object names as STL string.
void printClassName(std::ostream &os) const override
Return collection class name.
void setName(const char *name)
RooAbsCollection & operator=(const RooAbsCollection &other)
Assign values from the elements in other to our elements.
void insert(RooAbsArg *)
Insert an element into the owned collections.
RooAbsArg * find(const char *name) const
Find object with given name in list.
Abstract base class for objects that represent a real value that may appear on the left hand side of ...
virtual void setVal(double value)=0
Set the current value of the object. Needs to be overridden by implementations.
Abstract base class for objects that represent a real value and implements functionality common to al...
double getVal(const RooArgSet *normalisationSet=nullptr) const
Evaluate object.
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.
RooArgSet is a container object that can hold multiple RooAbsArg objects.
Named container for two doubles, two integers two object points and three string pointers that can be...
void addArg(const RooCmdArg &arg)
Utility function to add nested RooCmdArg to payload of this RooCmdArg.
const char * getString(Int_t idx) const
Return string stored in slot idx.
void setString(Int_t idx, const char *value)
Configurable parser for RooCmdArg named arguments.
void defineMutex(const char *head, Args_t &&... tail)
Define arguments where any pair is mutually exclusive.
bool process(const RooCmdArg &arg)
Process given RooCmdArg.
bool hasProcessed(const char *cmdName) const
Return true if RooCmdArg with name 'cmdName' has been processed.
bool ok(bool verbose) const
Return true of parsing was successful.
bool defineObject(const char *name, const char *argName, int setNum, const TObject *obj=nullptr, bool isArray=false)
Define TObject property name 'name' mapped to object in slot 'setNum' in RooCmdArg with name argName ...
const char * getString(const char *name, const char *defaultValue="", bool convEmptyToNull=false) const
Return string property registered with name 'name'.
bool defineString(const char *name, const char *argName, int stringNum, const char *defValue="", bool appendMode=false)
Define double property name 'name' mapped to double in slot 'stringNum' in RooCmdArg with name argNam...
const RooLinkedList & getObjectList(const char *name) const
Return list of objects registered with name 'name'.
bool defineInt(const char *name, const char *argName, int intNum, int defValue=0)
Define integer property name 'name' mapped to integer in slot 'intNum' in RooCmdArg with name argName...
int getInt(const char *name, int defaultValue=0) const
Return integer property registered with name 'name'.
Collection class for internal use, storing a collection of RooAbsArg pointers in a doubly linked list...
TObject * At(int index) const
Return object stored in sequential position given by index.
void Delete(Option_t *o=nullptr) override
Remove all elements in collection and delete all elements NB: Collection does not own elements,...
virtual void Add(TObject *arg)
TObject * FindObject(const char *name) const override
Return pointer to object with given name.
Registry for const char* names.
static const TNamed * known(const char *stringPtr)
If the name is already known, return its TNamed pointer. Otherwise return 0 (don't register the name)...
A 'mix-in' base class that define the standard RooFit plotting and printing methods.
static void nameFieldLength(Int_t newLen)
Set length of field reserved from printing name of RooAbsArgs in multi-line collection printing to gi...
Variable that can be changed from the outside.
TString * format(const RooCmdArg &formatArg) const
Format contents of RooRealVar for pretty printing on RooPlot parameter boxes.
void copyCacheFast(const RooRealVar &other, bool setValDirty=true)
A RooAbsArg implementing string values.
void setVal(const char *newVal)
const char * getVal() const
static void create(const TObject *obj)
Register creation of object 'obj'.
TClass instances represent classes, structs and namespaces in the ROOT type system.
The TNamed class is the base class for all named ROOT classes.
const char * GetName() const override
Returns name of object.
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".
virtual const char * GetTitle() const
Returns title of object.
Regular expression class.
int CompareTo(const char *cs, ECaseCompare cmp=kExact) const
Compare a string to char *cs2.
const char * Data() const
TString & ReplaceAll(const TString &s1, const TString &s2)
TString & Append(const char *cs)
Ssiz_t Index(const char *pat, Ssiz_t i=0, ECaseCompare cmp=kExact) const
RooCmdArg LatexTableStyle(bool flag=true)
The namespace RooFit contains mostly switches that change the behaviour of functions of PDFs (or othe...
bool snapshotImpl(RooAbsCollection const &input, RooAbsCollection &output, bool deepCopy, RooArgSet const *observables)
Helper for hash-map-assisted finding of elements by name.
RooAbsArg * find(const TNamed *nptr) const
std::unordered_map< const TNamed *, const RooAbsArg *const > nameToItemMap
const std::size_t & currentRooNameRegCounter
void erase(const RooAbsArg *elm)
std::size_t rooNameRegCounterWhereMapWasValid
void replace(const RooAbsArg *out, const RooAbsArg *in)
void insert(const RooAbsArg *elm)
HashAssistedFind(It_t first, It_t last)
Initialise empty hash map for fast finding by name.