Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches
Measurement.h
Go to the documentation of this file.
1// @(#)root/roostats:$Id$
2// Author: George Lewis, Kyle Cranmer
3/*************************************************************************
4 * Copyright (C) 1995-2008, Rene Brun and Fons Rademakers. *
5 * All rights reserved. *
6 * *
7 * For the licensing terms see $ROOTSYS/LICENSE. *
8 * For the list of contributors see $ROOTSYS/README/CREDITS. *
9 *************************************************************************/
10
11#ifndef HISTFACTORY_MEASUREMENT_H
12#define HISTFACTORY_MEASUREMENT_H
13
14#include <string>
15#include <map>
16#include <fstream>
17#include <iostream>
18#include <vector>
19
20#include "TNamed.h"
21#include "TFile.h"
22
23#include "PreprocessFunction.h"
26
27namespace RooStats{
28namespace HistFactory {
29
30class Measurement : public TNamed {
31
32public:
33
35 /// Measurement( const Measurement& other ); // Copy
36 Measurement(const char* Name, const char* Title="");
37
38 /// set output prefix
39 void SetOutputFilePrefix( const std::string& prefix ) { fOutputFilePrefix = prefix; }
40 /// retrieve prefix for output files
41 std::string GetOutputFilePrefix() { return fOutputFilePrefix; }
42
43 /// insert PoI at beginning of vector of PoIs
44 void SetPOI( const std::string& POI ) { fPOI.insert( fPOI.begin(), POI ); }
45 /// append parameter to vector of PoIs
46 void AddPOI( const std::string& POI ) { fPOI.push_back(POI); }
47 /// get name of PoI at given index
48 std::string GetPOI(unsigned int i=0) { return fPOI.at(i); }
49 /// get vector of PoI names
50 std::vector<std::string>& GetPOIList() { return fPOI; }
51
52
53 /// Add a parameter to be set as constant
54 /// (Similar to ParamSetting method below)
55 void AddConstantParam( const std::string& param );
56 /// empty vector of constant parameters
58 /// get vector of all constant parameters
59 std::vector< std::string >& GetConstantParams() { return fConstantParams; }
60
61 /// Set a parameter to a specific value
62 /// (And optionally fix it)
63 void SetParamValue( const std::string& param, double value);
64 /// get map: parameter name <--> parameter value
65 std::map<std::string, double>& GetParamValues() { return fParamValues; }
66 /// clear map of parameter values
67 void ClearParamValues() { fParamValues.clear(); }
68
69 void AddPreprocessFunction( std::string name, std::string expression, std::string dependencies );
70 /// add a preprocess function object
71 void AddFunctionObject( const RooStats::HistFactory::PreprocessFunction function) { fFunctionObjects.push_back( function ); }
72 void SetFunctionObjects( std::vector< RooStats::HistFactory::PreprocessFunction > objects ) { fFunctionObjects = objects; }
73 /// get vector of defined function objects
74 std::vector< RooStats::HistFactory::PreprocessFunction >& GetFunctionObjects() { return fFunctionObjects; }
75 const std::vector< RooStats::HistFactory::PreprocessFunction >& GetFunctionObjects() const { return fFunctionObjects; }
76 std::vector< std::string > GetPreprocessFunctions() const;
77
78 /// get vector of defined Asimov Datasets
79 std::vector< RooStats::HistFactory::Asimov >& GetAsimovDatasets() { return fAsimovDatasets; }
80 /// add an Asimov Dataset
81 void AddAsimovDataset( RooStats::HistFactory::Asimov dataset ) { fAsimovDatasets.push_back(dataset); }
82
83 /// set integrated luminosity used to normalise histograms (if NormalizeByTheory is true for this sample)
84 void SetLumi(double Lumi ) { fLumi = Lumi; }
85 /// set relative uncertainty on luminosity
86 void SetLumiRelErr( double RelErr ) { fLumiRelErr = RelErr; }
87 /// retrieve integrated luminosity
88 double GetLumi() { return fLumi; }
89 /// retrieve relative uncertainty on luminosity
90 double GetLumiRelErr() { return fLumiRelErr; }
91
92 void SetBinLow( int BinLow ) { fBinLow = BinLow; }
93 void SetBinHigh ( int BinHigh ) { fBinHigh = BinHigh; }
94 int GetBinLow() { return fBinLow; }
95 int GetBinHigh() { return fBinHigh; }
96
97 /// do not produce any plots or tables, just save the model
98 void SetExportOnly( bool ExportOnly ) { fExportOnly = ExportOnly; }
99 bool GetExportOnly() { return fExportOnly; }
100
101 void PrintTree( std::ostream& = std::cout ); /// Print to a stream
102 void PrintXML( std::string Directory="", std::string NewOutputPrefix="" );
103
104 std::vector< RooStats::HistFactory::Channel >& GetChannels() { return fChannels; }
105 const std::vector< RooStats::HistFactory::Channel >& GetChannels() const { return fChannels; }
107 /// add a completely configured channel
108 void AddChannel( RooStats::HistFactory::Channel chan ) { fChannels.push_back( chan ); }
109
110 bool HasChannel( std::string );
111 void writeToFile( TFile* file );
112
113 void CollectHistograms();
114
115
116 void AddGammaSyst(std::string syst, double uncert);
117 void AddLogNormSyst(std::string syst, double uncert);
118 void AddUniformSyst(std::string syst);
119 void AddNoSyst(std::string syst);
120
121 std::map< std::string, double >& GetGammaSyst() { return fGammaSyst; }
122 std::map< std::string, double >& GetUniformSyst() { return fUniformSyst; }
123 std::map< std::string, double >& GetLogNormSyst() { return fLogNormSyst; }
124 std::map< std::string, double >& GetNoSyst() { return fNoSyst; }
125
126 std::map< std::string, double > const& GetGammaSyst() const { return fGammaSyst; }
127 std::map< std::string, double > const& GetUniformSyst() const { return fUniformSyst; }
128 std::map< std::string, double > const& GetLogNormSyst() const { return fLogNormSyst; }
129 std::map< std::string, double > const& GetNoSyst() const { return fNoSyst; }
130
132
133private:
134
135 /// Configurables of this measurement
136 std::string fOutputFilePrefix;
137 std::vector<std::string> fPOI;
138 double fLumi;
144
145 /// Channels that make up this measurement
146 std::vector< RooStats::HistFactory::Channel > fChannels;
147
148 /// List of Parameters to be set constant
149 std::vector< std::string > fConstantParams;
150
151 /// Map of parameter names to initial values to be set
152 std::map< std::string, double > fParamValues;
153
154 /// List of Preprocess Function objects
155 std::vector< RooStats::HistFactory::PreprocessFunction > fFunctionObjects;
156
157 /// List of Asimov datasets to generate
158 std::vector< RooStats::HistFactory::Asimov > fAsimovDatasets;
159
160 /// List of Alternate constraint terms
161 std::map< std::string, double > fGammaSyst;
162 std::map< std::string, double > fUniformSyst;
163 std::map< std::string, double > fLogNormSyst;
164 std::map< std::string, double > fNoSyst;
165
166 std::string GetDirPath( TDirectory* dir );
167
169
170};
171
172} // namespace HistFactory
173} // namespace RooStats
174
175#endif
#define ClassDef(name, id)
Definition Rtypes.h:325
char name[80]
Definition TGX11.cxx:110
TODO Here, we are missing some documentation.
Definition Asimov.h:22
This class encapsulates all information for the statistical interpretation of one experiment.
Definition Channel.h:30
The RooStats::HistFactory::Measurement class can be used to construct a model by combining multiple R...
Definition Measurement.h:30
void writeToFile(TFile *file)
A measurement, once fully configured, can be saved into a ROOT file.
std::map< std::string, double > const & GetNoSyst() const
std::map< std::string, double > const & GetGammaSyst() const
std::string fOutputFilePrefix
Configurables of this measurement.
void AddGammaSyst(std::string syst, double uncert)
Set constraint term for given systematic to Gamma distribution.
std::map< std::string, double > fGammaSyst
List of Alternate constraint terms.
void ClearParamValues()
clear map of parameter values
Definition Measurement.h:67
std::map< std::string, double > & GetGammaSyst()
std::map< std::string, double > & GetLogNormSyst()
std::string GetDirPath(TDirectory *dir)
Return the directory's path, stripped of unnecessary prefixes.
std::map< std::string, double > const & GetLogNormSyst() const
std::map< std::string, double > & GetParamValues()
get map: parameter name <--> parameter value
Definition Measurement.h:65
std::map< std::string, double > & GetNoSyst()
void SetExportOnly(bool ExportOnly)
do not produce any plots or tables, just save the model
Definition Measurement.h:98
const std::vector< RooStats::HistFactory::PreprocessFunction > & GetFunctionObjects() const
Definition Measurement.h:75
void AddPOI(const std::string &POI)
append parameter to vector of PoIs
Definition Measurement.h:46
std::vector< std::string > & GetPOIList()
get vector of PoI names
Definition Measurement.h:50
void AddLogNormSyst(std::string syst, double uncert)
Set constraint term for given systematic to LogNormal distribution.
void PrintXML(std::string Directory="", std::string NewOutputPrefix="")
Print to a stream.
void SetLumi(double Lumi)
set integrated luminosity used to normalise histograms (if NormalizeByTheory is true for this sample)
Definition Measurement.h:84
RooStats::HistFactory::Channel & GetChannel(std::string)
Get channel with given name from this measurement throws an exception in case the channel is not foun...
void SetParamValue(const std::string &param, double value)
Set a parameter to a specific value (And optionally fix it)
double GetLumiRelErr()
retrieve relative uncertainty on luminosity
Definition Measurement.h:90
std::map< std::string, double > fLogNormSyst
std::map< std::string, double > & GetUniformSyst()
std::map< std::string, double > fNoSyst
std::vector< std::string > & GetConstantParams()
get vector of all constant parameters
Definition Measurement.h:59
void CollectHistograms()
The most common way to add histograms to channels is to have them stored in ROOT files and to give Hi...
const std::vector< RooStats::HistFactory::Channel > & GetChannels() const
void AddChannel(RooStats::HistFactory::Channel chan)
add a completely configured channel
void SetOutputFilePrefix(const std::string &prefix)
set output prefix
Definition Measurement.h:39
bool HasChannel(std::string)
Check if the given channel is part of this measurement.
std::vector< std::string > fConstantParams
List of Parameters to be set constant.
void AddUniformSyst(std::string syst)
Set constraint term for given systematic to uniform distribution.
std::vector< RooStats::HistFactory::PreprocessFunction > fFunctionObjects
List of Preprocess Function objects.
std::map< std::string, double > fParamValues
Map of parameter names to initial values to be set.
void PrintTree(std::ostream &=std::cout)
Print information about measurement object in tree-like structure to given stream.
std::vector< RooStats::HistFactory::Channel > & GetChannels()
std::vector< RooStats::HistFactory::Asimov > & GetAsimovDatasets()
get vector of defined Asimov Datasets
Definition Measurement.h:79
Measurement()
Standard constructor.
void AddNoSyst(std::string syst)
Define given systematics to have no external constraint.
void SetPOI(const std::string &POI)
insert PoI at beginning of vector of PoIs
Definition Measurement.h:44
std::string GetOutputFilePrefix()
retrieve prefix for output files
Definition Measurement.h:41
void AddConstantParam(const std::string &param)
Add a parameter to be set as constant (Similar to ParamSetting method below)
std::vector< RooStats::HistFactory::Asimov > fAsimovDatasets
List of Asimov datasets to generate.
void AddFunctionObject(const RooStats::HistFactory::PreprocessFunction function)
add a preprocess function object
Definition Measurement.h:71
void ClearConstantParams()
empty vector of constant parameters
Definition Measurement.h:57
std::vector< RooStats::HistFactory::PreprocessFunction > & GetFunctionObjects()
get vector of defined function objects
Definition Measurement.h:74
void SetFunctionObjects(std::vector< RooStats::HistFactory::PreprocessFunction > objects)
Definition Measurement.h:72
void AddPreprocessFunction(std::string name, std::string expression, std::string dependencies)
Add a preprocessed function by giving the function a name, a functional expression,...
std::vector< std::string > GetPreprocessFunctions() const
Returns a list of defined preprocess function expressions.
void SetLumiRelErr(double RelErr)
set relative uncertainty on luminosity
Definition Measurement.h:86
std::vector< std::string > fPOI
std::map< std::string, double > const & GetUniformSyst() const
double GetLumi()
retrieve integrated luminosity
Definition Measurement.h:88
void AddAsimovDataset(RooStats::HistFactory::Asimov dataset)
add an Asimov Dataset
Definition Measurement.h:81
std::map< std::string, double > fUniformSyst
std::string GetPOI(unsigned int i=0)
get name of PoI at given index
Definition Measurement.h:48
std::vector< RooStats::HistFactory::Channel > fChannels
Channels that make up this measurement.
Describe directory structure in memory.
Definition TDirectory.h:45
A ROOT file is a suite of consecutive data records (TKey instances) with a well defined format.
Definition TFile.h:54
The TNamed class is the base class for all named ROOT classes.
Definition TNamed.h:29
Namespace for the RooStats classes.
Definition Asimov.h:19
Definition file.py:1