more helper functions to handle uncertainties
In certain contexts, only certain uncertainties are relevant. It could be useful to pick up only certain ones, e.g.
vector<DAS::Uncertainties::Variation> GetScaleVariations (const DT::MetaInfo& metainfo, bool applySyst)
{
vector<DAS::Uncertainties::Variation> variations;
variations.emplace_back("nominal","nominal");
if (!applySyst) return variations;
const TList * groupContents = metainfo.List("variations", DAS::RecJet::ScaleVar);
if (!groupContents)
BOOST_THROW_EXCEPTION( invalid_argument(groupContents->GetName()) );
size_t i = 0;
for (const TObject * obj: *groupContents) {
const auto os = dynamic_cast<const TObjString*>(obj);
if (!os) BOOST_THROW_EXCEPTION( invalid_argument(obj->GetName()) );
TString s = os->GetString();
s.ReplaceAll(SysUp, "");
s.ReplaceAll(SysDown, "");
if (find(begin(Scale::uncs), end(Scale::uncs), s) != end(Scale::uncs))
variations.emplace_back(DAS::RecJet::ScaleVar, os->GetString(), ++i);
}
return variations;
}
Edited by Patrick Louis S Connor