40 return StatusCode::FAILURE;
44 std::set<UncertaintyGroup*> compSet;
46 for (
size_t iGroup = 0; iGroup < groups.size(); ++iGroup)
47 if (groups.at(iGroup)->getName().CompareTo(iter->basename().c_str()) == 0)
50 if (compSet.count(groups.at(iGroup)))
52 ATH_MSG_ERROR(
"Multiple independent shifts requested for a single group: " << groups.at(iGroup)->getName().Data());
53 return StatusCode::FAILURE;
55 compSet.insert(groups.at(iGroup));
57 m_groups.push_back(groups.at(iGroup));
66 ATH_MSG_ERROR(Form(
"Input SystematicSet is %zu elements, but only found %zu UncertaintyGroups",systConfig.
size(),
m_groups.size()));
67 return StatusCode::FAILURE;
72 return StatusCode::SUCCESS;
88 std::set<CompScaleVar::TypeEnum> vars =
m_groups.at(0)->getScaleVars();
93 for (
size_t iGroup = 1; iGroup <
m_groups.size(); ++iGroup)
95 std::set<CompScaleVar::TypeEnum> vars2 =
m_groups.at(iGroup)->getScaleVars();
96 if (vars2.size() != 1 || singleVar != *(vars2.begin()))
115 ATH_MSG_ERROR(
"Asked for validity of a multi-scale variable set without specifying any scale variable: " <<
m_name);
120 for (
size_t iGroup = 0; iGroup <
m_groups.size(); ++iGroup)
121 if (!
m_groups.at(iGroup)->getValidity(
jet,eInfo,scaleVariable))
141 ATH_MSG_ERROR(
"Asked for uncertainty of a multi-scale-variable set without specifying any scale variable: " <<
m_name);
147 for (
size_t iGroup = 0; iGroup <
m_groups.size(); ++iGroup)
171 ATH_MSG_ERROR(
"Asked for valid uncertainty of a multi-scale-variable set without specifying any scale variable: " <<
m_name);
177 for (
size_t iGroup = 0; iGroup <
m_groups.size(); ++iGroup)
179 if (!
m_groups.at(iGroup)->getValidity(
jet,eInfo,scaleVariable))
196 std::set<CompScaleVar::TypeEnum> scaleVarSet;
197 for (
size_t iGroup = 0; iGroup <
m_groups.size(); ++iGroup)
199 std::set<CompScaleVar::TypeEnum> localSet =
m_groups.at(iGroup)->getScaleVars();
200 scaleVarSet.insert(localSet.begin(),localSet.end());
204 std::vector<CompScaleVar::TypeEnum> scaleVars;
205 std::set<CompScaleVar::TypeEnum>::const_iterator iter;
206 for (iter = scaleVarSet.begin(); iter != scaleVarSet.end(); ++iter)
207 scaleVars.push_back(*(iter));
213 std::vector< std::pair<CompScaleVar::TypeEnum,bool> > validity;
220 const std::vector<CompScaleVar::TypeEnum> scaleVars =
getScaleVars();
223 for (
size_t iVar = 0; iVar < scaleVars.size(); ++iVar)
224 validity.emplace_back(scaleVars.at(iVar),
getValidity(
jet,eInfo,scaleVars.at(iVar)));
232 std::vector< std::pair<CompScaleVar::TypeEnum,double> > unc;
239 const std::vector<CompScaleVar::TypeEnum> scaleVars =
getScaleVars();
242 for (
size_t iVar = 0; iVar < scaleVars.size(); ++iVar)
243 unc.emplace_back(scaleVars.at(iVar),
getUncertainty(
jet,eInfo,scaleVars.at(iVar)));
251 std::vector< std::pair<CompScaleVar::TypeEnum,bool> > validity;
252 std::vector< std::pair<CompScaleVar::TypeEnum,double> > localUnc;
257 unc = std::move(localUnc);
262 const std::vector<CompScaleVar::TypeEnum> scaleVars =
getScaleVars();
265 for (
size_t iVar = 0; iVar < scaleVars.size(); ++iVar)
268 validity.emplace_back(scaleVars.at(iVar),
getValidUncertainty(localUncValue,
jet,eInfo,scaleVars.at(iVar)));
269 localUnc.emplace_back(scaleVars.at(iVar),localUncValue);
273 unc = std::move(localUnc);
301 result = group->getTopology();
302 else if (
result != group->getTopology(scaleVar))
#define JESUNC_ERROR_CODE
Class to wrap a set of SystematicVariations.
const_iterator end() const
description: const iterator to the end of the set
std::set< SystematicVariation >::const_iterator const_iterator
const_iterator begin() const
description: const iterator to the beginning of the set
size_t size() const
returns: size of the set
AsgMessaging(const std::string &name)
Constructor with a name.
virtual std::vector< std::pair< CompScaleVar::TypeEnum, bool > > getValiditySet(const xAOD::Jet &jet, const xAOD::EventInfo &eInfo) const
virtual std::vector< std::pair< CompScaleVar::TypeEnum, bool > > getValidUncertaintySet(std::vector< std::pair< CompScaleVar::TypeEnum, double > > &unc, const xAOD::Jet &jet, const xAOD::EventInfo &eInfo) const
virtual double getUncertainty(const xAOD::Jet &jet, const xAOD::EventInfo &eInfo, const CompScaleVar::TypeEnum scaleVar=CompScaleVar::UNKNOWN) const
std::vector< float > m_shiftWeights
virtual bool getValidity(const xAOD::Jet &jet, const xAOD::EventInfo &eInfo, const CompScaleVar::TypeEnum scaleVar=CompScaleVar::UNKNOWN) const
virtual StatusCode initialize(const CP::SystematicSet &systConfig, const std::vector< UncertaintyGroup * > &groups)
UncertaintySet(const std::string &name="")
JetTopology::TypeEnum getTopology(const CompScaleVar::TypeEnum scaleVar=CompScaleVar::UNKNOWN) const
virtual bool getValidUncertainty(double &unc, const xAOD::Jet &jet, const xAOD::EventInfo &eInfo, const CompScaleVar::TypeEnum scaleVar=CompScaleVar::UNKNOWN) const
virtual ~UncertaintySet()
virtual std::string getName() const
virtual std::vector< CompScaleVar::TypeEnum > getScaleVars() const
virtual std::vector< std::pair< CompScaleVar::TypeEnum, double > > getUncertaintySet(const xAOD::Jet &jet, const xAOD::EventInfo &eInfo) const
CompScaleVar::TypeEnum getSingleVar() const
std::vector< UncertaintyGroup * > m_groups
Jet_v1 Jet
Definition of the current "jet version".
EventInfo_v1 EventInfo
Definition of the latest event info version.