diff --git a/Event/xAOD/xAODMissingET/Root/MissingETAssociation_v1.cxx b/Event/xAOD/xAODMissingET/Root/MissingETAssociation_v1.cxx
index 7b15541dee16289431eb641dfdb797c5818af885..9e4a626858ee930986a15c477821415d447b363e 100644
--- a/Event/xAOD/xAODMissingET/Root/MissingETAssociation_v1.cxx
+++ b/Event/xAOD/xAODMissingET/Root/MissingETAssociation_v1.cxx
@@ -41,14 +41,14 @@ namespace xAOD {
     return *this;
   }
 
-  MissingETAssociation_v1::ConstVec& MissingETAssociation_v1::ConstVec::operator*=(double scale)
+  MissingETAssociation_v1::ConstVec& MissingETAssociation_v1::ConstVec::operator*=(float scale)
   {
     this->cpx() *= scale; this->cpy() *= scale; this->cpz() *= scale; this->ce() *= scale;
     this->sumpt() *= scale;
     return *this;
   }
 
-  MissingETAssociation_v1::ConstVec& MissingETAssociation_v1::ConstVec::operator/=(double scale)
+  MissingETAssociation_v1::ConstVec& MissingETAssociation_v1::ConstVec::operator/=(float scale)
   {
     if ( scale <1e-9 ) { this->cpx() = 0.; this->cpy() = 0.; this->cpz() = 0.; this->ce() = 0.; this->sumpt() = 0.; return *this; }
     else { return this->operator*=(1./scale); }
@@ -64,7 +64,7 @@ namespace xAOD {
       MissingETBase::Numerical::isEqual(this->sumpt(),cvec.sumpt());
   }
 
-  double MissingETAssociation_v1::ConstVec::cpt() const
+  float MissingETAssociation_v1::ConstVec::cpt() const
   {
     return sqrt(this->cpx()*this->cpx()+this->cpy()*this->cpy());
   }
@@ -276,47 +276,47 @@ namespace xAOD {
   // Setters //
   /////////////
 
-  bool MissingETAssociation_v1::setCalPx(const std::vector<double>& calpxvec)
+  bool MissingETAssociation_v1::setCalPx(const std::vector<float>& calpxvec)
   { this->f_calpx().clear(); this->f_calpx().insert(this->f_calpx().end(),calpxvec.begin(),calpxvec.end()); return !this->f_calpx().empty(); }
-  bool MissingETAssociation_v1::setCalPy(const std::vector<double>& calpyvec)
+  bool MissingETAssociation_v1::setCalPy(const std::vector<float>& calpyvec)
   { this->f_calpy().clear(); this->f_calpy().insert(this->f_calpy().end(),calpyvec.begin(),calpyvec.end()); return !this->f_calpy().empty(); }
-  bool MissingETAssociation_v1::setCalPz(const std::vector<double>& calpzvec)
+  bool MissingETAssociation_v1::setCalPz(const std::vector<float>& calpzvec)
   { this->f_calpz().clear(); this->f_calpz().insert(this->f_calpz().end(),calpzvec.begin(),calpzvec.end()); return !this->f_calpz().empty(); }
-  bool MissingETAssociation_v1::setCalE(const std::vector<double>& calevec)
+  bool MissingETAssociation_v1::setCalE(const std::vector<float>& calevec)
   { this->f_cale().clear(); this->f_cale().insert(this->f_cale().end(),calevec.begin(),calevec.end()); return !this->f_cale().empty(); }
-  bool MissingETAssociation_v1::setCalSumpt(const std::vector<double>& calsumptvec)
+  bool MissingETAssociation_v1::setCalSumpt(const std::vector<float>& calsumptvec)
   { this->f_calsumpt().clear(); this->f_calsumpt().insert(this->f_calsumpt().end(),calsumptvec.begin(),calsumptvec.end()); return !this->f_calsumpt().empty(); }
   bool MissingETAssociation_v1::setCalKey(const std::vector<MissingETBase::Types::bitmask_t>& calkeyvec)
   { this->f_calkey().clear(); this->f_calkey().insert(this->f_calkey().end(),calkeyvec.begin(),calkeyvec.end()); return !this->f_calkey().empty(); }
 
-  bool MissingETAssociation_v1::setTrkPx(const std::vector<double>& trkpxvec)
+  bool MissingETAssociation_v1::setTrkPx(const std::vector<float>& trkpxvec)
   { this->f_trkpx().clear(); this->f_trkpx().insert(this->f_trkpx().end(),trkpxvec.begin(),trkpxvec.end()); return !this->f_trkpx().empty(); }
-  bool MissingETAssociation_v1::setTrkPy(const std::vector<double>& trkpyvec)
+  bool MissingETAssociation_v1::setTrkPy(const std::vector<float>& trkpyvec)
   { this->f_trkpy().clear(); this->f_trkpy().insert(this->f_trkpy().end(),trkpyvec.begin(),trkpyvec.end()); return !this->f_trkpy().empty(); }
-  bool MissingETAssociation_v1::setTrkPz(const std::vector<double>& trkpzvec)
+  bool MissingETAssociation_v1::setTrkPz(const std::vector<float>& trkpzvec)
   { this->f_trkpz().clear(); this->f_trkpz().insert(this->f_trkpz().end(),trkpzvec.begin(),trkpzvec.end()); return !this->f_trkpz().empty(); }
-  bool MissingETAssociation_v1::setTrkE(const std::vector<double>& trkevec)
+  bool MissingETAssociation_v1::setTrkE(const std::vector<float>& trkevec)
   { this->f_trke().clear(); this->f_trke().insert(this->f_trke().end(),trkevec.begin(),trkevec.end()); return !this->f_trke().empty(); }
-  bool MissingETAssociation_v1::setTrkSumpt(const std::vector<double>& trksumptvec)
+  bool MissingETAssociation_v1::setTrkSumpt(const std::vector<float>& trksumptvec)
   { this->f_trksumpt().clear(); this->f_trksumpt().insert(this->f_trksumpt().end(),trksumptvec.begin(),trksumptvec.end()); return !this->f_trksumpt().empty(); }
   bool MissingETAssociation_v1::setTrkKey(const std::vector<MissingETBase::Types::bitmask_t>& trkkeyvec)
   { this->f_trkkey().clear(); this->f_trkkey().insert(this->f_trkkey().end(),trkkeyvec.begin(),trkkeyvec.end()); return !this->f_trkkey().empty(); }
 
   //////////
   // FIXME: failsafe implementation checks on invalidKey and vector index - vector index may be sufficient?
-  bool MissingETAssociation_v1::setCalPx(size_t keyIdx,double calpx)
+  bool MissingETAssociation_v1::setCalPx(size_t keyIdx,float calpx)
   { if ( keyIdx != MissingETBase::Numerical::invalidIndex() && keyIdx < this->f_calpx().size() ) { this->f_calpx()[keyIdx] = calpx; return true; } else { return false; } }
-  bool MissingETAssociation_v1::setCalPy(size_t keyIdx,double calpy)
+  bool MissingETAssociation_v1::setCalPy(size_t keyIdx,float calpy)
   { if ( keyIdx != MissingETBase::Numerical::invalidIndex() && keyIdx < this->f_calpy().size() ) { this->f_calpy()[keyIdx] = calpy; return true; } else { return false; } }
-  bool MissingETAssociation_v1::setCalPz(size_t keyIdx,double calpz)
+  bool MissingETAssociation_v1::setCalPz(size_t keyIdx,float calpz)
   { if ( keyIdx != MissingETBase::Numerical::invalidIndex() && keyIdx < this->f_calpz().size() ) { this->f_calpz()[keyIdx] = calpz; return true; } else { return false; } }
-  bool MissingETAssociation_v1::setCalE(size_t keyIdx,double cale)
+  bool MissingETAssociation_v1::setCalE(size_t keyIdx,float cale)
   { if ( keyIdx != MissingETBase::Numerical::invalidIndex() && keyIdx < this->f_cale().size() ) { this->f_cale()[keyIdx] = cale; return true; } else { return false; } }
-  bool MissingETAssociation_v1::setCalSumpt(size_t keyIdx,double calsumpt)
+  bool MissingETAssociation_v1::setCalSumpt(size_t keyIdx,float calsumpt)
   { if ( keyIdx != MissingETBase::Numerical::invalidIndex() && keyIdx < this->f_calsumpt().size() ) { this->f_calsumpt()[keyIdx] = calsumpt; return true; } else { return false; } }
   bool MissingETAssociation_v1::setCalKey(size_t keyIdx,MissingETBase::Types::bitmask_t calkey)
   { if ( keyIdx != MissingETBase::Numerical::invalidIndex() && keyIdx < this->f_calkey().size() ) { this->f_calkey()[keyIdx] = calkey; return true; } else { return false; } }
-  bool MissingETAssociation_v1::setCalVec(size_t keyIdx,double calpx,double calpy,double calpz,double cale,double sumpt)
+  bool MissingETAssociation_v1::setCalVec(size_t keyIdx,float calpx,float calpy,float calpz,float cale,float sumpt)
   {
     if ( keyIdx != MissingETBase::Numerical::invalidIndex() && keyIdx < this->f_cale().size() ) {
       this->f_calpx()[keyIdx] = calpx;  this->f_calpy()[keyIdx] = calpy;
@@ -324,7 +324,7 @@ namespace xAOD {
       this->f_calsumpt()[keyIdx] = sumpt; return true;
     } else { return false; }
   }
-  bool MissingETAssociation_v1::addCalVec(MissingETBase::Types::bitmask_t key,double calpx,double calpy,double calpz,double cale,double sumpt) {
+  bool MissingETAssociation_v1::addCalVec(MissingETBase::Types::bitmask_t key,float calpx,float calpy,float calpz,float cale,float sumpt) {
     for(MissingETBase::Types::bitmask_t testkey : this->f_calkey()) {
       // quit if key already exists.
       if(key==testkey) return false;
@@ -338,19 +338,19 @@ namespace xAOD {
     return true;
   }
 
-  bool MissingETAssociation_v1::setTrkPx(size_t keyIdx,double trkpx)
+  bool MissingETAssociation_v1::setTrkPx(size_t keyIdx,float trkpx)
   { if ( keyIdx != MissingETBase::Numerical::invalidIndex() && keyIdx < this->f_trkpx().size() ) { this->f_trkpx()[keyIdx] = trkpx; return true; } else { return false; } }
-  bool MissingETAssociation_v1::setTrkPy(size_t keyIdx,double trkpy)
+  bool MissingETAssociation_v1::setTrkPy(size_t keyIdx,float trkpy)
   { if ( keyIdx != MissingETBase::Numerical::invalidIndex() && keyIdx < this->f_trkpy().size() ) { this->f_trkpy()[keyIdx] = trkpy; return true; } else { return false; } }
-  bool MissingETAssociation_v1::setTrkPz(size_t keyIdx,double trkpz)
+  bool MissingETAssociation_v1::setTrkPz(size_t keyIdx,float trkpz)
   { if ( keyIdx != MissingETBase::Numerical::invalidIndex() && keyIdx < this->f_trkpz().size() ) { this->f_trkpz()[keyIdx] = trkpz; return true; } else { return false; } }
-  bool MissingETAssociation_v1::setTrkE(size_t keyIdx,double trke)
+  bool MissingETAssociation_v1::setTrkE(size_t keyIdx,float trke)
   { if ( keyIdx != MissingETBase::Numerical::invalidIndex() && keyIdx < this->f_trke().size() ) { this->f_trke()[keyIdx] = trke; return true; } else { return false; } }
-  bool MissingETAssociation_v1::setTrkSumpt(size_t keyIdx,double trksumpt)
+  bool MissingETAssociation_v1::setTrkSumpt(size_t keyIdx,float trksumpt)
   { if ( keyIdx != MissingETBase::Numerical::invalidIndex() && keyIdx < this->f_trksumpt().size() ) { this->f_trksumpt()[keyIdx] = trksumpt; return true; } else { return false; } }
   bool MissingETAssociation_v1::setTrkKey(size_t keyIdx,MissingETBase::Types::bitmask_t trkkey)
   { if ( keyIdx != MissingETBase::Numerical::invalidIndex() && keyIdx < this->f_trkkey().size() ) { this->f_trkkey()[keyIdx] = trkkey; return true; } else { return false; } }
-  bool MissingETAssociation_v1::setTrkVec(size_t keyIdx,double trkpx,double trkpy,double trkpz,double trke,double sumpt)
+  bool MissingETAssociation_v1::setTrkVec(size_t keyIdx,float trkpx,float trkpy,float trkpz,float trke,float sumpt)
   { 
     if ( keyIdx != MissingETBase::Numerical::invalidIndex() && keyIdx < this->f_trke().size() ) {
       this->f_trkpx()[keyIdx] = trkpx;  this->f_trkpy()[keyIdx] = trkpy;
@@ -358,7 +358,7 @@ namespace xAOD {
       this->f_trksumpt()[keyIdx] = sumpt; return true; 
     } else { return false; }
   }
-  bool MissingETAssociation_v1::addTrkVec(MissingETBase::Types::bitmask_t key,double trkpx,double trkpy,double trkpz,double trke,double sumpt) {
+  bool MissingETAssociation_v1::addTrkVec(MissingETBase::Types::bitmask_t key,float trkpx,float trkpy,float trkpz,float trke,float sumpt) {
     for(MissingETBase::Types::bitmask_t testkey : this->f_trkkey()) {
       // quit if key already exists.
       if(key==testkey) return false;
@@ -373,17 +373,17 @@ namespace xAOD {
   }
 
 
-  void MissingETAssociation_v1::setJetTrkPx(double px)
+  void MissingETAssociation_v1::setJetTrkPx(float px)
   { this->f_jettrkpx() = px; }
-  void MissingETAssociation_v1::setJetTrkPy(double py)
+  void MissingETAssociation_v1::setJetTrkPy(float py)
   { this->f_jettrkpy() = py; }
-  void MissingETAssociation_v1::setJetTrkPz(double pz)
+  void MissingETAssociation_v1::setJetTrkPz(float pz)
   { this->f_jettrkpz() = pz; }
-  void MissingETAssociation_v1::setJetTrkE(double e)
+  void MissingETAssociation_v1::setJetTrkE(float e)
   { this->f_jettrke() = e; }
-  void MissingETAssociation_v1::setJetTrkSumpt(double sumpt)
+  void MissingETAssociation_v1::setJetTrkSumpt(float sumpt)
   { this->f_jettrksumpt() = sumpt; }
-  void MissingETAssociation_v1::setJetTrkVec(double px,double py,double pz,double e,double sumpt)
+  void MissingETAssociation_v1::setJetTrkVec(float px,float py,float pz,float e,float sumpt)
   {
     this->f_jettrkpx() = px;  this->f_jettrkpy() = py;
     this->f_jettrkpz() = pz;  this->f_jettrke() = e; 
@@ -446,28 +446,28 @@ namespace xAOD {
   // Getters //
   /////////////
   
-  double MissingETAssociation_v1::calpx(size_t keyIdx) const
+  float MissingETAssociation_v1::calpx(size_t keyIdx) const
   { return keyIdx != MissingETBase::Numerical::invalidIndex() && keyIdx < this->sizeCal() ? this->calpx()[keyIdx] : MissingETBase::Numerical::cpxError(); }
-  double MissingETAssociation_v1::calpy(size_t keyIdx) const
+  float MissingETAssociation_v1::calpy(size_t keyIdx) const
   { return keyIdx != MissingETBase::Numerical::invalidIndex() && keyIdx < this->sizeCal() ? this->calpy()[keyIdx] : MissingETBase::Numerical::cpyError(); }
-  double MissingETAssociation_v1::calpz(size_t keyIdx) const
+  float MissingETAssociation_v1::calpz(size_t keyIdx) const
   { return keyIdx != MissingETBase::Numerical::invalidIndex() && keyIdx < this->sizeCal() ? this->calpz()[keyIdx] : MissingETBase::Numerical::cpzError(); }
-  double MissingETAssociation_v1::cale(size_t keyIdx) const
+  float MissingETAssociation_v1::cale(size_t keyIdx) const
   { return keyIdx != MissingETBase::Numerical::invalidIndex() && keyIdx < this->sizeCal() ? this->cale()[keyIdx] : MissingETBase::Numerical::ceError(); }
-  double MissingETAssociation_v1::calsumpt(size_t keyIdx) const
+  float MissingETAssociation_v1::calsumpt(size_t keyIdx) const
   { return keyIdx != MissingETBase::Numerical::invalidIndex() && keyIdx < this->sizeCal() ? this->calsumpt()[keyIdx] : MissingETBase::Numerical::sumptError(); }
   MissingETBase::Types::bitmask_t MissingETAssociation_v1::calkey(size_t keyIdx) const
   { return keyIdx != MissingETBase::Numerical::invalidIndex() && keyIdx < this->sizeCal() ? this->calkey()[keyIdx] : MissingETBase::Numerical::invalidIndex(); }
 
-  double MissingETAssociation_v1::trkpx(size_t keyIdx) const
+  float MissingETAssociation_v1::trkpx(size_t keyIdx) const
   { return keyIdx != MissingETBase::Numerical::invalidIndex() && keyIdx < this->sizeTrk() ? this->trkpx()[keyIdx] : MissingETBase::Numerical::cpxError(); }
-  double MissingETAssociation_v1::trkpy(size_t keyIdx) const
+  float MissingETAssociation_v1::trkpy(size_t keyIdx) const
   { return keyIdx != MissingETBase::Numerical::invalidIndex() && keyIdx < this->sizeTrk() ? this->trkpy()[keyIdx] : MissingETBase::Numerical::cpyError(); }
-  double MissingETAssociation_v1::trkpz(size_t keyIdx) const
+  float MissingETAssociation_v1::trkpz(size_t keyIdx) const
   { return keyIdx != MissingETBase::Numerical::invalidIndex() && keyIdx < this->sizeTrk() ? this->trkpz()[keyIdx] : MissingETBase::Numerical::cpzError(); }
-  double MissingETAssociation_v1::trke(size_t keyIdx) const
+  float MissingETAssociation_v1::trke(size_t keyIdx) const
   { return keyIdx != MissingETBase::Numerical::invalidIndex() && keyIdx < this->sizeTrk() ? this->trke()[keyIdx] : MissingETBase::Numerical::ceError(); }
-  double MissingETAssociation_v1::trksumpt(size_t keyIdx) const
+  float MissingETAssociation_v1::trksumpt(size_t keyIdx) const
   { return keyIdx != MissingETBase::Numerical::invalidIndex() && keyIdx < this->sizeTrk() ? this->trksumpt()[keyIdx] : MissingETBase::Numerical::sumptError(); }
   MissingETBase::Types::bitmask_t MissingETAssociation_v1::trkkey(size_t keyIdx) const
   { return keyIdx != MissingETBase::Numerical::invalidIndex() && keyIdx < this->sizeTrk() ? this->trkkey()[keyIdx] : MissingETBase::Numerical::invalidIndex(); }
@@ -501,12 +501,12 @@ namespace xAOD {
     return pVec;
   }
                                                                                    
-  std::vector<const IParticle*> MissingETAssociation_v1::objects(const std::vector<double>*& calpxPtr,const std::vector<double>*& calpyPtr,
-                                                                 const std::vector<double>*& calpzPtr,const std::vector<double>*& calePtr,
-                                                                 const std::vector<double>*& calsumptPtr,
-                                                                 const std::vector<double>*& trkpxPtr,const std::vector<double>*& trkpyPtr,
-                                                                 const std::vector<double>*& trkpzPtr,const std::vector<double>*& trkePtr,
-                                                                 const std::vector<double>*& trksumptPtr) const
+  std::vector<const IParticle*> MissingETAssociation_v1::objects(const std::vector<float>*& calpxPtr,const std::vector<float>*& calpyPtr,
+                                                                 const std::vector<float>*& calpzPtr,const std::vector<float>*& calePtr,
+                                                                 const std::vector<float>*& calsumptPtr,
+                                                                 const std::vector<float>*& trkpxPtr,const std::vector<float>*& trkpyPtr,
+                                                                 const std::vector<float>*& trkpzPtr,const std::vector<float>*& trkePtr,
+                                                                 const std::vector<float>*& trksumptPtr) const
   {
     calpxPtr = &(this->calpx()); calpyPtr = &(this->calpy()); calpzPtr = &(this->calpz()); calePtr = &(this->cale()); calsumptPtr = &(this->calsumpt());
     trkpxPtr = &(this->trkpx()); trkpyPtr = &(this->trkpy()); trkpzPtr = &(this->trkpz()); trkePtr = &(this->trke()); trksumptPtr = &(this->trksumpt());
diff --git a/Event/xAOD/xAODMissingET/Root/MissingET_v1.cxx b/Event/xAOD/xAODMissingET/Root/MissingET_v1.cxx
index dd3a22701fe48d7fd2b7e3414af8d1ff02fccf45..9b40d5bcacd68950e29dc1330e8f7e4dbbda367d 100644
--- a/Event/xAOD/xAODMissingET/Root/MissingET_v1.cxx
+++ b/Event/xAOD/xAODMissingET/Root/MissingET_v1.cxx
@@ -29,7 +29,7 @@ MissingET_v1::MissingET_v1( const std::string& name,
 
 }
 
-MissingET_v1::MissingET_v1( double mpx, double mpy, double sumet,
+MissingET_v1::MissingET_v1( float mpx, float mpy, float sumet,
                             const std::string& name,
                             MissingETBase::Types::bitmask_t src )
    : SG::AuxElement() {
@@ -70,23 +70,23 @@ MissingET_v1::~MissingET_v1()
 void MissingET_v1::add(const IParticle* particle)
 {
   // retrieve kinematics
-  EXTRACT_PX( double, px, (*particle) );
-  EXTRACT_PY( double, py, (*particle) );
+  EXTRACT_PX( float, px, (*particle) );
+  EXTRACT_PY( float, py, (*particle) );
   // add
   this->add(px,py,particle->pt());
 }
 
-void MissingET_v1::add(const IParticle* particle,double scale)
+void MissingET_v1::add(const IParticle* particle,float scale)
 {
   // retrieve kinematics
-  EXTRACT_SCALED_PX( double, px, (*particle), scale);
-  EXTRACT_SCALED_PY( double ,py, (*particle), scale);
-  double pt(particle->pt()*scale);
+  EXTRACT_SCALED_PX( float, px, (*particle), scale);
+  EXTRACT_SCALED_PY( float ,py, (*particle), scale);
+  float pt(particle->pt()*scale);
   // add
   this->add(px,py,pt);
 }
 
-void xAOD::MissingET_v1::add(double px,double py, double pt)
+void xAOD::MissingET_v1::add(float px,float py, float pt)
 { this->f_mpx() -= px; this->f_mpy() -= py; this->f_sumet() += pt; }
 
 MissingET_v1& MissingET_v1::operator=(const MissingET_v1& met)
@@ -101,8 +101,8 @@ MissingET_v1& MissingET_v1::operator=(const MissingET_v1& met)
 
 MissingET_v1& MissingET_v1::operator-=(const IParticle* particle)
 {
-  EXTRACT_PX( double, px, (*particle) );
-  EXTRACT_PY( double, py, (*particle) );
+  EXTRACT_PX( float, px, (*particle) );
+  EXTRACT_PY( float, py, (*particle) );
   this->add(-px,-py,-particle->pt());
   return *this;
 }
diff --git a/Event/xAOD/xAODMissingET/xAODMissingET/versions/MissingETAssociation_v1.h b/Event/xAOD/xAODMissingET/xAODMissingET/versions/MissingETAssociation_v1.h
index 0b064821c8f05748d4c44079c2c312199648e49c..65691c9afc91bd4eb1f1fe9965d2ef6a4c18f85d 100644
--- a/Event/xAOD/xAODMissingET/xAODMissingET/versions/MissingETAssociation_v1.h
+++ b/Event/xAOD/xAODMissingET/xAODMissingET/versions/MissingETAssociation_v1.h
@@ -36,38 +36,38 @@ namespace xAOD
     {
     public:
       ConstVec();                                 /*!< @brief Default constructor */
-      ConstVec(double cpx,double cpy,double cpz,double ce,double sumpt); /*!< @brief Constructor with parameters */
+      ConstVec(float cpx,float cpy,float cpz,float ce,float sumpt); /*!< @brief Constructor with parameters */
       ConstVec(const IParticle& ipar);            /*!< @brief Constructor from IParticle */
       // ConstVec(const ConstVec& cvec);             /*!< @brief Copy constructor */
       ~ConstVec();                                /*!< @brief Data class destructor */
       /*! @name Accessors */
       /*!@{*/
-      double cpx() const; /*!< @brief Returns @f$ c_{x} @f$ */
-      double cpy() const; /*!< @brief Returns @f$ c_{y} @f$ */
-      double cpz() const; /*!< @brief Returns @f$ c_{z} @f$ */
-      double cpt() const; /*!< @brief Returns @f$ c_{T} @f$ */
-      double ce() const;  /*!< @brief Returns @f$ c_{e} @f$ */
-      double sumpt() const;  /*!< @brief Returns sum of component pt */
+      float cpx() const; /*!< @brief Returns @f$ c_{x} @f$ */
+      float cpy() const; /*!< @brief Returns @f$ c_{y} @f$ */
+      float cpz() const; /*!< @brief Returns @f$ c_{z} @f$ */
+      float cpt() const; /*!< @brief Returns @f$ c_{T} @f$ */
+      float ce() const;  /*!< @brief Returns @f$ c_{e} @f$ */
+      float sumpt() const;  /*!< @brief Returns sum of component pt */
       /*!@}*/
       /*! @name Setters */
       /*!@{*/
-      void setCpx(double px); /*!< @brief Set @f$ c_{x} @f$ */
-      void setCpy(double py); /*!< @brief Set @f$ c_{y} @f$ */
-      void setCpz(double pz); /*!< @brief Set @f$ c_{z} @f$ */
-      void setCe (double e);  /*!< @brief Set @f$ c_{e} @f$ */
-      void setSumpt (double sumpt);  /*!< @brief Set sumpt */
+      void setCpx(float px); /*!< @brief Set @f$ c_{x} @f$ */
+      void setCpy(float py); /*!< @brief Set @f$ c_{y} @f$ */
+      void setCpz(float pz); /*!< @brief Set @f$ c_{z} @f$ */
+      void setCe (float e);  /*!< @brief Set @f$ c_{e} @f$ */
+      void setSumpt (float sumpt);  /*!< @brief Set sumpt */
       /*!@}*/
       /*! @name Modifiers for constituent vector */
       /*!@{*/
-      double& cpx(); /*!< @brief Returns reference to modifiable data word storing @f$ c_{x} @f$ */
-      double& cpy(); /*!< @brief Returns reference to modifiable data word storing @f$ c_{y} @f$ */
-      double& cpz(); /*!< @brief Returns reference to modifiable data word storing @f$ c_{z} @f$ */
-      double& ce();  /*!< @brief Returns reference to modifiable data word storing @f$ c_{e} @f$ */
-      double& sumpt(); /*!< @brief Returns reference to modifiable data word storing sum of component pt */
+      float& cpx(); /*!< @brief Returns reference to modifiable data word storing @f$ c_{x} @f$ */
+      float& cpy(); /*!< @brief Returns reference to modifiable data word storing @f$ c_{y} @f$ */
+      float& cpz(); /*!< @brief Returns reference to modifiable data word storing @f$ c_{z} @f$ */
+      float& ce();  /*!< @brief Returns reference to modifiable data word storing @f$ c_{e} @f$ */
+      float& sumpt(); /*!< @brief Returns reference to modifiable data word storing sum of component pt */
       ConstVec& operator+=(const ConstVec& cvec); /*!< @brief Add another vector */
       ConstVec& operator-=(const ConstVec& cvec); /*!< @brief Subtract another vector */
-      ConstVec& operator*=(double scale);         /*!< @brief Scale vector by multiplication */ 
-      ConstVec& operator/=(double scale);         /*!< @brief Scale vector by division */
+      ConstVec& operator*=(float scale);         /*!< @brief Scale vector by multiplication */ 
+      ConstVec& operator/=(float scale);         /*!< @brief Scale vector by division */
       /*!@}*/
       /*! @name Comparators */
       /*!@{*/
@@ -77,11 +77,11 @@ namespace xAOD
      private:
       /*! @name Cache for vectors */
       /*!@{*/
-      double m_cpx; /*!< @brief @f$ P_{x} @f$ */
-      double m_cpy; /*!< @brief @f$ P_{y} @f$ */
-      double m_cpz; /*!< @brief @f$ P_{y} @f$ */
-      double m_ce;  /*!< @brief @f$ E @f$ */
-      double m_sumpt;  /*!< @brief @f$ E @f$ */
+      float m_cpx; /*!< @brief @f$ P_{x} @f$ */
+      float m_cpy; /*!< @brief @f$ P_{y} @f$ */
+      float m_cpz; /*!< @brief @f$ P_{y} @f$ */
+      float m_ce;  /*!< @brief @f$ E @f$ */
+      float m_sumpt;  /*!< @brief @f$ E @f$ */
       /*!@}*/
     }; // MissingETComponent_v1::ConstVec
 
@@ -111,36 +111,36 @@ namespace xAOD
      *  @anchor contrib_convention
      */
     /*!@{*/
-    const std::vector<double>& calpx() const;                /*!< @brief Get the vector of @f$ P_{x} @f$  */
-    double calpx(const IParticle* pPart) const;              /*!< @brief Get the vector @f$ P_{x} @f$ for a given object referenced by pointer */
-    double calpx(size_t keyIdx) const;                       /*!< @brief Get the vector @f$ P_{x} @f$ for a given object referenced by index */
+    const std::vector<float>& calpx() const;                /*!< @brief Get the vector of @f$ P_{x} @f$  */
+    float calpx(const IParticle* pPart) const;              /*!< @brief Get the vector @f$ P_{x} @f$ for a given object referenced by pointer */
+    float calpx(size_t keyIdx) const;                       /*!< @brief Get the vector @f$ P_{x} @f$ for a given object referenced by index */
     //
-    bool setCalPx(const std::vector<double>& calpxvec);      /*!< @brief Set the vector of @f$ P_{x} @f$  */
-    bool setCalPx(size_t keyIdx,double calpx);               /*!< @brief Set calo constituent vector @f$ P_{x} @f$ for a given contributing object referenced by index */
+    bool setCalPx(const std::vector<float>& calpxvec);      /*!< @brief Set the vector of @f$ P_{x} @f$  */
+    bool setCalPx(size_t keyIdx,float calpx);               /*!< @brief Set calo constituent vector @f$ P_{x} @f$ for a given contributing object referenced by index */
     //
-    const std::vector<double>& calpy() const;                /*!< @brief Get the vector of @f$ P_{y} @f$  */
-    double calpy(size_t keyIdx) const;                       /*!< @brief Get the vector @f$ P_{y} @f$ for a given object referenced by index */
+    const std::vector<float>& calpy() const;                /*!< @brief Get the vector of @f$ P_{y} @f$  */
+    float calpy(size_t keyIdx) const;                       /*!< @brief Get the vector @f$ P_{y} @f$ for a given object referenced by index */
     //
-    bool setCalPy(const std::vector<double>& calpyvec);      /*!< @brief Set the vector of @f$ P_{y} @f$  */
-    bool setCalPy(size_t keyIdx,double calpy);               /*!< @brief Set calo constituent vector @f$ P_{y} @f$ for a given contributing object referenced by index */
+    bool setCalPy(const std::vector<float>& calpyvec);      /*!< @brief Set the vector of @f$ P_{y} @f$  */
+    bool setCalPy(size_t keyIdx,float calpy);               /*!< @brief Set calo constituent vector @f$ P_{y} @f$ for a given contributing object referenced by index */
     //
-    const std::vector<double>& calpz() const;                /*!< @brief Get the vector of @f$ P_{z} @f$  */
-    double calpz(size_t keyIdx) const;                       /*!< @brief Get the vector @f$ P_{z} @f$ for a given object referenced by index */
+    const std::vector<float>& calpz() const;                /*!< @brief Get the vector of @f$ P_{z} @f$  */
+    float calpz(size_t keyIdx) const;                       /*!< @brief Get the vector @f$ P_{z} @f$ for a given object referenced by index */
     //
-    bool setCalPz(const std::vector<double>& calpzvec);      /*!< @brief Set the vector of @f$ P_{z} @f$  */
-    bool setCalPz(size_t keyIdx,double calpz);               /*!< @brief Set calo constituent vector @f$ P_{z} @f$ for a given contributing object referenced by index */
+    bool setCalPz(const std::vector<float>& calpzvec);      /*!< @brief Set the vector of @f$ P_{z} @f$  */
+    bool setCalPz(size_t keyIdx,float calpz);               /*!< @brief Set calo constituent vector @f$ P_{z} @f$ for a given contributing object referenced by index */
     //
-    const std::vector<double>& cale() const;                 /*!< @brief Get the vector of @f$ E @f$  */
-    double cale(size_t keyIdx) const;                        /*!< @brief Get the vector @f$ E @f$ for a given object referenced by index */
+    const std::vector<float>& cale() const;                 /*!< @brief Get the vector of @f$ E @f$  */
+    float cale(size_t keyIdx) const;                        /*!< @brief Get the vector @f$ E @f$ for a given object referenced by index */
     //
-    bool setCalE(const std::vector<double>& calevec);        /*!< @brief Set the vector of @f$ E @f$  */
-    bool setCalE(size_t keyIdx,double cale);                 /*!< @brief Set calo constituent vector @f$ E @f$ for a given contributing object referenced by index */
+    bool setCalE(const std::vector<float>& calevec);        /*!< @brief Set the vector of @f$ E @f$  */
+    bool setCalE(size_t keyIdx,float cale);                 /*!< @brief Set calo constituent vector @f$ E @f$ for a given contributing object referenced by index */
     //
-    const std::vector<double>& calsumpt() const;             /*!< @brief Get the vector of sumpt  */
-    double calsumpt(size_t keyIdx) const;                    /*!< @brief Get the sumpt for a given object referenced by index */
+    const std::vector<float>& calsumpt() const;             /*!< @brief Get the vector of sumpt  */
+    float calsumpt(size_t keyIdx) const;                    /*!< @brief Get the sumpt for a given object referenced by index */
     //
-    bool setCalSumpt(const std::vector<double>& calsumptvec); /*!< @brief Set the vector of sumpt  */
-    bool setCalSumpt(size_t keyIdx,double calsumpt);          /*!< @brief Set calo constituent sumpt for a given contributing object referenced by index */
+    bool setCalSumpt(const std::vector<float>& calsumptvec); /*!< @brief Set the vector of sumpt  */
+    bool setCalSumpt(size_t keyIdx,float calsumpt);          /*!< @brief Set calo constituent sumpt for a given contributing object referenced by index */
     //
     const std::vector<MissingETBase::Types::bitmask_t>& calkey() const;   /*!< @brief Get the vector of cal keys */
     MissingETBase::Types::bitmask_t calkey(size_t keyIdx) const;          /*!< @brief Get the key for a given entry referenced by index */
@@ -149,42 +149,42 @@ namespace xAOD
     bool setCalKey(size_t keyIdx,MissingETBase::Types::bitmask_t calkey);          /*!< @brief Set calo key for a given contributing entry referenced by index */
     //
     bool setCalVec(size_t keyIdx,const ConstVec& cvec=ConstVec());           /*!< @brief Set the calo constituent vector of an object contribution referenced by index */
-    bool setCalVec(size_t keyIdx,double calpx,double calpy,double calpz,double ce,double sumpt);            /*!< @brief Set the calo constituent vectors of an object contribution referenced by index */
+    bool setCalVec(size_t keyIdx,float calpx,float calpy,float calpz,float ce,float sumpt);            /*!< @brief Set the calo constituent vectors of an object contribution referenced by index */
     //
-    bool addCalVec(MissingETBase::Types::bitmask_t key,double calpx,double calpy,double calpz,double cale,double sumpt);            /*!< @brief Add a key/vector pair for calo contributions */
+    bool addCalVec(MissingETBase::Types::bitmask_t key,float calpx,float calpy,float calpz,float cale,float sumpt);            /*!< @brief Add a key/vector pair for calo contributions */
     //
     bool clearCalVecs();           /*!< @brief Reset the calo constituent vectors and keys */
     //
     /*!@{*/
-    const std::vector<double>& trkpx() const;                /*!< @brief Get the vector of @f$ P_{x} @f$  */
-    double trkpx(size_t keyIdx) const;                       /*!< @brief Get the vector @f$ P_{x} @f$ for a given object referenced by index */
+    const std::vector<float>& trkpx() const;                /*!< @brief Get the vector of @f$ P_{x} @f$  */
+    float trkpx(size_t keyIdx) const;                       /*!< @brief Get the vector @f$ P_{x} @f$ for a given object referenced by index */
     //
-    bool setTrkPx(const std::vector<double>& trkpxvec);      /*!< @brief Set the vector of @f$ P_{x} @f$  */
-    bool setTrkPx(size_t keyIdx,double trkpx);               /*!< @brief Set track constituent vector @f$ P_{x} @f$ for a given contributing object referenced by index */
+    bool setTrkPx(const std::vector<float>& trkpxvec);      /*!< @brief Set the vector of @f$ P_{x} @f$  */
+    bool setTrkPx(size_t keyIdx,float trkpx);               /*!< @brief Set track constituent vector @f$ P_{x} @f$ for a given contributing object referenced by index */
     //
-    const std::vector<double>& trkpy() const;                /*!< @brief Get the vector of @f$ P_{y} @f$  */
-    double trkpy(size_t keyIdx) const;                       /*!< @brief Get the vector @f$ P_{y} @f$ for a given object referenced by index */
+    const std::vector<float>& trkpy() const;                /*!< @brief Get the vector of @f$ P_{y} @f$  */
+    float trkpy(size_t keyIdx) const;                       /*!< @brief Get the vector @f$ P_{y} @f$ for a given object referenced by index */
     //
-    bool setTrkPy(const std::vector<double>& trkpyvec);      /*!< @brief Set the vector of @f$ P_{y} @f$  */
-    bool setTrkPy(size_t keyIdx,double trkpy);               /*!< @brief Set track constituent vector @f$ P_{y} @f$ for a given contributing object referenced by index */
+    bool setTrkPy(const std::vector<float>& trkpyvec);      /*!< @brief Set the vector of @f$ P_{y} @f$  */
+    bool setTrkPy(size_t keyIdx,float trkpy);               /*!< @brief Set track constituent vector @f$ P_{y} @f$ for a given contributing object referenced by index */
     //
-    const std::vector<double>& trkpz() const;                /*!< @brief Get the vector of @f$ P_{z} @f$  */
-    double trkpz(size_t keyIdx) const;                       /*!< @brief Get the vector @f$ P_{z} @f$ for a given object referenced by index */
+    const std::vector<float>& trkpz() const;                /*!< @brief Get the vector of @f$ P_{z} @f$  */
+    float trkpz(size_t keyIdx) const;                       /*!< @brief Get the vector @f$ P_{z} @f$ for a given object referenced by index */
     //
-    bool setTrkPz(const std::vector<double>& trkpzvec);      /*!< @brief Set the vector of @f$ P_{z} @f$  */
-    bool setTrkPz(size_t keyIdx,double trkpz);               /*!< @brief Set track constituent vector @f$ P_{z} @f$ for a given contributing object referenced by index */
+    bool setTrkPz(const std::vector<float>& trkpzvec);      /*!< @brief Set the vector of @f$ P_{z} @f$  */
+    bool setTrkPz(size_t keyIdx,float trkpz);               /*!< @brief Set track constituent vector @f$ P_{z} @f$ for a given contributing object referenced by index */
     //
-    const std::vector<double>& trke() const;                 /*!< @brief Get the vector of @f$ E @f$  */
-    double trke(size_t keyIdx) const;                        /*!< @brief Get the vector @f$ E @f$ for a given object referenced by index */
+    const std::vector<float>& trke() const;                 /*!< @brief Get the vector of @f$ E @f$  */
+    float trke(size_t keyIdx) const;                        /*!< @brief Get the vector @f$ E @f$ for a given object referenced by index */
     //
-    bool setTrkE(const std::vector<double>& trkevec);        /*!< @brief Set the vector of @f$ E @f$  */
-    bool setTrkE(size_t keyIdx,double trke);                 /*!< @brief Set track constituent vector @f$ E @f$ for a given contributing object referenced by index */
+    bool setTrkE(const std::vector<float>& trkevec);        /*!< @brief Set the vector of @f$ E @f$  */
+    bool setTrkE(size_t keyIdx,float trke);                 /*!< @brief Set track constituent vector @f$ E @f$ for a given contributing object referenced by index */
     //
-    const std::vector<double>& trksumpt() const;             /*!< @brief Get the vector of @f$ E @f$  */
-    double trksumpt(size_t keyIdx) const;                    /*!< @brief Get the vector @f$ E @f$ for a given object referenced by index */
+    const std::vector<float>& trksumpt() const;             /*!< @brief Get the vector of @f$ E @f$  */
+    float trksumpt(size_t keyIdx) const;                    /*!< @brief Get the vector @f$ E @f$ for a given object referenced by index */
     //
-    bool setTrkSumpt(const std::vector<double>& trksumptvec); /*!< @brief Set the vector of @f$ E @f$  */
-    bool setTrkSumpt(size_t keyIdx,double trksumpt);          /*!< @brief Set track constituent vector @f$ E @f$ for a given contributing object referenced by index */
+    bool setTrkSumpt(const std::vector<float>& trksumptvec); /*!< @brief Set the vector of @f$ E @f$  */
+    bool setTrkSumpt(size_t keyIdx,float trksumpt);          /*!< @brief Set track constituent vector @f$ E @f$ for a given contributing object referenced by index */
     //
     const std::vector<MissingETBase::Types::bitmask_t>& trkkey() const;   /*!< @brief Get the vector of trk keys */
     MissingETBase::Types::bitmask_t trkkey(size_t keyIdx) const;          /*!< @brief Get the key for a given entry referenced by index */
@@ -193,26 +193,26 @@ namespace xAOD
     bool setTrkKey(size_t keyIdx,MissingETBase::Types::bitmask_t trkkey);          /*!< @brief Set trk key for a given contributing entry referenced by index */
     //
     bool setTrkVec(size_t keyIdx,const ConstVec& cvec=ConstVec());           /*!< @brief Set the track constituent vector of an object contribution referenced by index */
-    bool setTrkVec(size_t keyIdx,double trkpx,double trkpy,double trkpz,double trke,double sumpt);            /*!< @brief Set the track constituent vectors of an object contribution referenced by index */
+    bool setTrkVec(size_t keyIdx,float trkpx,float trkpy,float trkpz,float trke,float sumpt);            /*!< @brief Set the track constituent vectors of an object contribution referenced by index */
     //
-    bool addTrkVec(MissingETBase::Types::bitmask_t key,double trkpx,double trkpy,double trkpz,double ce,double sumpt);            /*!< @brief Add a key/vector pair for calo contributions */
+    bool addTrkVec(MissingETBase::Types::bitmask_t key,float trkpx,float trkpy,float trkpz,float ce,float sumpt);            /*!< @brief Add a key/vector pair for calo contributions */
     //
     bool clearTrkVecs();           /*!< @brief Reset the track constituent vectors and keys */
     //
     /*!@{*/
-    double jettrkpx() const;              /*!< @brief Get the vector @f$ P_{x} @f$ for a given object referenced by index */
-    double jettrkpy() const;              /*!< @brief Get the vector @f$ P_{y} @f$ for a given object referenced by pointer */
-    double jettrkpz() const;              /*!< @brief Get the vector @f$ P_{z} @f$ for a given object referenced by pointer */
-    double jettrke() const;               /*!< @brief Get the vector @f$ E @f$ for a given object referenced by index */
-    double jettrksumpt() const;           /*!< @brief Get the sumpt for a given object referenced by index */
-    //
-    void setJetTrkPx(double px);    /*!< @brief Set track constituent vector @f$ P_{x} @f$ for the reference jet */
-    void setJetTrkPy(double py);    /*!< @brief Set track constituent vector @f$ P_{y} @f$ for the reference jet */
-    void setJetTrkPz(double pz);    /*!< @brief Set track constituent vector @f$ P_{z} @f$ for the reference jet */
-    void setJetTrkE(double e);      /*!< @brief Set track constituent vector @f$ E @f$ for the reference jet */
-    void setJetTrkSumpt(double sumpt);      /*!< @brief Set track constituent vector @f$ E @f$ for the reference jet */
+    float jettrkpx() const;              /*!< @brief Get the vector @f$ P_{x} @f$ for a given object referenced by index */
+    float jettrkpy() const;              /*!< @brief Get the vector @f$ P_{y} @f$ for a given object referenced by pointer */
+    float jettrkpz() const;              /*!< @brief Get the vector @f$ P_{z} @f$ for a given object referenced by pointer */
+    float jettrke() const;               /*!< @brief Get the vector @f$ E @f$ for a given object referenced by index */
+    float jettrksumpt() const;           /*!< @brief Get the sumpt for a given object referenced by index */
+    //
+    void setJetTrkPx(float px);    /*!< @brief Set track constituent vector @f$ P_{x} @f$ for the reference jet */
+    void setJetTrkPy(float py);    /*!< @brief Set track constituent vector @f$ P_{y} @f$ for the reference jet */
+    void setJetTrkPz(float pz);    /*!< @brief Set track constituent vector @f$ P_{z} @f$ for the reference jet */
+    void setJetTrkE(float e);      /*!< @brief Set track constituent vector @f$ E @f$ for the reference jet */
+    void setJetTrkSumpt(float sumpt);      /*!< @brief Set track constituent vector @f$ E @f$ for the reference jet */
     void setJetTrkVec(const ConstVec& cvec=ConstVec());  /*!< @brief Set the track constituent vector for the reference jet */
-    void setJetTrkVec(double px,double py,double pz,double ce,double sumpt);    /*!< @brief Set the track constituent vector for the reference jet */
+    void setJetTrkVec(float px,float py,float pz,float ce,float sumpt);    /*!< @brief Set the track constituent vector for the reference jet */
     //
     const MissingETBase::Types::jetlink_t& jetLink() const;                     /*!< @brief Get the link to the reference jet */
     bool setJetLink(const MissingETBase::Types::jetlink_t& jetLnk);             /*!< @brief Set the link to the reference jet */
@@ -260,16 +260,16 @@ namespace xAOD
     size_t refJetIndex() const;                               /*!< @brief Access index of reference jet in its container */
     std::vector<const IParticle*> objects() const;            /*!< @brief Access contributing objects */
     std::vector<const IParticle*> objects(std::vector<ConstVec>& calVecs,std::vector<ConstVec>& trkVecs) const; /*!< @brief Access contributing objects and retrieve constituent vectors */
-    std::vector<const IParticle*> objects(const std::vector<double>*& calpxPtr,    
-					  const std::vector<double>*& calpyPtr,
-					  const std::vector<double>*& calpzPtr,
-					  const std::vector<double>*& calePtr,
-					  const std::vector<double>*& calsumptPtr,
-					  const std::vector<double>*& trkpxPtr,
-					  const std::vector<double>*& trkpyPtr,
-					  const std::vector<double>*& trkpzPtr,
-					  const std::vector<double>*& trkePtr,
-					  const std::vector<double>*& trksumptPtr) const; /*!< @brief Access contributing objects and retrieve constituent vectors */
+    std::vector<const IParticle*> objects(const std::vector<float>*& calpxPtr,    
+					  const std::vector<float>*& calpyPtr,
+					  const std::vector<float>*& calpzPtr,
+					  const std::vector<float>*& calePtr,
+					  const std::vector<float>*& calsumptPtr,
+					  const std::vector<float>*& trkpxPtr,
+					  const std::vector<float>*& trkpyPtr,
+					  const std::vector<float>*& trkpzPtr,
+					  const std::vector<float>*& trkePtr,
+					  const std::vector<float>*& trksumptPtr) const; /*!< @brief Access contributing objects and retrieve constituent vectors */
     ConstVec calVec(const IParticle* pPart) const;            /*!< @brief Get calo constituent vector for a given object */
     ConstVec calVec(size_t keyIdx) const;                     /*!< @brief Get calo constituent vector for a given entry (index) in the contributing object list */
     ConstVec trkVec(const IParticle* pPart) const;            /*!< @brief Get track constituent vector for a given object */
@@ -366,25 +366,25 @@ namespace xAOD
     MissingETBase::Types::objlink_vector_t&  f_objectLinks(); /*!< @brief Non-const link reference */
     MissingETBase::Types::jetlink_t&         f_jetLink();     /*!< @brief Non-const link reference  */
     //
-    std::vector<double>&                     f_calpx();
-    std::vector<double>&                     f_calpy();
-    std::vector<double>&                     f_calpz();
-    std::vector<double>&                     f_cale();
-    std::vector<double>&                     f_calsumpt();
+    std::vector<float>&                     f_calpx();
+    std::vector<float>&                     f_calpy();
+    std::vector<float>&                     f_calpz();
+    std::vector<float>&                     f_cale();
+    std::vector<float>&                     f_calsumpt();
     std::vector<MissingETBase::Types::bitmask_t>& f_calkey();
     //
-    std::vector<double>&                     f_trkpx();
-    std::vector<double>&                     f_trkpy();
-    std::vector<double>&                     f_trkpz();
-    std::vector<double>&                     f_trke();
-    std::vector<double>&                     f_trksumpt();
+    std::vector<float>&                     f_trkpx();
+    std::vector<float>&                     f_trkpy();
+    std::vector<float>&                     f_trkpz();
+    std::vector<float>&                     f_trke();
+    std::vector<float>&                     f_trksumpt();
     std::vector<MissingETBase::Types::bitmask_t>& f_trkkey();
     //
-    double&                                  f_jettrkpx();
-    double&                                  f_jettrkpy();
-    double&                                  f_jettrkpz();
-    double&                                  f_jettrke();
-    double&                                  f_jettrksumpt();
+    float&                                  f_jettrkpx();
+    float&                                  f_jettrkpy();
+    float&                                  f_jettrkpz();
+    float&                                  f_jettrke();
+    float&                                  f_jettrksumpt();
     //
     char&                                    f_isMisc();
     //
@@ -446,11 +446,11 @@ MissingETBase::Types::constvec_t operator+(const MissingETBase::Types::constvec_
 /*! @brief Subtract constituent vectors */
 MissingETBase::Types::constvec_t operator-(const MissingETBase::Types::constvec_t& v0,const MissingETBase::Types::constvec_t& v2);
 /*! @brief Scale constituent vector by multiplication */
-MissingETBase::Types::constvec_t operator*(const MissingETBase::Types::constvec_t& cvec,double scale);
+MissingETBase::Types::constvec_t operator*(const MissingETBase::Types::constvec_t& cvec,float scale);
 /*! @brief Scale constituent vector by multiplication */
-MissingETBase::Types::constvec_t operator*(double scale,const MissingETBase::Types::constvec_t& cvec);
+MissingETBase::Types::constvec_t operator*(float scale,const MissingETBase::Types::constvec_t& cvec);
 /*! @brief Scale constituent vector by division */
-MissingETBase::Types::constvec_t operator/(const MissingETBase::Types::constvec_t& cvec,double scale);
+MissingETBase::Types::constvec_t operator/(const MissingETBase::Types::constvec_t& cvec,float scale);
 /*!@}*/
 #include "xAODMissingET/versions/MissingETAssociation_v1.icc"
 #endif
diff --git a/Event/xAOD/xAODMissingET/xAODMissingET/versions/MissingETAssociation_v1.icc b/Event/xAOD/xAODMissingET/xAODMissingET/versions/MissingETAssociation_v1.icc
index 412ef66de23a8246e1a7c0d0a7ffb4658a4e7c5a..983d8490ff3b9d88efd792c864ec5c4dca9f0db1 100644
--- a/Event/xAOD/xAODMissingET/xAODMissingET/versions/MissingETAssociation_v1.icc
+++ b/Event/xAOD/xAODMissingET/xAODMissingET/versions/MissingETAssociation_v1.icc
@@ -17,7 +17,7 @@ inline xAOD::MissingETAssociation_v1::ConstVec::ConstVec()
   , m_sumpt(MissingETBase::Numerical::sumptDefault())
 { }
 
-inline xAOD::MissingETAssociation_v1::ConstVec::ConstVec(double cpx,double cpy,double cpz,double ce,double sumpt)
+inline xAOD::MissingETAssociation_v1::ConstVec::ConstVec(float cpx,float cpy,float cpz,float ce,float sumpt)
   : m_cpx(cpx), m_cpy(cpy), m_cpz(cpz), m_ce(ce), m_sumpt(sumpt)
 {}
 
@@ -36,23 +36,23 @@ inline bool xAOD::MissingETAssociation_v1::ConstVec::operator!=(const ConstVec&
 { return !this->operator==(cvec); }
 
 // ------------------------------------------------------------------ Accessors
-inline double  xAOD::MissingETAssociation_v1::ConstVec::cpx() const { return m_cpx; }
-inline double  xAOD::MissingETAssociation_v1::ConstVec::cpy() const { return m_cpy; }
-inline double  xAOD::MissingETAssociation_v1::ConstVec::cpz() const { return m_cpz; }
-inline double  xAOD::MissingETAssociation_v1::ConstVec::ce() const { return m_ce; }
-inline double  xAOD::MissingETAssociation_v1::ConstVec::sumpt() const { return m_sumpt; }
-inline double& xAOD::MissingETAssociation_v1::ConstVec::cpx() { return m_cpx; }
-inline double& xAOD::MissingETAssociation_v1::ConstVec::cpy() { return m_cpy; }
-inline double& xAOD::MissingETAssociation_v1::ConstVec::cpz() { return m_cpz; }
-inline double& xAOD::MissingETAssociation_v1::ConstVec::ce() { return m_ce; }
-inline double& xAOD::MissingETAssociation_v1::ConstVec::sumpt() { return m_sumpt; }
+inline float  xAOD::MissingETAssociation_v1::ConstVec::cpx() const { return m_cpx; }
+inline float  xAOD::MissingETAssociation_v1::ConstVec::cpy() const { return m_cpy; }
+inline float  xAOD::MissingETAssociation_v1::ConstVec::cpz() const { return m_cpz; }
+inline float  xAOD::MissingETAssociation_v1::ConstVec::ce() const { return m_ce; }
+inline float  xAOD::MissingETAssociation_v1::ConstVec::sumpt() const { return m_sumpt; }
+inline float& xAOD::MissingETAssociation_v1::ConstVec::cpx() { return m_cpx; }
+inline float& xAOD::MissingETAssociation_v1::ConstVec::cpy() { return m_cpy; }
+inline float& xAOD::MissingETAssociation_v1::ConstVec::cpz() { return m_cpz; }
+inline float& xAOD::MissingETAssociation_v1::ConstVec::ce() { return m_ce; }
+inline float& xAOD::MissingETAssociation_v1::ConstVec::sumpt() { return m_sumpt; }
 
 // -------------------------------------------------------------------- Setters 
-inline void xAOD::MissingETAssociation_v1::ConstVec::setCpx(double cpx) { this->cpx() = cpx; }
-inline void xAOD::MissingETAssociation_v1::ConstVec::setCpy(double cpy) { this->cpy() = cpy; }
-inline void xAOD::MissingETAssociation_v1::ConstVec::setCpz(double cpz) { this->cpz() = cpz; }
-inline void xAOD::MissingETAssociation_v1::ConstVec::setCe(double ce) { this->ce() = ce; }
-inline void xAOD::MissingETAssociation_v1::ConstVec::setSumpt(double sumpt) { this->sumpt() = sumpt; }
+inline void xAOD::MissingETAssociation_v1::ConstVec::setCpx(float cpx) { this->cpx() = cpx; }
+inline void xAOD::MissingETAssociation_v1::ConstVec::setCpy(float cpy) { this->cpy() = cpy; }
+inline void xAOD::MissingETAssociation_v1::ConstVec::setCpz(float cpz) { this->cpz() = cpz; }
+inline void xAOD::MissingETAssociation_v1::ConstVec::setCe(float ce) { this->ce() = ce; }
+inline void xAOD::MissingETAssociation_v1::ConstVec::setSumpt(float sumpt) { this->sumpt() = sumpt; }
 
 ////////////////////////////////////////////
 // Inlined Methods for MissingETAssociation //
@@ -100,73 +100,73 @@ inline MissingETBase::Types::objlink_vector_t& xAOD::MissingETAssociation_v1::f_
 
 // ---------------------------------------------------------- constituent vectors
 
-inline const std::vector<double>& xAOD::MissingETAssociation_v1::calpx() const
-{ static const SG::AuxElement::Accessor<std::vector<double> > acc("calpx"); return acc(*this); }
-inline double xAOD::MissingETAssociation_v1::calpx(const IParticle* pPart) const
+inline const std::vector<float>& xAOD::MissingETAssociation_v1::calpx() const
+{ static const SG::AuxElement::Accessor<std::vector<float> > acc("calpx"); return acc(*this); }
+inline float xAOD::MissingETAssociation_v1::calpx(const IParticle* pPart) const
 { return this->calpx(this->findIndex(pPart)); }
-inline const std::vector<double>& xAOD::MissingETAssociation_v1::calpy() const
-{ static const SG::AuxElement::Accessor<std::vector<double> > acc("calpy"); return acc(*this); }
-inline const std::vector<double>& xAOD::MissingETAssociation_v1::calpz() const
-{ static const SG::AuxElement::Accessor<std::vector<double> > acc("calpz"); return acc(*this); }
-inline const std::vector<double>& xAOD::MissingETAssociation_v1::cale() const
-{ static const SG::AuxElement::Accessor<std::vector<double> > acc("cale"); return acc(*this); }
-inline const std::vector<double>& xAOD::MissingETAssociation_v1::calsumpt() const
-{ static const SG::AuxElement::Accessor<std::vector<double> > acc("calsumpt"); return acc(*this); }
-
-inline std::vector<double>& xAOD::MissingETAssociation_v1::f_calpx() 
-{ static const SG::AuxElement::Accessor<std::vector<double> > acc("calpx"); return acc(*this); }
-inline std::vector<double>& xAOD::MissingETAssociation_v1::f_calpy() 
-{ static const SG::AuxElement::Accessor<std::vector<double> > acc("calpy"); return acc(*this); }
-inline std::vector<double>& xAOD::MissingETAssociation_v1::f_calpz() 
-{ static const SG::AuxElement::Accessor<std::vector<double> > acc("calpz"); return acc(*this); }
-inline std::vector<double>& xAOD::MissingETAssociation_v1::f_cale() 
-{ static const SG::AuxElement::Accessor<std::vector<double> > acc("cale"); return acc(*this); }
-inline std::vector<double>& xAOD::MissingETAssociation_v1::f_calsumpt() 
-{ static const SG::AuxElement::Accessor<std::vector<double> > acc("calsumpt"); return acc(*this); }
-
-inline const std::vector<double>& xAOD::MissingETAssociation_v1::trkpx() const
-{ static const SG::AuxElement::Accessor<std::vector<double> > acc("trkpx"); return acc(*this); }
-inline const std::vector<double>& xAOD::MissingETAssociation_v1::trkpy() const
-{ static const SG::AuxElement::Accessor<std::vector<double> > acc("trkpy"); return acc(*this); }
-inline const std::vector<double>& xAOD::MissingETAssociation_v1::trkpz() const
-{ static const SG::AuxElement::Accessor<std::vector<double> > acc("trkpz"); return acc(*this); }
-inline const std::vector<double>& xAOD::MissingETAssociation_v1::trke() const
-{ static const SG::AuxElement::Accessor<std::vector<double> > acc("trke"); return acc(*this); }
-inline const std::vector<double>& xAOD::MissingETAssociation_v1::trksumpt() const
-{ static const SG::AuxElement::Accessor<std::vector<double> > acc("trksumpt"); return acc(*this); }
-
-inline std::vector<double>& xAOD::MissingETAssociation_v1::f_trkpx() 
-{ static const SG::AuxElement::Accessor<std::vector<double> > acc("trkpx"); return acc(*this); }
-inline std::vector<double>& xAOD::MissingETAssociation_v1::f_trkpy() 
-{ static const SG::AuxElement::Accessor<std::vector<double> > acc("trkpy"); return acc(*this); }
-inline std::vector<double>& xAOD::MissingETAssociation_v1::f_trkpz() 
-{ static const SG::AuxElement::Accessor<std::vector<double> > acc("trkpz"); return acc(*this); }
-inline std::vector<double>& xAOD::MissingETAssociation_v1::f_trke() 
-{ static const SG::AuxElement::Accessor<std::vector<double> > acc("trke"); return acc(*this); }
-inline std::vector<double>& xAOD::MissingETAssociation_v1::f_trksumpt() 
-{ static const SG::AuxElement::Accessor<std::vector<double> > acc("trksumpt"); return acc(*this); }
-
-inline double xAOD::MissingETAssociation_v1::jettrkpx() const
-{ static const SG::AuxElement::Accessor<double > acc("jettrkpx"); return acc(*this); }
-inline double xAOD::MissingETAssociation_v1::jettrkpy() const
-{ static const SG::AuxElement::Accessor<double > acc("jettrkpy"); return acc(*this); }
-inline double xAOD::MissingETAssociation_v1::jettrkpz() const
-{ static const SG::AuxElement::Accessor<double > acc("jettrkpz"); return acc(*this); }
-inline double xAOD::MissingETAssociation_v1::jettrke() const
-{ static const SG::AuxElement::Accessor<double > acc("jettrke"); return acc(*this); }
-inline double xAOD::MissingETAssociation_v1::jettrksumpt() const
-{ static const SG::AuxElement::Accessor<double > acc("jettrksumpt"); return acc(*this); }
-
-inline double& xAOD::MissingETAssociation_v1::f_jettrkpx() 
-{ static const SG::AuxElement::Accessor<double > acc("jettrkpx"); return acc(*this); }
-inline double& xAOD::MissingETAssociation_v1::f_jettrkpy() 
-{ static const SG::AuxElement::Accessor<double > acc("jettrkpy"); return acc(*this); }
-inline double& xAOD::MissingETAssociation_v1::f_jettrkpz() 
-{ static const SG::AuxElement::Accessor<double > acc("jettrkpz"); return acc(*this); }
-inline double& xAOD::MissingETAssociation_v1::f_jettrke() 
-{ static const SG::AuxElement::Accessor<double > acc("jettrke"); return acc(*this); }
-inline double& xAOD::MissingETAssociation_v1::f_jettrksumpt() 
-{ static const SG::AuxElement::Accessor<double > acc("jettrksumpt"); return acc(*this); }
+inline const std::vector<float>& xAOD::MissingETAssociation_v1::calpy() const
+{ static const SG::AuxElement::Accessor<std::vector<float> > acc("calpy"); return acc(*this); }
+inline const std::vector<float>& xAOD::MissingETAssociation_v1::calpz() const
+{ static const SG::AuxElement::Accessor<std::vector<float> > acc("calpz"); return acc(*this); }
+inline const std::vector<float>& xAOD::MissingETAssociation_v1::cale() const
+{ static const SG::AuxElement::Accessor<std::vector<float> > acc("cale"); return acc(*this); }
+inline const std::vector<float>& xAOD::MissingETAssociation_v1::calsumpt() const
+{ static const SG::AuxElement::Accessor<std::vector<float> > acc("calsumpt"); return acc(*this); }
+
+inline std::vector<float>& xAOD::MissingETAssociation_v1::f_calpx() 
+{ static const SG::AuxElement::Accessor<std::vector<float> > acc("calpx"); return acc(*this); }
+inline std::vector<float>& xAOD::MissingETAssociation_v1::f_calpy() 
+{ static const SG::AuxElement::Accessor<std::vector<float> > acc("calpy"); return acc(*this); }
+inline std::vector<float>& xAOD::MissingETAssociation_v1::f_calpz() 
+{ static const SG::AuxElement::Accessor<std::vector<float> > acc("calpz"); return acc(*this); }
+inline std::vector<float>& xAOD::MissingETAssociation_v1::f_cale() 
+{ static const SG::AuxElement::Accessor<std::vector<float> > acc("cale"); return acc(*this); }
+inline std::vector<float>& xAOD::MissingETAssociation_v1::f_calsumpt() 
+{ static const SG::AuxElement::Accessor<std::vector<float> > acc("calsumpt"); return acc(*this); }
+
+inline const std::vector<float>& xAOD::MissingETAssociation_v1::trkpx() const
+{ static const SG::AuxElement::Accessor<std::vector<float> > acc("trkpx"); return acc(*this); }
+inline const std::vector<float>& xAOD::MissingETAssociation_v1::trkpy() const
+{ static const SG::AuxElement::Accessor<std::vector<float> > acc("trkpy"); return acc(*this); }
+inline const std::vector<float>& xAOD::MissingETAssociation_v1::trkpz() const
+{ static const SG::AuxElement::Accessor<std::vector<float> > acc("trkpz"); return acc(*this); }
+inline const std::vector<float>& xAOD::MissingETAssociation_v1::trke() const
+{ static const SG::AuxElement::Accessor<std::vector<float> > acc("trke"); return acc(*this); }
+inline const std::vector<float>& xAOD::MissingETAssociation_v1::trksumpt() const
+{ static const SG::AuxElement::Accessor<std::vector<float> > acc("trksumpt"); return acc(*this); }
+
+inline std::vector<float>& xAOD::MissingETAssociation_v1::f_trkpx() 
+{ static const SG::AuxElement::Accessor<std::vector<float> > acc("trkpx"); return acc(*this); }
+inline std::vector<float>& xAOD::MissingETAssociation_v1::f_trkpy() 
+{ static const SG::AuxElement::Accessor<std::vector<float> > acc("trkpy"); return acc(*this); }
+inline std::vector<float>& xAOD::MissingETAssociation_v1::f_trkpz() 
+{ static const SG::AuxElement::Accessor<std::vector<float> > acc("trkpz"); return acc(*this); }
+inline std::vector<float>& xAOD::MissingETAssociation_v1::f_trke() 
+{ static const SG::AuxElement::Accessor<std::vector<float> > acc("trke"); return acc(*this); }
+inline std::vector<float>& xAOD::MissingETAssociation_v1::f_trksumpt() 
+{ static const SG::AuxElement::Accessor<std::vector<float> > acc("trksumpt"); return acc(*this); }
+
+inline float xAOD::MissingETAssociation_v1::jettrkpx() const
+{ static const SG::AuxElement::Accessor<float > acc("jettrkpx"); return acc(*this); }
+inline float xAOD::MissingETAssociation_v1::jettrkpy() const
+{ static const SG::AuxElement::Accessor<float > acc("jettrkpy"); return acc(*this); }
+inline float xAOD::MissingETAssociation_v1::jettrkpz() const
+{ static const SG::AuxElement::Accessor<float > acc("jettrkpz"); return acc(*this); }
+inline float xAOD::MissingETAssociation_v1::jettrke() const
+{ static const SG::AuxElement::Accessor<float > acc("jettrke"); return acc(*this); }
+inline float xAOD::MissingETAssociation_v1::jettrksumpt() const
+{ static const SG::AuxElement::Accessor<float > acc("jettrksumpt"); return acc(*this); }
+
+inline float& xAOD::MissingETAssociation_v1::f_jettrkpx() 
+{ static const SG::AuxElement::Accessor<float > acc("jettrkpx"); return acc(*this); }
+inline float& xAOD::MissingETAssociation_v1::f_jettrkpy() 
+{ static const SG::AuxElement::Accessor<float > acc("jettrkpy"); return acc(*this); }
+inline float& xAOD::MissingETAssociation_v1::f_jettrkpz() 
+{ static const SG::AuxElement::Accessor<float > acc("jettrkpz"); return acc(*this); }
+inline float& xAOD::MissingETAssociation_v1::f_jettrke() 
+{ static const SG::AuxElement::Accessor<float > acc("jettrke"); return acc(*this); }
+inline float& xAOD::MissingETAssociation_v1::f_jettrksumpt() 
+{ static const SG::AuxElement::Accessor<float > acc("jettrksumpt"); return acc(*this); }
 
 // --------------------------------------------------------- misc association flag
 inline bool xAOD::MissingETAssociation_v1::isMisc() const 
@@ -282,13 +282,13 @@ inline MissingETBase::Types::constvec_t operator+(const MissingETBase::Types::co
 inline MissingETBase::Types::constvec_t operator-(const MissingETBase::Types::constvec_t& v0,const MissingETBase::Types::constvec_t& v1)
 { MissingETBase::Types::constvec_t v(v0); v -= v1; return v; }
 
-inline MissingETBase::Types::constvec_t operator*(const MissingETBase::Types::constvec_t& cvec,double scale)
+inline MissingETBase::Types::constvec_t operator*(const MissingETBase::Types::constvec_t& cvec,float scale)
 { MissingETBase::Types::constvec_t v(cvec); v *= scale; return v; }
 
-inline MissingETBase::Types::constvec_t operator*(double scale,const MissingETBase::Types::constvec_t& cvec)
+inline MissingETBase::Types::constvec_t operator*(float scale,const MissingETBase::Types::constvec_t& cvec)
 { MissingETBase::Types::constvec_t v(cvec); v *= scale; return v; }
 
-inline MissingETBase::Types::constvec_t operator/(const MissingETBase::Types::constvec_t& cvec,double scale)
+inline MissingETBase::Types::constvec_t operator/(const MissingETBase::Types::constvec_t& cvec,float scale)
 { MissingETBase::Types::constvec_t v(cvec); v /= scale; return v; } 
 
 ///////////////////////////////////////////////////////////////
diff --git a/Event/xAOD/xAODMissingET/xAODMissingET/versions/MissingETAuxAssociationMap_v1.h b/Event/xAOD/xAODMissingET/xAODMissingET/versions/MissingETAuxAssociationMap_v1.h
index 5f0f495bb6ee9002a80ad0880b04c6496503f375..05075180d31c138f899cf15a134de70ce7df4985 100644
--- a/Event/xAOD/xAODMissingET/xAODMissingET/versions/MissingETAuxAssociationMap_v1.h
+++ b/Event/xAOD/xAODMissingET/xAODMissingET/versions/MissingETAuxAssociationMap_v1.h
@@ -37,23 +37,23 @@ namespace xAOD
     /*!@{*/
     std::vector<MissingETBase::Types::jetlink_t> jetLink;            ///< @brief Link to MissingET_v1 object
     std::vector<MissingETBase::Types::objlink_vector_t> objectLinks; ///< @brief Link to object contributing to the MissingET_v1 object
-    std::vector<std::vector<double> > calpx;                         ///< @brief Object constituent calo 4-vector @f$ P_{x} @f$ for overlap removal
-    std::vector<std::vector<double> > calpy;                         ///< @brief Object constituent calo 4-vector @f$ P_{y} @f$ for overlap removal
-    std::vector<std::vector<double> > calpz;                         ///< @brief Object constituent calo 4-vector @f$ P_{z} @f$ for overlap removal
-    std::vector<std::vector<double> > cale;                          ///< @brief Object constituent calo 4-vector @f$ E @f$ for overlap removal
-    std::vector<std::vector<double> > calsumpt;                      ///< @brief Object constituent calo 4-vector sumpt for overlap removal
+    std::vector<std::vector<float> > calpx;                          ///< @brief Object constituent calo 4-vector @f$ P_{x} @f$ for overlap removal
+    std::vector<std::vector<float> > calpy;                          ///< @brief Object constituent calo 4-vector @f$ P_{y} @f$ for overlap removal
+    std::vector<std::vector<float> > calpz;                          ///< @brief Object constituent calo 4-vector @f$ P_{z} @f$ for overlap removal
+    std::vector<std::vector<float> > cale;                           ///< @brief Object constituent calo 4-vector @f$ E @f$ for overlap removal
+    std::vector<std::vector<float> > calsumpt;                       ///< @brief Object constituent calo 4-vector sumpt for overlap removal
     //
-    std::vector<std::vector<double> > trkpx;                         ///< @brief Object constituent track 4-vector @f$ P_{x} @f$ for overlap removal
-    std::vector<std::vector<double> > trkpy;                         ///< @brief Object constituent track 4-vector @f$ P_{y} @f$ for overlap removal
-    std::vector<std::vector<double> > trkpz;                         ///< @brief Object constituent track 4-vector @f$ P_{z} @f$ for overlap removal
-    std::vector<std::vector<double> > trke;                          ///< @brief Object constituent track 4-vector @f$ E @f$ for overlap removal
-    std::vector<std::vector<double> > trksumpt;                      ///< @brief Object constituent track 4-vector sumpt for overlap removal
+    std::vector<std::vector<float> > trkpx;                          ///< @brief Object constituent track 4-vector @f$ P_{x} @f$ for overlap removal
+    std::vector<std::vector<float> > trkpy;                          ///< @brief Object constituent track 4-vector @f$ P_{y} @f$ for overlap removal
+    std::vector<std::vector<float> > trkpz;                          ///< @brief Object constituent track 4-vector @f$ P_{z} @f$ for overlap removal
+    std::vector<std::vector<float> > trke;                           ///< @brief Object constituent track 4-vector @f$ E @f$ for overlap removal
+    std::vector<std::vector<float> > trksumpt;                       ///< @brief Object constituent track 4-vector sumpt for overlap removal
     //
-    std::vector<double> jettrkpx;                                    ///< @brief Jet track 4-vector @f$ P_{x} @f$ for overlap removal
-    std::vector<double> jettrkpy;                                    ///< @brief Jet track 4-vector @f$ P_{y} @f$ for overlap removal
-    std::vector<double> jettrkpz;                                    ///< @brief Jet track 4-vector @f$ P_{z} @f$ for overlap removal
-    std::vector<double> jettrke;                                     ///< @brief Jet track 4-vector @f$ E @f$ for overlap removal
-    std::vector<double> jettrksumpt;                                 ///< @brief Jet track 4-vector sumpt for overlap removal
+    std::vector<float> jettrkpx;                                     ///< @brief Jet track 4-vector @f$ P_{x} @f$ for overlap removal
+    std::vector<float> jettrkpy;                                     ///< @brief Jet track 4-vector @f$ P_{y} @f$ for overlap removal
+    std::vector<float> jettrkpz;                                     ///< @brief Jet track 4-vector @f$ P_{z} @f$ for overlap removal
+    std::vector<float> jettrke;                                      ///< @brief Jet track 4-vector @f$ E @f$ for overlap removal
+    std::vector<float> jettrksumpt;                                  ///< @brief Jet track 4-vector sumpt for overlap removal
     //
     std::vector<std::vector<std::vector<size_t> > > overlapIndices;  ///< @brief Indices of objects that overlap one another in an association
     std::vector<std::vector<std::vector<unsigned char> > > overlapTypes;  ///< @brief Types of overlap between matched objects
diff --git a/Event/xAOD/xAODMissingET/xAODMissingET/versions/MissingETAuxAssociationMap_v2.h b/Event/xAOD/xAODMissingET/xAODMissingET/versions/MissingETAuxAssociationMap_v2.h
index a4c080e063a937ba1a77afa9fa02258bca56de09..9fa739cc753d59ab434e399f0d308e520a009d26 100644
--- a/Event/xAOD/xAODMissingET/xAODMissingET/versions/MissingETAuxAssociationMap_v2.h
+++ b/Event/xAOD/xAODMissingET/xAODMissingET/versions/MissingETAuxAssociationMap_v2.h
@@ -37,25 +37,25 @@ namespace xAOD
     /*!@{*/
     std::vector<MissingETBase::Types::jetlink_t> jetLink;            ///< @brief Link to MissingET_v2 object
     std::vector<MissingETBase::Types::objlink_vector_t> objectLinks; ///< @brief Link to object contributing to the MissingET_v2 object
-    std::vector<std::vector<double> > calpx;                         ///< @brief Object constituent calo 4-vector @f$ P_{x} @f$ for overlap removal
-    std::vector<std::vector<double> > calpy;                         ///< @brief Object constituent calo 4-vector @f$ P_{y} @f$ for overlap removal
-    std::vector<std::vector<double> > calpz;                         ///< @brief Object constituent calo 4-vector @f$ P_{z} @f$ for overlap removal
-    std::vector<std::vector<double> > cale;                          ///< @brief Object constituent calo 4-vector @f$ E @f$ for overlap removal
-    std::vector<std::vector<double> > calsumpt;                      ///< @brief Object constituent calo 4-vector sumpt for overlap removal
+    std::vector<std::vector<float> > calpx;                          ///< @brief Object constituent calo 4-vector @f$ P_{x} @f$ for overlap removal
+    std::vector<std::vector<float> > calpy;                          ///< @brief Object constituent calo 4-vector @f$ P_{y} @f$ for overlap removal
+    std::vector<std::vector<float> > calpz;                          ///< @brief Object constituent calo 4-vector @f$ P_{z} @f$ for overlap removal
+    std::vector<std::vector<float> > cale;                           ///< @brief Object constituent calo 4-vector @f$ E @f$ for overlap removal
+    std::vector<std::vector<float> > calsumpt;                       ///< @brief Object constituent calo 4-vector sumpt for overlap removal
     std::vector<std::vector<MissingETBase::Types::bitmask_t> > calkey;                        ///< @brief Object constituent calo region key for overlap removal
     //
-    std::vector<std::vector<double> > trkpx;                         ///< @brief Object constituent track 4-vector @f$ P_{x} @f$ for overlap removal
-    std::vector<std::vector<double> > trkpy;                         ///< @brief Object constituent track 4-vector @f$ P_{y} @f$ for overlap removal
-    std::vector<std::vector<double> > trkpz;                         ///< @brief Object constituent track 4-vector @f$ P_{z} @f$ for overlap removal
-    std::vector<std::vector<double> > trke;                          ///< @brief Object constituent track 4-vector @f$ E @f$ for overlap removal
-    std::vector<std::vector<double> > trksumpt;                      ///< @brief Object constituent track 4-vector sumpt for overlap removal
+    std::vector<std::vector<float> > trkpx;                          ///< @brief Object constituent track 4-vector @f$ P_{x} @f$ for overlap removal
+    std::vector<std::vector<float> > trkpy;                          ///< @brief Object constituent track 4-vector @f$ P_{y} @f$ for overlap removal
+    std::vector<std::vector<float> > trkpz;                          ///< @brief Object constituent track 4-vector @f$ P_{z} @f$ for overlap removal
+    std::vector<std::vector<float> > trke;                           ///< @brief Object constituent track 4-vector @f$ E @f$ for overlap removal
+    std::vector<std::vector<float> > trksumpt;                       ///< @brief Object constituent track 4-vector sumpt for overlap removal
     std::vector<std::vector<MissingETBase::Types::bitmask_t> > trkkey;                        ///< @brief Object constituent track region key for overlap removal
     //
-    std::vector<double> jettrkpx;                                    ///< @brief Jet track 4-vector @f$ P_{x} @f$ for overlap removal
-    std::vector<double> jettrkpy;                                    ///< @brief Jet track 4-vector @f$ P_{y} @f$ for overlap removal
-    std::vector<double> jettrkpz;                                    ///< @brief Jet track 4-vector @f$ P_{z} @f$ for overlap removal
-    std::vector<double> jettrke;                                     ///< @brief Jet track 4-vector @f$ E @f$ for overlap removal
-    std::vector<double> jettrksumpt;                                 ///< @brief Jet track 4-vector sumpt for overlap removal
+    std::vector<float> jettrkpx;                                     ///< @brief Jet track 4-vector @f$ P_{x} @f$ for overlap removal
+    std::vector<float> jettrkpy;                                     ///< @brief Jet track 4-vector @f$ P_{y} @f$ for overlap removal
+    std::vector<float> jettrkpz;                                     ///< @brief Jet track 4-vector @f$ P_{z} @f$ for overlap removal
+    std::vector<float> jettrke;                                      ///< @brief Jet track 4-vector @f$ E @f$ for overlap removal
+    std::vector<float> jettrksumpt;                                  ///< @brief Jet track 4-vector sumpt for overlap removal
     //
     std::vector<std::vector<std::vector<size_t> > > overlapIndices;  ///< @brief Indices of objects that overlap one another in an association
     std::vector<std::vector<std::vector<unsigned char> > > overlapTypes;  ///< @brief Types of overlap between matched objects
diff --git a/Event/xAOD/xAODMissingET/xAODMissingET/versions/MissingETAuxContainer_v1.h b/Event/xAOD/xAODMissingET/xAODMissingET/versions/MissingETAuxContainer_v1.h
index acd87ef2480b83a3f5ec400fa00ebd88045e7dd4..4651e600cf8b6d57e8fbaa53e5aefc346198a625 100644
--- a/Event/xAOD/xAODMissingET/xAODMissingET/versions/MissingETAuxContainer_v1.h
+++ b/Event/xAOD/xAODMissingET/xAODMissingET/versions/MissingETAuxContainer_v1.h
@@ -36,9 +36,9 @@ namespace xAOD
      *         exactly the same spelling as the variable names.
      */
     /*!@{*/
-    std::vector<double>                          mpx;    ///< @brief @f$ p_{x,{\rm miss}} = -\sum p_{x} @f$
-    std::vector<double>                          mpy;    ///< @brief @f$ p_{y,{\rm miss}} = -\sum p_{x} @f$
-    std::vector<double>                          sumet;  ///< @brief @f$ \sigma E_{\rm T} = \sum p_{\rm T} @f$
+    std::vector<float>                           mpx;    ///< @brief @f$ p_{x,{\rm miss}} = -\sum p_{x} @f$
+    std::vector<float>                           mpy;    ///< @brief @f$ p_{y,{\rm miss}} = -\sum p_{x} @f$
+    std::vector<float>                           sumet;  ///< @brief @f$ \sigma E_{\rm T} = \sum p_{\rm T} @f$
     std::vector<std::string>                     name;   ///< @brief Name of MET contribution
     std::vector<MissingETBase::Types::bitmask_t> source; ///< @brief Source of MET contribution
     /*!@}*/
diff --git a/Event/xAOD/xAODMissingET/xAODMissingET/versions/MissingET_v1.h b/Event/xAOD/xAODMissingET/xAODMissingET/versions/MissingET_v1.h
index 854abb445508edd76135c5e14cd719002f1f0470..58e83cf9d96fdb3fffff9479f7d7689d8957cc94 100644
--- a/Event/xAOD/xAODMissingET/xAODMissingET/versions/MissingET_v1.h
+++ b/Event/xAOD/xAODMissingET/xAODMissingET/versions/MissingET_v1.h
@@ -31,7 +31,7 @@ namespace xAOD
 		 MissingETBase::Types::bitmask_t src=MissingETBase::Source::unknown()); /*!< @brief Constructor with identifiers */
     MissingET_v1(const IParticle* particle, const std::string& name="MissingET",
 		 MissingETBase::Types::bitmask_t src=MissingETBase::Source::unknown()); /*!< @brief Constructor with particle */
-    MissingET_v1(double mpx,double mpy,double sumet,const std::string& name="MissingET",
+    MissingET_v1(float mpx,float mpy,float sumet,const std::string& name="MissingET",
 		 MissingETBase::Types::bitmask_t src=MissingETBase::Source::unknown()); /*!< @brief Constructor with initial kinematics */
     MissingET_v1(const MissingET_v1& met);                                              /*!< @brief Copy constructor */
     ~MissingET_v1();                                                                    /*!< @brief Implementation class destructor */
@@ -39,18 +39,18 @@ namespace xAOD
 
     /*! @name Kinematic accessors */
     /*!@{*/
-    double mpx()    const; /*!< @brief Returns @f$ p_{x}^{\rm miss} @f$ */
-    double mpy()    const; /*!< @brief Returns @f$ p_{y}^{\rm miss} @f$ */
-    double met()   const; /*!< @brief Returns @f$ E_{\rm T}^{\rm miss} = \sqrt{(p_{x}^{\rm miss})^{2} + (p_{y}^{\rm miss})^{2}} @f$ */
-    double phi()   const; /*!< @brief Returns @f$ \phi(E_{\rm T}^{\rm miss}) @f$ */
-    double sumet() const; /*!< @brief Returns */
+    float mpx()    const; /*!< @brief Returns @f$ p_{x}^{\rm miss} @f$ */
+    float mpy()    const; /*!< @brief Returns @f$ p_{y}^{\rm miss} @f$ */
+    float met()   const; /*!< @brief Returns @f$ E_{\rm T}^{\rm miss} = \sqrt{(p_{x}^{\rm miss})^{2} + (p_{y}^{\rm miss})^{2}} @f$ */
+    float phi()   const; /*!< @brief Returns @f$ \phi(E_{\rm T}^{\rm miss}) @f$ */
+    float sumet() const; /*!< @brief Returns */
     /*!@}*/
 
     /*! @name Kinematic setters */
     /*@{*/
-    void setMpx(double value);    /*!< @brief Set the @f$ p_{x}^{\rm miss} @f$ component */
-    void setMpy(double value);    /*!< @brief Set the @f$ p_{y}^{\rm miss} @f$ component */
-    void setSumet(double value); /*!< @brief Set @f$ \Sigma E_{\rm T} @f$ */
+    void setMpx(float value);    /*!< @brief Set the @f$ p_{x}^{\rm miss} @f$ component */
+    void setMpy(float value);    /*!< @brief Set the @f$ p_{y}^{\rm miss} @f$ component */
+    void setSumet(float value); /*!< @brief Set @f$ \Sigma E_{\rm T} @f$ */
     /*@}*/
 
     /*! @brief Identifier getters */
@@ -70,8 +70,8 @@ namespace xAOD
     /*! @name Manipulating the kinematic data */
     /*!@{*/
     void add(const IParticle* particle);                 /*!< @brief Add particle kinematics to MET */
-    void add(const IParticle* particle,double scale);    /*!< @brief Add scaled particle kinematics to MET */
-    void add(double px,double py,double pt);             /*!< @brief Add kinematic variables to MET */
+    void add(const IParticle* particle,float scale);    /*!< @brief Add scaled particle kinematics to MET */
+    void add(float px,float py,float pt);             /*!< @brief Add kinematic variables to MET */
     MissingET_v1& operator=(const MissingET_v1& met); /*!< @brief Add particle kinematics to MET */
     MissingET_v1& operator+=(const IParticle* particle); /*!< @brief Add particle kinematics to MET */
     MissingET_v1& operator-=(const IParticle* part);     /*!< @brief Remove particle kinematics to MET */
@@ -81,8 +81,8 @@ namespace xAOD
     /*!@{*/
     MissingET_v1& operator+=(const MissingET_v1& met); /*!< @brief Add another MET object */
     MissingET_v1& operator-=(const MissingET_v1& met); /*!< @brief Subtract another MET object */
-    MissingET_v1& operator*=(double scale);            /*!< @brief Applying a scale factor */
-    MissingET_v1& operator/=(double scale);            /*!< @brief Dividing by a scale factor */
+    MissingET_v1& operator*=(float scale);            /*!< @brief Applying a scale factor */
+    MissingET_v1& operator/=(float scale);            /*!< @brief Dividing by a scale factor */
     /*!@}*/
 
     /*! @name Stored data management */
@@ -104,9 +104,9 @@ namespace xAOD
 
     /*! @name Internal data modification support */
     /*!@{*/
-    double&                           f_mpx();     /*!< @brief Returns reference to @f$ p_{x} @f$ store */
-    double&                           f_mpy();     /*!< @brief Returns reference to @f$ p_{y} @f$ store */
-    double&                           f_sumet();  /*!< @brief Returns reference to @f$ \Sigma E_{\rm T} @f$ store */
+    float&                           f_mpx();     /*!< @brief Returns reference to @f$ p_{x} @f$ store */
+    float&                           f_mpy();     /*!< @brief Returns reference to @f$ p_{y} @f$ store */
+    float&                           f_sumet();  /*!< @brief Returns reference to @f$ \Sigma E_{\rm T} @f$ store */
     std::string&                      f_name();   /*!< @brief Returns reference to MET object name store */
     const std::string&                f_nameConst(); /*!< @brief Returns const reference to the MET object name store*/
     MissingETBase::Types::bitmask_t&  f_source(); /*!< @brief Returns reference to MET object source store */
@@ -123,9 +123,9 @@ namespace xAOD
 /*!@{*/
 xAOD::MissingET_v1 operator+(const xAOD::MissingET_v1& met0,const xAOD::MissingET_v1& met1); /*!< @brief Create new MET object from sum of two MissingET_v1 objects */
 xAOD::MissingET_v1 operator-(const xAOD::MissingET_v1& met0,const xAOD::MissingET_v1& met1); /*!< @brief Create new MET object from difference between two MissingET_v1 objects */
-xAOD::MissingET_v1 operator*(const xAOD::MissingET_v1& met,double scale);                    /*!< @brief Create new MET object from source with scaled (weighted) kinematics */
-xAOD::MissingET_v1 operator*(double scale,const xAOD::MissingET_v1& met);                    /*!< @brief Create new MET object from source with scaled (weighted) kinematics */
-xAOD::MissingET_v1 operator/(const xAOD::MissingET_v1& met,double scale);                    /*!< @brief Create new MET object from source with scaled kinematics */
+xAOD::MissingET_v1 operator*(const xAOD::MissingET_v1& met,float scale);                    /*!< @brief Create new MET object from source with scaled (weighted) kinematics */
+xAOD::MissingET_v1 operator*(float scale,const xAOD::MissingET_v1& met);                    /*!< @brief Create new MET object from source with scaled (weighted) kinematics */
+xAOD::MissingET_v1 operator/(const xAOD::MissingET_v1& met,float scale);                    /*!< @brief Create new MET object from source with scaled kinematics */
 /*!@}*/
 
 #include "xAODMissingET/versions/MissingET_v1.icc"
diff --git a/Event/xAOD/xAODMissingET/xAODMissingET/versions/MissingET_v1.icc b/Event/xAOD/xAODMissingET/xAODMissingET/versions/MissingET_v1.icc
index f40b1a4e35b4b51c08f70163791be92c708993cf..b7edcdda604231a6e3fb2174380a3d6b9d0d05ba 100644
--- a/Event/xAOD/xAODMissingET/xAODMissingET/versions/MissingET_v1.icc
+++ b/Event/xAOD/xAODMissingET/xAODMissingET/versions/MissingET_v1.icc
@@ -9,11 +9,11 @@
 // MissingET_v1 Inline Functions: Getters //
 ////////////////////////////////////////////
 
-inline double xAOD::MissingET_v1::met()   const { return sqrt(this->mpx()*this->mpx()+this->mpy()*this->mpy()); }
-inline double xAOD::MissingET_v1::phi()   const { return atan2(this->mpy(),this->mpx()); }
-inline double xAOD::MissingET_v1::mpx()   const { static const SG::AuxElement::Accessor<double> acc("mpx"); return acc(*this); }
-inline double xAOD::MissingET_v1::mpy()   const { static const SG::AuxElement::Accessor<double> acc("mpy"); return acc(*this); }
-inline double xAOD::MissingET_v1::sumet() const { static const SG::AuxElement::Accessor<double> acc("sumet"); return acc(*this); }
+inline float xAOD::MissingET_v1::met()   const { return sqrt(this->mpx()*this->mpx()+this->mpy()*this->mpy()); }
+inline float xAOD::MissingET_v1::phi()   const { return atan2(this->mpy(),this->mpx()); }
+inline float xAOD::MissingET_v1::mpx()   const { static const SG::AuxElement::Accessor<float> acc("mpx"); return acc(*this); }
+inline float xAOD::MissingET_v1::mpy()   const { static const SG::AuxElement::Accessor<float> acc("mpy"); return acc(*this); }
+inline float xAOD::MissingET_v1::sumet() const { static const SG::AuxElement::Accessor<float> acc("sumet"); return acc(*this); }
 
 inline const std::string&              xAOD::MissingET_v1::name()     const { static const SG::AuxElement::Accessor<std::string> acc("name"); return acc(*this); }
 inline std::size_t xAOD::MissingET_v1::nameHash() const { return m_nameHash; }
@@ -23,17 +23,17 @@ inline MissingETBase::Types::bitmask_t xAOD::MissingET_v1::source()   const { st
 // MissingET_v1 Inline Functions: Setters //
 ////////////////////////////////////////////
 
-inline double& xAOD::MissingET_v1::f_mpx()   { static const SG::AuxElement::Accessor<double> acc("mpx"); return acc(*this); }
-inline double& xAOD::MissingET_v1::f_mpy()   { static const SG::AuxElement::Accessor<double> acc("mpy"); return acc(*this); }
-inline double& xAOD::MissingET_v1::f_sumet() { static const SG::AuxElement::Accessor<double> acc("sumet"); return acc(*this); }
+inline float& xAOD::MissingET_v1::f_mpx()   { static const SG::AuxElement::Accessor<float> acc("mpx"); return acc(*this); }
+inline float& xAOD::MissingET_v1::f_mpy()   { static const SG::AuxElement::Accessor<float> acc("mpy"); return acc(*this); }
+inline float& xAOD::MissingET_v1::f_sumet() { static const SG::AuxElement::Accessor<float> acc("sumet"); return acc(*this); }
 
 inline std::string& xAOD::MissingET_v1::f_name()                       { static const SG::AuxElement::Accessor<std::string> acc("name"); return acc(*this); }
 inline const std::string& xAOD::MissingET_v1::f_nameConst()            { static const SG::AuxElement::ConstAccessor<std::string> acc("name"); return acc(*this); }
 inline MissingETBase::Types::bitmask_t& xAOD::MissingET_v1::f_source() { static const SG::AuxElement::Accessor<MissingETBase::Types::bitmask_t> acc("source"); return acc(*this); }
 
-inline void xAOD::MissingET_v1::setMpx(double mpx)     { this->f_mpx() = mpx; }
-inline void xAOD::MissingET_v1::setMpy(double mpy)     { this->f_mpy() = mpy; }
-inline void xAOD::MissingET_v1::setSumet(double sumet) { this->f_sumet() = sumet; }
+inline void xAOD::MissingET_v1::setMpx(float mpx)     { this->f_mpx() = mpx; }
+inline void xAOD::MissingET_v1::setMpy(float mpy)     { this->f_mpy() = mpy; }
+inline void xAOD::MissingET_v1::setSumet(float sumet) { this->f_sumet() = sumet; }
 
 inline void xAOD::MissingET_v1::setName(const std::string& name) {
   this->f_name() = name;
@@ -56,11 +56,11 @@ inline xAOD::MissingET_v1& xAOD::MissingET_v1::operator+=(const MissingET_v1& me
 inline xAOD::MissingET_v1& xAOD::MissingET_v1::operator-=(const MissingET_v1& met)
 { this->f_mpx() -= met.mpx(); this->f_mpy() -= met.mpy(); this->f_sumet() -= met.sumet(); return *this; }
 
-inline xAOD::MissingET_v1& xAOD::MissingET_v1::operator*=(double scale)
+inline xAOD::MissingET_v1& xAOD::MissingET_v1::operator*=(float scale)
 { this->f_mpx() *= scale; this->f_mpy() *= scale; this->f_sumet() *= scale; return *this; }
 
-inline xAOD::MissingET_v1& xAOD::MissingET_v1::operator/=(double scale)
-{ double f(MissingETBase::Numerical::divide(1.,scale)); this->operator*=(f); return *this; }
+inline xAOD::MissingET_v1& xAOD::MissingET_v1::operator/=(float scale)
+{ float f(MissingETBase::Numerical::divide(1.,scale)); this->operator*=(f); return *this; }
 
 ///////////////////////////////////////////////////////////////////////
 // MissingET_v1 Inline Functions: Object Algebra in Global Namespace //
@@ -72,14 +72,14 @@ inline xAOD::MissingET_v1 operator+(const xAOD::MissingET_v1& met0,const xAOD::M
 inline xAOD::MissingET_v1 operator-(const xAOD::MissingET_v1& met0,const xAOD::MissingET_v1& met1)
 { return xAOD::MissingET_v1(met0.mpx()-met1.mpx(),met0.mpy()-met1.mpy(),met0.sumet()-met1.sumet()); }
 
-inline xAOD::MissingET_v1 operator*(const xAOD::MissingET_v1& met,double scale)
+inline xAOD::MissingET_v1 operator*(const xAOD::MissingET_v1& met,float scale)
 { return xAOD::MissingET_v1(met.mpx()*scale,met.mpy()*scale,met.sumet()*scale); }
 
-inline xAOD::MissingET_v1 operator*(double scale,const xAOD::MissingET_v1& met)
+inline xAOD::MissingET_v1 operator*(float scale,const xAOD::MissingET_v1& met)
 { return met * scale; }
 
-inline xAOD::MissingET_v1 operator/(const xAOD::MissingET_v1& met,double scale)
-{ double f(MissingETBase::Numerical::divide(1.,scale)); return f * met; }
+inline xAOD::MissingET_v1 operator/(const xAOD::MissingET_v1& met,float scale)
+{ float f(MissingETBase::Numerical::divide(1.,scale)); return f * met; }
 
 ////////////////////////////////////////////////
 // MissingET_v1 Inline Functions: Comparators //
@@ -110,7 +110,7 @@ inline void xAOD::MissingET_v1::clear()
  *  The latter is supported by constructors with just @link xAOD::MissingET_v1::MissingET_v1(const std::string&,MissingETBase::Types::bitmask_t) name and source indicator @endlink,
  *  initial kinematics are set to zero), and constructors storing (initial or final) kinematic contributions, either from a
  *  @link xAOD::MissingET_v1::MissingET_v1(const IParticle*,const std::string&,MissingETBase::Types::bitmask_t) physics or signal object reference @endlink
- *  or from @link xAOD::MissingET_v1::MissingET_v1(double,double,double,const std::string&,MissingETBase::Types::bitmask_t) individually specified kinematics @endlink.
+ *  or from @link xAOD::MissingET_v1::MissingET_v1(float,float,float,const std::string&,MissingETBase::Types::bitmask_t) individually specified kinematics @endlink.
  *
  *  @note This object is designed to store only the summed kinematics of a MET term, together with some identifiers. The actual contribution to this term from
  *        any physics or signal object to this MET term is not stored here, but in a dedicated @link xAOD::MissingETComponent_v1 MET component object @endlink.
@@ -179,7 +179,7 @@ inline void xAOD::MissingET_v1::clear()
  *        object instantiated this way is not storable, it is otherwise a fully usable.
  */
 
-/*! @fn xAOD::MissingET_v1::MissingET_v1(double mpx,double mpy,double pt,const std::string& name,MissingETBase::Types::bitmask_t src);
+/*! @fn xAOD::MissingET_v1::MissingET_v1(float mpx,float mpy,float pt,const std::string& name,MissingETBase::Types::bitmask_t src);
  *
  *  A MET object with a name (optional) and a source indicator (optional) is constructed. The initial MET components
  *  @f$ (p_{x},p_{y},\Sigma E_{\rm T}) @f$ are given in the argument list.
@@ -209,7 +209,7 @@ inline void xAOD::MissingET_v1::clear()
 // Setters //
 /////////////
 
-/*! @fn void xAOD::MissingET_v1::setMpx(double value)
+/*! @fn void xAOD::MissingET_v1::setMpx(float value)
  *
  *  @param[in] value new value for component.
  *
@@ -219,12 +219,12 @@ inline void xAOD::MissingET_v1::clear()
  *           xAOD::MissingET_v1::add methods for coherent update of all related data.
  */
 
-/*! @fn void xAOD::MissingET_v1::setMpy(double value)
- *  @copydetails xAOD::MissingET_v1::setMpx(double)
+/*! @fn void xAOD::MissingET_v1::setMpy(float value)
+ *  @copydetails xAOD::MissingET_v1::setMpx(float)
  */
 
-/*! @fn void xAOD::MissingET_v1::setSumet(double value)
- *  @copydetails xAOD::MissingET_v1::setMpx(double)
+/*! @fn void xAOD::MissingET_v1::setSumet(float value)
+ *  @copydetails xAOD::MissingET_v1::setMpx(float)
  */
 
 /*! @fn void xAOD::MissingET_v1::setName(const std::string& name)
@@ -279,10 +279,10 @@ inline void xAOD::MissingET_v1::clear()
  *        has to be explicitly done by the user.
  */
 
-/*! @fn virtual void xAOD::MissingET_v1::add(const IParticle* particle,double scale)
+/*! @fn virtual void xAOD::MissingET_v1::add(const IParticle* particle,float scale)
  *
  *  Here the particle kinematics is added to the MET object with a common scale factor. This method updates the internal data stores. If each
- *  MET component needs a different scale, xAOD::MissingET_v1::add(double,double,double) can be used.
+ *  MET component needs a different scale, xAOD::MissingET_v1::add(float,float,float) can be used.
  *
  *  @param[in] particle pointer to the particle object
  *  @param[in] scale    scale factor
@@ -300,7 +300,7 @@ inline void xAOD::MissingET_v1::clear()
  *        has to be explicitly done by the user.
  */
 
-/*! @fn virtual void xAOD::MissingET_v1::add(double px,double py)
+/*! @fn virtual void xAOD::MissingET_v1::add(float px,float py)
  *
  *  The given kinematic quantities are added to MET.
  *
@@ -319,7 +319,7 @@ inline void xAOD::MissingET_v1::clear()
 /*! @fn xAOD::MissingET_v1& xAOD::MissingET_v1::operator-=(const IParticle* part)
  *
  *  The particle kinematics is subtracted to the MET object This method updates the internal data stores. If each
- *  MET component needs a different scale, xAOD::MissingET_v1::add(double,double,double) can be used.
+ *  MET component needs a different scale, xAOD::MissingET_v1::add(float,float,float) can be used.
  *
  *  @return Reference to (updated) self.
  *
@@ -368,7 +368,7 @@ inline void xAOD::MissingET_v1::clear()
  *  @f$ (p_{x}^{{\rm miss}\prime},p_{y}^{{\rm miss}\prime},\Sigma E_{\rm T}^{\prime}) @f$ are the components of the subtracted object.
  */
 
-/*! @fn xAOD::MissingET_v1& xAOD::MissingET_v1::operator*=(double scale)
+/*! @fn xAOD::MissingET_v1& xAOD::MissingET_v1::operator*=(float scale)
  *
  *  @return Reference to self.
  *
@@ -384,7 +384,7 @@ inline void xAOD::MissingET_v1::clear()
  *  Here @f$ (p_{x}^{\rm miss},p_{y}^{\rm miss},\Sigma E_{\rm T}) @f$ are the components of this object, and @f$ f @f$ is the scale factor.
  */
 
-/*! @fn xAOD::MissingET_v1& xAOD::MissingET_v1::operator/=(double scale)
+/*! @fn xAOD::MissingET_v1& xAOD::MissingET_v1::operator/=(float scale)
  *
  *  @return Reference to self.
  *
@@ -399,7 +399,7 @@ inline void xAOD::MissingET_v1::clear()
  *
  *  Here @f$ (p_{x}^{\rm miss},p_{y}^{\rm miss},\Sigma E_{\rm T}) @f$ are the components of this object, and @f$ f @f$ is the scale factor.
  *
- *  @note If @f$ f = 0 @f$, the rule implemented in MissingETBase::Numerical::divide(double,double) is applied to the results for each
+ *  @note If @f$ f = 0 @f$, the rule implemented in MissingETBase::Numerical::divide(float,float) is applied to the results for each
  *        component.
  */
 
@@ -437,18 +437,18 @@ inline void xAOD::MissingET_v1::clear()
 // Protected Functions //
 /////////////////////////
 
-/*! @fn double& xAOD::MissingET_v1::f_mpx(()
+/*! @fn float& xAOD::MissingET_v1::f_mpx(()
  *
  *  The underlying SG::AuxElement store is accessed through references to keyed, modifiable data members.
  *
  *  @return Reference to modifiable dataword storing MET object data.
  */
 
-/*! @fn double& xAOD::MissingET_v1::f_py()
+/*! @fn float& xAOD::MissingET_v1::f_py()
  * @copydetails xAOD::MissingET_v1::f_mpx()
  */
 
-/*! @fn double& xAOD::MissingET_v1::f_sumet()
+/*! @fn float& xAOD::MissingET_v1::f_sumet()
  * @copydetails xAOD::MissingET_v1::f_mpx()
  */
 
@@ -486,10 +486,10 @@ inline void xAOD::MissingET_v1::clear()
  *  @param[in] met1 reference to non-modifiable second MET object
  */
 
-/*! @fn xAOD::MissingET_v1 operator*(const xAOD::MissingET_v1& met,double scale)
+/*! @fn xAOD::MissingET_v1 operator*(const xAOD::MissingET_v1& met,float scale)
  *
  *  The kinematic components of the referenced MET objects are scaled by (1) creating a copy of the referenced MET object and
- *  (2) use the xAOD::MissingET_v1::operator*=(double) method to apply the scale to the components of the new MET object.
+ *  (2) use the xAOD::MissingET_v1::operator*=(float) method to apply the scale to the components of the new MET object.
  *
  *  @return New MissingET_v1 object reflecting the result of the multiply operation.
  *
@@ -497,14 +497,14 @@ inline void xAOD::MissingET_v1::clear()
  *  @param[in] scale scale factor to be applied
  */
 
-/*! @fn xAOD::MissingET_v1 operator*(double scale,const xAOD::MissingET_v1& met)
- *  @copydetails operator*(const xAOD::MissingET_v1&,double)
+/*! @fn xAOD::MissingET_v1 operator*(float scale,const xAOD::MissingET_v1& met)
+ *  @copydetails operator*(const xAOD::MissingET_v1&,float)
  */
 
-/*! @fn xAOD::MissingET_v1 operator/(const xAOD::MissingET_v1& met,double scale);
+/*! @fn xAOD::MissingET_v1 operator/(const xAOD::MissingET_v1& met,float scale);
  *
  *  The kinematic components of the referenced MET objects are scaled by (1) creating a copy of the referenced MET object and
- *  (2) use the xAOD::MissingET_v1::operator/=(double) method to divide the components of the new MET object by the scale factor.
+ *  (2) use the xAOD::MissingET_v1::operator/=(float) method to divide the components of the new MET object by the scale factor.
  *
  *  @return New MissingET_v1 object reflecting the result of the divide operation.
  *
diff --git a/Event/xAOD/xAODMissingETAthenaPool/CMakeLists.txt b/Event/xAOD/xAODMissingETAthenaPool/CMakeLists.txt
index 013441b1eaa9dadf4e82fbcbd6b349cdb96fc67a..2a4cd9df0ac91904f53d83906489ad3ce14d8310 100644
--- a/Event/xAOD/xAODMissingETAthenaPool/CMakeLists.txt
+++ b/Event/xAOD/xAODMissingETAthenaPool/CMakeLists.txt
@@ -29,7 +29,7 @@ find_package( AthenaPoolUtilitiesTest )
 
 if( ATHENAPOOLUTILITIESTEST_FOUND )
   set( XAODMISSINGETATHENAPOOL_REFERENCE_TAG
-       xAODMissingETAthenaPoolReference-01-01-00 )
+       xAODMissingETAthenaPoolReference-01-02-00 )
   run_tpcnv_legacy_test( xAODMissingETAthenaPool_20.1.7.2   AOD-20.1.7.2-full
                    REQUIRED_LIBRARIES xAODMissingETAthenaPoolPoolCnv
                    REFERENCE_TAG ${XAODMISSINGETATHENAPOOL_REFERENCE_TAG} )
diff --git a/Reconstruction/MET/METUtilities/Root/METMaker.cxx b/Reconstruction/MET/METUtilities/Root/METMaker.cxx
index 18bfcb87fa9d993a65e8e1a6b51094ae8f2e139c..997530d2e3b07ae8946f105df57dcb46f0af29bc 100644
--- a/Reconstruction/MET/METUtilities/Root/METMaker.cxx
+++ b/Reconstruction/MET/METUtilities/Root/METMaker.cxx
@@ -796,7 +796,7 @@ namespace met {
           ATH_MSG_VERBOSE("This key: " << assoc->calkey()[iKey] << ", selector: " << selector);
         }
         ATH_MSG_VERBOSE("Mu calovec pt, no Eloss:   " << mu_calovec.cpt());
-        if(m_muEloss) mu_calovec *= std::max(0.,1-(total_eloss/mu_calovec.ce()));
+        if(m_muEloss) mu_calovec *= std::max<float>(0.,1-(total_eloss/mu_calovec.ce()));
         ATH_MSG_VERBOSE("Mu calovec pt, with Eloss: " << mu_calovec.cpt());
 
         // re-add calo components of muons beyond Eloss correction
@@ -1014,7 +1014,7 @@ namespace met {
           if(selector) mu_calovec += assoc->calVec(iKey);
         }
         if(m_muEloss){
-          mu_calovec *= std::max(0.,1-(total_eloss/mu_calovec.ce()));
+          mu_calovec *= std::max<float>(0.,1-(total_eloss/mu_calovec.ce()));
           opx += mu_calovec.cpx();
           opy += mu_calovec.cpy();
           osumpt += mu_calovec.sumpt();