34      : _minBinToPrint(-1), _maxBinToPrint(-1),
 
   35   _label_print_width(20), _bin_print_width(12) {
 
   38   std::cout << 
"Error: The supplied ModelConfig is nullptr " << std::endl;
 
   45   std::cout << 
"Error: The pdf found in the ModelConfig: " << mc->
GetName()
 
   46        << 
" is nullptr" << std::endl;
 
   55      if( !observables_in_mc ) {
 
   56   std::cout << 
"Error: Observable set in the ModelConfig: " << mc->
GetName()
 
   57        << 
" is nullptr" << std::endl;
 
   60      if( observables_in_mc->
empty() ) {
 
   61   std::cout << 
"Error: Observable list: " << observables_in_mc->
GetName()
 
   62        << 
" found in ModelConfig: " << mc->
GetName()
 
   63        << 
" has no entries." << std::endl;
 
   78                   const std::string& WorkspaceName,
 
   79                   const std::string& ModelConfigName) :
 
   80      _minBinToPrint(-1), _maxBinToPrint(-1),
 
   81      _label_print_width(20), _bin_print_width(12) {
 
   84      auto file = std::make_unique<TFile>(FileName.c_str());
 
   86   std::cout << 
"Error: Failed to open file: " << FileName << std::endl;
 
   93   std::cout << 
"Error: Failed to get workspace: " << WorkspaceName
 
   94        << 
" from file: " << FileName << std::endl;
 
  101   std::cout << 
"Error: Failed to find ModelConfig: " << ModelConfigName
 
  102        << 
" from workspace: " << WorkspaceName
 
  103        << 
" in file: " << FileName << std::endl;
 
  110   std::cout << 
"Error: The pdf found in the ModelConfig: " << ModelConfigName
 
  111        << 
" is nullptr" << std::endl;
 
  120      if( !observables_in_mc ) {
 
  121   std::cout << 
"Error: Observable set in the ModelConfig: " << ModelConfigName
 
  122        << 
" is nullptr" << std::endl;
 
  125      if( observables_in_mc->
empty() ) {
 
  126   std::cout << 
"Error: Observable list: " << observables_in_mc->
GetName()
 
  127        << 
" found in ModelConfig: " << ModelConfigName
 
  128        << 
" in file: " << FileName
 
  129        << 
" has no entries." << std::endl;
 
  144      _minBinToPrint(-1), _maxBinToPrint(-1),
 
  145      _label_print_width(20), _bin_print_width(12) {
 
  149   std::cout << 
"Error: The supplied pdf is nullptr" << std::endl;
 
  159   std::cout << 
"Error: Supplied Observable set is nullptr" << std::endl;
 
  162      if( observables->
empty() ) {
 
  163   std::cout << 
"Error: Observable list: " << observables->
GetName()
 
  164        << 
" has no entries." << std::endl;
 
  179      for(
int i = 0; i < num_bins; ++i) {
 
  189   std::cout << std::setw(bin_print_width) << hist->
GetBinContent(current_bin);
 
  191      std::cout << std::endl;
 
  199      std::map< std::string, RooAbsPdf* >::iterator itr;
 
  203   std::cout << 
"Warning: Could not find channel: " << channel
 
  209      if( pdf == 
nullptr ) {
 
  210   std::cout << 
"Warning: Pdf associated with channel: " << channel
 
  211        << 
" is nullptr" << std::endl;
 
  223      std::cout << std::endl << channel << 
":" << std::endl;
 
  240      std::map< std::string, RooAbsReal*>::iterator itr = SampleFunctionMap.begin();
 
  241      for( ; itr != SampleFunctionMap.end(); ++itr) {
 
  243   std::string sample_name = itr->first;
 
  244   std::string tmp_name = sample_name + channel + 
"_pretty_tmp";
 
  245   std::unique_ptr<TH1> sample_hist{
GetSampleHist(channel, sample_name, tmp_name)};
 
  246   num_bins = sample_hist->GetNbinsX()*sample_hist->GetNbinsY()*sample_hist->GetNbinsZ();
 
  255      std::string line_break;
 
  260      for(
int i = 0; i < break_length; ++i) {
 
  263      std::cout << line_break << std::endl;
 
  265      std::string tmp_name = channel + 
"_pretty_tmp";
 
  266      std::unique_ptr<TH1> channel_hist{
GetChannelHist(channel, tmp_name)};
 
  291      for( std::map< std::string, RooAbsReal*>::iterator itr = SampleFunctionMap.begin();
 
  292      itr != SampleFunctionMap.end(); ++itr) {
 
  293   std::string sample_name = itr->first;
 
  302                    const std::string& channel_to_print) {
 
  322      for( 
unsigned int i_chan=0; i_chan < 
fChannelNameVec.size(); ++i_chan) {
 
  327   if( channel_to_print != 
"" && channel_name != channel_to_print) 
continue;
 
  329   std::unique_ptr<TH1> data_hist{
GetDataHist(
data, channel_name, channel_name+
"_tmp")};
 
  350      std::cout << std::endl;
 
  360      std::cout << std::endl;
 
  363      std::cout << std::setw(30) << 
"Parameter";
 
  364      std::cout << std::setw(15) << 
"Value" 
  365      << std::setw(15) << 
"Error Low" 
  366      << std::setw(15) << 
"Error High" 
  370      for (
auto const *param : static_range_cast<RooRealVar *>(params)) {
 
  371        if( !IncludeConstantParams && param->isConstant() ) 
continue;
 
  373        std::cout << std::setw(30) << param->GetName();
 
  374        std::cout << std::setw(15) << param->getVal();
 
  375        if( !param->isConstant() ) {
 
  376            std::cout << std::setw(15) << param->getErrorLo() << std::setw(15) << param->getErrorHi();
 
  378        std::cout<< std::endl;
 
  380     std::cout << std::endl;
 
  384                         bool IncludeConstantParams) {
 
  393      std::cout << std::endl;
 
  396      std::cout << std::setw(30) << 
"Parameter";
 
  397      std::cout << std::setw(15) << 
"Value" 
  398      << std::setw(15) << 
"Error Low" 
  399      << std::setw(15) << 
"Error High" 
  403      for (
auto const *param : static_range_cast<RooRealVar *>(params)) {
 
  404        if( !IncludeConstantParams && param->isConstant() ) 
continue;
 
  405        if( 
findChild(param->GetName(), channel_pdf)==nullptr ) 
continue;
 
  406        std::cout << std::setw(30) << param->GetName();
 
  407        std::cout << std::setw(15) << param->getVal();
 
  408        if( !param->isConstant() ) {
 
  409            std::cout << std::setw(15) << param->getErrorLo() << std::setw(15) << param->getErrorHi();
 
  411        std::cout<< std::endl;
 
  413      std::cout << std::endl;
 
  418                        const std::string& sample,
 
  419                        bool IncludeConstantParams) {
 
  428      std::cout << std::endl;
 
  431      std::cout << std::setw(30) << 
"Parameter";
 
  432      std::cout << std::setw(15) << 
"Value" 
  433      << std::setw(15) << 
"Error Low" 
  434      << std::setw(15) << 
"Error High" 
  438      for (
auto const *param : static_range_cast<RooRealVar *>(params)) {
 
  439        if( !IncludeConstantParams && param->isConstant() ) 
continue;
 
  440        if( 
findChild(param->GetName(), sample_func)==nullptr ) 
continue;
 
  441        std::cout << std::setw(30) << param->GetName();
 
  442        std::cout << std::setw(15) << param->getVal();
 
  443        if( !param->isConstant() ) {
 
  444            std::cout << std::setw(15) << param->getErrorLo() << std::setw(15) << param->getErrorHi();
 
  446        std::cout<< std::endl;
 
  448      std::cout << std::endl;
 
  458      std::unique_ptr<TH1> channel_hist_tmp{
GetChannelHist(channel, (channel+
"_tmp").c_str())};
 
  470      std::unique_ptr<TH1> sample_hist_tmp{
GetSampleHist(channel, sample,  (channel+
"_tmp").c_str())};
 
  479      std::map< std::string, std::map< std::string, RooAbsReal*> >::iterator channel_itr;
 
  482   std::cout << 
"Error: Channel: " << channel << 
" not found in Navigation" << std::endl;
 
  486      return channel_itr->second;
 
  494      std::map< std::string, std::map< std::string, RooAbsReal*> >::iterator channel_itr;
 
  497   std::cout << 
"Error: Channel: " << channel << 
" not found in Navigation" << std::endl;
 
  501      std::map< std::string, RooAbsReal*>& SampleMap = channel_itr->second;
 
  502      std::map< std::string, RooAbsReal*>::iterator sample_itr;
 
  503      sample_itr = SampleMap.find(sample);
 
  504      if( sample_itr==SampleMap.end() ){
 
  505   std::cout << 
"Error: Sample: " << sample << 
" not found in Navigation" << std::endl;
 
  509      return sample_itr->second;
 
  517      std::map< std::string, RooArgSet*>::iterator channel_itr;
 
  520   std::cout << 
"Error: Channel: " << channel << 
" not found in Navigation" << std::endl;
 
  524      return channel_itr->second;
 
  530                     const std::string& hist_name) {
 
  537      std::string 
name = hist_name;
 
  538      if(hist_name==
"") 
name = channel + 
"_" + sample + 
"_hist";
 
  557      TH1* total_hist = 
nullptr;
 
  558      std::map< std::string, RooAbsReal*>::iterator itr = SampleFunctionMap.begin();
 
  559      for( ; itr != SampleFunctionMap.end(); ++itr) {
 
  560   std::string sample_name = itr->first;
 
  561   std::string tmp_hist_name = sample_name + 
"_hist_tmp";
 
  565   total_hist = (
TH1*) sample_hist->
Clone(
"TotalHist");
 
  575      itr = SampleFunctionMap.begin();
 
  576      for( ; itr != SampleFunctionMap.end(); ++itr) {
 
  577   std::string sample_name = itr->first;
 
  578   std::string tmp_hist_name = sample_name + 
"_hist_tmp";
 
  582   total_hist->
Add(sample_hist.get());
 
  585      if(hist_name==
"") total_hist->
SetName(hist_name.c_str());
 
  586      else total_hist->
SetName( (channel + 
"_hist").c_str() );
 
  595      std::vector<std::string> sample_list;
 
  598      std::map< std::string, RooAbsReal*>::iterator itr = sample_map.begin();;
 
  599      for( ; itr != sample_map.end(); ++itr) {
 
  600   sample_list.push_back( itr->first );
 
  609                      const std::string& 
name) {
 
  616      for( 
unsigned int i=0; i < samples.size(); ++i) {
 
  617   std::string sample_name = samples.at(i);
 
  630                   const std::string& 
name) {
 
  637      std::unique_ptr<TList> dataset_list;
 
  647   dataset_list.reset(
data->split(*channelCat));
 
  649   data = 
dynamic_cast<RooDataSet*
>( dataset_list->FindObject(channel.c_str()) );
 
  660   std::cout << 
"Error: To Create Histogram from RooDataSet" << std::endl;
 
  662      dataset_list.reset();
 
  665      } 
else if( dim==1 ) {
 
  684   std::cout << 
"Error: To Create Histogram from RooDataSet, Dimension must be 1, 2, or 3" << std::endl;
 
  685   std::cout << 
"Observables: " << std::endl;
 
  688      dataset_list->Delete();
 
  689      dataset_list.reset();
 
  695      dataset_list->Delete();
 
  696      dataset_list.reset();
 
  711      if( 
data!=
nullptr ) {
 
  713   data_hist->
Draw(
"SAME");
 
  731        std::string ClassName = arg->
ClassName();
 
  732        if( ClassName == 
"RooProduct" ) {
 
  763      if(strcmp(modelPdf->
ClassName(),
"RooSimultaneous")==0){
 
  771   for (
const auto& nameIdx : *channelCat) {
 
  772     const std::string& ChannelName = nameIdx.first;
 
  783   std::string ChannelName = modelPdf->
GetName();
 
  784   ChannelName = ChannelName.replace(0, 6, 
"");
 
  807    for (
auto *arg : *comps) {
 
  808      std::string ClassName = arg->
ClassName();
 
  809      if( ClassName == 
"RooRealSumPdf" ) {
 
  832   std::map< std::string, RooAbsReal*> sampleFunctionMap;
 
  836  for (
auto *func : static_range_cast<RooAbsReal *>(sumPdf->
funcList())) {
 
  838    std::string SampleName = func->
GetName();
 
  839    if( SampleName.find(
"L_x_") != std::string::npos ) {
 
  840      size_t index = SampleName.find(
"L_x_");
 
  841      SampleName.replace( 
index, 4, 
"" );
 
  843    if( SampleName.find(ChannelName.c_str()) != std::string::npos ) {
 
  844      size_t index = SampleName.find(ChannelName.c_str());
 
  845      SampleName = SampleName.substr(0, 
index-1);
 
  849    sampleFunctionMap[SampleName] = func;
 
  869      for (
auto arg : *comps) {
 
  870         std::string ArgName = arg->GetName();
 
  871         if (ArgName == 
name) {
 
  877      if( term != 
nullptr ) 
return term;
 
  883      std::unique_ptr<RooArgSet> parameters{parent->
getParameters(&args)};
 
  884      for (
auto *param : *parameters) {
 
  885        std::string ParamName = param->GetName();
 
  886        if( ParamName == 
name ) {
 
  911      std::string ConstraintTermName = parameter + 
"Constraint";
 
  916      if( param==
nullptr ) {
 
  917   std::cout << 
"Error: Couldn't Find parameter: " << parameter << 
" in model." 
  923      if( parameter.find(
"gamma_stat_") != std::string::npos ) {
 
  924   ConstraintTermName = parameter + 
"_constraint";
 
  930      if( term==
nullptr ) {
 
  931   std::cout << 
"Error: Couldn't Find constraint term for parameter: " << parameter
 
  932        << 
" (Looked for '" << ConstraintTermName << 
"')" << std::endl;
 
  944      if( constraintTerm==
nullptr ) {
 
  945   std::cout << 
"Error: Cannot get uncertainty because parameter: " << parameter
 
  946        << 
" has no constraint term" << std::endl;
 
  951      std::string ConstraintType = constraintTerm->
ClassName();
 
  956      if( ConstraintType == 
"" ) {
 
  957   std::cout << 
"Error: Constraint type is an empty string." 
  958        << 
" This simply should not be." << std::endl;
 
  961      else if( ConstraintType == 
"RooGaussian" ){
 
  970   std::string sigmaName = 
"";
 
  971   if( parameter.find(
"alpha_")!=std::string::npos ) {
 
  974   else if( parameter.find(
"gamma_stat_")!=std::string::npos ) {
 
  975     sigmaName = parameter + 
"_sigma";
 
  980   if( sigmaVar==
nullptr ) {
 
  981     std::cout << 
"Error: Failed to find the 'sigma' node: " << sigmaName
 
  982          << 
" in the RooGaussian: " << constraintTerm->
GetName() << std::endl;
 
  988      else if( ConstraintType == 
"RooPoisson" ){
 
  990   std::string tauName = 
"nom_" + parameter;
 
  992   if( tauVar==
nullptr ) {
 
  993     std::cout << 
"Error: Failed to find the nominal 'tau' node: " << tauName
 
  994          << 
" for the RooPoisson: " << constraintTerm->
GetName() << std::endl;
 
  997   double tau_val = tauVar->
getVal();
 
 1001   std::cout << 
"Error: Encountered unknown constraint type for Stat Uncertainties: " 
 1002        << ConstraintType << std::endl;
 
 1014      if( nodeToReplace==
nullptr ) {
 
 1015        std::cout << 
"Error: Cannot replace node: " << ToReplace
 
 1016            << 
" because this node wasn't found in: " << 
fModel->
GetName()
 
 1022      const std::string attrib = 
"ORIGNAME:" + ToReplace;
 
 1023      const bool oldAttrib = ReplaceWith->
getAttribute(attrib.c_str());
 
 1032      for (
auto client : nodeToReplace->
clients()) {
 
 1041        std::cout << 
"Replaced: " << ToReplace << 
" with: " << ReplaceWith->
GetName()
 
 1042                << 
" in node: " << client->GetName() << std::endl;
 
 1055                        const std::string& sample) {
 
 1064      std::string total_Name = sampleNode->
GetName();
 
 1066      unsigned int num_bins = total_hist->
GetNbinsX()*total_hist->GetNbinsY()*total_hist->GetNbinsZ();
 
 1071      int label_print_width = 30;
 
 1072      int bin_print_width = 12;
 
 1073      if( strcmp(sampleNode->
ClassName(),
"RooProduct")==0){
 
 1078   components.
add(*sampleNode);
 
 1083        for (
auto *component : static_range_cast<RooAbsReal*>(components)) {
 
 1084          std::string NodeName = component->GetName();
 
 1085          label_print_width = 
TMath::Max(label_print_width, 
static_cast<int>(NodeName.size())+2);
 
 1090      std::cout << std::endl;
 
 1091      std::cout << 
"Channel: " << channel << 
" Sample: " << sample << std::endl;
 
 1092      std::cout << std::setw(label_print_width) << 
"Factor";
 
 1094      for(
unsigned int i=0; i < num_bins; ++i) {
 
 1097   std::stringstream sstr;
 
 1099   std::cout << std::setw(bin_print_width) << sstr.str();
 
 1101      std::cout << std::endl;
 
 1104      for (
auto *component : static_range_cast<RooAbsReal*>(components)) {
 
 1105        std::string NodeName = component->GetName();
 
 1111        std::unique_ptr<TH1> hist;
 
 1121        std::cout << std::setw(label_print_width) << NodeName;
 
 1127      std::string line_break;
 
 1130      int break_length = (high_bin - low_bin + 1) * bin_print_width;
 
 1131      break_length += label_print_width;
 
 1132      for(
int i = 0; i < break_length; ++i) {
 
 1135      std::cout << line_break << std::endl;
 
 1137      std::cout << std::setw(label_print_width) << 
"TOTAL:";
 
 1143                      std::string 
name ) {
 
 1181   std::cout << 
"Error: To Create Histogram from RooAbsReal function, Dimension must be 1, 2, or 3" << std::endl;
 
 1200      TString RegexTString(regExpr);
 
 1201      TRegexp theRegExpr(RegexTString);
 
 1210      std::cout << std::endl;
 
 1213      std::cout << std::setw(30) << 
"Parameter";
 
 1214      std::cout << std::setw(15) << 
"Value" 
 1215      << std::setw(15) << 
"Error Low" 
 1216      << std::setw(15) << 
"Error High" 
 1220      for (
auto *param : static_range_cast<RooRealVar *>(params)) {
 
 1222          std::string ParamName = param->GetName();
 
 1223          TString ParamNameTString(ParamName);
 
 1228          if( theRegExpr.
Index(ParamNameTString, &dummy) == -1 ) 
continue;
 
 1230          param->setConstant( constant );
 
 1231          std::cout << 
"Setting param: " << ParamName << 
" constant" 
 1232              << 
" (matches regex: " << regExpr << 
")" << std::endl;
 
 1239      if( !arg ) 
return nullptr;
 
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void data
 
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t index
 
RooAbsArg is the common abstract base class for objects that represent a value and a "shape" in RooFi...
 
RooFit::OwningPtr< RooArgSet > getParameters(const RooAbsData *data, bool stripDisconnected=true) const
Create a list of leaf nodes in the arg tree starting with ourself as top node that don't match any of...
 
RooFit::OwningPtr< RooArgSet > getObservables(const RooArgSet &set, bool valueOnly=true) const
Given a set of possible observables, return the observables that this PDF depends on.
 
bool redirectServers(const RooAbsCollection &newServerList, bool mustReplaceAll=false, bool nameChange=false, bool isRecursionStep=false)
Replace all direct servers of this object with the new servers in newServerList.
 
RooFit::OwningPtr< RooArgSet > getComponents() const
Create a RooArgSet with all components (branch nodes) of the expression tree headed by this object.
 
bool getAttribute(const Text_t *name) const
Check if a named attribute is set. By default, all attributes are unset.
 
const RefCountList_t & clients() const
List of all clients of this object.
 
void setAttribute(const Text_t *name, bool value=true)
Set (default) or clear a named boolean attribute of this object.
 
RooAbsArg * findServer(const char *name) const
Return server of this with name name. Returns nullptr if not found.
 
Int_t getSize() const
Return the number of elements in the collection.
 
const char * GetName() const override
Returns name of object.
 
virtual bool add(const RooAbsArg &var, bool silent=false)
Add the specified argument to list.
 
RooAbsArg * find(const char *name) const
Find object with given name in list.
 
void Print(Option_t *options=nullptr) const override
This method must be overridden when a class wants to print itself.
 
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.
 
TH1 * createHistogram(RooStringView varNameList, Int_t xbins=0, Int_t ybins=0, Int_t zbins=0) const
Create and fill a ROOT histogram TH1, TH2 or TH3 with the values of this function for the variables w...
 
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.
 
RooCategory is an object to represent discrete states.
 
RooDataSet is a container class to hold unbinned data.
 
static RooMsgService & instance()
Return reference to singleton instance.
 
void setGlobalKillBelow(RooFit::MsgLevel level)
 
RooFit::MsgLevel globalKillBelow() const
 
A RooProduct represents the product of a given set of RooAbsReal objects.
 
The class RooRealSumPdf implements a PDF constructed from a sum of functions:
 
const RooArgList & funcList() const
 
RooRealVar represents a variable that can be changed from the outside.
 
const RooAbsBinning & getBinning(const char *name=nullptr, bool verbose=true, bool createOnTheFly=false) const override
Return binning definition with name.
 
RooSimultaneous facilitates simultaneous fitting of multiple PDFs to subsets of a given dataset.
 
RooAbsPdf * getPdf(RooStringView catName) const
Return the p.d.f associated with the given index category name.
 
const RooAbsCategoryLValue & indexCat() const
 
void PrintParameters(bool IncludeConstantParams=false)
Print the current values and errors of pdf parameters.
 
std::vector< std::string > fChannelNameVec
The list of channels.
 
RooArgSet * GetObservableSet(const std::string &channel)
Get the set of observables for a given channel.
 
TH1 * GetDataHist(RooDataSet *data, const std::string &channel, const std::string &name="")
Get a histogram from the dataset for this channel.
 
RooArgSet * fObservables
The observables.
 
void _GetNodes(ModelConfig *mc)
Fetch the node information for the pdf in question, and save it in the varous collections in this cla...
 
std::map< std::string, RooAbsPdf * > fChannelSumNodeMap
Map of channel names to pdf without constraint.
 
void ReplaceNode(const std::string &ToReplace, RooAbsArg *ReplaceWith)
Find a node in the pdf and replace it with a new node These nodes can be functions,...
 
void PrintState()
Should pretty print all channels and the current values

 
void PrintSampleComponents(const std::string &channel, const std::string &sample)
Print the different components that make up a sample (NormFactors, Statistical Uncertainties,...
 
void SetPrintWidths(const std::string &channel)
Set the title and bin widths.
 
RooAbsPdf * fModel
The HistFactory Pdf Pointer.
 
TH1 * GetChannelHist(const std::string &channel, const std::string &name="")
Get the total channel histogram for this channel.
 
TH1 * GetSampleHist(const std::string &channel, const std::string &sample, const std::string &name="")
The (current) histogram for that sample This includes all parameters and interpolation.
 
TH1 * MakeHistFromRooFunction(RooAbsReal *func, RooArgList vars, std::string name="Hist")
Make a histogram from a function Edit so it can take a RooArgSet of parameters.
 
void PrintMultiDimHist(TH1 *hist, int bin_print_width)
Print a histogram's contents to the screen void PrettyPrintHistogram(TH1* hist);.
 
void PrintSampleParameters(const std::string &channel, const std::string &sample, bool IncludeConstantParams=false)
Print parameters that effect a particular sample.
 
std::map< std::string, RooAbsReal * > GetSampleFunctionMap(const std::string &channel)
Get a map of sample names to their functions for a particular channel.
 
RooAbsReal * SampleFunction(const std::string &channel, const std::string &sample)
Get the RooAbsReal function for a given sample in a given channel.
 
HistFactoryNavigation(ModelConfig *mc)
Initialze based on an already-created HistFactory Model.
 
double GetBinValue(int bin, const std::string &channel)
The value of the ith bin for the total in that channel.
 
RooAbsArg * findChild(const std::string &name, RooAbsReal *parent) const
Internal method implementation of finding a daughter node from a parent node (looping over all genera...
 
std::map< std::string, std::map< std::string, RooAbsReal * > > fChannelSampleFunctionMap
Map of Map of Channel, Sample names to Function Nodes Used by doing: fChannelSampleFunctionMap["MyCha...
 
std::map< std::string, RooAbsPdf * > fChannelPdfMap
Map of channel names to their full pdf's.
 
std::vector< std::string > GetChannelSampleList(const std::string &channel)
 
void PrintModelAndData(RooDataSet *data)
Print the model and the data, comparing channel by channel.
 
std::map< std::string, RooArgSet * > fChannelObservMap
Map of channel names to their set of ovservables.
 
RooAbsPdf * GetChannelPdf(const std::string &channel)
 
void PrintDataSet(RooDataSet *data, const std::string &channel="")
Print a "HistFactory style" RooDataSet in a readable way.
 
void PrintChannelParameters(const std::string &channel, bool IncludeConstantParams=false)
Print parameters that effect a particular channel.
 
void SetConstant(const std::string ®Expr=".*", bool constant=true)
 
RooArgSet _GetAllProducts(RooProduct *node)
Recursively get all products of products.
 
THStack * GetChannelStack(const std::string &channel, const std::string &name="")
Get a stack of all samples in a channel.
 
RooAbsReal * GetConstraintTerm(const std::string ¶meter)
Get the constraint term for a given systematic (alpha or gamma)
 
void DrawChannel(const std::string &channel, RooDataSet *data=nullptr)
Draw a stack of the channel, and include data if the pointer is supplied.
 
RooRealVar * var(const std::string &varName) const
 
double GetConstraintUncertainty(const std::string ¶meter)
Get the uncertainty based on the constraint term for a given systematic.
 
ModelConfig is a simple class that holds configuration information specifying how a model should be u...
 
const RooArgSet * GetObservables() const
get RooArgSet for observables (return nullptr if not existing)
 
RooAbsPdf * GetPdf() const
get model PDF (return nullptr if pdf has not been specified or does not exist)
 
The RooWorkspace is a persistable container for RooFit projects.
 
TObject * obj(RooStringView name) const
Return any type of object (RooAbsArg, RooAbsData or generic object) with given name)
 
virtual void SetFillColor(Color_t fcolor)
Set the fill area color.
 
virtual void SetLineColor(Color_t lcolor)
Set the line color.
 
TH1 is the base class of all histogram classes in ROOT.
 
virtual Int_t GetNbinsY() const
 
virtual Int_t GetNbinsZ() const
 
virtual void Reset(Option_t *option="")
Reset this histogram: contents, errors, etc.
 
virtual Int_t GetNbinsX() const
 
virtual Bool_t Add(TF1 *h1, Double_t c1=1, Option_t *option="")
Performs the operation: this = this + c1*f1 if errors are defined (see TH1::Sumw2),...
 
void Draw(Option_t *option="") override
Draw this histogram with options.
 
Bool_t IsBinUnderflow(Int_t bin, Int_t axis=0) const
Return true if the bin is underflow.
 
Bool_t IsBinOverflow(Int_t bin, Int_t axis=0) const
Return true if the bin is overflow.
 
void SetName(const char *name) override
Change the name of this histogram.
 
virtual Double_t GetBinContent(Int_t bin) const
Return content of bin number bin.
 
TObject * Clone(const char *newname="") const override
Make a complete copy of the underlying object.
 
The Histogram stack class.
 
virtual void Add(TH1 *h, Option_t *option="")
add a new histogram to the list Only 1-d and 2-d histograms currently supported.
 
void Draw(Option_t *chopt="") override
Draw this multihist with its current attributes.
 
const char * GetName() const override
Returns name of object.
 
virtual const char * ClassName() const
Returns name of class to which the object belongs.
 
Regular expression class.
 
Ssiz_t Index(const TString &str, Ssiz_t *len, Ssiz_t start=0) const
Find the first occurrence of the regexp in string and return the position, or -1 if there is no match...
 
RooCmdArg YVar(const RooAbsRealLValue &var, const RooCmdArg &arg=RooCmdArg::none())
 
RooCmdArg Scaling(bool flag)
 
RooCmdArg Binning(const RooAbsBinning &binning)
 
MsgLevel
Verbosity level for RooMsgService::StreamConfig in RooMsgService.
 
Namespace for the RooStats classes.
 
Short_t Max(Short_t a, Short_t b)
Returns the largest of a and b.
 
Double_t Sqrt(Double_t x)
Returns the square root of x.
 
Short_t Min(Short_t a, Short_t b)
Returns the smallest of a and b.