44 ClassImp(RooMultiCategory);
53 RooMultiCategory::RooMultiCategory(
const char *name,
const char *title,
const RooArgSet& inputCatList2) :
54 RooAbsCategory(name, title), _catSet(
"input",
"Input category set",this,kTRUE,kTRUE)
57 TIterator* iter = inputCatList2.createIterator() ;
59 while ((arg=(RooAbsArg*)iter->Next())) {
60 if (!dynamic_cast<RooAbsCategory*>(arg)) {
61 coutE(InputArguments) <<
"RooMultiCategory::RooMultiCategory(" << GetName() <<
"): input argument " << arg->GetName()
62 <<
" is not a RooAbsCategory" << endl ;
76 RooMultiCategory::RooMultiCategory(
const RooMultiCategory& other,
const char *name) :
77 RooAbsCategory(other,name), _catSet(
"input",this,other._catSet)
87 RooMultiCategory::~RooMultiCategory()
96 void RooMultiCategory::updateIndexList()
101 RooMultiCatIter iter(_catSet) ;
103 while((obj=(TObjString*)iter.Next())) {
105 defineType(obj->String()) ;
118 TString RooMultiCategory::currentLabel()
const
120 TIterator* lIter = _catSet.createIterator() ;
124 RooAbsCategory* cat ;
125 Bool_t first(kTRUE) ;
126 while((cat=(RooAbsCategory*) lIter->Next())) {
127 label.Append(first?
"{":
";") ;
128 label.Append(cat->getLabel()) ;
142 RooCatType RooMultiCategory::evaluate()
const
144 if (isShapeDirty())
const_cast<RooMultiCategory*
>(
this)->updateIndexList() ;
148 return *lookupType(currentLabel()) ;
156 void RooMultiCategory::printMultiline(ostream& os, Int_t content, Bool_t verbose, TString indent)
const
158 RooAbsCategory::printMultiline(os,content,verbose,indent) ;
161 os << indent <<
"--- RooMultiCategory ---" << endl;
162 os << indent <<
" Input category list:" << endl ;
163 TString moreIndent(indent) ;
164 moreIndent.Append(
" ") ;
165 _catSet.printStream(os,kName|kValue,kStandard,moreIndent.Data()) ;
174 Bool_t RooMultiCategory::readFromStream(istream& , Bool_t , Bool_t )
184 void RooMultiCategory::writeToStream(ostream& os, Bool_t compact)
const
186 RooAbsCategory::writeToStream(os,compact) ;