Loading [MathJax]/extensions/tex2jax.js
 |
ATLAS Offline Software
|
Go to the documentation of this file.
100 std::map<std::string,std::vector<SystematicSet>> myresult;
109 auto& subresult = myresult[
config.label];
114 if (baseSys[
group].empty())
123 if (
sys.second.front().isContinuousEnsemble())
130 }
else if (
sys.second.front().isEnsemble())
138 for (
auto mysys :
sys.second)
141 subresult.back().insert(mysys);
147 std::vector<CP::SystematicSet> toys (
config.toys);
154 if (
sys.second.front().isContinuousEnsemble())
156 std::unique_ptr<TRandom3> random (
new TRandom3);
157 random->SetSeed (hash_string (
sys.first));
159 for (
auto& toy : toys)
161 }
else if (
sys.second.front().isToyEnsemble())
163 for (
unsigned toy = 0; toy !=
config.toys; ++ toy)
172 for (
auto& toy : toys)
173 subresult.push_back (std::move (toy));
183 addGroup (
const std::string& val_label)
197 m_config.back().pattern = val_pattern;
231 std::vector<std::map<std::string,std::vector<SystematicVariation>>>
235 std::map<std::string,std::vector<SystematicVariation> > basesys;
236 for (
auto sys : sysList)
238 basesys[
sys.basename()].push_back (
sys);
240 std::vector<std::map<std::string,std::vector<SystematicVariation> >>
242 for (
auto sys : basesys)
246 for (
auto mysys :
sys.second)
248 if (mysys.isEnsemble())
250 if (!ensemble.
empty())
251 RCU_THROW_MSG (
"inconsistent ensembles requested: " + ensemble.
name() +
" " + mysys.name());
258 for (std::size_t iter = 0; iter !=
m_config.size(); ++ iter)
278 RCU_THROW_MSG (
"toys only supported for ensemble systematics");
285 if (!ensemble.
empty())
287 basesysList[
group][
sys.first].push_back (ensemble);
290 basesysList[
group][
sys.first] = std::move (
sys.second);
static SystematicVariation makeToyVariation(const std::string &basename, unsigned toyIndex, float toyScale)
constructor for toy systematics
const std::string & name() const
description: the full systematics name, for use in strings, etc.
the configuration for the given group
Class to wrap a set of SystematicVariations.
std::map< std::string, std::vector< SystematicSet > > m_result
the value of result
void setPattern(const std::string &val_pattern)
set the pattern for the current group
Select isolated Photons, Electrons and Muons.
std::string m_useForNominal
the group for which useForNominal was set
const std::vector< SystematicSet > & result(const std::string &label) const
the list of nuisance parameter points generated with the given label
void addGroup(const std::string &val_label)
finish configuration for this group and add a new one
void useForNominal()
set this group as the default, i.e.
#define RCU_REQUIRE2(x, y)
bool match_expr(const boost::regex &expr, const std::string &str)
returns: whether we can match the entire string with the regular expression guarantee: strong failure...
void setSigma(float val_sigma)
set the number of sigmas to vary this group by
MakeSystematicsVector()
standard default constructor
std::vector< GroupConfig > m_config
the configuration on a per-group basis
bool empty() const
returns: whether this is an empty systematic, i.e.
void setToys(unsigned val_toys)
set the number of toys to run for this group
void calc(const SystematicSet &sysList)
fill in result
#define RCU_CHANGE_INVARIANT(x)
#define RCU_THROW_MSG(message)
#define RCU_READ_INVARIANT(x)
void testInvariant() const
test the invariant of this object
bool isToyEnsemble() const
whether this represents a toy ensemble
std::vector< std::map< std::string, std::vector< SystematicVariation > > > calcBaseSys(const SystematicSet &sysList)
make the list of base systematics for calc
#define RCU_NEW_INVARIANT(x)