Skip to content

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