00001 #ifndef PATINTERFACES_MAKE_SYSTEMATICS_VECTOR_H
00002 #define PATINTERFACES_MAKE_SYSTEMATICS_VECTOR_H
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014 #include <PATInterfaces/Global.h>
00015
00016 #include <PATInterfaces/SystematicSet.h>
00017 #include <map>
00018 #include <string>
00019 #include <vector>
00020
00021 namespace CP
00022 {
00035
00036 class MakeSystematicsVector
00037 {
00038
00039
00040
00041
00045 public:
00046 void testInvariant () const;
00047
00048
00052 public:
00053 MakeSystematicsVector ();
00054
00055
00063 public:
00064 const std::vector<SystematicSet>&
00065 result (const std::string& label) const;
00066
00067
00077 public:
00078 void calc (const SystematicSet& sysList);
00079
00080
00087 public:
00088 void addGroup (const std::string& val_label);
00089
00090
00096 public:
00097 void setPattern (const std::string& val_pattern);
00098
00099
00122 public:
00123 void setSigma (float val_sigma);
00124
00125
00182
00183
00186 public:
00187 void setToys (unsigned val_toys);
00188
00189
00194 public:
00195 void useForNominal ();
00196
00197
00198
00199
00200
00201
00202
00204 private:
00205 std::map<std::string,std::vector<SystematicSet>> m_result;
00206
00207
00209 private:
00210 struct GroupConfig
00211 {
00213 public:
00214 std::string label;
00215
00217 public:
00218 std::string pattern;
00219
00221 public:
00222 float sigma = 1;
00223
00226 public:
00227 unsigned toys = 0;
00228 };
00229
00231 private:
00232 std::vector<GroupConfig> m_config;
00233
00234
00236 private:
00237 std::string m_useForNominal;
00238
00239
00245 private:
00246 std::vector<std::map<std::string,std::vector<SystematicVariation> >>
00247 calcBaseSys (const SystematicSet& sysList);
00248 };
00249 }
00250
00251 #endif