00001
00002 #ifndef XAODMISSINGET_VERSIONS_MISSINGET_V1_H
00003 #define XAODMISSINGET_VERSIONS_MISSINGET_V1_H
00004
00005 #include "AthContainers/AuxElement.h"
00006
00007 #include "xAODBase/IParticle.h"
00008
00009 #include "xAODMissingET/versions/MissingETBase.h"
00010
00011 #include <string>
00012 #include <functional>
00013 #include <utility>
00014
00015 namespace xAOD
00016 {
00018 class MissingET_v1 : public SG::AuxElement
00019 {
00020 public:
00021
00024 explicit MissingET_v1(bool createStore=false);
00025 MissingET_v1(const std::string& name,
00026 MissingETBase::Types::bitmask_t src=MissingETBase::Source::unknown());
00027 MissingET_v1(const IParticle* particle, const std::string& name="MissingET",
00028 MissingETBase::Types::bitmask_t src=MissingETBase::Source::unknown());
00029 MissingET_v1(double mpx,double mpy,double sumet,const std::string& name="MissingET",
00030 MissingETBase::Types::bitmask_t src=MissingETBase::Source::unknown());
00031 MissingET_v1(const MissingET_v1& met);
00032 ~MissingET_v1();
00037 double mpx() const;
00038 double mpy() const;
00039 double met() const;
00040 double phi() const;
00041 double sumet() const;
00046 void setMpx(double value);
00047 void setMpy(double value);
00048 void setSumet(double value);
00050
00053 const std::string& name() const;
00054 MissingETBase::Types::bitmask_t source() const;
00055 const std::size_t& nameHash() const;
00060 void setName(const std::string& name);
00061 void setSource(MissingETBase::Types::bitmask_t src);
00066 void add(const IParticle* particle);
00067 void add(const IParticle* particle,double scale);
00068 void add(double px,double py,double pt);
00069 MissingET_v1& operator=(const MissingET_v1& met);
00070 MissingET_v1& operator+=(const IParticle* particle);
00071 MissingET_v1& operator-=(const IParticle* part);
00076 MissingET_v1& operator+=(const MissingET_v1& met);
00077 MissingET_v1& operator-=(const MissingET_v1& met);
00078 MissingET_v1& operator*=(double scale);
00079 MissingET_v1& operator/=(double scale);
00084 void clear();
00089 bool operator==(const MissingET_v1& met) const;
00090 bool operator!=(const MissingET_v1& met) const;
00095 protected:
00097 void createPrivateStore();
00098
00101 double& f_mpx();
00102 double& f_mpy();
00103 double& f_sumet();
00104 std::string& f_name();
00105 MissingETBase::Types::bitmask_t& f_source();
00108 private:
00109 mutable std::pair< std::string , std::size_t> m_nameHashPair;
00110 };
00111 }
00112
00117 xAOD::MissingET_v1 operator+(const xAOD::MissingET_v1& met0,const xAOD::MissingET_v1& met1);
00118 xAOD::MissingET_v1 operator-(const xAOD::MissingET_v1& met0,const xAOD::MissingET_v1& met1);
00119 xAOD::MissingET_v1 operator*(const xAOD::MissingET_v1& met,double scale);
00120 xAOD::MissingET_v1 operator*(double scale,const xAOD::MissingET_v1& met);
00121 xAOD::MissingET_v1 operator/(const xAOD::MissingET_v1& met,double scale);
00124 #include "xAODMissingET/versions/MissingET_v1.icc"
00125
00126 #endif