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 )