37 ClassImp(RooBinningCategory);
45 RooBinningCategory::RooBinningCategory(
const char *name,
const char *title, RooAbsRealLValue& inputVar,
46 const char* binningName,
const char* catTypeName) :
47 RooAbsCategory(name, title), _inputVar(
"inputVar",
"Input category",this,inputVar), _bname(binningName)
49 initialize(catTypeName) ;
58 RooBinningCategory::RooBinningCategory(
const RooBinningCategory& other,
const char *name) :
59 RooAbsCategory(other,name), _inputVar(
"inputVar",this,other._inputVar), _bname(other._bname)
68 RooBinningCategory::~RooBinningCategory()
78 void RooBinningCategory::initialize(
const char* catTypeName)
80 Int_t nbins = ((RooAbsRealLValue&)_inputVar.arg()).getBinning(_bname.Length()>0?_bname.Data():0).numBins() ;
81 for (Int_t i=0 ; i<nbins ; i++) {
82 string name = catTypeName!=0 ? Form(
"%s%d",catTypeName,i)
83 : (_bname.Length()>0 ? Form(
"%s_%s_bin%d",_inputVar.arg().GetName(),_bname.Data(),i)
84 : Form(
"%s_bin%d",_inputVar.arg().GetName(),i)) ;
85 defineType(name.c_str(),i) ;
95 RooCatType RooBinningCategory::evaluate()
const
97 Int_t ibin = ((RooAbsRealLValue&)_inputVar.arg()).getBin(_bname.Length()>0?_bname.Data():0) ;
98 const RooCatType* cat = lookupType(ibin) ;
101 string name = (_bname.Length()>0) ? Form(
"%s_%s_bin%d",_inputVar.arg().GetName(),_bname.Data(),ibin)
102 : Form(
"%s_bin%d",_inputVar.arg().GetName(),ibin) ;
103 cat =
const_cast<RooBinningCategory*
>(
this)->defineType(name.c_str(),ibin) ;
120 void RooBinningCategory::printMultiline(ostream& os, Int_t content, Bool_t verbose, TString indent)
const
122 RooAbsCategory::printMultiline(os,content,verbose,indent);
125 os << indent <<
"--- RooBinningCategory ---" << endl
126 << indent <<
" Maps from " ;
127 _inputVar.arg().printStream(os,kName|kValue,kSingleLine);