#include <map>
#include "TH1.h"
#include "THStack.h"
#include "RooDataSet.h"
#include "RooRealVar.h"
#include "RooProduct.h"
#include "RooStats/HistFactory/Measurement.h"
#include "RooStats/ModelConfig.h"
namespace RooStats {
namespace HistFactory {
class HistFactoryNavigation {
public:
HistFactoryNavigation(ModelConfig* mc);
HistFactoryNavigation(const std::string& File,
const std::string& WorkspaceName="combined",
const std::string& ModelConfigName="ModelConfig");
HistFactoryNavigation(RooAbsPdf* model, RooArgSet* observables);
virtual ~HistFactoryNavigation() {}
void PrintState();
void PrintState(const std::string& channel);
void PrintParameters(bool IncludeConstantParams=false);
void PrintChannelParameters(const std::string& channel,
bool IncludeConstantParams=false);
void PrintSampleParameters(const std::string& channel, const std::string& sample,
bool IncludeConstantParams=false);
void PrintSampleComponents(const std::string& channel, const std::string& sample);
void PrintDataSet(RooDataSet* data, const std::string& channel="");
void PrintModelAndData(RooDataSet* data);
double GetBinValue(int bin, const std::string& channel);
double GetBinValue(int bin, const std::string& channel, const std::string& sample);
TH1* GetSampleHist(const std::string& channel,
const std::string& sample, const std::string& name="");
TH1* GetChannelHist(const std::string& channel, const std::string& name="");
TH1* GetDataHist(RooDataSet* data, const std::string& channel, const std::string& name="");
THStack* GetChannelStack(const std::string& channel, const std::string& name="");
void DrawChannel(const std::string& channel, RooDataSet* data=NULL);
RooAbsReal* SampleFunction(const std::string& channel, const std::string& sample);
RooArgSet* GetObservableSet(const std::string& channel);
RooAbsReal* GetConstraintTerm(const std::string& parameter);
double GetConstraintUncertainty(const std::string& parameter);
void ReplaceNode(const std::string& ToReplace, RooAbsArg* ReplaceWith);
void SetConstant(const std::string& regExpr=".*", bool constant=true);
void SetMaxBinToPrint(int max) { _maxBinToPrint = max; }
int GetMaxBinToPrint() const { return _maxBinToPrint; }
void SetMinBinToPrint(int min) { _minBinToPrint = min; }
int GetMinBinToPrint() const { return _minBinToPrint; }
RooAbsPdf* GetModel() const { return fModel; }
RooAbsPdf* GetChannelPdf(const std::string& channel);
std::vector< std::string > GetChannelSampleList(const std::string& channel);
RooRealVar* var(const std::string& varName) const;
protected:
void SetPrintWidths(const std::string& channel);
void _GetNodes(ModelConfig* mc);
void _GetNodes(RooAbsPdf* model, const RooArgSet* observables);
void PrintMultiDimHist(TH1* hist, int bin_print_width);
TH1* MakeHistFromRooFunction( RooAbsReal* func, RooArgList vars, std::string name="Hist" );
std::map< std::string, RooAbsReal*> GetSampleFunctionMap(const std::string& channel);
private:
RooAbsPdf* fModel;
RooArgSet* fObservables;
int _minBinToPrint;
int _maxBinToPrint;
int _label_print_width;
int _bin_print_width;
std::vector<std::string> fChannelNameVec;
std::map< std::string, RooAbsPdf* > fChannelPdfMap;
std::map< std::string, RooAbsPdf* > fChannelSumNodeMap;
std::map< std::string, RooArgSet*> fChannelObservMap;
std::map< std::string, std::map< std::string, RooAbsReal*> > fChannelSampleFunctionMap;
RooAbsArg* findChild(const std::string& name, RooAbsReal* parent) const;
RooArgSet _GetAllProducts(RooProduct* node);
protected:
ClassDef(RooStats::HistFactory::HistFactoryNavigation,2)
};
}
}
HistFactoryNavigation.h:1 HistFactoryNavigation.h:2 HistFactoryNavigation.h:3 HistFactoryNavigation.h:4 HistFactoryNavigation.h:5 HistFactoryNavigation.h:6 HistFactoryNavigation.h:7 HistFactoryNavigation.h:8 HistFactoryNavigation.h:9 HistFactoryNavigation.h:10 HistFactoryNavigation.h:11 HistFactoryNavigation.h:12 HistFactoryNavigation.h:13 HistFactoryNavigation.h:14 HistFactoryNavigation.h:15 HistFactoryNavigation.h:16 HistFactoryNavigation.h:17 HistFactoryNavigation.h:18 HistFactoryNavigation.h:19 HistFactoryNavigation.h:20 HistFactoryNavigation.h:21 HistFactoryNavigation.h:22 HistFactoryNavigation.h:23 HistFactoryNavigation.h:24 HistFactoryNavigation.h:25 HistFactoryNavigation.h:26 HistFactoryNavigation.h:27 HistFactoryNavigation.h:28 HistFactoryNavigation.h:29 HistFactoryNavigation.h:30 HistFactoryNavigation.h:31 HistFactoryNavigation.h:32 HistFactoryNavigation.h:33 HistFactoryNavigation.h:34 HistFactoryNavigation.h:35 HistFactoryNavigation.h:36 HistFactoryNavigation.h:37 HistFactoryNavigation.h:38 HistFactoryNavigation.h:39 HistFactoryNavigation.h:40 HistFactoryNavigation.h:41 HistFactoryNavigation.h:42 HistFactoryNavigation.h:43 HistFactoryNavigation.h:44 HistFactoryNavigation.h:45 HistFactoryNavigation.h:46 HistFactoryNavigation.h:47 HistFactoryNavigation.h:48 HistFactoryNavigation.h:49 HistFactoryNavigation.h:50 HistFactoryNavigation.h:51 HistFactoryNavigation.h:52 HistFactoryNavigation.h:53 HistFactoryNavigation.h:54 HistFactoryNavigation.h:55 HistFactoryNavigation.h:56 HistFactoryNavigation.h:57 HistFactoryNavigation.h:58 HistFactoryNavigation.h:59 HistFactoryNavigation.h:60 HistFactoryNavigation.h:61 HistFactoryNavigation.h:62 HistFactoryNavigation.h:63 HistFactoryNavigation.h:64 HistFactoryNavigation.h:65 HistFactoryNavigation.h:66 HistFactoryNavigation.h:67 HistFactoryNavigation.h:68 HistFactoryNavigation.h:69 HistFactoryNavigation.h:70 HistFactoryNavigation.h:71 HistFactoryNavigation.h:72 HistFactoryNavigation.h:73 HistFactoryNavigation.h:74 HistFactoryNavigation.h:75 HistFactoryNavigation.h:76 HistFactoryNavigation.h:77 HistFactoryNavigation.h:78 HistFactoryNavigation.h:79 HistFactoryNavigation.h:80 HistFactoryNavigation.h:81 HistFactoryNavigation.h:82 HistFactoryNavigation.h:83 HistFactoryNavigation.h:84 HistFactoryNavigation.h:85 HistFactoryNavigation.h:86 HistFactoryNavigation.h:87 HistFactoryNavigation.h:88 HistFactoryNavigation.h:89 HistFactoryNavigation.h:90 HistFactoryNavigation.h:91 HistFactoryNavigation.h:92 HistFactoryNavigation.h:93 HistFactoryNavigation.h:94 HistFactoryNavigation.h:95 HistFactoryNavigation.h:96 HistFactoryNavigation.h:97 HistFactoryNavigation.h:98 HistFactoryNavigation.h:99 HistFactoryNavigation.h:100 HistFactoryNavigation.h:101 HistFactoryNavigation.h:102 HistFactoryNavigation.h:103 HistFactoryNavigation.h:104 HistFactoryNavigation.h:105 HistFactoryNavigation.h:106 HistFactoryNavigation.h:107 HistFactoryNavigation.h:108 HistFactoryNavigation.h:109 HistFactoryNavigation.h:110 HistFactoryNavigation.h:111 HistFactoryNavigation.h:112 HistFactoryNavigation.h:113 HistFactoryNavigation.h:114 HistFactoryNavigation.h:115 HistFactoryNavigation.h:116 HistFactoryNavigation.h:117 HistFactoryNavigation.h:118 HistFactoryNavigation.h:119 HistFactoryNavigation.h:120 HistFactoryNavigation.h:121 HistFactoryNavigation.h:122 HistFactoryNavigation.h:123 HistFactoryNavigation.h:124 HistFactoryNavigation.h:125 HistFactoryNavigation.h:126 HistFactoryNavigation.h:127 HistFactoryNavigation.h:128 HistFactoryNavigation.h:129 HistFactoryNavigation.h:130 HistFactoryNavigation.h:131 HistFactoryNavigation.h:132 HistFactoryNavigation.h:133 HistFactoryNavigation.h:134 HistFactoryNavigation.h:135 HistFactoryNavigation.h:136 HistFactoryNavigation.h:137 HistFactoryNavigation.h:138 HistFactoryNavigation.h:139 HistFactoryNavigation.h:140 HistFactoryNavigation.h:141 HistFactoryNavigation.h:142 HistFactoryNavigation.h:143 HistFactoryNavigation.h:144 HistFactoryNavigation.h:145 HistFactoryNavigation.h:146 HistFactoryNavigation.h:147 HistFactoryNavigation.h:148 HistFactoryNavigation.h:149 HistFactoryNavigation.h:150 HistFactoryNavigation.h:151 HistFactoryNavigation.h:152 HistFactoryNavigation.h:153 HistFactoryNavigation.h:154 HistFactoryNavigation.h:155 HistFactoryNavigation.h:156 HistFactoryNavigation.h:157 HistFactoryNavigation.h:158 HistFactoryNavigation.h:159 HistFactoryNavigation.h:160 HistFactoryNavigation.h:161 HistFactoryNavigation.h:162 HistFactoryNavigation.h:163 HistFactoryNavigation.h:164 HistFactoryNavigation.h:165 HistFactoryNavigation.h:166 HistFactoryNavigation.h:167 HistFactoryNavigation.h:168 HistFactoryNavigation.h:169 HistFactoryNavigation.h:170 HistFactoryNavigation.h:171 HistFactoryNavigation.h:172 HistFactoryNavigation.h:173 HistFactoryNavigation.h:174 HistFactoryNavigation.h:175 HistFactoryNavigation.h:176 HistFactoryNavigation.h:177 HistFactoryNavigation.h:178 HistFactoryNavigation.h:179 HistFactoryNavigation.h:180 HistFactoryNavigation.h:181 HistFactoryNavigation.h:182 HistFactoryNavigation.h:183 HistFactoryNavigation.h:184 HistFactoryNavigation.h:185 HistFactoryNavigation.h:186 HistFactoryNavigation.h:187 HistFactoryNavigation.h:188 HistFactoryNavigation.h:189 HistFactoryNavigation.h:190 HistFactoryNavigation.h:191 HistFactoryNavigation.h:192 HistFactoryNavigation.h:193 HistFactoryNavigation.h:194 HistFactoryNavigation.h:195 HistFactoryNavigation.h:196 HistFactoryNavigation.h:197 HistFactoryNavigation.h:198 HistFactoryNavigation.h:199 HistFactoryNavigation.h:200 HistFactoryNavigation.h:201