11 #ifndef ROOSTATS_HISTOTOWORKSPACEFACTORY
12 #define ROOSTATS_HISTOTOWORKSPACEFACTORY
32 namespace HistFactory{
34 struct EstimateSummary;
36 class HistoToWorkspaceFactory:
public TObject {
40 HistoToWorkspaceFactory( std::string, std::string , std::vector<std::string> ,
double =200,
double =20,
int =0,
int =6, TFile * =0);
41 HistoToWorkspaceFactory();
42 virtual ~HistoToWorkspaceFactory();
44 void AddEfficiencyTerms(RooWorkspace* proto, std::string prefix, std::string interpName,
45 std::map<std::string,std::pair<double,double> > systMap,
46 std::vector<std::string>& likelihoodTermNames, std::vector<std::string>& totSystTermNames);
48 std::string AddNormFactor(RooWorkspace *, std::string & , std::string & , EstimateSummary & ,
bool );
50 void AddMultiVarGaussConstraint(RooWorkspace* proto, std::string prefix,
int lowBin,
int highBin, std::vector<std::string>& likelihoodTermNames);
52 void AddPoissonTerms(RooWorkspace* proto, std::string prefix, std::string obsPrefix, std::string expPrefix,
int lowBin,
int highBin,
53 std::vector<std::string>& likelihoodTermNames);
57 RooWorkspace * MakeCombinedModel(std::vector<std::string>, std::vector<RooWorkspace*>);
61 void Customize(RooWorkspace* proto,
const char* pdfNameChar, std::map<std::string,std::string> renameMap);
63 void EditSyst(RooWorkspace* proto,
const char* pdfNameChar, std::map<std::string,double> gammaSyst, std::map<std::string,double> uniformSyst, std::map<std::string,double> logNormSyst);
65 void FormatFrameForLikelihood(RooPlot* frame, std::string XTitle=std::string(
"#sigma / #sigma_{SM}"), std::string YTitle=std::string(
"-log likelihood"));
68 void LinInterpWithConstraint(RooWorkspace* proto, TH1* nominal, std::vector<TH1*> lowHist, std::vector<TH1*> highHist,
69 std::vector<std::string> sourceName, std::string prefix, std::string productPrefix, std::string systTerm,
70 int lowBin,
int highBin, std::vector<std::string>& likelihoodTermNames);
72 TDirectory* Makedirs( TDirectory* file, std::vector<std::string> names );
74 RooWorkspace* MakeSingleChannelModel(std::vector<RooStats::HistFactory::EstimateSummary> summary, std::vector<std::string> systToFix,
bool doRatio=
false);
76 void MakeTotalExpected(RooWorkspace* proto, std::string totName, std::string , std::string ,
77 int lowBin,
int highBin, std::vector<std::string>& syst_x_expectedPrefixNames,
78 std::vector<std::string>& normByNames);
80 TDirectory* Mkdir( TDirectory * file, std::string name );
82 void PrintCovarianceMatrix(RooFitResult* result, RooArgSet* params, std::string filename);
83 void ProcessExpectedHisto(TH1* hist,RooWorkspace* proto, std::string prefix, std::string productPrefix, std::string systTerm,
double low,
double high,
int lowBin,
int highBin);
84 void SetObsToExpected(RooWorkspace* proto, std::string obsPrefix, std::string expPrefix,
int lowBin,
int highBin);
85 void FitModel(RooWorkspace *, std::string, std::string, std::string,
bool=
false );
86 std::string FilePrefixStr(std::string);
89 std::string fFileNamePrefix;
90 std::string fRowTitle;
91 std::vector<std::string> fSystToFix;
92 double fNomLumi, fLumiError;
93 int fLowBin, fHighBin;
94 std::stringstream fResultsPrefixStr;
98 ClassDef(RooStats::HistFactory::HistoToWorkspaceFactory,1)