11 #ifndef ROOSTATS_HISTOTOWORKSPACEFACTORYFAST
12 #define ROOSTATS_HISTOTOWORKSPACEFACTORYFAST
35 namespace HistFactory{
42 class HistoToWorkspaceFactoryFast:
public TObject {
47 HistoToWorkspaceFactoryFast();
48 HistoToWorkspaceFactoryFast( RooStats::HistFactory::Measurement& Meas );
49 virtual ~HistoToWorkspaceFactoryFast();
51 static void ConfigureWorkspaceForMeasurement(
const std::string& ModelName,
52 RooWorkspace* ws_single,
53 Measurement& measurement );
55 RooWorkspace* MakeSingleChannelModel( Measurement& measurement, Channel& channel );
56 RooWorkspace* MakeCombinedModel(std::vector<std::string>, std::vector<RooWorkspace*>);
58 static RooWorkspace* MakeCombinedModel( Measurement& measurement );
59 static void PrintCovarianceMatrix(RooFitResult* result, RooArgSet* params,
60 std::string filename);
62 void SetFunctionsToPreprocess(std::vector<std::string> lines) { fPreprocessFunctions=lines; }
66 void AddConstraintTerms(RooWorkspace* proto, Measurement& measurement, std::string prefix, std::string interpName,
67 std::vector<OverallSys>& systList,
68 std::vector<std::string>& likelihoodTermNames,
69 std::vector<std::string>& totSystTermNames);
71 std::string AddNormFactor(RooWorkspace* proto, std::string& channel,
72 std::string& sigmaEpsilon, Sample& sample,
bool doRatio);
74 void AddMultiVarGaussConstraint(RooWorkspace* proto, std::string prefix,
75 int lowBin,
int highBin,
76 std::vector<std::string>& likelihoodTermNames);
78 void AddPoissonTerms(RooWorkspace* proto, std::string prefix, std::string obsPrefix,
79 std::string expPrefix,
int lowBin,
int highBin,
80 std::vector<std::string>& likelihoodTermNames);
82 static void EditSyst(RooWorkspace* proto,
const char* pdfNameChar,
83 std::map<std::string,double> gammaSyst,
84 std::map<std::string,double> uniformSyst,
85 std::map<std::string,double> logNormSyst,
86 std::map<std::string,double> noSyst);
88 void LinInterpWithConstraint(RooWorkspace* proto,
const TH1* nominal, std::vector<HistoSys>,
89 std::string prefix, std::string productPrefix,
91 std::vector<std::string>& likelihoodTermNames);
93 RooWorkspace* MakeSingleChannelWorkspace(Measurement& measurement, Channel& channel);
95 void MakeTotalExpected(RooWorkspace* proto, std::string totName,
96 std::vector<std::string>& syst_x_expectedPrefixNames,
97 std::vector<std::string>& normByNames);
99 RooDataSet* MergeDataSets(RooWorkspace* combined,
100 std::vector<RooWorkspace*> wspace_vec,
101 std::vector<std::string> channel_names,
102 std::string dataSetName,
104 RooCategory* channelCat);
106 void ProcessExpectedHisto(
const TH1* hist, RooWorkspace* proto, std::string prefix,
107 std::string productPrefix, std::string systTerm );
109 void SetObsToExpected(RooWorkspace* proto, std::string obsPrefix, std::string expPrefix,
110 int lowBin,
int highBin);
112 TH1* MakeScaledUncertaintyHist(
const std::string& Name,
113 std::vector< std::pair<const TH1*, const TH1*> > HistVec );
115 TH1* MakeAbsolUncertaintyHist(
const std::string& Name,
const TH1* Hist );
117 RooArgList createStatConstraintTerms( RooWorkspace* proto,
118 std::vector<std::string>& constraintTerms,
119 ParamHistFunc& paramHist,
const TH1* uncertHist,
120 Constraint::Type type, Double_t minSigma );
122 void ConfigureHistFactoryDataset(RooDataSet* obsData, TH1* nominal, RooWorkspace* proto,
123 std::vector<std::string> obsNameVec);
125 std::vector<std::string> fSystToFix;
126 std::map<std::string, double> fParamValues;
134 void GuessObsNameVec(
const TH1* hist);
136 std::vector<std::string> fObsNameVec;
137 std::string fObsName;
138 std::vector<std::string> fPreprocessFunctions;
140 ClassDef(RooStats::HistFactory::HistoToWorkspaceFactoryFast,3)