37 std::cout <<
"Error: The supplied ModelConfig is nullptr " << std::endl;
44 std::cout <<
"Error: The pdf found in the ModelConfig: " << mc->
GetName()
45 <<
" is nullptr" << std::endl;
54 if( !observables_in_mc ) {
55 std::cout <<
"Error: Observable set in the ModelConfig: " << mc->
GetName()
56 <<
" is nullptr" << std::endl;
59 if( observables_in_mc->
empty() ) {
60 std::cout <<
"Error: Observable list: " << observables_in_mc->GetName()
61 <<
" found in ModelConfig: " << mc->GetName()
62 <<
" has no entries." << std::endl;
77 const std::string& WorkspaceName,
78 const std::string& ModelConfigName) :
83 auto file = std::make_unique<TFile>(FileName.c_str());
85 std::cout <<
"Error: Failed to open file: " << FileName << std::endl;
92 std::cout <<
"Error: Failed to get workspace: " << WorkspaceName
93 <<
" from file: " << FileName << std::endl;
100 std::cout <<
"Error: Failed to find ModelConfig: " << ModelConfigName
101 <<
" from workspace: " << WorkspaceName
102 <<
" in file: " << FileName << std::endl;
109 std::cout <<
"Error: The pdf found in the ModelConfig: " << ModelConfigName
110 <<
" is nullptr" << std::endl;
119 if( !observables_in_mc ) {
120 std::cout <<
"Error: Observable set in the ModelConfig: " << ModelConfigName
121 <<
" is nullptr" << std::endl;
124 if( observables_in_mc->
empty() ) {
125 std::cout <<
"Error: Observable list: " << observables_in_mc->
GetName()
126 <<
" found in ModelConfig: " << ModelConfigName
127 <<
" in file: " << FileName
128 <<
" has no entries." << std::endl;
148 std::cout <<
"Error: The supplied pdf is nullptr" << std::endl;
158 std::cout <<
"Error: Supplied Observable set is nullptr" << std::endl;
161 if( observables->
empty() ) {
162 std::cout <<
"Error: Observable list: " << observables->GetName()
163 <<
" has no entries." << std::endl;
178 for(
int i = 0; i < num_bins; ++i) {
188 std::cout << std::setw(bin_print_width) << hist->
GetBinContent(current_bin);
190 std::cout << std::endl;
198 std::map< std::string, RooAbsPdf* >::iterator itr;
202 std::cout <<
"Warning: Could not find channel: " << channel
203 <<
" in pdf: " <<
fModel->GetName() << std::endl;
208 if( pdf ==
nullptr ) {
209 std::cout <<
"Warning: Pdf associated with channel: " << channel
210 <<
" is nullptr" << std::endl;
222 std::cout << std::endl << channel <<
":" << std::endl;
239 std::map< std::string, RooAbsReal*>::iterator itr = SampleFunctionMap.begin();
240 for( ; itr != SampleFunctionMap.end(); ++itr) {
242 std::string sample_name = itr->first;
243 std::string tmp_name = sample_name + channel +
"_pretty_tmp";
244 std::unique_ptr<TH1> sample_hist{
GetSampleHist(channel, sample_name, tmp_name)};
245 num_bins = sample_hist->GetNbinsX()*sample_hist->GetNbinsY()*sample_hist->GetNbinsZ();
254 std::string line_break;
259 for(
int i = 0; i < break_length; ++i) {
262 std::cout << line_break << std::endl;
264 std::string tmp_name = channel +
"_pretty_tmp";
265 std::unique_ptr<TH1> channel_hist{
GetChannelHist(channel, tmp_name)};
290 for( std::map< std::string, RooAbsReal*>::iterator itr = SampleFunctionMap.begin();
291 itr != SampleFunctionMap.end(); ++itr) {
292 std::string sample_name = itr->first;
301 const std::string& channel_to_print) {
321 for(
unsigned int i_chan=0; i_chan <
fChannelNameVec.size(); ++i_chan) {
326 if( !channel_to_print.empty() && channel_name != channel_to_print)
continue;
328 std::unique_ptr<TH1> data_hist{
GetDataHist(data, channel_name, channel_name+
"_tmp")};
349 std::cout << std::endl;
359 std::cout << std::endl;
362 std::cout << std::setw(30) <<
"Parameter";
363 std::cout << std::setw(15) <<
"Value"
364 << std::setw(15) <<
"Error Low"
365 << std::setw(15) <<
"Error High"
370 if( !IncludeConstantParams && param->isConstant() )
continue;
372 std::cout << std::setw(30) << param->GetName();
373 std::cout << std::setw(15) << param->getVal();
374 if( !param->isConstant() ) {
375 std::cout << std::setw(15) << param->getErrorLo() << std::setw(15) << param->getErrorHi();
377 std::cout<< std::endl;
379 std::cout << std::endl;
383 bool IncludeConstantParams) {
392 std::cout << std::endl;
395 std::cout << std::setw(30) <<
"Parameter";
396 std::cout << std::setw(15) <<
"Value"
397 << std::setw(15) <<
"Error Low"
398 << std::setw(15) <<
"Error High"
403 if( !IncludeConstantParams && param->isConstant() )
continue;
404 if(
findChild(param->GetName(), channel_pdf)==
nullptr )
continue;
405 std::cout << std::setw(30) << param->GetName();
406 std::cout << std::setw(15) << param->getVal();
407 if( !param->isConstant() ) {
408 std::cout << std::setw(15) << param->getErrorLo() << std::setw(15) << param->getErrorHi();
410 std::cout<< std::endl;
412 std::cout << std::endl;
417 const std::string& sample,
418 bool IncludeConstantParams) {
427 std::cout << std::endl;
430 std::cout << std::setw(30) <<
"Parameter";
431 std::cout << std::setw(15) <<
"Value"
432 << std::setw(15) <<
"Error Low"
433 << std::setw(15) <<
"Error High"
438 if( !IncludeConstantParams && param->isConstant() )
continue;
439 if(
findChild(param->GetName(), sample_func)==
nullptr )
continue;
440 std::cout << std::setw(30) << param->GetName();
441 std::cout << std::setw(15) << param->getVal();
442 if( !param->isConstant() ) {
443 std::cout << std::setw(15) << param->getErrorLo() << std::setw(15) << param->getErrorHi();
445 std::cout<< std::endl;
447 std::cout << std::endl;
457 std::unique_ptr<TH1> channel_hist_tmp{
GetChannelHist(channel, channel+
"_tmp")};
458 return channel_hist_tmp->GetBinContent(bin);
469 std::unique_ptr<TH1> sample_hist_tmp{
GetSampleHist(channel, sample, channel+
"_tmp")};
470 return sample_hist_tmp->GetBinContent(bin);
478 std::map< std::string, std::map< std::string, RooAbsReal*> >::iterator channel_itr;
481 std::cout <<
"Error: Channel: " << channel <<
" not found in Navigation" << std::endl;
485 return channel_itr->second;
493 std::map< std::string, std::map< std::string, RooAbsReal*> >::iterator channel_itr;
496 std::cout <<
"Error: Channel: " << channel <<
" not found in Navigation" << std::endl;
500 std::map< std::string, RooAbsReal*>& SampleMap = channel_itr->second;
501 std::map< std::string, RooAbsReal*>::iterator sample_itr;
502 sample_itr = SampleMap.find(sample);
503 if( sample_itr==SampleMap.end() ){
504 std::cout <<
"Error: Sample: " << sample <<
" not found in Navigation" << std::endl;
508 return sample_itr->second;
516 std::map< std::string, RooArgSet*>::iterator channel_itr;
519 std::cout <<
"Error: Channel: " << channel <<
" not found in Navigation" << std::endl;
523 return channel_itr->second;
529 const std::string& hist_name) {
536 std::string
name = hist_name;
537 if(hist_name.empty())
name = channel +
"_" + sample +
"_hist";
556 TH1* total_hist =
nullptr;
557 std::map< std::string, RooAbsReal*>::iterator itr = SampleFunctionMap.begin();
558 for( ; itr != SampleFunctionMap.end(); ++itr) {
559 std::string sample_name = itr->first;
560 std::string tmp_hist_name = sample_name +
"_hist_tmp";
564 total_hist =
static_cast<TH1*
>(sample_hist->Clone(
"TotalHist"));
574 itr = SampleFunctionMap.begin();
575 for( ; itr != SampleFunctionMap.end(); ++itr) {
576 std::string sample_name = itr->first;
577 std::string tmp_hist_name = sample_name +
"_hist_tmp";
581 total_hist->
Add(sample_hist.get());
584 if(hist_name.empty()) total_hist->
SetName(hist_name.c_str());
585 else total_hist->
SetName( (channel +
"_hist").c_str() );
594 std::vector<std::string> sample_list;
597 std::map< std::string, RooAbsReal*>::iterator itr = sample_map.begin();
598 for( ; itr != sample_map.end(); ++itr) {
599 sample_list.push_back( itr->first );
608 const std::string&
name) {
615 for(
unsigned int i=0; i < samples.size(); ++i) {
616 std::string sample_name = samples.at(i);
629 const std::string&
name) {
638 if(strcmp(
fModel->ClassName(),
"RooSimultaneous")==0){
644 std::vector<std::unique_ptr<RooAbsData>> dataset_list{data->split(*channelCat)};
646 auto found = std::find_if(dataset_list.begin(), dataset_list.end(), [&](
auto const &item) {
647 return channel == item->GetName();
649 data = found != dataset_list.end() ?
dynamic_cast<RooDataSet*
>(found->get()) :
nullptr;
655 int dim = vars.
size();
660 std::cout <<
"Error: To Create Histogram from RooDataSet" << std::endl;
662 }
else if( dim==1 ) {
681 std::cout <<
"Error: To Create Histogram from RooDataSet, Dimension must be 1, 2, or 3" << std::endl;
682 std::cout <<
"Observables: " << std::endl;
699 if( data!=
nullptr ) {
701 data_hist->
Draw(
"SAME");
719 std::string ClassName = arg->
ClassName();
720 if( ClassName ==
"RooProduct" ) {
746 if(strcmp(modelPdf->
ClassName(),
"RooSimultaneous")==0){
750 auto channelCat =
static_cast<RooCategory const*
>(&simPdf->indexCat());
754 for (
const auto& nameIdx : *channelCat) {
755 const std::string& ChannelName = nameIdx.first;
757 RooAbsPdf* pdftmp = simPdf->getPdf(ChannelName.c_str()) ;
766 std::string ChannelName = modelPdf->
GetName();
767 ChannelName = ChannelName.replace(0, 6,
"");
790 for (
auto *arg : *comps) {
791 std::string ClassName = arg->
ClassName();
792 if( ClassName ==
"RooRealSumPdf" ) {
815 std::map< std::string, RooAbsReal*> sampleFunctionMap;
821 std::string SampleName = func->GetName();
822 if( SampleName.find(
"L_x_") != std::string::npos ) {
823 size_t index = SampleName.find(
"L_x_");
824 SampleName.replace( index, 4,
"" );
826 if( SampleName.find(ChannelName) != std::string::npos ) {
827 size_t index = SampleName.find(ChannelName);
828 SampleName = SampleName.substr(0, index-1);
832 sampleFunctionMap[SampleName] = func;
852 for (
auto arg : *comps) {
853 std::string ArgName = arg->GetName();
854 if (ArgName ==
name) {
860 if( term !=
nullptr )
return term;
866 std::unique_ptr<RooArgSet> parameters{parent->
getParameters(&args)};
867 for (
auto *param : *parameters) {
868 std::string ParamName = param->GetName();
869 if( ParamName ==
name ) {
894 std::string ConstraintTermName = parameter +
"Constraint";
899 if( param==
nullptr ) {
900 std::cout <<
"Error: Couldn't Find parameter: " << parameter <<
" in model."
906 if( parameter.find(
"gamma_stat_") != std::string::npos ) {
907 ConstraintTermName = parameter +
"_constraint";
913 if( term==
nullptr ) {
914 std::cout <<
"Error: Couldn't Find constraint term for parameter: " << parameter
915 <<
" (Looked for '" << ConstraintTermName <<
"')" << std::endl;
927 if( constraintTerm==
nullptr ) {
928 std::cout <<
"Error: Cannot get uncertainty because parameter: " << parameter
929 <<
" has no constraint term" << std::endl;
934 std::string ConstraintType = constraintTerm->
ClassName();
939 if( ConstraintType.empty() ) {
940 std::cout <<
"Error: Constraint type is an empty string."
941 <<
" This simply should not be." << std::endl;
944 else if( ConstraintType ==
"RooGaussian" ){
953 std::string sigmaName;
954 if( parameter.find(
"alpha_")!=std::string::npos ) {
957 else if( parameter.find(
"gamma_stat_")!=std::string::npos ) {
958 sigmaName = parameter +
"_sigma";
963 if( sigmaVar==
nullptr ) {
964 std::cout <<
"Error: Failed to find the 'sigma' node: " << sigmaName
965 <<
" in the RooGaussian: " << constraintTerm->
GetName() << std::endl;
971 else if( ConstraintType ==
"RooPoisson" ){
973 std::string tauName =
"nom_" + parameter;
975 if( tauVar==
nullptr ) {
976 std::cout <<
"Error: Failed to find the nominal 'tau' node: " << tauName
977 <<
" for the RooPoisson: " << constraintTerm->
GetName() << std::endl;
980 double tau_val = tauVar->
getVal();
981 sigma = 1.0 / std::sqrt( tau_val );
984 std::cout <<
"Error: Encountered unknown constraint type for Stat Uncertainties: "
985 << ConstraintType << std::endl;
997 if( nodeToReplace==
nullptr ) {
998 std::cout <<
"Error: Cannot replace node: " << ToReplace
999 <<
" because this node wasn't found in: " <<
fModel->GetName()
1005 const std::string attrib =
"ORIGNAME:" + ToReplace;
1006 const bool oldAttrib = ReplaceWith->
getAttribute(attrib.c_str());
1015 for (
auto client : nodeToReplace->
clients()) {
1023 client->redirectServers(newServerSet);
1024 std::cout <<
"Replaced: " << ToReplace <<
" with: " << ReplaceWith->
GetName()
1025 <<
" in node: " << client->GetName() << std::endl;
1038 const std::string& sample) {
1047 std::string total_Name = sampleNode->
GetName();
1049 unsigned int num_bins = total_hist->GetNbinsX()*total_hist->GetNbinsY()*total_hist->GetNbinsZ();
1054 int label_print_width = 30;
1055 int bin_print_width = 12;
1056 if( strcmp(sampleNode->
ClassName(),
"RooProduct")==0){
1061 components.
add(*sampleNode);
1067 std::string NodeName = component->GetName();
1068 label_print_width = std::max(label_print_width,
static_cast<int>(NodeName.size())+2);
1073 std::cout << std::endl;
1074 std::cout <<
"Channel: " << channel <<
" Sample: " << sample << std::endl;
1075 std::cout << std::setw(label_print_width) <<
"Factor";
1077 for(
unsigned int i=0; i < num_bins; ++i) {
1080 std::stringstream sstr;
1082 std::cout << std::setw(bin_print_width) << sstr.str();
1084 std::cout << std::endl;
1088 std::string NodeName = component->GetName();
1094 std::unique_ptr<TH1> hist;
1099 std::cout << std::setw(label_print_width) << NodeName;
1105 std::string line_break;
1108 int break_length = (high_bin - low_bin + 1) * bin_print_width;
1109 break_length += label_print_width;
1110 for(
int i = 0; i < break_length; ++i) {
1113 std::cout << line_break << std::endl;
1115 std::cout << std::setw(label_print_width) <<
"TOTAL:";
1121 std::string
name ) {
1136 int dim = vars.
size();
1159 std::cout <<
"Error: To Create Histogram from RooAbsReal function, Dimension must be 1, 2, or 3" << std::endl;
1178 TString RegexTString(regExpr);
1179 TRegexp theRegExpr(RegexTString);
1188 std::cout << std::endl;
1191 std::cout << std::setw(30) <<
"Parameter";
1192 std::cout << std::setw(15) <<
"Value"
1193 << std::setw(15) <<
"Error Low"
1194 << std::setw(15) <<
"Error High"
1200 std::string ParamName = param->GetName();
1201 TString ParamNameTString(ParamName);
1206 if( theRegExpr.
Index(ParamNameTString, &dummy) == -1 )
continue;
1208 param->setConstant( constant );
1209 std::cout <<
"Setting param: " << ParamName <<
" constant"
1210 <<
" (matches regex: " << regExpr <<
")" << std::endl;
1217 if( !arg )
return nullptr;
ROOT::RRangeCast< T, false, Range_t > static_range_cast(Range_t &&coll)
int Ssiz_t
String size (currently int).
Common abstract base class for objects that represent a value and a "shape" in RooFit.
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.
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.
const char * GetName() const override
Returns name of object.
virtual bool add(const RooAbsArg &var, bool silent=false)
Add the specified argument to list.
Storage_t::size_type size() const
void Print(Option_t *options=nullptr) const override
This method must be overridden when a class wants to print itself.
Abstract interface for all probability density functions.
Abstract base class for objects that represent a real value and implements functionality common to al...
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.
Object to represent discrete states.
Container class to hold unbinned data.
static RooMsgService & instance()
Return reference to singleton instance.
void setGlobalKillBelow(RooFit::MsgLevel level)
RooFit::MsgLevel globalKillBelow() const
Represents the product of a given set of RooAbsReal objects.
Implements a PDF constructed from a sum of functions:
const RooArgList & funcList() const
Variable that can be changed from the outside.
const RooAbsBinning & getBinning(const char *name=nullptr, bool verbose=true, bool createOnTheFly=false, bool shared=true) const override
Return binning definition with name.
Facilitates simultaneous fitting of multiple PDFs to subsets of a given dataset.
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 various collections in this cl...
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)
Initialize 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.
< A class that holds configuration information for a model using a workspace as a store
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)
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.
void Draw(Option_t *chopt="") override
Default Draw method for all objects.
virtual void Add(TH1 *h, Option_t *option="")
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 Scaling(bool flag)
RooCmdArg Binning(const RooAbsBinning &binning)
MsgLevel
Verbosity level for RooMsgService::StreamConfig in RooMsgService.
Namespace for the RooStats classes.