70 template<
typename It_t>
76 for (
auto it =
first; it != last; ++it) {
144 _allRRV(other._allRRV),
145 _sizeThresholdForMapSearch(100)
164 _list(std::move(other._list)),
165 _ownCont(other._ownCont),
166 _name(std::move(other._name)),
167 _allRRV(other._allRRV),
168 _sizeThresholdForMapSearch(other._sizeThresholdForMapSearch)
196 for (
auto item :
_list) {
225 snapName.
Append(
"Snapshot of ") ;
258 for (
auto orig :
_list) {
267 for (Storage_t::size_type i = 0; i <
output._list.size(); ++i) {
268 const auto var =
output._list[i];
269 error |=
output.addServerClonesToList(*var);
275 coutE(ObjectHandling) <<
"RooAbsCollection::snapshot(): Errors occurred in deep clone process, snapshot not created" << std::endl;
284 var->redirectServers(
output,deepCopy);
307 for (
const auto server : var.
servers()) {
311 auto* serverClone =
static_cast<RooAbsArg*
>(server->Clone());
342 if (&other==
this) return ;
344 for (
auto elem :
_list) {
345 auto theirs = other.
find(*elem);
346 if(!theirs)
continue;
348 elem->copyCache(theirs) ;
349 elem->setAttribute(
"Constant",theirs->isConstant()) ;
364 if (&other==
this)
return *
this;
367 if (
size()==1 &&
size() == other.
size() && forceIfSizeOne) {
373 for (
auto elem :
_list) {
374 auto theirs = other.
find(*elem);
375 if(!theirs)
continue;
377 elem->copyCache(theirs,
true) ;
390 if (&other==
this) return ;
393 auto iter2 = other.
_list.begin();
394 for (
auto iter1 =
_list.begin();
395 iter1 !=
_list.end() && iter2 != other.
_list.end();
402 auto theirs =
static_cast<RooRealVar*
>(*iter2);
405 (*iter2)->syncCache() ;
406 (*iter1)->copyCache(*iter2,
true,setValDirty) ;
430 coutE(ObjectHandling) <<
ClassName() <<
"::" <<
GetName() <<
"::addOwned: can only add to an owned list" << std::endl;
456 throw std::runtime_error(std::string(
"RooAbsCollection::addOwned could not add the argument to the")
457 +
" collection! The ownership would not be well defined if we ignore this.");
477 coutE(ObjectHandling) <<
ClassName() <<
"::" <<
GetName() <<
"::addClone: can only add to an owned list" << std::endl;
504 coutE(ObjectHandling) <<
ClassName() <<
"::" <<
GetName() <<
"::add: cannot add to an owned list" << std::endl;
531 throw std::invalid_argument(
"Passing an owning RooAbsCollection by const& to"
532 " RooAbsCollection::addOwned is forbidden because the ownership"
533 " would be ambiguous! Please std::move() the RooAbsCollection in this case."
534 " Note that the passed RooAbsCollection is invalid afterwards.");
541 for (
auto item : list.
_list) {
558 if(list.isOwning()) {
559 list.releaseOwnership();
561 if(list.empty())
return false;
566 throw std::runtime_error(std::string(
"RooAbsCollection::addOwned could not add the argument to the")
567 +
" collection! The ownership would not be well defined if we ignore this.");
588 for (
auto item : list.
_list) {
603 coutE(ObjectHandling) <<
"RooAbsCollection: cannot replace variables in a copied list" << std::endl;
608 for (
const auto * arg : other.
_list) {
610 auto found =
find(*arg);
611 if (found)
replace(*found,*arg);
628 coutE(ObjectHandling) <<
"RooAbsCollection: cannot replace variables in a copied list" << std::endl;
634 auto var1It = std::find(
_list.begin(),
_list.end(), &var1);
636 if (var1It ==
_list.end()) {
637 coutE(ObjectHandling) <<
"RooAbsCollection: variable \"" <<
name <<
"\" is not in the list"
638 <<
" and cannot be replaced" << std::endl;
646 if(other != 0 && other != &var1) {
647 coutE(ObjectHandling) <<
"RooAbsCollection: cannot replace \"" <<
name
648 <<
"\" with already existing \"" << var2.
GetName() <<
"\"" << std::endl;
677 const auto sizeBefore =
_list.size();
679 if (matchByNameOnly) {
682 return elm->GetName() ==
name;
684 std::set<RooAbsArg*> toBeDeleted;
688 if (nameMatch(elm)) {
689 toBeDeleted.insert(elm);
696 for (
auto arg : toBeDeleted)
699 _list.erase(std::remove(_list.begin(), _list.end(), &var), _list.end());
702 if (_hashAssistedFind && sizeBefore != _list.size()) {
703 _hashAssistedFind->erase(&var);
706 return sizeBefore != _list.size();
721 auto oldSize =
_list.size();
722 std::vector<const RooAbsArg*> markedItems;
724 if (matchByNameOnly) {
728 auto nameMatchAndMark = [&list, &markedItems](
const RooAbsArg* elm) {
730 markedItems.push_back(elm);
740 auto argMatchAndMark = [&list, &markedItems](
const RooAbsArg* elm) {
742 markedItems.push_back(elm);
752 for(
auto& var : markedItems ) {
758 std::set<const RooAbsArg*> toBeDeleted(markedItems.begin(), markedItems.end());
759 for (
auto arg : toBeDeleted) {
764 return oldSize !=
_list.size();
795 for (
auto arg :
_list) {
811 selName.
Append(
"_selection") ;
815 for (
auto arg :
_list) {
838 for (
auto arg :
_list) {
839 if (refColl.
find(*arg))
869 selName.
Append(
"_selection") ;
872 const size_t bufSize = strlen(nameList) + 1;
873 std::vector<char> buf(bufSize);
874 strlcpy(buf.data(),nameList,bufSize) ;
875 char* wcExpr = strtok(buf.data(),
",") ;
879 cxcoutD(ObjectHandling) <<
"RooAbsCollection::selectByName(" <<
GetName() <<
") processing expression '" << wcExpr <<
"'" << std::endl;
882 for (
auto const* arg : *
this) {
885 cxcoutD(ObjectHandling) <<
"RooAbsCollection::selectByName(" <<
GetName() <<
") selected element " << arg->GetName() << std::endl;
890 wcExpr = strtok(0,
",") ;
905 if (
size() != otherColl.
size())
return false ;
909 return left->
namePtr() == right->namePtr();
912 return std::is_permutation(
_list.begin(),
_list.end(),
913 otherColl.
_list.begin(),
921template<
class Collection_t>
922RooAbsArg* findUsingNamePointer(
const Collection_t& coll,
const TNamed* ptr) {
923 auto findByNamePtr = [ptr](
const RooAbsArg* elm) {
924 return ptr == elm->namePtr();
927 auto item = std::find_if(coll.begin(), coll.end(), findByNamePtr);
929 return item != coll.end() ? *item :
nullptr;
944 if (!nptr)
return nullptr;
954 return findUsingNamePointer(
_list, nptr);
964 const auto nptr = arg.
namePtr();
974 return findUsingNamePointer(
_list, nptr);
981 const std::string theName(
name);
983 return elm->GetName() == theName;
985 return item !=
_list.end() ? item -
_list.begin() : -1;
997 if (verbose)
coutE(InputArguments) <<
"RooAbsCollection::getRealValue(" <<
GetName() <<
") ERROR no object with name '" <<
name <<
"' found" << std::endl;
1002 if (verbose)
coutE(InputArguments) <<
"RooAbsCollection::getRealValue(" <<
GetName() <<
") ERROR object '" <<
name <<
"' is not of type RooAbsReal" << std::endl;
1018 if (verbose)
coutE(InputArguments) <<
"RooAbsCollection::setRealValue(" <<
GetName() <<
") ERROR no object with name '" <<
name <<
"' found" << std::endl;
1023 if (verbose)
coutE(InputArguments) <<
"RooAbsCollection::setRealValue(" <<
GetName() <<
") ERROR object '" <<
name <<
"' is not of type RooAbsRealLValue" << std::endl;
1040 if (verbose)
coutE(InputArguments) <<
"RooAbsCollection::getCatLabel(" <<
GetName() <<
") ERROR no object with name '" <<
name <<
"' found" << std::endl;
1045 if (verbose)
coutE(InputArguments) <<
"RooAbsCollection::getCatLabel(" <<
GetName() <<
") ERROR object '" <<
name <<
"' is not of type RooAbsCategory" << std::endl;
1061 if (verbose)
coutE(InputArguments) <<
"RooAbsCollection::setCatLabel(" <<
GetName() <<
") ERROR no object with name '" <<
name <<
"' found" << std::endl;
1066 if (verbose)
coutE(InputArguments) <<
"RooAbsCollection::setCatLabel(" <<
GetName() <<
") ERROR object '" <<
name <<
"' is not of type RooAbsCategory" << std::endl;
1083 if (verbose)
coutE(InputArguments) <<
"RooAbsCollection::getCatLabel(" <<
GetName() <<
") ERROR no object with name '" <<
name <<
"' found" << std::endl;
1088 if (verbose)
coutE(InputArguments) <<
"RooAbsCollection::getCatLabel(" <<
GetName() <<
") ERROR object '" <<
name <<
"' is not of type RooAbsCategory" << std::endl;
1091 return rac->getCurrentIndex() ;
1104 if (verbose)
coutE(InputArguments) <<
"RooAbsCollection::setCatLabel(" <<
GetName() <<
") ERROR no object with name '" <<
name <<
"' found" << std::endl;
1109 if (verbose)
coutE(InputArguments) <<
"RooAbsCollection::setCatLabel(" <<
GetName() <<
") ERROR object '" <<
name <<
"' is not of type RooAbsCategory" << std::endl;
1126 if (verbose)
coutE(InputArguments) <<
"RooAbsCollection::getStringValue(" <<
GetName() <<
") ERROR no object with name '" <<
name <<
"' found" << std::endl;
1131 if (verbose)
coutE(InputArguments) <<
"RooAbsCollection::getStringValue(" <<
GetName() <<
") ERROR object '" <<
name <<
"' is not of type RooStringVar" << std::endl;
1148 if (verbose)
coutE(InputArguments) <<
"RooAbsCollection::setStringValue(" <<
GetName() <<
") ERROR no object with name '" <<
name <<
"' found" << std::endl;
1153 if (verbose)
coutE(InputArguments) <<
"RooAbsCollection::setStringValue(" <<
GetName() <<
") ERROR object '" <<
name <<
"' is not of type RooStringVar" << std::endl;
1165 std::string retVal ;
1166 for (
auto arg :
_list) {
1167 retVal += arg->GetName();
1171 retVal.erase(retVal.end()-1);
1216 if (opt &&
TString(opt)==
"I") {
1219 if (opt &&
TString(opt).Contains(
"v")) {
1237 for (
auto arg :
_list) {
1246 os << arg->GetName();
1268 Int_t maxNameLen(1) ;
1270 if (nameFieldLengthSaved==0) {
1271 for (
auto next :
_list) {
1272 Int_t len = strlen(next->GetName()) ;
1273 if (
len>maxNameLen) maxNameLen =
len ;
1278 unsigned int idx = 0;
1279 for (
auto next :
_list) {
1280 os <<
indent << std::setw(3) << ++idx <<
") ";
1295 for (
auto arg :
_list) {
1296 std::cout << arg <<
" " << arg->ClassName() <<
"::" << arg->GetName() <<
" (" << arg->GetTitle() <<
")" << std::endl ;
1349 pc.
defineInt(
"dummy",
"FormatArgs",0,0) ;
1360 pc.
process(arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8) ;
1365 const char* outFile = pc.
getString(
"outputFile") ;
1366 if (outFile && strlen(outFile)) {
1367 std::ofstream ofs(outFile) ;
1406 sibFormatCmd = *formatCmd ;
1410 static char buf[100] ;
1411 strlcpy(buf,tmp.
Data(),100) ;
1419 for(
auto * col : static_range_cast<RooAbsCollection*>(siblingList)) {
1427 for(
auto * col : static_range_cast<RooAbsCollection*>(listList)) {
1429 for (
auto* arg : *col) {
1434 coutW(InputArguments) <<
"RooAbsCollection::printLatex: can only print RooRealVar in LateX, skipping non-RooRealVar object named "
1435 << arg->GetName() << std::endl;
1438 coutW(InputArguments) <<
"RooAbsCollection::printLatex: WARNING: naming and/or ordering of sibling list is different" << std::endl;
1441 listListRRV.
Add(list) ;
1442 if (prevList && list->
size() != prevList->
size()) {
1443 coutW(InputArguments) <<
"RooAbsCollection::printLatex: ERROR: sibling list(s) must have same length as self" << std::endl;
1454 for (k=0 ; k<nlist ; k++) subheader +=
"c" ;
1456 TString header =
"\\begin{tabular}{" ;
1457 for (j=0 ; j<ncol ; j++) {
1458 if (j>0) header +=
"|" ;
1459 header += subheader ;
1462 ofs << header << std::endl;
1466 for (i=0 ; i<nrow ; i++) {
1467 for (j=0 ; j<ncol ; j++) {
1468 for (k=0 ; k<nlist ; k++) {
1472 ofs << *std::unique_ptr<TString>{par->
format(sigDigit,(k==0)?
option:sibOption.
Data())};
1474 ofs << *std::unique_ptr<TString>{par->
format((k==0)?*formatCmd:sibFormatCmd)};
1477 if (!(j==ncol-1 && k==nlist-1)) {
1482 ofs <<
"\\\\" << std::endl;
1485 ofs <<
"\\end{tabular}" << std::endl;
1498 if (!rangeSpec)
return true ;
1501 std::vector<std::string> cutVec ;
1502 if (rangeSpec && strlen(rangeSpec)>0) {
1503 if (strchr(rangeSpec,
',')==0) {
1504 cutVec.push_back(rangeSpec) ;
1506 const size_t bufSize = strlen(rangeSpec)+1;
1507 std::vector<char> buf(bufSize);
1508 strlcpy(buf.data(),rangeSpec,bufSize) ;
1509 const char* oneRange = strtok(buf.data(),
",") ;
1511 cutVec.push_back(oneRange) ;
1512 oneRange = strtok(0,
",") ;
1518 bool selectByRange = true ;
1519 for (
auto arg :
_list) {
1520 bool selectThisArg = false ;
1522 for (icut=0 ; icut<cutVec.size() ; icut++) {
1523 if (arg->inRange(cutVec[icut].c_str())) {
1524 selectThisArg = true ;
1528 if (!selectThisArg) {
1529 selectByRange = false ;
1534 return selectByRange ;
1555 return strcmp(
l->
GetName(),
r->GetName()) > 0;
1558 std::sort(
_list.begin(),
_list.end(), cmpReverse);
1562 return strcmp(
l->
GetName(),
r->GetName()) < 0;
1574 std::unordered_set<TNamed const *> seenArgs;
1575 for (std::size_t iArg = 0; iArg <
_list.size(); ++iArg) {
1577 bool movedArg =
false;
1579 if (seenArgs.find(server->namePtr()) == seenArgs.end()) {
1580 auto found = std::find_if(
_list.begin(),
_list.end(),
1581 [server](
RooAbsArg *elem) { return elem->namePtr() == server->namePtr(); });
1582 if (found !=
_list.end()) {
1594 seenArgs.insert(arg->
namePtr());
1603 ccoutE(DataHandling) <<
"The legacy RooFit collection iterators don't support reverse iterations, any more. "
1604 <<
"Use begin() and end()" << std::endl;
1605 return std::make_unique<LegacyIterator_t>(
_list);
1612 _list.push_back(item);
1635 for (
unsigned int i=0; i < std::min(
_list.size(), other.
size()); ++i) {
1636 if (
_list[i]->namePtr() != other.
_list[i]->namePtr())
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
RooAbsArg is the common abstract base class for objects that represent a value and a "shape" in RooFi...
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
const RefCountList_t & servers() const
List of all servers of this object.
void setAttribute(const Text_t *name, bool value=true)
Set (default) or clear a named boolean attribute of this object.
TObject * Clone(const char *newname=nullptr) const override
Make a clone of an object using the Streamer facility.
RooAbsCategoryLValue is the common abstract base class for objects that represent a discrete value th...
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.
RooAbsCollection is an 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.
Int_t getSize() const
Return the number of elements in the collection.
~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 printLatex(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
Output content of collection as LaTex table.
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 addServerClonesToList(const RooAbsArg &var)
Add clones of servers of given argument to end of list.
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.
void reserve(Storage_t::size_type count)
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 ...
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 RooAbsRealLValye 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::unique_ptr< LegacyIterator_t > makeLegacyIterator(bool forward=true) const
Factory for legacy iterators.
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
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.
RooAbsRealLValue is the common abstract base class for objects that represent a real value that may a...
virtual void setVal(double value)=0
Set the current value of the object. Needs to be overridden by implementations.
RooAbsReal is the common abstract base class for objects that represent a real value and implements f...
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.
RooCmdArg is a named container for two doubles, two integers two object points and three string point...
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)
Class RooCmdConfig is a configurable parser for RooCmdArg named arguments.
bool defineObject(const char *name, const char *argName, Int_t setNum, const TObject *obj=nullptr, bool isArray=false)
Define TObject property name 'name' mapped to object in slot 'setNum' in RooCmdArg with name argName ...
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.
Int_t getInt(const char *name, Int_t defaultValue=0)
Return integer property registered with name 'name'.
const RooLinkedList & getObjectList(const char *name)
Return list of objects registered with name 'name'.
bool defineInt(const char *name, const char *argName, Int_t intNum, Int_t defValue=0)
Define integer property name 'name' mapped to integer in slot 'intNum' in RooCmdArg with name argName...
bool defineString(const char *name, const char *argName, Int_t stringNum, const char *defValue="", bool appendMode=false)
Define double property name 'name' mapped to double in slot 'stringNum' in RooCmdArg with name argNam...
bool ok(bool verbose) const
Return true of parsing was successful.
const char * getString(const char *name, const char *defaultValue="", bool convEmptyToNull=false)
Return string property registered with name 'name'.
RooLinkedList is an collection class for internal use, storing a collection of RooAbsArg pointers in ...
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 obejct with given name.
RooNameReg is a 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)...
RooPlotable is 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...
RooRealVar represents a 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)
std::size_t size() const
Number of contained objects (neglecting the ref count).
RooStringVar is 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'.
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...
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)
Inititalise empty hash map for fast finding by name.