diff --git a/PhysicsAnalysis/JetMissingEtID/MissingEtDQA/cmt/requirements b/PhysicsAnalysis/JetMissingEtID/MissingEtDQA/cmt/requirements
new file mode 100644
index 0000000000000000000000000000000000000000..e72bfbfbb4edbcfde6003214472e3dba23419e37
--- /dev/null
+++ b/PhysicsAnalysis/JetMissingEtID/MissingEtDQA/cmt/requirements
@@ -0,0 +1,46 @@
+## automatically generated CMT requirements file
+package MissingEtDQA
+author  dbuesche
+
+## for athena policies: this has to be the first use statement
+use AtlasPolicy 	AtlasPolicy-*
+
+## for gaudi tools, services and objects
+use GaudiInterface 	GaudiInterface-* 	External
+
+## put here your package dependencies...
+
+#use AsgTools            AsgTools-*              Control/AthToolSupport
+
+private
+use AthenaBaseComps     AthenaBaseComps-*       Control
+use AthenaMonitoring    AthenaMonitoring-*      Control
+use AtlasROOT           AtlasROOT-*             External
+#use StoreGate		StoreGate-*		Control
+#use xAODJet         	xAODJet-*         	Event/xAOD
+#use xAODCaloEvent   	xAODCaloEvent-*   	Event/xAOD
+#use xAODEgamma          xAODEgamma-*            Event/xAOD 
+#use xAODMuon            xAODMuon-*              Event/xAOD 
+#use xAODTau             xAODTau-*               Event/xAOD 
+use xAODMissingET       xAODMissingET-*         Event/xAOD 
+#use xAODTracking        xAODTracking-*          Event/xAOD 
+end_private
+
+##
+
+branches src src/components doc python share
+
+private
+## default is to make component library
+library MissingEtDQA *.cxx components/*.cxx
+
+#macro_append cppflags ' -std=c++11 '
+#macro_append use_linkopts ' -std=c++11 ' 
+
+apply_pattern component_library
+apply_pattern declare_joboptions files="*.py"
+apply_pattern declare_python_modules files="*.py"
+
+end_private
+
+
diff --git a/PhysicsAnalysis/JetMissingEtID/MissingEtDQA/src/PhysValMET.cxx b/PhysicsAnalysis/JetMissingEtID/MissingEtDQA/src/PhysValMET.cxx
new file mode 100644
index 0000000000000000000000000000000000000000..6b943f7848d71483732b1a5dcaec00bd5a17068a
--- /dev/null
+++ b/PhysicsAnalysis/JetMissingEtID/MissingEtDQA/src/PhysValMET.cxx
@@ -0,0 +1,281 @@
+///////////////////////// -*- C++ -*- /////////////////////////////
+
+/*
+  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+*/
+
+// PhysValMET.cxx 
+// Implementation file for class PhysValMET
+// Author: Daniel Buescher <daniel.buescher@cern.ch>
+/////////////////////////////////////////////////////////////////// 
+
+// PhysVal includes
+#include "PhysValMET.h"
+
+// STL includes
+#include <vector>
+
+// FrameWork includes
+#include "GaudiKernel/IToolSvc.h"
+#include "xAODMissingET/MissingET.h" 
+#include "xAODMissingET/MissingETContainer.h" 
+//#include "MissingET/MissingET.h" 
+#include "AthenaBaseComps/AthCheckMacros.h"
+#include "xAODMissingET/MissingETComposition.h"
+
+using xAOD::MissingETContainer;
+using xAOD::MissingETComposition;
+using xAOD::MissingET;
+
+namespace MissingEtDQA {
+
+/////////////////////////////////////////////////////////////////// 
+// Public methods: 
+/////////////////////////////////////////////////////////////////// 
+
+// Constructors
+////////////////
+
+  PhysValMET::PhysValMET( const std::string& type, 
+			  const std::string& name, 
+			  const IInterface* parent ) : 
+    ManagedMonitorToolBase( type, name, parent ),
+    m_MET_RefFinal_phi(0)
+  {
+    
+    declareProperty( "METContainerName", m_metName = "MET_RefFinal" ); 
+  }
+  
+  // Destructor
+  ///////////////
+  PhysValMET::~PhysValMET()
+  {}
+  
+  // Athena algtool's Hooks
+  ////////////////////////////
+  StatusCode PhysValMET::initialize()
+  {
+    ATH_MSG_INFO ("Initializing " << name() << "...");    
+    ATH_CHECK(ManagedMonitorToolBase::initialize());
+    
+    return StatusCode::SUCCESS;
+  }
+  
+  StatusCode PhysValMET::bookHistograms()
+ {
+      ATH_MSG_INFO ("Booking hists " << name() << "...");
+      
+      // Physics validation plots are level 10
+
+      int m_nbinp = 100;
+      int m_nbinpxy = 100;
+      int m_nbinphi = 63;
+      int m_nbinE = 100;
+      double m_suptmi = 500.;
+      double m_suptmixy = 250.;
+      double m_binphi = 3.15;
+      double m_lowET = 0.;
+      double m_suET = 2500.;
+
+      if (m_detailLevel >= 10) {
+
+	// TODO: loop over available MET terms
+	//for (MissingETContainer::iterator it = met_Simple->begin(); it != met_Simple-> end(); it++) (*it)->name()
+
+	std::string dir_met("MET/" + m_metName + "/");
+	ATH_CHECK(regHist(m_MET_RefFinal = new TH1D("MET_RefFinal", (m_metName + " MET_RefFinal; E_{T}^{miss}; Entries").c_str(), m_nbinp, 0., m_suptmi), dir_met, all));
+	ATH_CHECK(regHist(m_MET_RefFinal_x = new TH1D("MET_RefFinal_x", (m_metName + " MET_RefFinal_x; E_{Tx}^{miss}; Entries").c_str(), m_nbinpxy, -m_suptmixy, m_suptmixy), dir_met, all));
+	ATH_CHECK(regHist(m_MET_RefFinal_y = new TH1D("MET_RefFinal_y", (m_metName + " MET_RefFinal_y; E_{Ty}^{miss}; Entries").c_str(), m_nbinpxy, -m_suptmixy, m_suptmixy), dir_met, all));
+	ATH_CHECK(regHist(m_MET_RefFinal_phi = new TH1D("MET_RefFinal_phi", (m_metName + " MET_RefFinal_phi; E_{Tphi}^{miss}; Entries").c_str(), m_nbinphi,-m_binphi,m_binphi), dir_met, all));
+	ATH_CHECK(regHist(m_SET_RefFinal = new TH1D("SET_RefFinal", (m_metName + " SET_RefFinal; E_{T}^{sum}; Entries").c_str(), m_nbinE, m_lowET, m_suET), dir_met, all));
+
+	m_metName = "MET_RefEle"; 
+	dir_met = "MET/" + m_metName + "/";
+	ATH_CHECK(regHist(m_MET_RefEle = new TH1D("MET_RefEle", (m_metName + " MET_RefEle; E_{T}^{miss}; Entries").c_str(), m_nbinp, 0, m_suptmi/2.), dir_met, all));
+	ATH_CHECK(regHist(m_MET_RefEle_x = new TH1D("MET_RefEle_x", (m_metName + " MET_RefEle_x; E_{Tx}^{miss}; Entries").c_str(), m_nbinpxy, -m_suptmixy, m_suptmixy), dir_met, all));
+	ATH_CHECK(regHist(m_MET_RefEle_y = new TH1D("MET_RefEle_y", (m_metName + " MET_RefEle_y; E_{Ty}^{miss}; Entries").c_str(), m_nbinpxy, -m_suptmixy, m_suptmixy), dir_met, all));
+	ATH_CHECK(regHist(m_MET_RefEle_phi = new TH1D("MET_RefEle_phi", (m_metName + " MET_RefEle_phi; E_{Tphi}^{miss}; Entries").c_str(), m_nbinphi,-m_binphi,m_binphi), dir_met, all));
+	ATH_CHECK(regHist(m_SET_RefEle = new TH1D("SET_RefEle", (m_metName + " SET_RefEle; E_{T}^{sum}; Entries").c_str(), m_nbinE, m_lowET, m_suET/10.), dir_met, all));
+
+	m_metName = "MET_RefGamma";
+        dir_met = "MET/" + m_metName + "/";
+	ATH_CHECK(regHist(m_MET_RefGamma = new TH1D("MET_RefGamma", (m_metName + " MET_RefGamma; E_{T}^{miss}; Entries").c_str(), m_nbinp, 0, m_suptmi/2.), dir_met, all));
+	ATH_CHECK(regHist(m_MET_RefGamma_x = new TH1D("MET_RefGamma_x", (m_metName + " MET_RefGamma_x; E_{Tx}^{miss}; Entries").c_str(), m_nbinpxy, -m_suptmixy, m_suptmixy), dir_met, all));
+	ATH_CHECK(regHist(m_MET_RefGamma_y = new TH1D("MET_RefGamma_y", (m_metName + " MET_RefGamma_y; E_{Ty}^{miss}; Entries").c_str(), m_nbinpxy, -m_suptmixy, m_suptmixy), dir_met, all));
+	ATH_CHECK(regHist(m_MET_RefGamma_phi = new TH1D("MET_RefGamma_phi", (m_metName + " MET_RefGamma_phi; E_{Tphi}^{miss}; Entries").c_str(), m_nbinphi,-m_binphi,m_binphi), dir_met, all));
+	ATH_CHECK(regHist(m_SET_RefGamma = new TH1D("SET_RefGamma", (m_metName + " SET_RefGamma; E_{T}^{sum}; Entries").c_str(), m_nbinE, m_lowET, m_suET/10.), dir_met, all));
+
+	m_metName = "MET_RefTau";
+        dir_met = "MET/" + m_metName + "/";
+	ATH_CHECK(regHist(m_MET_RefTau = new TH1D("MET_RefTau", (m_metName + " MET_RefTau; E_{T}^{miss}; Entries").c_str(), m_nbinp, 0, m_suptmi/2.), dir_met, all));
+	ATH_CHECK(regHist(m_MET_RefTau_x = new TH1D("MET_RefTau_x", (m_metName + " MET_RefTau_x; E_{Tx}^{miss}; Entries").c_str(), m_nbinpxy, -m_suptmixy, m_suptmixy), dir_met, all));
+	ATH_CHECK(regHist(m_MET_RefTau_y = new TH1D("MET_RefTau_y", (m_metName + " MET_RefTau_y; E_{Ty}^{miss}; Entries").c_str(), m_nbinpxy, -m_suptmixy, m_suptmixy), dir_met, all));
+	ATH_CHECK(regHist(m_MET_RefTau_phi = new TH1D("MET_RefTau_phi", (m_metName + " MET_RefTau_phi; E_{Tphi}^{miss}; Entries").c_str(), m_nbinphi,-m_binphi,m_binphi), dir_met, all));
+	ATH_CHECK(regHist(m_SET_RefTau = new TH1D("SET_RefTau", (m_metName + " SET_RefTau; E_{T}^{sum}; Entries").c_str(), m_nbinE, m_lowET, m_suET/10.), dir_met, all));
+
+	m_metName = "MET_RefJet";
+        dir_met = "MET/" + m_metName + "/";
+	ATH_CHECK(regHist(m_MET_RefJet = new TH1D("MET_RefJet", (m_metName + " MET_RefJet; E_{T}^{miss}; Entries").c_str(), m_nbinp, 0., m_suptmi), dir_met, all));
+	ATH_CHECK(regHist(m_MET_RefJet_x = new TH1D("MET_RefJet_x", (m_metName + " MET_RefJet_x; E_{Tx}^{miss}; Entries").c_str(), m_nbinpxy, -m_suptmixy, m_suptmixy), dir_met, all));
+	ATH_CHECK(regHist(m_MET_RefJet_y = new TH1D("MET_RefJet_y", (m_metName + " MET_RefJet_y; E_{Ty}^{miss}; Entries").c_str(), m_nbinpxy, -m_suptmixy, m_suptmixy), dir_met, all));
+	ATH_CHECK(regHist(m_MET_RefJet_phi = new TH1D("MET_RefJet_phi", (m_metName + " MET_RefJet_phi; E_{Tphi}^{miss}; Entries").c_str(), m_nbinphi,-m_binphi,m_binphi), dir_met, all));
+	ATH_CHECK(regHist(m_SET_RefJet = new TH1D("SET_RefJet", (m_metName + " SET_RefJet; E_{T}^{sum}; Entries").c_str(), m_nbinE, m_lowET, m_suET), dir_met, all));
+
+	m_metName = "MET_Muons";
+        dir_met = "MET/" + m_metName + "/";
+	ATH_CHECK(regHist(m_MET_Muons = new TH1D("MET_Muons", (m_metName + " MET_Muons; E_{T}^{miss}; Entries").c_str(), m_nbinp, 0, m_suptmi/2.), dir_met, all));
+	ATH_CHECK(regHist(m_MET_Muons_x = new TH1D("MET_Muons_x", (m_metName + " MET_Muons_x; E_{Tx}^{miss}; Entries").c_str(), m_nbinpxy, -m_suptmixy, m_suptmixy), dir_met, all));
+	ATH_CHECK(regHist(m_MET_Muons_y = new TH1D("MET_Muons_y", (m_metName + " MET_Muons_y; E_{Ty}^{miss}; Entries").c_str(), m_nbinpxy, -m_suptmixy, m_suptmixy), dir_met, all));
+	ATH_CHECK(regHist(m_MET_Muons_phi = new TH1D("MET_Muons_phi", (m_metName + " MET_Muons_phi; E_{Tphi}^{miss}; Entries").c_str(), m_nbinphi,-m_binphi,m_binphi), dir_met, all));
+	ATH_CHECK(regHist(m_SET_Muons = new TH1D("SET_Muons", (m_metName + " SET_Muons; E_{T}^{sum}; Entries").c_str(), m_nbinE, m_lowET, m_suET/10.), dir_met, all));
+
+	m_metName = "MET_SoftClus";
+        dir_met = "MET/" + m_metName + "/";
+	ATH_CHECK(regHist(m_MET_SoftClus = new TH1D("MET_SoftClus", (m_metName + " MET_SoftClus; E_{T}^{miss}; Entries").c_str(), m_nbinp, 0., m_suptmi/2.), dir_met, all));
+	ATH_CHECK(regHist(m_MET_SoftClus_x = new TH1D("MET_SoftClus_x", (m_metName + " MET_SoftClus_x; E_{Tx}^{miss}; Entries").c_str(), m_nbinpxy, -m_suptmixy, m_suptmixy), dir_met, all));
+	ATH_CHECK(regHist(m_MET_SoftClus_y = new TH1D("MET_SoftClus_y", (m_metName + " MET_SoftClus_y; E_{Ty}^{miss}; Entries").c_str(), m_nbinpxy, -m_suptmixy, m_suptmixy), dir_met, all));
+	ATH_CHECK(regHist(m_MET_SoftClus_phi = new TH1D("MET_SoftClus_phi", (m_metName + " MET_SoftClus_phi; E_{Tphi}^{miss}; Entries").c_str(), m_nbinphi,-m_binphi,m_binphi), dir_met, all));
+	ATH_CHECK(regHist(m_SET_SoftClus = new TH1D("SET_SoftClus", (m_metName + " SET_SoftClus; E_{T}^{sum}; Entries").c_str(), m_nbinE, m_lowET, m_suET/2.), dir_met, all));
+
+	m_metName = "MET_PVSoftTrk";
+        dir_met = "MET/" + m_metName + "/";
+	ATH_CHECK(regHist(m_MET_PVSoftTrk = new TH1D("MET_PVSoftTrk", (m_metName + " MET_PVSoftTrk; E_{T}^{miss}; Entries").c_str(), m_nbinp, 0., m_suptmi/2.), dir_met, all));
+	ATH_CHECK(regHist(m_MET_PVSoftTrk_x = new TH1D("MET_PVSoftTrk_x", (m_metName + " MET_PVSoftTrk_x; E_{Tx}^{miss}; Entries").c_str(), m_nbinpxy, -m_suptmixy, m_suptmixy), dir_met, all));
+	ATH_CHECK(regHist(m_MET_PVSoftTrk_y = new TH1D("MET_PVSoftTrk_y", (m_metName + " MET_PVSoftTrk_y; E_{Ty}^{miss}; Entries").c_str(), m_nbinpxy, -m_suptmixy, m_suptmixy), dir_met, all));
+	ATH_CHECK(regHist(m_MET_PVSoftTrk_phi = new TH1D("MET_PVSoftTrk_phi", (m_metName + " MET_PVSoftTrk_phi; E_{Tphi}^{miss}; Entries").c_str(), m_nbinphi,-m_binphi,m_binphi), dir_met, all));
+	ATH_CHECK(regHist(m_SET_PVSoftTrk = new TH1D("SET_PVSoftTrk", (m_metName + " SET_PVSoftTrk; E_{T}^{sum}; Entries").c_str(), m_nbinE, m_lowET, m_suET/2.), dir_met, all));
+
+	m_metName = "MET_Resolution";
+	dir_met = "MET/" + m_metName + "/";
+	ATH_CHECK(regHist(m_Resolution_TruthNonInt_RefFinal_METx = new TH1D("m_Resolution_TruthNonInt_RefFinal_METx", (m_metName + " Resolution_TruthNonInt_RefFinal_METx; Resolution; Entries").c_str(), 1.5*m_nbinpxy, -1.5*m_suptmixy, 1.5*m_suptmixy), dir_met, all));
+	ATH_CHECK(regHist(m_Resolution_TruthNonInt_RefFinal_METy = new TH1D("m_Resolution_TruthNonInt_RefFinal_METy", (m_metName + " Resolution_TruthNonInt_RefFinal_METy; Resolution; Entries").c_str(), 1.5*m_nbinpxy, -1.5*m_suptmixy, 1.5*m_suptmixy), dir_met, all));
+	
+      }
+
+      return StatusCode::SUCCESS;      
+  }
+
+  StatusCode PhysValMET::fillHistograms()
+  {
+    ATH_MSG_INFO ("Filling hists " << name() << "...");
+
+    // Retrieve MET container: 
+
+    const xAOD::MissingETContainer* met_RefFinal = 0;
+    ATH_CHECK( evtStore()->retrieve(met_RefFinal,"MET_RefFinal") );
+
+    const xAOD::MissingETContainer* met_Truth = 0;
+    ATH_CHECK( evtStore()->retrieve(met_Truth,"MET_Truth") );
+
+       
+    // if (!met_RefFinal) {
+    //   ATH_MSG_ERROR ("Couldn't retrieve MET Final");
+    //   return StatusCode::FAILURE;                   
+    // } 
+
+        
+    ATH_MSG_INFO( "  MET magnitude:" );
+
+
+    //const MissingET* metFinal = (*met_RefFinal)["Final"];
+
+
+    //m_MET_RefFinal_phi->Fill((*met_RefFinal)["Final"]->phi(), 1.);
+
+    m_MET_RefFinal->Fill((*met_RefFinal)["Final"]->met()/1000., 1.);
+    m_MET_RefEle->Fill((*met_RefFinal)["RefEle"]->met()/1000., 1.);
+    m_MET_RefGamma->Fill((*met_RefFinal)["RefGamma"]->met()/1000., 1.);
+    m_MET_RefTau->Fill((*met_RefFinal)["RefTau"]->met()/1000., 1.);
+    m_MET_RefJet->Fill((*met_RefFinal)["RefJet"]->met()/1000., 1.);
+    m_MET_Muons->Fill((*met_RefFinal)["Muons"]->met()/1000., 1.);
+    m_MET_SoftClus->Fill((*met_RefFinal)["SoftClus"]->met()/1000., 1.);
+    m_MET_PVSoftTrk->Fill((*met_RefFinal)["PVSoftTrk"]->met()/1000., 1.);
+    
+
+    ATH_MSG_INFO( "  MET x-component:" );
+
+    m_MET_RefFinal_x->Fill((*met_RefFinal)["Final"]->mpx()/1000., 1.);
+    m_MET_RefEle_x->Fill((*met_RefFinal)["RefEle"]->mpx()/1000., 1.);
+    m_MET_RefGamma_x->Fill((*met_RefFinal)["RefGamma"]->mpx()/1000., 1.);
+    m_MET_RefTau_x->Fill((*met_RefFinal)["RefTau"]->mpx()/1000., 1.);
+    m_MET_RefJet_x->Fill((*met_RefFinal)["RefJet"]->mpx()/1000., 1.);
+    m_MET_Muons_x->Fill((*met_RefFinal)["Muons"]->mpx()/1000., 1.);
+    m_MET_SoftClus_x->Fill((*met_RefFinal)["SoftClus"]->mpx()/1000., 1.);
+    m_MET_PVSoftTrk_x->Fill((*met_RefFinal)["PVSoftTrk"]->mpx()/1000., 1.);
+         
+
+    ATH_MSG_INFO( "  MET y-component:" );
+
+    m_MET_RefFinal_y->Fill((*met_RefFinal)["Final"]->mpy()/1000., 1.);
+    m_MET_RefEle_y->Fill((*met_RefFinal)["RefEle"]->mpy()/1000., 1.);
+    m_MET_RefGamma_y->Fill((*met_RefFinal)["RefGamma"]->mpy()/1000., 1.);
+    m_MET_RefTau_y->Fill((*met_RefFinal)["RefTau"]->mpy()/1000., 1.);
+    m_MET_RefJet_y->Fill((*met_RefFinal)["RefJet"]->mpy()/1000., 1.);
+    m_MET_Muons_y->Fill((*met_RefFinal)["Muons"]->mpy()/1000., 1.);
+    m_MET_SoftClus_y->Fill((*met_RefFinal)["SoftClus"]->mpy()/1000., 1.);
+    m_MET_PVSoftTrk_y->Fill((*met_RefFinal)["PVSoftTrk"]->mpy()/1000., 1.);
+
+
+    ATH_MSG_INFO( "  MET phi-component:" );
+
+    m_MET_RefFinal_phi->Fill((*met_RefFinal)["Final"]->phi(), 1.);
+    m_MET_RefEle_phi->Fill((*met_RefFinal)["RefEle"]->phi(), 1.);
+    m_MET_RefGamma_phi->Fill((*met_RefFinal)["RefGamma"]->phi(), 1.);
+    m_MET_RefTau_phi->Fill((*met_RefFinal)["RefTau"]->phi(), 1.);
+    m_MET_RefJet_phi->Fill((*met_RefFinal)["RefJet"]->phi(), 1.);
+    m_MET_Muons_phi->Fill((*met_RefFinal)["Muons"]->phi(), 1.);
+    m_MET_SoftClus_phi->Fill((*met_RefFinal)["SoftClus"]->phi(), 1.);
+    m_MET_PVSoftTrk_phi->Fill((*met_RefFinal)["PVSoftTrk"]->phi(), 1.);
+
+    ATH_MSG_INFO( "  SumET magnitude:" );
+
+    m_SET_RefFinal->Fill((*met_RefFinal)["Final"]->sumet()/1000., 1.);
+    m_SET_RefEle->Fill((*met_RefFinal)["RefEle"]->sumet()/1000., 1.);
+    m_SET_RefGamma->Fill((*met_RefFinal)["RefGamma"]->sumet()/1000., 1.);
+    m_SET_RefTau->Fill((*met_RefFinal)["RefTau"]->sumet()/1000., 1.);
+    m_SET_RefJet->Fill((*met_RefFinal)["RefJet"]->sumet()/1000., 1.);
+    m_SET_Muons->Fill((*met_RefFinal)["Muons"]->sumet()/1000., 1.);
+    m_SET_SoftClus->Fill((*met_RefFinal)["SoftClus"]->sumet()/1000., 1.);
+    m_SET_PVSoftTrk->Fill((*met_RefFinal)["PVSoftTrk"]->sumet()/1000., 1.);
+    
+
+    ATH_MSG_INFO( "  Resolution:" );
+
+    m_Resolution_TruthNonInt_RefFinal_METx->Fill(((*met_RefFinal)["Final"]->mpx()-(*met_Truth)["NonInt"]->mpx())/1000., 1.);
+    m_Resolution_TruthNonInt_RefFinal_METy->Fill(((*met_RefFinal)["Final"]->mpy()-(*met_Truth)["NonInt"]->mpy())/1000., 1.);
+
+
+    return StatusCode::SUCCESS;
+    //return StatusCode::FAILURE;
+  }
+  
+  StatusCode PhysValMET::procHistograms()
+  {
+    ATH_MSG_INFO ("Finalising hists " << name() << "...");
+    return StatusCode::SUCCESS;
+  }
+  
+/////////////////////////////////////////////////////////////////// 
+// Const methods: 
+///////////////////////////////////////////////////////////////////
+
+/////////////////////////////////////////////////////////////////// 
+// Non-const methods: 
+/////////////////////////////////////////////////////////////////// 
+
+/////////////////////////////////////////////////////////////////// 
+// Protected methods: 
+/////////////////////////////////////////////////////////////////// 
+
+/////////////////////////////////////////////////////////////////// 
+// Const methods: 
+///////////////////////////////////////////////////////////////////
+
+/////////////////////////////////////////////////////////////////// 
+// Non-const methods: 
+/////////////////////////////////////////////////////////////////// 
+
+
+}
+
+//  LocalWords:  str 
diff --git a/PhysicsAnalysis/JetMissingEtID/MissingEtDQA/src/PhysValMET.h b/PhysicsAnalysis/JetMissingEtID/MissingEtDQA/src/PhysValMET.h
new file mode 100644
index 0000000000000000000000000000000000000000..6c297b2c36c69759902a8d7a13aebd1ac156fe94
--- /dev/null
+++ b/PhysicsAnalysis/JetMissingEtID/MissingEtDQA/src/PhysValMET.h
@@ -0,0 +1,94 @@
+///////////////////////// -*- C++ -*- /////////////////////////////
+
+/*
+  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+*/
+
+// PhysValMET.h 
+// Header file for class PhysValMET
+// Author: Daniel Buescher <daniel.buescher@cern.ch>
+/////////////////////////////////////////////////////////////////// 
+#ifndef MISSINGETDQA_PHYSVALMET_H
+#define MISSINGETDQA_PHYSVALMET_H 1
+
+// STL includes
+#include <string>
+
+// FrameWork includes
+#include "GaudiKernel/ServiceHandle.h"
+
+// Local includes
+#include "AthenaMonitoring/ManagedMonitorToolBase.h"
+
+// Root includes
+#include "TH1.h"
+
+// Forward declaration
+
+namespace MissingEtDQA {
+
+class PhysValMET
+  : public ManagedMonitorToolBase
+{ 
+  /////////////////////////////////////////////////////////////////// 
+  // Public methods: 
+  /////////////////////////////////////////////////////////////////// 
+ public: 
+
+  // Copy constructor: 
+
+  /// Constructor with parameters: 
+  PhysValMET( const std::string& type,
+		  const std::string& name, 
+		  const IInterface* parent );
+
+  /// Destructor: 
+  virtual ~PhysValMET(); 
+
+  // Athena algtool's Hooks
+  virtual StatusCode initialize();
+  virtual StatusCode bookHistograms();
+  virtual StatusCode fillHistograms();
+  virtual StatusCode procHistograms();
+
+
+  /////////////////////////////////////////////////////////////////// 
+  // Const methods: 
+  ///////////////////////////////////////////////////////////////////
+
+  /////////////////////////////////////////////////////////////////// 
+  // Non-const methods: 
+  /////////////////////////////////////////////////////////////////// 
+
+
+  /////////////////////////////////////////////////////////////////// 
+  // Private data: 
+  /////////////////////////////////////////////////////////////////// 
+ private: 
+
+  /// Default constructor: 
+  PhysValMET();
+
+  // Containers
+  std::string m_metName; 
+
+  // Hists
+  // TODO: use map (each one for met, set, mpx, ...)
+  TH1D *m_MET_RefFinal, *m_MET_RefEle, *m_MET_RefGamma, *m_MET_RefTau, *m_MET_RefJet, *m_MET_Muons, *m_MET_SoftClus, *m_MET_PVSoftTrk; 
+  TH1D *m_MET_RefFinal_x, *m_MET_RefEle_x, *m_MET_RefGamma_x, *m_MET_RefTau_x, *m_MET_RefJet_x, *m_MET_Muons_x, *m_MET_SoftClus_x, *m_MET_PVSoftTrk_x;
+  TH1D *m_MET_RefFinal_y, *m_MET_RefEle_y, *m_MET_RefGamma_y, *m_MET_RefTau_y, *m_MET_RefJet_y, *m_MET_Muons_y, *m_MET_SoftClus_y, *m_MET_PVSoftTrk_y;
+  TH1D *m_MET_RefFinal_phi, *m_MET_RefEle_phi, *m_MET_RefGamma_phi, *m_MET_RefTau_phi, *m_MET_RefJet_phi, *m_MET_Muons_phi, *m_MET_SoftClus_phi, *m_MET_PVSoftTrk_phi;
+  TH1D *m_SET_RefFinal, *m_SET_RefEle, *m_SET_RefGamma, *m_SET_RefTau, *m_SET_RefJet, *m_SET_Muons, *m_SET_SoftClus, *m_SET_PVSoftTrk;
+  TH1D *m_Resolution_TruthNonInt_RefFinal_METx, *m_Resolution_TruthNonInt_RefFinal_METy;
+  
+}; 
+
+// I/O operators
+//////////////////////
+
+/////////////////////////////////////////////////////////////////// 
+// Inline methods: 
+/////////////////////////////////////////////////////////////////// 
+}
+
+#endif //> !MISSINGETDQA_PHYSVALMET_H
diff --git a/PhysicsAnalysis/JetMissingEtID/MissingEtDQA/src/components/MissingEtDQA_entries.cxx b/PhysicsAnalysis/JetMissingEtID/MissingEtDQA/src/components/MissingEtDQA_entries.cxx
new file mode 100644
index 0000000000000000000000000000000000000000..c6996319783ae1adb4309cb74e05f5471ef8c8e0
--- /dev/null
+++ b/PhysicsAnalysis/JetMissingEtID/MissingEtDQA/src/components/MissingEtDQA_entries.cxx
@@ -0,0 +1,14 @@
+// Gaudi/Athena include(s):
+#include "GaudiKernel/DeclareFactoryEntries.h"
+
+// Local include(s):
+#include "../PhysValMET.h"
+
+DECLARE_NAMESPACE_TOOL_FACTORY( MissingEtDQA, PhysValMET )
+
+DECLARE_FACTORY_ENTRIES( MissingEtDQA ) {
+
+  DECLARE_NAMESPACE_TOOL( MissingEtDQA, PhysValMET )
+
+}
+
diff --git a/PhysicsAnalysis/JetMissingEtID/MissingEtDQA/src/components/MissingEtDQA_load.cxx b/PhysicsAnalysis/JetMissingEtID/MissingEtDQA/src/components/MissingEtDQA_load.cxx
new file mode 100644
index 0000000000000000000000000000000000000000..e49044e55b524033e0e5f8c880c51ad16bd65dfe
--- /dev/null
+++ b/PhysicsAnalysis/JetMissingEtID/MissingEtDQA/src/components/MissingEtDQA_load.cxx
@@ -0,0 +1,5 @@
+// Gaudi/Athena include(s):
+#include "GaudiKernel/LoadFactoryEntries.h"
+
+// Declare the library to the infrastructure:
+LOAD_FACTORY_ENTRIES( MissingEtDQA )