00001 #ifndef JETUNCERTAINTIES_UNCERTAINTYSET_H
00002 #define JETUNCERTAINTIES_UNCERTAINTYSET_H
00003
00004 #include "JetUncertainties/UncertaintyGroup.h"
00005
00006 #include "xAODJet/Jet.h"
00007 #include "xAODEventInfo/EventInfo.h"
00008
00009 #include "PATInterfaces/SystematicSet.h"
00010 #include "AsgTools/AsgMessaging.h"
00011
00012 #include <string>
00013 #include <vector>
00014 #include <utility>
00015
00016 namespace jet
00017 {
00018
00019 class UncertaintySet : virtual public asg::AsgMessaging
00020 {
00021 ASG_TOOL_CLASS0(UncertaintySet)
00022
00023 public:
00024
00025 UncertaintySet(const std::string& name = "");
00026 virtual ~UncertaintySet();
00027 virtual StatusCode initialize(const CP::SystematicSet& systConfig, const std::vector<UncertaintyGroup*>& groups);
00028
00029 virtual std::string getName() const;
00030
00031
00032
00033 virtual bool getValidity(const xAOD::Jet& jet, const xAOD::EventInfo& eInfo, const CompScaleVar::TypeEnum scaleVar = CompScaleVar::UNKNOWN) const;
00034 virtual double getUncertainty(const xAOD::Jet& jet, const xAOD::EventInfo& eInfo, const CompScaleVar::TypeEnum scaleVar = CompScaleVar::UNKNOWN) const;
00035 virtual bool getValidUncertainty(double& unc, const xAOD::Jet& jet, const xAOD::EventInfo& eInfo, const CompScaleVar::TypeEnum scaleVar = CompScaleVar::UNKNOWN) const;
00036
00037
00038 virtual std::vector<CompScaleVar::TypeEnum> getScaleVars() const;
00039 virtual std::vector< std::pair<CompScaleVar::TypeEnum,bool> > getValiditySet(const xAOD::Jet& jet, const xAOD::EventInfo& eInfo) const;
00040 virtual std::vector< std::pair<CompScaleVar::TypeEnum,double> > getUncertaintySet(const xAOD::Jet& jet, const xAOD::EventInfo& eInfo) const;
00041 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;
00042
00043 private:
00044
00045 const std::string m_name;
00046 bool m_isInit;
00047 std::vector<UncertaintyGroup*> m_groups;
00048 std::vector<float> m_shiftWeights;
00049
00050
00051
00052 CompScaleVar::TypeEnum getSingleVar() const;
00053
00054 };
00055
00056 }
00057
00058 #endif