180 return !TString(label).CompareTo(
getLabel()) ;
200 if (!assumeSameType) {
271 << index <<
" already assigned" << endl ;
277 << label <<
" already assigned or not allowed" << endl ;
306 if((*type) == other)
return type;
328 if((*type) == index)
return type;
347 if((*type) == label)
return type;
352 Int_t idx=strtol(label,&endptr,10) ;
353 if (endptr==label+strlen(label)) {
356 if((*type) == idx)
return type;
443 os << indent <<
"--- RooAbsCategory ---" << endl;
445 os << indent <<
" ** No values defined **" << endl;
448 os << indent <<
" Value is \"" <<
getLabel() <<
"\" (" <<
getIndex() <<
")" << endl;
449 os << indent <<
" Has the following possible values:" << endl;
483 TBranch* branch = t.GetBranch(cleanName) ;
487 if (!typeName.CompareTo(
"Int_t")) {
491 <<
" will be interpreted as category index" << endl ;
497 }
else if (!typeName.CompareTo(
"UChar_t")) {
499 <<
" will be interpreted as category index" << endl ;
513 TString idxName(cleanName) ;
514 TString lblName(cleanName) ;
515 idxName.Append(
"_idx") ;
516 lblName.Append(
"_lbl") ;
519 if ((branch = t.GetBranch(idxName))) {
523 cxcoutD(
Contents) <<
"RooAbsCategory::attachToTree(" <<
GetName() <<
") Fixing compression level of branch " << idxName << endl ;
528 TString format(idxName);
531 branch = t.Branch(idxName, ptr, (
const Text_t*)format, bufSize);
536 if ((branch = t.GetBranch(lblName))) {
540 cxcoutD(
DataHandling) <<
"RooAbsCategory::attachToTree(" <<
GetName() <<
") Fixing compression level of branch " << lblName << endl ;
545 TString format(lblName);
548 branch = t.Branch(lblName, ptr, (
const Text_t*)format, bufSize);
563 idxName.Append(
"_idx") ;
564 lblName.Append(
"_lbl") ;
567 TBranch* idxBranch = t.GetBranch(idxName) ;
568 TBranch* lblBranch = t.GetBranch(lblName) ;
569 if (!idxBranch||!lblBranch) {
587 t.SetBranchStatus(
Form(
"%s_idx",
GetName()),active?1:0) ;
588 t.SetBranchStatus(
Form(
"%s_lbl",
GetName()),active?1:0) ;
624 <<
") ERROR: index of source arg " << source->
GetName()
626 <<
"), value not updated" << endl ;
628 }
if (source->
getAttribute(
"UCHARIDXONLY_TREE_BRANCH")) {
636 <<
") ERROR: index of source arg " << source->
GetName()
637 <<
" is invalid (" << tmp
638 <<
"), value not updated" << endl ;
CatVector * addCategory(RooAbsCategory *cat)
void clearValueDirty() const
void setAttribute(const Text_t *name, Bool_t value=kTRUE)
Set (default) or clear a named boolean attribute of this object.
virtual const char * GetName() const
Returns name of object.
A TLeaf describes individual elements of a TBranch See TBranch structure in TTree.
virtual void copyCache(const RooAbsArg *source, Bool_t valueOnly=kFALSE, Bool_t setValueDirty=kTRUE)
Copy the cached value from given source and raise dirty flag.
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, which is interpreted as an OR of 'enum ContentsOptions' values and in the style given by 'enum StyleOption'.
virtual Bool_t readFromStream(std::istream &is, Bool_t compact, Bool_t verbose=kFALSE)
Read object contents from stream (dummy for now)
virtual void setTreeBranchStatus(TTree &t, Bool_t active)
(De)activate associate tree branch
void setBuffer(RooCatType *newBuf)
Bool_t isValidLabel(const char *label) const
Check if state with given name is defined.
Int_t GetCompressionLevel() const
virtual void writeToStream(std::ostream &os, Bool_t compact) const
Write object contents to ostream.
virtual void Delete(Option_t *option="")
Remove all objects from the array AND delete all heap based objects.
RooCatType _value
Transient cache for byte values from tree branches.
const RooCatType * getOrdinal(UInt_t n, const char *rangeName=0) const
Return state definition of ordinal nth defined state, needed by the generator mechanism.
virtual void attachToVStore(RooVectorDataStore &vstore)
Attach the category index and label to as branches to the given vector store.
void SetCompressionLevel(Int_t level=1)
Set compression level.
void clearTypes()
Delete all currently defined states.
Roo1DTable * createTable(const char *label) const
Create a table matching the shape of this category.
Bool_t operator==(Int_t index) const
Equality operator with a integer (compares with state index number)
virtual Int_t getIndex() const
Return index number of current state.
virtual RooCatType evaluate() const =0
TObject * At(Int_t idx) const
virtual void syncCache(const RooArgSet *set=0)
Explicitly synchronize RooAbsCategory internal cache.
Iterator abstract base class.
void setValueDirty() const
virtual Bool_t isValid() const
Check if current value is a valid state.
virtual const char * ClassName() const
Returns name of class to which the object belongs.
Int_t numTypes(const char *=0) const
virtual void printValue(std::ostream &os) const
Print value (label name)
RooVectorDataStore is the abstract base class for data collection that use a TTree as internal storag...
RooCatType is an auxilary class for RooAbsCategory and defines a a single category state...
const RooCatType * defineType(const char *label)
Define a new state with given name.
Bool_t isSignType(Bool_t mustHaveZero=kFALSE) const
Determine if category has 2 or 3 states with index values -1,0,1.
Bool_t getAttribute(const Text_t *name) const
Check if a named attribute is set. By default, all attributes are unset.
virtual Bool_t isIdentical(const RooAbsArg &other, Bool_t assumeSameType=kFALSE)
TString cleanBranchName() const
Construct a mangled name from the actual name that is free of any math symbols that might be interpre...
virtual void attachToTree(TTree &t, Int_t bufSize=32000)
Attach the category index and label to as branches to the given TTree.
TIterator * typeIterator() const
Return iterator over all defined states.
virtual const Text_t * GetName() const
Returns name of object.
const RooCatType * lookupType(Int_t index, Bool_t printError=kFALSE) const
Find our type corresponding to the specified index, or return 0 for no match.
char * Form(const char *fmt,...)
virtual void printMultiline(std::ostream &os, Int_t contents, Bool_t verbose=kFALSE, TString indent="") const
Implement multi-line detailed printing.
Bool_t isValidIndex(Int_t index) const
Check if state with given index is defined.
virtual const char * getLabel() const
Return label string of current state.
RooCatType traceEval() const
Recalculate current value and check validity of new result.
RooAbsArg * createFundamental(const char *newname=0) const
Create a RooCategory fundamental object with our properties.
RooCategory represents a fundamental (non-derived) discrete value object.
virtual ~RooAbsCategory()
Destructor.
TIterator * MakeIterator(Bool_t dir=kIterForward) const
Returns an array iterator.
virtual void printMultiline(std::ostream &os, Int_t contents, Bool_t verbose=kFALSE, TString indent="") const
Print info about this object to the specified stream.
virtual Bool_t traceEvalHook(RooCatType) const
TObjArray * GetListOfLeaves()
virtual void SetName(const Text_t *name)
Constructor with name argument.
Bool_t isValueDirty() const
Mother of all ROOT objects.
virtual TObject * Clone(const char *newname="") const
Make a clone of an object using the Streamer facility.
virtual void fillTreeBranch(TTree &t)
Fill tree branches associated with current object with current value.
void setShapeDirty() const
virtual TObject * Next()=0
RooAbsCategory is the common abstract base class for objects that represent a discrete value with a f...
Int_t GetEntries() const
Return the number of objects in array (i.e.
Bool_t isShapeDirty() const
RooAbsArg is the common abstract base class for objects that represent a value (of arbitrary type) an...
A TTree is a list of TBranches.
Roo1DTable implements a one-dimensional table.
const RooCatType * defineTypeUnchecked(const char *label, Int_t index)
Internal version of defineType that does not check if type already exists.
void clearShapeDirty() const
virtual const char * GetTitle() const
Returns title of object.