diff --git a/PhysicsAnalysis/JetMissingEtID/MissingEtDQA/src/PhysValMET.cxx b/PhysicsAnalysis/JetMissingEtID/MissingEtDQA/src/PhysValMET.cxx index 47c89556fa2c79a43e7832bc1ef21e50c9a16ebd..065045f599a1fa69f0fea283c7f8380569cfc5cd 100644 --- a/PhysicsAnalysis/JetMissingEtID/MissingEtDQA/src/PhysValMET.cxx +++ b/PhysicsAnalysis/JetMissingEtID/MissingEtDQA/src/PhysValMET.cxx @@ -52,8 +52,8 @@ namespace MissingEtDQA { //////////////// PhysValMET::PhysValMET( const std::string& type, - const std::string& name, - const IInterface* parent) : + const std::string& name, + const IInterface* parent) : ManagedMonitorToolBase( type, name, parent ), m_metmaker(nullptr) { @@ -155,7 +155,6 @@ namespace MissingEtDQA { ATH_CHECK( m_tauSelTool.retrieve() ); ATH_CHECK( m_jvtToolEM.retrieve() ); ATH_CHECK( m_jvtToolPFlow.retrieve() ); - m_MET_Ref.clear(); m_MET_Ref_x.clear(); m_MET_Ref_y.clear(); @@ -210,343 +209,353 @@ namespace MissingEtDQA { if (m_detailLevel >= 10) { - for (const auto& type : m_types){ - - std::string name_met = "MET_Reference_" + type; - m_dir_met.clear(); - std::vector<TH1D*> v_MET_Ref; - std::vector<TH1D*> v_MET_Ref_x; - std::vector<TH1D*> v_MET_Ref_y; - std::vector<TH1D*> v_MET_Ref_phi; - std::vector<TH1D*> v_MET_Ref_sum; - std::vector<TH1D*> v_MET_Cumu_Ref; - std::vector<TH1D*> v_MET_Resolution_Ref; - std::vector<TH1D*> v_MET_Significance_Ref; - std::vector<TH1D*> v_MET_dPhi_Ref; - std::vector<TH2D*> v_MET_CorrFinalTrk_Ref; - std::vector<TH2D*> v_MET_CorrFinalClus_Ref; - std::vector<TH1D*> v_MET_Diff_Ref; - std::vector<TH1D*> v_MET_Diff_Ref_x; - std::vector<TH1D*> v_MET_Diff_Ref_y; - std::vector<TH1D*> v_MET_Diff_Ref_phi; - std::vector<TH1D*> v_MET_Diff_Ref_sum; - - for(const auto& term : m_terms) { - v_MET_Ref.push_back( new TH1D((name_met + "_" + term).c_str(), (name_met + " " + m_names[term] + "; E_{T}^{miss} [GeV]; Entries / 5 GeV").c_str(), nbinp, 0., suptmi) ); - v_MET_Ref_x.push_back( new TH1D((name_met + "_" + term +"_x").c_str(), (name_met + " " + m_names[term] + " x; E_{x}^{miss} [GeV]; Entries / 5 GeV").c_str(), nbinpxy, -suptmixy, suptmixy) ); - v_MET_Ref_y.push_back( new TH1D((name_met + "_" + term + "_y").c_str(), (name_met + " " + m_names[term] + " y; E_{y}^{miss} [GeV]; Entries / 5 GeV").c_str(), nbinpxy, -suptmixy, suptmixy) ); - v_MET_Ref_phi.push_back( new TH1D((name_met + "_" + term + "_phi").c_str(), (name_met + " " + m_names[term] + " phi; #Phi; Entries / 0.1").c_str(), nbinphi,-binphi,binphi) ); - v_MET_Ref_sum.push_back( new TH1D((name_met + "_" + term + "_sum").c_str(), (name_met + " " + m_names[term] + " sum; E_{T}^{sum} [GeV]; Entries / 25 GeV").c_str(), nbinE, lowET, suET) ); - m_dir_met.push_back("MET/" + name_met + "/Terms/" + term + "/"); - } - - m_MET_Ref[type] = v_MET_Ref; - m_MET_Ref_x[type] = v_MET_Ref_x; - m_MET_Ref_y[type] = v_MET_Ref_y; - m_MET_Ref_phi[type] = v_MET_Ref_phi; - m_MET_Ref_sum[type] = v_MET_Ref_sum; - - for(std::vector<TH1D*>::size_type i = 0; i < v_MET_Ref.size(); ++i) { - ATH_CHECK(regHist(m_MET_Ref[type].at(i),m_dir_met[i],all)); - ATH_CHECK(regHist(m_MET_Ref_x[type].at(i),m_dir_met[i],all)); - ATH_CHECK(regHist(m_MET_Ref_y[type].at(i),m_dir_met[i],all)); - ATH_CHECK(regHist(m_MET_Ref_phi[type].at(i),m_dir_met[i],all)); - ATH_CHECK(regHist(m_MET_Ref_sum[type].at(i),m_dir_met[i],all)); - } - - std::string name_sub = name_met + "/Cumulative"; - v_MET_Cumu_Ref.push_back( new TH1D((name_met + "_Cumulative_FinalClus").c_str(), (name_met + " CST MET cumulative; E_{T}^{miss} [GeV]; Entries / 5 GeV").c_str(), nbinp, 0., suptmi) ); - v_MET_Cumu_Ref.push_back( new TH1D((name_met + "_Cumulative_FinalTrk").c_str(), (name_met + " TST MET cumulative; E_{T}^{miss} [GeV]; Entries / 5 GeV").c_str(), nbinp, 0., suptmi) ); - - m_MET_Cumu_Ref[type] = v_MET_Cumu_Ref; - - for(std::vector<TH1D*>::size_type i = 0; i < v_MET_Cumu_Ref.size(); ++i) { - ATH_CHECK(regHist(m_MET_Cumu_Ref[type].at(i),"MET/" + name_sub + "/",all)); - } - - name_sub = name_met + "/Residuals"; - v_MET_Resolution_Ref.push_back( new TH1D((name_met + "_Resolution_FinalClus_x").c_str(), ("x-Residual of CST MET in " + name_met + "; #Delta(E_{T,CST}^{miss}, E_{T,truth}^{miss})_{x} [GeV]; Entries / 5 GeV").c_str(), nbinpxy, -suptmixy, suptmixy) ); - v_MET_Resolution_Ref.push_back( new TH1D((name_met + "_Resolution_FinalClus_y").c_str(), ("y-Residual of CST MET in " + name_met + "; #Delta(E_{T,CST}^{miss}, E_{T,truth}^{miss})_{y} [GeV]; Entries / 5 GeV").c_str(), nbinpxy, -suptmixy, suptmixy) ); - v_MET_Resolution_Ref.push_back( new TH1D((name_met + "_Resolution_FinalTrk_x").c_str(), ("x-Residual of TST MET in " + name_met + "; #Delta(E_{T,TST}^{miss}, E_{T,truth}^{miss})_{x} [GeV]; Entries / 5 GeV").c_str(), nbinpxy, -suptmixy, suptmixy) ); - v_MET_Resolution_Ref.push_back( new TH1D((name_met + "_Resolution_FinalTrk_y").c_str(), ("y-Residual of TST MET in " + name_met + "; #Delta(E_{T,TST}^{miss}, E_{T,truth}^{miss})_{y} [GeV]; Entries / 5 GeV").c_str(), nbinpxy, -suptmixy, suptmixy) ); - - m_MET_Resolution_Ref[type] = v_MET_Resolution_Ref; - - for(std::vector<TH1D*>::size_type i = 0; i < v_MET_Resolution_Ref.size(); ++i) { - ATH_CHECK(regHist(m_MET_Resolution_Ref[type].at(i),"MET/" + name_sub + "/",all)); - } - - name_sub = name_met + "/Significance"; - v_MET_Significance_Ref.push_back( new TH1D((name_met + "_Significance_FinalClus").c_str(), ("MET / sqrt(sumet) for " + name_met + " CST; MET/#sqrt{SET} [#sqrt{GeV}]; Entries / 0.25 #sqrt{GeV}").c_str(), nbinp, 0., 25.) ); - v_MET_Significance_Ref.push_back( new TH1D((name_met + "_Significance_FinalTrk").c_str(), ("MET / sqrt(sumet) for " + name_met + " TST; MET/#sqrt{SET} [#sqrt{GeV}]; Entries / 0.25 #sqrt{GeV}").c_str(), nbinp, 0., 25.) ); - - m_MET_Significance_Ref[type] = v_MET_Significance_Ref; - - for(std::vector<TH1D*>::size_type i = 0; i < v_MET_Significance_Ref.size(); ++i) { - ATH_CHECK(regHist(m_MET_Significance_Ref[type].at(i),"MET/" + name_sub + "/",all)); - } - - name_sub = name_met + "/dPhi"; - v_MET_dPhi_Ref.push_back( new TH1D((name_met + "_dPhi_leadJetMET_FinalClus").c_str(), ("MET deltaPhi vs leading jet for " + name_met + " CST; #Delta#Phi(leadJet, MET); Entries / 0.05").c_str(), nbinphi, 0., binphi) ); - v_MET_dPhi_Ref.push_back( new TH1D((name_met + "_dPhi_subleadJetMET_FinalClus").c_str(), ("MET deltaPhi vs subleading jet for " + name_met + " CST; #Delta#Phi(subleadJet, MET); Entries / 0.05").c_str(), nbinphi, 0., binphi) ); - v_MET_dPhi_Ref.push_back( new TH1D((name_met + "_dPhi_leadLepMET_FinalClus").c_str(), ("MET deltaPhi vs leading lepton for " + name_met + " CST; #Delta#Phi(leadLep, MET); Entries / 0.05").c_str(), nbinphi, 0., binphi) ); - v_MET_dPhi_Ref.push_back( new TH1D((name_met + "_dPhi_leadJetMET_FinalTrk").c_str(), ("MET deltaPhi vs leading jet for " + name_met + " TST; #Delta#Phi(leadJet, MET); Entries / 0.05").c_str(), nbinphi, 0., binphi) ); - v_MET_dPhi_Ref.push_back( new TH1D((name_met + "_dPhi_subleadJetMET_FinalTrk").c_str(), ("MET deltaPhi vs subleading jet for " + name_met + " TST; #Delta#Phi(subleadJet, MET); Entries / 0.05").c_str(), nbinphi, 0., binphi) ); - v_MET_dPhi_Ref.push_back( new TH1D((name_met + "_dPhi_leadLepMET_FinalTrk").c_str(), ("MET deltaPhi vs leading lepton for " + name_met + " TST; #Delta#Phi(leadLep, MET); Entries / 0.05").c_str(), nbinphi, 0., binphi) ); - - m_MET_dPhi_Ref[type] = v_MET_dPhi_Ref; - - for(std::vector<TH1D*>::size_type i = 0; i < v_MET_dPhi_Ref.size(); ++i) { - ATH_CHECK(regHist(m_MET_dPhi_Ref[type].at(i),"MET/" + name_sub + "/",all)); - } - - name_sub = name_met + "/Correlations"; - std::vector<std::string> corrClus_names; - corrClus_names.emplace_back("RefEle"); - corrClus_names.emplace_back("RefGamma"); - corrClus_names.emplace_back("RefTau"); - corrClus_names.emplace_back("Muons"); - corrClus_names.emplace_back("RefJet"); - corrClus_names.emplace_back("SoftClus"); - std::vector<std::string> corrTrk_names; - corrTrk_names.emplace_back("RefEle"); - corrTrk_names.emplace_back("RefGamma"); - corrTrk_names.emplace_back("RefTau"); - corrTrk_names.emplace_back("Muons"); - corrTrk_names.emplace_back("RefJet"); - corrTrk_names.emplace_back("PVSoftTrk"); - - v_MET_CorrFinalClus_Ref.reserve(corrClus_names.size()); - -for(const auto& it : corrClus_names) { - v_MET_CorrFinalClus_Ref.push_back( new TH2D((name_met + "_" + it + "_FinalClus").c_str(), (name_met + " " + m_names[it] + " vs. CST MET; E_{T," + it + "}^{miss} [GeV]; E_{T,CST}^{miss} [GeV]; Entries").c_str(), nbinp, 0., suptmi, nbinp, 0., suptmi) ); - } - v_MET_CorrFinalTrk_Ref.reserve(corrTrk_names.size()); - -for(const auto& it : corrTrk_names) { - v_MET_CorrFinalTrk_Ref.push_back( new TH2D((name_met + "_" + it + "_FinalTrk").c_str(), (name_met + " " + m_names[it] + " vs. TST MET; E_{T," + it + "}^{miss} [GeV]; E_{T,TST}^{miss} [GeV]; Entries").c_str(), nbinp, 0., suptmi, nbinp, 0., suptmi) ); - } - - m_MET_CorrFinalClus_Ref[type] = v_MET_CorrFinalClus_Ref; - m_MET_CorrFinalTrk_Ref[type] = v_MET_CorrFinalTrk_Ref; - - for(std::vector<TH2D*>::size_type i = 0; i < v_MET_CorrFinalTrk_Ref.size(); ++i) { - ATH_CHECK(regHist(m_MET_CorrFinalTrk_Ref[type].at(i),"MET/" + name_sub + "/",all)); - } - for(std::vector<TH2D*>::size_type i = 0; i < v_MET_CorrFinalClus_Ref.size(); ++i) { - ATH_CHECK(regHist(m_MET_CorrFinalClus_Ref[type].at(i),"MET/" + name_sub + "/",all)); - } - - std::vector<std::string> sum_names; - sum_names.emplace_back("RefEle"); - sum_names.emplace_back("RefGamma"); - sum_names.emplace_back("RefTau"); - sum_names.emplace_back("Muons"); - sum_names.emplace_back("RefJet"); - - m_dir_met.clear(); - - for(const auto& it : sum_names) { - v_MET_Diff_Ref.push_back( new TH1D((name_met + "_Diff_" + it).c_str(), ("MET_Diff " + m_names[it] + " in " + name_met +"; E_{T}^{miss} - #Sigma p_{T} [GeV]; Entries / 3 GeV").c_str(), nbinpxy, -150, 150)); - v_MET_Diff_Ref_x.push_back( new TH1D((name_met + "_Diff_" + it +"_x").c_str(), ("MET_Diff x " + m_names[it] + " in " + name_met +"; E_{x}^{miss} - #Sigma p_{x} [GeV]; Entries / 3 GeV").c_str(), nbinpxy, -150, 150) ); - v_MET_Diff_Ref_y.push_back( new TH1D((name_met + "_Diff_" + it +"_y").c_str(), ("MET_Diff y " + m_names[it] + " in " + name_met +"; E_{y}^{miss} - #Sigma p_{y} [GeV]; Entries / 3 GeV").c_str(), nbinpxy, -150, 150) ); - v_MET_Diff_Ref_phi.push_back( new TH1D((name_met + "_Diff_" + it +"_phi").c_str(), ("MET_Diff phi " + m_names[it] + " in " + name_met +"; #Delta#Phi(E_{T}^{miss},#Sigma p_{T}); Entries / 0.1").c_str(), nbinphi,-binphi,binphi) ); - v_MET_Diff_Ref_sum.push_back( new TH1D((name_met + "_Diff_" + it +"_sum").c_str(), ("MET_Diff sumet " + m_names[it] + " in " + name_met +"; E_{T}^{sum} - #Sigma |p_{T}| [GeV]; Entries / 5 GeV").c_str(), nbinpxy, -250, 250) ); - m_dir_met.push_back("MET/" + name_met + "/Differences/" + it + "/"); - } - - m_MET_Diff_Ref[type] = v_MET_Diff_Ref; - m_MET_Diff_Ref_x[type] = v_MET_Diff_Ref_x; - m_MET_Diff_Ref_y[type] = v_MET_Diff_Ref_y; - m_MET_Diff_Ref_phi[type] = v_MET_Diff_Ref_phi; - m_MET_Diff_Ref_sum[type] = v_MET_Diff_Ref_sum; - - for(std::vector<TH1D*>::size_type i = 0; i < v_MET_Diff_Ref.size(); ++i) { - ATH_CHECK(regHist(m_MET_Diff_Ref[type].at(i),m_dir_met[i],all)); - ATH_CHECK(regHist(m_MET_Diff_Ref_x[type].at(i),m_dir_met[i],all)); - ATH_CHECK(regHist(m_MET_Diff_Ref_y[type].at(i),m_dir_met[i],all)); - ATH_CHECK(regHist(m_MET_Diff_Ref_phi[type].at(i),m_dir_met[i],all)); - ATH_CHECK(regHist(m_MET_Diff_Ref_sum[type].at(i),m_dir_met[i],all)); - } - - - //------------------------------------------------------------------------------------- - //Now the same for Rebuilt MET - - name_met = "MET_Rebuilt_" + type; - m_dir_met.clear(); - std::vector<TH1D*> v_MET_Reb; - std::vector<TH1D*> v_MET_Reb_x; - std::vector<TH1D*> v_MET_Reb_y; - std::vector<TH1D*> v_MET_Reb_phi; - std::vector<TH1D*> v_MET_Reb_sum; - std::vector<TH1D*> v_MET_Cumu_Reb; - std::vector<TH1D*> v_MET_Resolution_Reb; - std::vector<TH1D*> v_MET_Significance_Reb; - std::vector<TH1D*> v_MET_dPhi_Reb; - std::vector<TH2D*> v_MET_CorrFinalTrk_Reb; - std::vector<TH2D*> v_MET_CorrFinalClus_Reb; - std::vector<TH1D*> v_MET_Diff_Reb; - std::vector<TH1D*> v_MET_Diff_Reb_x; - std::vector<TH1D*> v_MET_Diff_Reb_y; - std::vector<TH1D*> v_MET_Diff_Reb_phi; - std::vector<TH1D*> v_MET_Diff_Reb_sum; - - for(const auto& term : m_terms) { - v_MET_Reb.push_back( new TH1D((name_met + "_" + term).c_str(), (name_met + " " + m_names[term] + "; E_{T}^{miss} [GeV]; Entries / 5 GeV").c_str(), nbinp, 0., suptmi) ); - v_MET_Reb_x.push_back( new TH1D((name_met + "_" + term + "_x").c_str(), (name_met + " " + m_names[term] + " x; E_{x}^{miss} [GeV]; Entries / 5 GeV").c_str(), nbinpxy, -suptmixy, suptmixy) ); - v_MET_Reb_y.push_back( new TH1D((name_met + "_" + term + "_y").c_str(), (name_met + " " + m_names[term] + " y; E_{y}^{miss} [GeV]; Entries / 5 GeV").c_str(), nbinpxy, -suptmixy, suptmixy) ); - v_MET_Reb_phi.push_back( new TH1D((name_met + "_" + term + "_phi").c_str(), (name_met + " " + m_names[term] + " phi; #Phi; Entries / 0.1").c_str(), nbinphi,-binphi,binphi) ); - v_MET_Reb_sum.push_back( new TH1D((name_met + "_" + term + "_sum").c_str(), (name_met + " " + m_names[term] + " sum; E_{T}^{sum} [GeV]; Entries / 25 GeV").c_str(), nbinE, lowET, suET) ); - m_dir_met.push_back("MET/" + name_met + "/Terms/" + term + "/"); - } - - m_MET_Reb[type] = v_MET_Reb; - m_MET_Reb_x[type] = v_MET_Reb_x; - m_MET_Reb_y[type] = v_MET_Reb_y; - m_MET_Reb_phi[type] = v_MET_Reb_phi; - m_MET_Reb_sum[type] = v_MET_Reb_sum; - - for(std::vector<TH1D*>::size_type i = 0; i < v_MET_Reb.size(); ++i) { - ATH_CHECK(regHist(m_MET_Reb[type].at(i),m_dir_met[i],all)); - ATH_CHECK(regHist(m_MET_Reb_x[type].at(i),m_dir_met[i],all)); - ATH_CHECK(regHist(m_MET_Reb_y[type].at(i),m_dir_met[i],all)); - ATH_CHECK(regHist(m_MET_Reb_phi[type].at(i),m_dir_met[i],all)); - ATH_CHECK(regHist(m_MET_Reb_sum[type].at(i),m_dir_met[i],all)); - } - - name_sub = name_met + "/Cumulative"; - v_MET_Cumu_Reb.push_back( new TH1D((name_met + "_Cumulative_FinalClus").c_str(), (name_met + " CST MET cumulative; E_{T}^{miss} [GeV]; Entries / 5 GeV").c_str(), nbinp, 0., suptmi) ); - v_MET_Cumu_Reb.push_back( new TH1D((name_met + "_Cumulative_FinalTrk").c_str(), (name_met + " TST MET cumulative; E_{T}^{miss} [GeV]; Entries / 5 GeV").c_str(), nbinp, 0., suptmi) ); - - m_MET_Cumu_Reb[type] = v_MET_Cumu_Reb; - - for(std::vector<TH1D*>::size_type i = 0; i < v_MET_Cumu_Reb.size(); ++i) { - ATH_CHECK(regHist(m_MET_Cumu_Reb[type].at(i),"MET/" + name_sub + "/",all)); - } - - name_sub = name_met + "/Residuals"; - v_MET_Resolution_Reb.push_back( new TH1D((name_met + "_Resolution_FinalClus_x").c_str(), ("x-Residual of CST MET in " + name_met + "; #Delta(E_{T,CST}^{miss}, E_{T,truth}^{miss})_{x} [GeV]; Entries / 5 GeV").c_str(), nbinpxy, -suptmixy, suptmixy) ); - v_MET_Resolution_Reb.push_back( new TH1D((name_met + "_Resolution_FinalClus_y").c_str(), ("y-Residual of CST MET in " + name_met + "; #Delta(E_{T,CST}^{miss}, E_{T,truth}^{miss})_{y} [GeV]; Entries / 5 GeV").c_str(), nbinpxy, -suptmixy, suptmixy) ); - v_MET_Resolution_Reb.push_back( new TH1D((name_met + "_Resolution_FinalTrk_x").c_str(), ("x-Residual of TST MET in " + name_met + "; #Delta(E_{T,TST}^{miss}, E_{T,truth}^{miss})_{x} [GeV]; Entries / 5 GeV").c_str(), nbinpxy, -suptmixy, suptmixy) ); - v_MET_Resolution_Reb.push_back( new TH1D((name_met + "_Resolution_FinalTrk_y").c_str(), ("y-Residual of TST MET in " + name_met + "; #Delta(E_{T,TST}^{miss}, E_{T,truth}^{miss})_{y} [GeV]; Entries / 5 GeV").c_str(), nbinpxy, -suptmixy, suptmixy) ); - m_MET_Resolution_Reb[type] = v_MET_Resolution_Reb; - - for(std::vector<TH1D*>::size_type i = 0; i < v_MET_Resolution_Reb.size(); ++i) { - ATH_CHECK(regHist(m_MET_Resolution_Reb[type].at(i),"MET/" + name_sub + "/",all)); - } - - name_sub = name_met + "/Significance"; - v_MET_Significance_Reb.push_back( new TH1D((name_met + "_Significance_FinalClus").c_str(), ("MET / sqrt(sumet) for " + name_met + " CST; MET/#sqrt{SET} [#sqrt{GeV}]; Entries / 0.25 #sqrt{GeV}").c_str(), nbinp, 0., 25.) ); - v_MET_Significance_Reb.push_back( new TH1D((name_met + "_Significance_FinalTrk").c_str(), ("MET / sqrt(sumet) for " + name_met + " TST; MET/sqrt{SET} [#sqrt{GeV}]; Entries / 0.25 #sqrt{GeV}").c_str(), nbinp, 0., 25.) ); - - m_MET_Significance_Reb[type] = v_MET_Significance_Reb; - - for(std::vector<TH1D*>::size_type i = 0; i < v_MET_Significance_Reb.size(); ++i) { - ATH_CHECK(regHist(m_MET_Significance_Reb[type].at(i),"MET/" + name_sub + "/",all)); - } - - name_sub = name_met + "/dPhi"; - v_MET_dPhi_Reb.push_back( new TH1D((name_met + "_dPhi_leadJetMET_FinalClus").c_str(), ("MET deltaPhi vs leading jet for " + name_met + " CST; #Delta#Phi(leadJet, MET); Entries / 0.05").c_str(), nbinphi, 0., binphi) ); - v_MET_dPhi_Reb.push_back( new TH1D((name_met + "_dPhi_subleadJetMET_FinalClus").c_str(), ("MET deltaPhi vs subleading jet for " + name_met + " CST; #Delta#Phi(subleadJet, MET); Entries / 0.05").c_str(), nbinphi, 0., binphi) ); - v_MET_dPhi_Reb.push_back( new TH1D((name_met + "_dPhi_leadLepMET_FinalClus").c_str(), ("MET deltaPhi vs leading lepton for " + name_met + " CST; #Delta#Phi(leadLep, MET); Entries / 0.05").c_str(), nbinphi, 0., binphi) ); - v_MET_dPhi_Reb.push_back( new TH1D((name_met + "_dPhi_leadJetMET_FinalTrk").c_str(), ("MET deltaPhi vs leading jet for " + name_met + " TST; #Delta#Phi(leadJet, MET); Entries / 0.05").c_str(), nbinphi, 0., binphi) ); - v_MET_dPhi_Reb.push_back( new TH1D((name_met + "_dPhi_subleadJetMET_FinalTrk").c_str(), ("MET deltaPhi vs subleading jet for " + name_met + " TST; #Delta#Phi(subleadJet, MET); Entries / 0.05").c_str(), nbinphi, 0., binphi) ); - v_MET_dPhi_Reb.push_back( new TH1D((name_met + "_dPhi_leadLepMET_FinalTrk").c_str(), ("MET deltaPhi vs leading lepton for " + name_met + " TST; #Delta#Phi(leadLep, MET); Entries / 0.05").c_str(), nbinphi, 0., binphi) ); - - m_MET_dPhi_Reb[type] = v_MET_dPhi_Reb; - - for(std::vector<TH1D*>::size_type i = 0; i < v_MET_dPhi_Reb.size(); ++i) { - ATH_CHECK(regHist(m_MET_dPhi_Reb[type].at(i),"MET/" + name_sub + "/",all)); - } - - name_sub = name_met + "/Correlations"; - v_MET_CorrFinalClus_Reb.reserve(corrClus_names.size()); - -for(const auto& it : corrClus_names) { - v_MET_CorrFinalClus_Reb.push_back( new TH2D((name_met + "_" + it + "_FinalClus").c_str(), (name_met + " " + m_names[it] + " vs. CST MET; E_{T," + it + "}^{miss} [GeV]; E_{T,CST}^{miss} [GeV]; Entries").c_str(), nbinp, 0., suptmi, nbinp, 0., suptmi) ); - } - v_MET_CorrFinalTrk_Reb.reserve(corrTrk_names.size()); - -for(const auto& it : corrTrk_names) { - v_MET_CorrFinalTrk_Reb.push_back( new TH2D((name_met + "_" + it + "_FinalTrk").c_str(), (name_met + " " + m_names[it] + " vs. TST MET; E_{T," + it + "}^{miss} [GeV]; E_{T,TST}^{miss} [GeV]; Entries").c_str(), nbinp, 0., suptmi, nbinp, 0., suptmi) ); - } - - m_MET_CorrFinalClus_Reb[type] = v_MET_CorrFinalClus_Reb; - m_MET_CorrFinalTrk_Reb[type] = v_MET_CorrFinalTrk_Reb; - - for(std::vector<TH2D*>::size_type i = 0; i < v_MET_CorrFinalTrk_Reb.size(); ++i) { - ATH_CHECK(regHist(m_MET_CorrFinalTrk_Reb[type].at(i),"MET/" + name_sub + "/",all)); - } - for(std::vector<TH2D*>::size_type i = 0; i < v_MET_CorrFinalClus_Reb.size(); ++i) { - ATH_CHECK(regHist(m_MET_CorrFinalClus_Reb[type].at(i),"MET/" + name_sub + "/",all)); - } - - m_dir_met.clear(); - - for(const auto& it : sum_names) { - v_MET_Diff_Reb.push_back( new TH1D((name_met + "_Diff_" + it).c_str(), ("MET_Diff " + m_names[it] + " in " + name_met +"; E_{T}^{miss} - #Sigma p_{T} [GeV]; Entries / 3 GeV").c_str(), nbinpxy, -150, 150)); - v_MET_Diff_Reb_x.push_back( new TH1D((name_met + "_Diff_" + it + "_x").c_str(), ("MET_Diff x " + m_names[it] + " in " + name_met +"; E_{x}^{miss} - #Sigma p_{x} [GeV]; Entries / 3 GeV").c_str(), nbinpxy, -150, 150) ); - v_MET_Diff_Reb_y.push_back( new TH1D((name_met + "_Diff_" + it + "_y").c_str(), ("MET_Diff y " + m_names[it] + " in " + name_met +"; E_{y}^{miss} - #Sigma p_{y} [GeV]; Entries / 3 GeV").c_str(), nbinpxy, -150, 150) ); - v_MET_Diff_Reb_phi.push_back( new TH1D((name_met + "_Diff_" + it + "_phi").c_str(), ("MET_Diff phi " + m_names[it] + " in " + name_met +"; #Delta#Phi(E_{T}^{miss}, #Sigma p_{T}); Entries / 0.1").c_str(), nbinphi,-binphi,binphi) ); - v_MET_Diff_Reb_sum.push_back( new TH1D((name_met + "_Diff_" + it + "_sum").c_str(), ("MET_Diff sumet " + m_names[it] + " in " + name_met +"; E_{T}^{sum} - #Sigma |p_{T}| [GeV]; Entries / 5 GeV").c_str(), nbinpxy, -250, 250) ); - m_dir_met.push_back("MET/" + name_met + "/Differences/" + it + "/"); - } - - m_MET_Diff_Reb[type] = v_MET_Diff_Reb; - m_MET_Diff_Reb_x[type] = v_MET_Diff_Reb_x; - m_MET_Diff_Reb_y[type] = v_MET_Diff_Reb_y; - m_MET_Diff_Reb_phi[type] = v_MET_Diff_Reb_phi; - m_MET_Diff_Reb_sum[type] = v_MET_Diff_Reb_sum; - - for(std::vector<TH1D*>::size_type i = 0; i < v_MET_Diff_Reb.size(); ++i) { - ATH_CHECK(regHist(m_MET_Diff_Reb[type].at(i),m_dir_met[i],all)); - ATH_CHECK(regHist(m_MET_Diff_Reb_x[type].at(i),m_dir_met[i],all)); - ATH_CHECK(regHist(m_MET_Diff_Reb_y[type].at(i),m_dir_met[i],all)); - ATH_CHECK(regHist(m_MET_Diff_Reb_phi[type].at(i),m_dir_met[i],all)); - ATH_CHECK(regHist(m_MET_Diff_Reb_sum[type].at(i),m_dir_met[i],all)); - } - } - - - //------------------------------------------------------------------------------------- - //Now MET_Track - - std::string name_met = "MET_Track"; - std::string dir = "MET/" + name_met + "/"; - - std::string sub_dir = dir + "Track/"; - ATH_CHECK(regHist(m_MET_Track = new TH1D("Track", (name_met + " " + m_names["Track"] + "; E_{T}^{miss} [GeV]; Entries / 5 GeV").c_str(), nbinp, 0., suptmi), sub_dir, all)); - ATH_CHECK(regHist(m_MET_Track_x = new TH1D("Track_x", (name_met + " " + m_names["Track"] + " x; E_{x}^{miss} [GeV]; Entries / 5 GeV").c_str(), nbinpxy, -suptmixy, suptmixy), sub_dir, all)); - ATH_CHECK(regHist(m_MET_Track_y = new TH1D("Track_y", (name_met + " " + m_names["Track"] + " y; E_{y}^{miss} [GeV]; Entries / 5 GeV").c_str(), nbinpxy, -suptmixy, suptmixy), sub_dir, all)); - ATH_CHECK(regHist(m_MET_Track_phi = new TH1D("Track_phi", (name_met + " " + m_names["Track"] + " phi; #Phi; Entries / 0.1").c_str(), nbinphi,-binphi,binphi), sub_dir, all)); - ATH_CHECK(regHist(m_MET_Track_sum = new TH1D("Track_sum", (name_met + " " + m_names["Track"] + " sum; E_{T}^{sum} [GeV]; Entries / 25 GeV").c_str(), nbinE, lowET, suET), sub_dir, all)); - - sub_dir = dir + "PVTrack_Nominal/"; - ATH_CHECK(regHist(m_MET_PVTrack_Nominal = new TH1D("PVTrack_Nominal", (name_met + " " + m_names["PVTrack_Nominal"] + " ; E_{T}^{miss} [GeV]; Entries / 5 GeV").c_str(), nbinp, 0., suptmi), sub_dir, all)); - ATH_CHECK(regHist(m_MET_PVTrack_Nominal_x = new TH1D("PVTrack_Nominal_x", (name_met + " " + m_names["PVTrack_Nominal"] + " x; E_{x}^{miss} [GeV]; Entries / 5 GeV").c_str(), nbinpxy, -suptmixy, suptmixy), sub_dir, all)); - ATH_CHECK(regHist(m_MET_PVTrack_Nominal_y = new TH1D("PVTrack_Nominal_y", (name_met + " " + m_names["PVTrack_Nominal"] + " y; E_{y}^{miss} [GeV]; Entries / 5 GeV").c_str(), nbinpxy, -suptmixy, suptmixy), sub_dir, all)); - ATH_CHECK(regHist(m_MET_PVTrack_Nominal_phi = new TH1D("PVTrack_Nominal_phi", (name_met + " " + m_names["PVTrack_Nominal"] + " phi; #Phi; Entries / 0.1").c_str(), nbinphi,-binphi,binphi), sub_dir, all)); - ATH_CHECK(regHist(m_MET_PVTrack_Nominal_sum = new TH1D("PVTrack_Nominal_sum", (name_met + " " + m_names["PVTrack_Nominal"] + " sum; E_{T}^{sum} [GeV]; Entries / 25 GeV").c_str(), nbinE, lowET, suET), sub_dir, all)); - - sub_dir = dir + "PVTrack_Pileup/"; - ATH_CHECK(regHist(m_MET_PVTrack_Pileup = new TH1D("PVTrack_Pileup", (name_met + " " + m_names["PVTrack_Pileup"] + "; E_{T}^{miss} [GeV]; Entries / 5 GeV").c_str(), nbinp, 0., suptmi), sub_dir, all)); - ATH_CHECK(regHist(m_MET_PVTrack_Pileup_x = new TH1D("PVTrack_Pileup_x", (name_met + " " + m_names["PVTrack_Pileup"] + " x; E_{x}^{miss} [GeV]; Entries / 5 GeV").c_str(), nbinpxy, -suptmixy, suptmixy), sub_dir, all)); - ATH_CHECK(regHist(m_MET_PVTrack_Pileup_y = new TH1D("PVTrack_Pileup_y", (name_met +" " + m_names["PVTrack_Pileup"] + " y; E_{y}^{miss} [GeV]; Entries / 5 GeV").c_str(), nbinpxy, -suptmixy, suptmixy), sub_dir, all)); - ATH_CHECK(regHist(m_MET_PVTrack_Pileup_phi = new TH1D("PVTrack_Pileup_phi", (name_met + " " + m_names["PVTrack_Pileup"] + " phi; #Phi; Entries / 0.1").c_str(), nbinphi,-binphi,binphi), sub_dir, all)); - ATH_CHECK(regHist(m_MET_PVTrack_Pileup_sum = new TH1D("PVTrack_Pileup_sum", (name_met + " " + m_names["PVTrack_Pileup"] + " sum; E_{T}^{sum} [GeV]; Entries / 25 GeV").c_str(), nbinE, lowET, suET), sub_dir, all)); - - //------------------------------------------------------------------------------------- - //Now MET_Calo - - name_met = "MET_Calo"; - dir = "MET/" + name_met + "/"; - - ATH_CHECK(regHist(m_MET_Calo = new TH1D("Calo", (name_met + " " + m_names["Calo"] + "; E_{T}^{miss} [GeV]; Entries / 5 GeV").c_str(), nbinp, 0., suptmi), dir, all)); - ATH_CHECK(regHist(m_MET_Calo_x = new TH1D("Calo_x", (name_met + " " + m_names["Calo"] + " x; E_{x}^{miss} [GeV]; Entries / 5 GeV").c_str(), nbinpxy, -suptmixy, suptmixy), dir, all)); - ATH_CHECK(regHist(m_MET_Calo_y = new TH1D("Calo_y", (name_met + " " + m_names["Calo"] + " y; E_{y}^{miss} [GeV]; Entries / 5 GeV").c_str(), nbinpxy, -suptmixy, suptmixy), dir, all)); - ATH_CHECK(regHist(m_MET_Calo_phi = new TH1D("Calo_phi", (name_met + " " + m_names["Calo"] + " phi; #Phi; Entries / 0.1").c_str(), nbinphi,-binphi,binphi), dir, all)); - ATH_CHECK(regHist(m_MET_Calo_sum = new TH1D("Calo_sum", (name_met + " " + m_names["Calo"] + " sum; E_{T}^{sum} [GeV]; Entries / 25 GeV").c_str(), nbinE, lowET, suET), dir, all)); + for (const auto& type : m_types){ + std::string name_met; + std::string name_sub; + std::vector<std::string> corrClus_names; + std::vector<std::string> corrTrk_names; + std::vector<std::string> sum_names; + std::string dir; + + corrClus_names.emplace_back("RefEle"); + corrClus_names.emplace_back("RefGamma"); + corrClus_names.emplace_back("RefTau"); + corrClus_names.emplace_back("Muons"); + corrClus_names.emplace_back("RefJet"); + corrClus_names.emplace_back("SoftClus"); + + corrTrk_names.emplace_back("RefEle"); + corrTrk_names.emplace_back("RefGamma"); + corrTrk_names.emplace_back("RefTau"); + corrTrk_names.emplace_back("Muons"); + corrTrk_names.emplace_back("RefJet"); + corrTrk_names.emplace_back("PVSoftTrk"); + + sum_names.emplace_back("RefEle"); + sum_names.emplace_back("RefGamma"); + sum_names.emplace_back("RefTau"); + sum_names.emplace_back("Muons"); + sum_names.emplace_back("RefJet"); + + //------------------------------------------------------------------------------------- + // First set-up Reference MET histograms (if we want them) + if (m_doMETRefPlots){ + name_met = "MET_Reference_" + type; + m_dir_met.clear(); + std::vector<TH1D*> v_MET_Ref; + std::vector<TH1D*> v_MET_Ref_x; + std::vector<TH1D*> v_MET_Ref_y; + std::vector<TH1D*> v_MET_Ref_phi; + std::vector<TH1D*> v_MET_Ref_sum; + std::vector<TH1D*> v_MET_Cumu_Ref; + std::vector<TH1D*> v_MET_Resolution_Ref; + std::vector<TH1D*> v_MET_Significance_Ref; + std::vector<TH1D*> v_MET_dPhi_Ref; + std::vector<TH2D*> v_MET_CorrFinalTrk_Ref; + std::vector<TH2D*> v_MET_CorrFinalClus_Ref; + std::vector<TH1D*> v_MET_Diff_Ref; + std::vector<TH1D*> v_MET_Diff_Ref_x; + std::vector<TH1D*> v_MET_Diff_Ref_y; + std::vector<TH1D*> v_MET_Diff_Ref_phi; + std::vector<TH1D*> v_MET_Diff_Ref_sum; + + for(const auto& term : m_terms) { + v_MET_Ref.push_back( new TH1D((name_met + "_" + term).c_str(), (name_met + " " + m_names[term] + "; E_{T}^{miss} [GeV]; Entries / 5 GeV").c_str(), nbinp, 0., suptmi) ); + v_MET_Ref_x.push_back( new TH1D((name_met + "_" + term +"_x").c_str(), (name_met + " " + m_names[term] + " x; E_{x}^{miss} [GeV]; Entries / 5 GeV").c_str(), nbinpxy, -suptmixy, suptmixy) ); + v_MET_Ref_y.push_back( new TH1D((name_met + "_" + term + "_y").c_str(), (name_met + " " + m_names[term] + " y; E_{y}^{miss} [GeV]; Entries / 5 GeV").c_str(), nbinpxy, -suptmixy, suptmixy) ); + v_MET_Ref_phi.push_back( new TH1D((name_met + "_" + term + "_phi").c_str(), (name_met + " " + m_names[term] + " phi; #Phi; Entries / 0.1").c_str(), nbinphi,-binphi,binphi) ); + v_MET_Ref_sum.push_back( new TH1D((name_met + "_" + term + "_sum").c_str(), (name_met + " " + m_names[term] + " sum; E_{T}^{sum} [GeV]; Entries / 25 GeV").c_str(), nbinE, lowET, suET) ); + m_dir_met.push_back("MET/" + name_met + "/Terms/" + term + "/"); + } + + m_MET_Ref[type] = v_MET_Ref; + m_MET_Ref_x[type] = v_MET_Ref_x; + m_MET_Ref_y[type] = v_MET_Ref_y; + m_MET_Ref_phi[type] = v_MET_Ref_phi; + m_MET_Ref_sum[type] = v_MET_Ref_sum; + + for(std::vector<TH1D*>::size_type i = 0; i < v_MET_Ref.size(); ++i) { + ATH_CHECK(regHist(m_MET_Ref[type].at(i),m_dir_met[i],all)); + ATH_CHECK(regHist(m_MET_Ref_x[type].at(i),m_dir_met[i],all)); + ATH_CHECK(regHist(m_MET_Ref_y[type].at(i),m_dir_met[i],all)); + ATH_CHECK(regHist(m_MET_Ref_phi[type].at(i),m_dir_met[i],all)); + ATH_CHECK(regHist(m_MET_Ref_sum[type].at(i),m_dir_met[i],all)); + } + + name_sub = name_met + "/Cumulative"; + v_MET_Cumu_Ref.push_back( new TH1D((name_met + "_Cumulative_FinalClus").c_str(), (name_met + " CST MET cumulative; E_{T}^{miss} [GeV]; Entries / 5 GeV").c_str(), nbinp, 0., suptmi) ); + v_MET_Cumu_Ref.push_back( new TH1D((name_met + "_Cumulative_FinalTrk").c_str(), (name_met + " TST MET cumulative; E_{T}^{miss} [GeV]; Entries / 5 GeV").c_str(), nbinp, 0., suptmi) ); + + m_MET_Cumu_Ref[type] = v_MET_Cumu_Ref; + + for(std::vector<TH1D*>::size_type i = 0; i < v_MET_Cumu_Ref.size(); ++i) { + ATH_CHECK(regHist(m_MET_Cumu_Ref[type].at(i),"MET/" + name_sub + "/",all)); + } + + name_sub = name_met + "/Residuals"; + v_MET_Resolution_Ref.push_back( new TH1D((name_met + "_Resolution_FinalClus_x").c_str(), ("x-Residual of CST MET in " + name_met + "; #Delta(E_{T,CST}^{miss}, E_{T,truth}^{miss})_{x} [GeV]; Entries / 5 GeV").c_str(), nbinpxy, -suptmixy, suptmixy) ); + v_MET_Resolution_Ref.push_back( new TH1D((name_met + "_Resolution_FinalClus_y").c_str(), ("y-Residual of CST MET in " + name_met + "; #Delta(E_{T,CST}^{miss}, E_{T,truth}^{miss})_{y} [GeV]; Entries / 5 GeV").c_str(), nbinpxy, -suptmixy, suptmixy) ); + v_MET_Resolution_Ref.push_back( new TH1D((name_met + "_Resolution_FinalTrk_x").c_str(), ("x-Residual of TST MET in " + name_met + "; #Delta(E_{T,TST}^{miss}, E_{T,truth}^{miss})_{x} [GeV]; Entries / 5 GeV").c_str(), nbinpxy, -suptmixy, suptmixy) ); + v_MET_Resolution_Ref.push_back( new TH1D((name_met + "_Resolution_FinalTrk_y").c_str(), ("y-Residual of TST MET in " + name_met + "; #Delta(E_{T,TST}^{miss}, E_{T,truth}^{miss})_{y} [GeV]; Entries / 5 GeV").c_str(), nbinpxy, -suptmixy, suptmixy) ); + + m_MET_Resolution_Ref[type] = v_MET_Resolution_Ref; + + for(std::vector<TH1D*>::size_type i = 0; i < v_MET_Resolution_Ref.size(); ++i) { + ATH_CHECK(regHist(m_MET_Resolution_Ref[type].at(i),"MET/" + name_sub + "/",all)); + } + + name_sub = name_met + "/Significance"; + v_MET_Significance_Ref.push_back( new TH1D((name_met + "_Significance_FinalClus").c_str(), ("MET / sqrt(sumet) for " + name_met + " CST; MET/#sqrt{SET} [#sqrt{GeV}]; Entries / 0.25 #sqrt{GeV}").c_str(), nbinp, 0., 25.) ); + v_MET_Significance_Ref.push_back( new TH1D((name_met + "_Significance_FinalTrk").c_str(), ("MET / sqrt(sumet) for " + name_met + " TST; MET/#sqrt{SET} [#sqrt{GeV}]; Entries / 0.25 #sqrt{GeV}").c_str(), nbinp, 0., 25.) ); + + m_MET_Significance_Ref[type] = v_MET_Significance_Ref; + + for(std::vector<TH1D*>::size_type i = 0; i < v_MET_Significance_Ref.size(); ++i) { + ATH_CHECK(regHist(m_MET_Significance_Ref[type].at(i),"MET/" + name_sub + "/",all)); + } + + name_sub = name_met + "/dPhi"; + v_MET_dPhi_Ref.push_back( new TH1D((name_met + "_dPhi_leadJetMET_FinalClus").c_str(), ("MET deltaPhi vs leading jet for " + name_met + " CST; #Delta#Phi(leadJet, MET); Entries / 0.05").c_str(), nbinphi, 0., binphi) ); + v_MET_dPhi_Ref.push_back( new TH1D((name_met + "_dPhi_subleadJetMET_FinalClus").c_str(), ("MET deltaPhi vs subleading jet for " + name_met + " CST; #Delta#Phi(subleadJet, MET); Entries / 0.05").c_str(), nbinphi, 0., binphi) ); + v_MET_dPhi_Ref.push_back( new TH1D((name_met + "_dPhi_leadLepMET_FinalClus").c_str(), ("MET deltaPhi vs leading lepton for " + name_met + " CST; #Delta#Phi(leadLep, MET); Entries / 0.05").c_str(), nbinphi, 0., binphi) ); + v_MET_dPhi_Ref.push_back( new TH1D((name_met + "_dPhi_leadJetMET_FinalTrk").c_str(), ("MET deltaPhi vs leading jet for " + name_met + " TST; #Delta#Phi(leadJet, MET); Entries / 0.05").c_str(), nbinphi, 0., binphi) ); + v_MET_dPhi_Ref.push_back( new TH1D((name_met + "_dPhi_subleadJetMET_FinalTrk").c_str(), ("MET deltaPhi vs subleading jet for " + name_met + " TST; #Delta#Phi(subleadJet, MET); Entries / 0.05").c_str(), nbinphi, 0., binphi) ); + v_MET_dPhi_Ref.push_back( new TH1D((name_met + "_dPhi_leadLepMET_FinalTrk").c_str(), ("MET deltaPhi vs leading lepton for " + name_met + " TST; #Delta#Phi(leadLep, MET); Entries / 0.05").c_str(), nbinphi, 0., binphi) ); + + m_MET_dPhi_Ref[type] = v_MET_dPhi_Ref; + + for(std::vector<TH1D*>::size_type i = 0; i < v_MET_dPhi_Ref.size(); ++i) { + ATH_CHECK(regHist(m_MET_dPhi_Ref[type].at(i),"MET/" + name_sub + "/",all)); + } + + name_sub = name_met + "/Correlations"; + + v_MET_CorrFinalClus_Ref.reserve(corrClus_names.size()); + + for(const auto& it : corrClus_names) { + v_MET_CorrFinalClus_Ref.push_back( new TH2D((name_met + "_" + it + "_FinalClus").c_str(), (name_met + " " + m_names[it] + " vs. CST MET; E_{T," + it + "}^{miss} [GeV]; E_{T,CST}^{miss} [GeV]; Entries").c_str(), nbinp, 0., suptmi, nbinp, 0., suptmi) ); + } + v_MET_CorrFinalTrk_Ref.reserve(corrTrk_names.size()); + + for(const auto& it : corrTrk_names) { + v_MET_CorrFinalTrk_Ref.push_back( new TH2D((name_met + "_" + it + "_FinalTrk").c_str(), (name_met + " " + m_names[it] + " vs. TST MET; E_{T," + it + "}^{miss} [GeV]; E_{T,TST}^{miss} [GeV]; Entries").c_str(), nbinp, 0., suptmi, nbinp, 0., suptmi) ); + } + + m_MET_CorrFinalClus_Ref[type] = v_MET_CorrFinalClus_Ref; + m_MET_CorrFinalTrk_Ref[type] = v_MET_CorrFinalTrk_Ref; + + for(std::vector<TH2D*>::size_type i = 0; i < v_MET_CorrFinalTrk_Ref.size(); ++i) { + ATH_CHECK(regHist(m_MET_CorrFinalTrk_Ref[type].at(i),"MET/" + name_sub + "/",all)); + } + for(std::vector<TH2D*>::size_type i = 0; i < v_MET_CorrFinalClus_Ref.size(); ++i) { + ATH_CHECK(regHist(m_MET_CorrFinalClus_Ref[type].at(i),"MET/" + name_sub + "/",all)); + } + + m_dir_met.clear(); + + for(const auto& it : sum_names) { + v_MET_Diff_Ref.push_back( new TH1D((name_met + "_Diff_" + it).c_str(), ("MET_Diff " + m_names[it] + " in " + name_met +"; E_{T}^{miss} - #Sigma p_{T} [GeV]; Entries / 3 GeV").c_str(), nbinpxy, -150, 150)); + v_MET_Diff_Ref_x.push_back( new TH1D((name_met + "_Diff_" + it +"_x").c_str(), ("MET_Diff x " + m_names[it] + " in " + name_met +"; E_{x}^{miss} - #Sigma p_{x} [GeV]; Entries / 3 GeV").c_str(), nbinpxy, -150, 150) ); + v_MET_Diff_Ref_y.push_back( new TH1D((name_met + "_Diff_" + it +"_y").c_str(), ("MET_Diff y " + m_names[it] + " in " + name_met +"; E_{y}^{miss} - #Sigma p_{y} [GeV]; Entries / 3 GeV").c_str(), nbinpxy, -150, 150) ); + v_MET_Diff_Ref_phi.push_back( new TH1D((name_met + "_Diff_" + it +"_phi").c_str(), ("MET_Diff phi " + m_names[it] + " in " + name_met +"; #Delta#Phi(E_{T}^{miss},#Sigma p_{T}); Entries / 0.1").c_str(), nbinphi,-binphi,binphi) ); + v_MET_Diff_Ref_sum.push_back( new TH1D((name_met + "_Diff_" + it +"_sum").c_str(), ("MET_Diff sumet " + m_names[it] + " in " + name_met +"; E_{T}^{sum} - #Sigma |p_{T}| [GeV]; Entries / 5 GeV").c_str(), nbinpxy, -250, 250) ); + m_dir_met.push_back("MET/" + name_met + "/Differences/" + it + "/"); + } + + m_MET_Diff_Ref[type] = v_MET_Diff_Ref; + m_MET_Diff_Ref_x[type] = v_MET_Diff_Ref_x; + m_MET_Diff_Ref_y[type] = v_MET_Diff_Ref_y; + m_MET_Diff_Ref_phi[type] = v_MET_Diff_Ref_phi; + m_MET_Diff_Ref_sum[type] = v_MET_Diff_Ref_sum; + + for(std::vector<TH1D*>::size_type i = 0; i < v_MET_Diff_Ref.size(); ++i) { + ATH_CHECK(regHist(m_MET_Diff_Ref[type].at(i),m_dir_met[i],all)); + ATH_CHECK(regHist(m_MET_Diff_Ref_x[type].at(i),m_dir_met[i],all)); + ATH_CHECK(regHist(m_MET_Diff_Ref_y[type].at(i),m_dir_met[i],all)); + ATH_CHECK(regHist(m_MET_Diff_Ref_phi[type].at(i),m_dir_met[i],all)); + ATH_CHECK(regHist(m_MET_Diff_Ref_sum[type].at(i),m_dir_met[i],all)); + } + // End of if-statement (m_doMETRefPlots) + } + + //------------------------------------------------------------------------------------- + // Now the same for Rebuilt MET + + name_met = "MET_Rebuilt_" + type; + m_dir_met.clear(); + std::vector<TH1D*> v_MET_Reb; + std::vector<TH1D*> v_MET_Reb_x; + std::vector<TH1D*> v_MET_Reb_y; + std::vector<TH1D*> v_MET_Reb_phi; + std::vector<TH1D*> v_MET_Reb_sum; + std::vector<TH1D*> v_MET_Cumu_Reb; + std::vector<TH1D*> v_MET_Resolution_Reb; + std::vector<TH1D*> v_MET_Significance_Reb; + std::vector<TH1D*> v_MET_dPhi_Reb; + std::vector<TH2D*> v_MET_CorrFinalTrk_Reb; + std::vector<TH2D*> v_MET_CorrFinalClus_Reb; + std::vector<TH1D*> v_MET_Diff_Reb; + std::vector<TH1D*> v_MET_Diff_Reb_x; + std::vector<TH1D*> v_MET_Diff_Reb_y; + std::vector<TH1D*> v_MET_Diff_Reb_phi; + std::vector<TH1D*> v_MET_Diff_Reb_sum; + + for(const auto& term : m_terms) { + v_MET_Reb.push_back( new TH1D((name_met + "_" + term).c_str(), (name_met + " " + m_names[term] + "; E_{T}^{miss} [GeV]; Entries / 5 GeV").c_str(), nbinp, 0., suptmi) ); + v_MET_Reb_x.push_back( new TH1D((name_met + "_" + term + "_x").c_str(), (name_met + " " + m_names[term] + " x; E_{x}^{miss} [GeV]; Entries / 5 GeV").c_str(), nbinpxy, -suptmixy, suptmixy) ); + v_MET_Reb_y.push_back( new TH1D((name_met + "_" + term + "_y").c_str(), (name_met + " " + m_names[term] + " y; E_{y}^{miss} [GeV]; Entries / 5 GeV").c_str(), nbinpxy, -suptmixy, suptmixy) ); + v_MET_Reb_phi.push_back( new TH1D((name_met + "_" + term + "_phi").c_str(), (name_met + " " + m_names[term] + " phi; #Phi; Entries / 0.1").c_str(), nbinphi,-binphi,binphi) ); + v_MET_Reb_sum.push_back( new TH1D((name_met + "_" + term + "_sum").c_str(), (name_met + " " + m_names[term] + " sum; E_{T}^{sum} [GeV]; Entries / 25 GeV").c_str(), nbinE, lowET, suET) ); + m_dir_met.push_back("MET/" + name_met + "/Terms/" + term + "/"); + } + + m_MET_Reb[type] = v_MET_Reb; + m_MET_Reb_x[type] = v_MET_Reb_x; + m_MET_Reb_y[type] = v_MET_Reb_y; + m_MET_Reb_phi[type] = v_MET_Reb_phi; + m_MET_Reb_sum[type] = v_MET_Reb_sum; + + for(std::vector<TH1D*>::size_type i = 0; i < v_MET_Reb.size(); ++i) { + ATH_CHECK(regHist(m_MET_Reb[type].at(i),m_dir_met[i],all)); + ATH_CHECK(regHist(m_MET_Reb_x[type].at(i),m_dir_met[i],all)); + ATH_CHECK(regHist(m_MET_Reb_y[type].at(i),m_dir_met[i],all)); + ATH_CHECK(regHist(m_MET_Reb_phi[type].at(i),m_dir_met[i],all)); + ATH_CHECK(regHist(m_MET_Reb_sum[type].at(i),m_dir_met[i],all)); + } + + name_sub = name_met + "/Cumulative"; + v_MET_Cumu_Reb.push_back( new TH1D((name_met + "_Cumulative_FinalClus").c_str(), (name_met + " CST MET cumulative; E_{T}^{miss} [GeV]; Entries / 5 GeV").c_str(), nbinp, 0., suptmi) ); + v_MET_Cumu_Reb.push_back( new TH1D((name_met + "_Cumulative_FinalTrk").c_str(), (name_met + " TST MET cumulative; E_{T}^{miss} [GeV]; Entries / 5 GeV").c_str(), nbinp, 0., suptmi) ); + + m_MET_Cumu_Reb[type] = v_MET_Cumu_Reb; + + for(std::vector<TH1D*>::size_type i = 0; i < v_MET_Cumu_Reb.size(); ++i) { + ATH_CHECK(regHist(m_MET_Cumu_Reb[type].at(i),"MET/" + name_sub + "/",all)); + } + + name_sub = name_met + "/Residuals"; + v_MET_Resolution_Reb.push_back( new TH1D((name_met + "_Resolution_FinalClus_x").c_str(), ("x-Residual of CST MET in " + name_met + "; #Delta(E_{T,CST}^{miss}, E_{T,truth}^{miss})_{x} [GeV]; Entries / 5 GeV").c_str(), nbinpxy, -suptmixy, suptmixy) ); + v_MET_Resolution_Reb.push_back( new TH1D((name_met + "_Resolution_FinalClus_y").c_str(), ("y-Residual of CST MET in " + name_met + "; #Delta(E_{T,CST}^{miss}, E_{T,truth}^{miss})_{y} [GeV]; Entries / 5 GeV").c_str(), nbinpxy, -suptmixy, suptmixy) ); + v_MET_Resolution_Reb.push_back( new TH1D((name_met + "_Resolution_FinalTrk_x").c_str(), ("x-Residual of TST MET in " + name_met + "; #Delta(E_{T,TST}^{miss}, E_{T,truth}^{miss})_{x} [GeV]; Entries / 5 GeV").c_str(), nbinpxy, -suptmixy, suptmixy) ); + v_MET_Resolution_Reb.push_back( new TH1D((name_met + "_Resolution_FinalTrk_y").c_str(), ("y-Residual of TST MET in " + name_met + "; #Delta(E_{T,TST}^{miss}, E_{T,truth}^{miss})_{y} [GeV]; Entries / 5 GeV").c_str(), nbinpxy, -suptmixy, suptmixy) ); + m_MET_Resolution_Reb[type] = v_MET_Resolution_Reb; + + for(std::vector<TH1D*>::size_type i = 0; i < v_MET_Resolution_Reb.size(); ++i) { + ATH_CHECK(regHist(m_MET_Resolution_Reb[type].at(i),"MET/" + name_sub + "/",all)); + } + + name_sub = name_met + "/Significance"; + v_MET_Significance_Reb.push_back( new TH1D((name_met + "_Significance_FinalClus").c_str(), ("MET / sqrt(sumet) for " + name_met + " CST; MET/#sqrt{SET} [#sqrt{GeV}]; Entries / 0.25 #sqrt{GeV}").c_str(), nbinp, 0., 25.) ); + v_MET_Significance_Reb.push_back( new TH1D((name_met + "_Significance_FinalTrk").c_str(), ("MET / sqrt(sumet) for " + name_met + " TST; MET/sqrt{SET} [#sqrt{GeV}]; Entries / 0.25 #sqrt{GeV}").c_str(), nbinp, 0., 25.) ); + + m_MET_Significance_Reb[type] = v_MET_Significance_Reb; + + for(std::vector<TH1D*>::size_type i = 0; i < v_MET_Significance_Reb.size(); ++i) { + ATH_CHECK(regHist(m_MET_Significance_Reb[type].at(i),"MET/" + name_sub + "/",all)); + } + + name_sub = name_met + "/dPhi"; + v_MET_dPhi_Reb.push_back( new TH1D((name_met + "_dPhi_leadJetMET_FinalClus").c_str(), ("MET deltaPhi vs leading jet for " + name_met + " CST; #Delta#Phi(leadJet, MET); Entries / 0.05").c_str(), nbinphi, 0., binphi) ); + v_MET_dPhi_Reb.push_back( new TH1D((name_met + "_dPhi_subleadJetMET_FinalClus").c_str(), ("MET deltaPhi vs subleading jet for " + name_met + " CST; #Delta#Phi(subleadJet, MET); Entries / 0.05").c_str(), nbinphi, 0., binphi) ); + v_MET_dPhi_Reb.push_back( new TH1D((name_met + "_dPhi_leadLepMET_FinalClus").c_str(), ("MET deltaPhi vs leading lepton for " + name_met + " CST; #Delta#Phi(leadLep, MET); Entries / 0.05").c_str(), nbinphi, 0., binphi) ); + v_MET_dPhi_Reb.push_back( new TH1D((name_met + "_dPhi_leadJetMET_FinalTrk").c_str(), ("MET deltaPhi vs leading jet for " + name_met + " TST; #Delta#Phi(leadJet, MET); Entries / 0.05").c_str(), nbinphi, 0., binphi) ); + v_MET_dPhi_Reb.push_back( new TH1D((name_met + "_dPhi_subleadJetMET_FinalTrk").c_str(), ("MET deltaPhi vs subleading jet for " + name_met + " TST; #Delta#Phi(subleadJet, MET); Entries / 0.05").c_str(), nbinphi, 0., binphi) ); + v_MET_dPhi_Reb.push_back( new TH1D((name_met + "_dPhi_leadLepMET_FinalTrk").c_str(), ("MET deltaPhi vs leading lepton for " + name_met + " TST; #Delta#Phi(leadLep, MET); Entries / 0.05").c_str(), nbinphi, 0., binphi) ); + + m_MET_dPhi_Reb[type] = v_MET_dPhi_Reb; + + for(std::vector<TH1D*>::size_type i = 0; i < v_MET_dPhi_Reb.size(); ++i) { + ATH_CHECK(regHist(m_MET_dPhi_Reb[type].at(i),"MET/" + name_sub + "/",all)); + } + + name_sub = name_met + "/Correlations"; + v_MET_CorrFinalClus_Reb.reserve(corrClus_names.size()); + + for(const auto& it : corrClus_names) { + v_MET_CorrFinalClus_Reb.push_back( new TH2D((name_met + "_" + it + "_FinalClus").c_str(), (name_met + " " + m_names[it] + " vs. CST MET; E_{T," + it + "}^{miss} [GeV]; E_{T,CST}^{miss} [GeV]; Entries").c_str(), nbinp, 0., suptmi, nbinp, 0., suptmi) ); + } + v_MET_CorrFinalTrk_Reb.reserve(corrTrk_names.size()); + + for(const auto& it : corrTrk_names) { + v_MET_CorrFinalTrk_Reb.push_back( new TH2D((name_met + "_" + it + "_FinalTrk").c_str(), (name_met + " " + m_names[it] + " vs. TST MET; E_{T," + it + "}^{miss} [GeV]; E_{T,TST}^{miss} [GeV]; Entries").c_str(), nbinp, 0., suptmi, nbinp, 0., suptmi) ); + } + + m_MET_CorrFinalClus_Reb[type] = v_MET_CorrFinalClus_Reb; + m_MET_CorrFinalTrk_Reb[type] = v_MET_CorrFinalTrk_Reb; + + for(std::vector<TH2D*>::size_type i = 0; i < v_MET_CorrFinalTrk_Reb.size(); ++i) { + ATH_CHECK(regHist(m_MET_CorrFinalTrk_Reb[type].at(i),"MET/" + name_sub + "/",all)); + } + for(std::vector<TH2D*>::size_type i = 0; i < v_MET_CorrFinalClus_Reb.size(); ++i) { + ATH_CHECK(regHist(m_MET_CorrFinalClus_Reb[type].at(i),"MET/" + name_sub + "/",all)); + } + + m_dir_met.clear(); + + for(const auto& it : sum_names) { + v_MET_Diff_Reb.push_back( new TH1D((name_met + "_Diff_" + it).c_str(), ("MET_Diff " + m_names[it] + " in " + name_met +"; E_{T}^{miss} - #Sigma p_{T} [GeV]; Entries / 3 GeV").c_str(), nbinpxy, -150, 150)); + v_MET_Diff_Reb_x.push_back( new TH1D((name_met + "_Diff_" + it + "_x").c_str(), ("MET_Diff x " + m_names[it] + " in " + name_met +"; E_{x}^{miss} - #Sigma p_{x} [GeV]; Entries / 3 GeV").c_str(), nbinpxy, -150, 150) ); + v_MET_Diff_Reb_y.push_back( new TH1D((name_met + "_Diff_" + it + "_y").c_str(), ("MET_Diff y " + m_names[it] + " in " + name_met +"; E_{y}^{miss} - #Sigma p_{y} [GeV]; Entries / 3 GeV").c_str(), nbinpxy, -150, 150) ); + v_MET_Diff_Reb_phi.push_back( new TH1D((name_met + "_Diff_" + it + "_phi").c_str(), ("MET_Diff phi " + m_names[it] + " in " + name_met +"; #Delta#Phi(E_{T}^{miss}, #Sigma p_{T}); Entries / 0.1").c_str(), nbinphi,-binphi,binphi) ); + v_MET_Diff_Reb_sum.push_back( new TH1D((name_met + "_Diff_" + it + "_sum").c_str(), ("MET_Diff sumet " + m_names[it] + " in " + name_met +"; E_{T}^{sum} - #Sigma |p_{T}| [GeV]; Entries / 5 GeV").c_str(), nbinpxy, -250, 250) ); + m_dir_met.push_back("MET/" + name_met + "/Differences/" + it + "/"); + } + + m_MET_Diff_Reb[type] = v_MET_Diff_Reb; + m_MET_Diff_Reb_x[type] = v_MET_Diff_Reb_x; + m_MET_Diff_Reb_y[type] = v_MET_Diff_Reb_y; + m_MET_Diff_Reb_phi[type] = v_MET_Diff_Reb_phi; + m_MET_Diff_Reb_sum[type] = v_MET_Diff_Reb_sum; + + for(std::vector<TH1D*>::size_type i = 0; i < v_MET_Diff_Reb.size(); ++i) { + ATH_CHECK(regHist(m_MET_Diff_Reb[type].at(i),m_dir_met[i],all)); + ATH_CHECK(regHist(m_MET_Diff_Reb_x[type].at(i),m_dir_met[i],all)); + ATH_CHECK(regHist(m_MET_Diff_Reb_y[type].at(i),m_dir_met[i],all)); + ATH_CHECK(regHist(m_MET_Diff_Reb_phi[type].at(i),m_dir_met[i],all)); + ATH_CHECK(regHist(m_MET_Diff_Reb_sum[type].at(i),m_dir_met[i],all)); + } + } + + //------------------------------------------------------------------------------------- + // Now MET_Track (only built if METRef is too) + if (m_doMETRefPlots){ + std::string name_met = "MET_Track"; + std::string dir = "MET/" + name_met + "/"; + std::string sub_dir; + + sub_dir = dir + "Track/"; + ATH_CHECK(regHist(m_MET_Track = new TH1D("Track", (name_met + " " + m_names["Track"] + "; E_{T}^{miss} [GeV]; Entries / 5 GeV").c_str(), nbinp, 0., suptmi), sub_dir, all)); + ATH_CHECK(regHist(m_MET_Track_x = new TH1D("Track_x", (name_met + " " + m_names["Track"] + " x; E_{x}^{miss} [GeV]; Entries / 5 GeV").c_str(), nbinpxy, -suptmixy, suptmixy), sub_dir, all)); + ATH_CHECK(regHist(m_MET_Track_y = new TH1D("Track_y", (name_met + " " + m_names["Track"] + " y; E_{y}^{miss} [GeV]; Entries / 5 GeV").c_str(), nbinpxy, -suptmixy, suptmixy), sub_dir, all)); + ATH_CHECK(regHist(m_MET_Track_phi = new TH1D("Track_phi", (name_met + " " + m_names["Track"] + " phi; #Phi; Entries / 0.1").c_str(), nbinphi,-binphi,binphi), sub_dir, all)); + ATH_CHECK(regHist(m_MET_Track_sum = new TH1D("Track_sum", (name_met + " " + m_names["Track"] + " sum; E_{T}^{sum} [GeV]; Entries / 25 GeV").c_str(), nbinE, lowET, suET), sub_dir, all)); + + sub_dir = dir + "PVTrack_Nominal/"; + ATH_CHECK(regHist(m_MET_PVTrack_Nominal = new TH1D("PVTrack_Nominal", (name_met + " " + m_names["PVTrack_Nominal"] + " ; E_{T}^{miss} [GeV]; Entries / 5 GeV").c_str(), nbinp, 0., suptmi), sub_dir, all)); + ATH_CHECK(regHist(m_MET_PVTrack_Nominal_x = new TH1D("PVTrack_Nominal_x", (name_met + " " + m_names["PVTrack_Nominal"] + " x; E_{x}^{miss} [GeV]; Entries / 5 GeV").c_str(), nbinpxy, -suptmixy, suptmixy), sub_dir, all)); + ATH_CHECK(regHist(m_MET_PVTrack_Nominal_y = new TH1D("PVTrack_Nominal_y", (name_met + " " + m_names["PVTrack_Nominal"] + " y; E_{y}^{miss} [GeV]; Entries / 5 GeV").c_str(), nbinpxy, -suptmixy, suptmixy), sub_dir, all)); + ATH_CHECK(regHist(m_MET_PVTrack_Nominal_phi = new TH1D("PVTrack_Nominal_phi", (name_met + " " + m_names["PVTrack_Nominal"] + " phi; #Phi; Entries / 0.1").c_str(), nbinphi,-binphi,binphi), sub_dir, all)); + ATH_CHECK(regHist(m_MET_PVTrack_Nominal_sum = new TH1D("PVTrack_Nominal_sum", (name_met + " " + m_names["PVTrack_Nominal"] + " sum; E_{T}^{sum} [GeV]; Entries / 25 GeV").c_str(), nbinE, lowET, suET), sub_dir, all)); + + sub_dir = dir + "PVTrack_Pileup/"; + ATH_CHECK(regHist(m_MET_PVTrack_Pileup = new TH1D("PVTrack_Pileup", (name_met + " " + m_names["PVTrack_Pileup"] + "; E_{T}^{miss} [GeV]; Entries / 5 GeV").c_str(), nbinp, 0., suptmi), sub_dir, all)); + ATH_CHECK(regHist(m_MET_PVTrack_Pileup_x = new TH1D("PVTrack_Pileup_x", (name_met + " " + m_names["PVTrack_Pileup"] + " x; E_{x}^{miss} [GeV]; Entries / 5 GeV").c_str(), nbinpxy, -suptmixy, suptmixy), sub_dir, all)); + ATH_CHECK(regHist(m_MET_PVTrack_Pileup_y = new TH1D("PVTrack_Pileup_y", (name_met +" " + m_names["PVTrack_Pileup"] + " y; E_{y}^{miss} [GeV]; Entries / 5 GeV").c_str(), nbinpxy, -suptmixy, suptmixy), sub_dir, all)); + ATH_CHECK(regHist(m_MET_PVTrack_Pileup_phi = new TH1D("PVTrack_Pileup_phi", (name_met + " " + m_names["PVTrack_Pileup"] + " phi; #Phi; Entries / 0.1").c_str(), nbinphi,-binphi,binphi), sub_dir, all)); + ATH_CHECK(regHist(m_MET_PVTrack_Pileup_sum = new TH1D("PVTrack_Pileup_sum", (name_met + " " + m_names["PVTrack_Pileup"] + " sum; E_{T}^{sum} [GeV]; Entries / 25 GeV").c_str(), nbinE, lowET, suET), sub_dir, all)); + } + + //------------------------------------------------------------------------------------- + //Now MET_Calo + + std::string name_met = "MET_Calo"; + std::string dir = "MET/" + name_met + "/"; + + ATH_CHECK(regHist(m_MET_Calo = new TH1D("Calo", (name_met + " " + m_names["Calo"] + "; E_{T}^{miss} [GeV]; Entries / 5 GeV").c_str(), nbinp, 0., suptmi), dir, all)); + ATH_CHECK(regHist(m_MET_Calo_x = new TH1D("Calo_x", (name_met + " " + m_names["Calo"] + " x; E_{x}^{miss} [GeV]; Entries / 5 GeV").c_str(), nbinpxy, -suptmixy, suptmixy), dir, all)); + ATH_CHECK(regHist(m_MET_Calo_y = new TH1D("Calo_y", (name_met + " " + m_names["Calo"] + " y; E_{y}^{miss} [GeV]; Entries / 5 GeV").c_str(), nbinpxy, -suptmixy, suptmixy), dir, all)); + ATH_CHECK(regHist(m_MET_Calo_phi = new TH1D("Calo_phi", (name_met + " " + m_names["Calo"] + " phi; #Phi; Entries / 0.1").c_str(), nbinphi,-binphi,binphi), dir, all)); + ATH_CHECK(regHist(m_MET_Calo_sum = new TH1D("Calo_sum", (name_met + " " + m_names["Calo"] + " sum; E_{T}^{sum} [GeV]; Entries / 25 GeV").c_str(), nbinE, lowET, suET), dir, all)); } @@ -572,8 +581,8 @@ for(const auto& it : corrTrk_names) { if(m_doTruth) { ATH_CHECK( evtStore()->retrieve(met_Truth,"MET_Truth") ); if (!met_Truth) { - ATH_MSG_ERROR ( "Failed to retrieve MET_Truth. Exiting." ); - return StatusCode::FAILURE; + ATH_MSG_ERROR ( "Failed to retrieve MET_Truth. Exiting." ); + return StatusCode::FAILURE; } } @@ -588,8 +597,8 @@ for(const auto& it : corrTrk_names) { bool is_muon = 0; for(const auto& mu : *muons) { if(Accept(mu)) { - metMuons.push_back(mu); - is_muon = 1; + metMuons.push_back(mu); + is_muon = 1; } } @@ -617,7 +626,7 @@ for(const auto& it : corrTrk_names) { ConstDataVector<PhotonContainer> metPhotons(SG::VIEW_ELEMENTS); for(const auto& ph : *photons) { if(Accept(ph)) { - metPhotons.push_back(ph); + metPhotons.push_back(ph); } } @@ -630,7 +639,7 @@ for(const auto& it : corrTrk_names) { ConstDataVector<TauJetContainer> metTaus(SG::VIEW_ELEMENTS); for(const auto& tau : *taus) { if(Accept(tau)) { - metTaus.push_back(tau); + metTaus.push_back(tau); } } @@ -649,14 +658,14 @@ for(const auto& it : corrTrk_names) { TLorentzVector phtlv = (*pho_itr)->p4(); bool passOR = 1; for(ele_itr = metElectrons.begin(); ele_itr != metElectrons.end(); ++ele_itr) { - if(phtlv.DeltaR((*ele_itr)->p4()) < 0.2) { - passOR = 0; - break; - } + if(phtlv.DeltaR((*ele_itr)->p4()) < 0.2) { + passOR = 0; + break; + } } if(passOR){ - metPhotonsOR.push_back(*pho_itr); - is_photon = 1; + metPhotonsOR.push_back(*pho_itr); + is_photon = 1; } } @@ -667,20 +676,20 @@ for(const auto& it : corrTrk_names) { TLorentzVector tautlv = (*taujet_itr)->p4(); bool passOR = 1; for(ele_itr = metElectrons.begin(); ele_itr != metElectrons.end(); ++ele_itr) { - if(tautlv.DeltaR((*ele_itr)->p4()) < 0.2) { - passOR = 0; - break; - } + if(tautlv.DeltaR((*ele_itr)->p4()) < 0.2) { + passOR = 0; + break; + } } for(pho_itr = metPhotonsOR.begin(); pho_itr != metPhotonsOR.end(); ++pho_itr) { - if(tautlv.DeltaR((*pho_itr)->p4()) < 0.2) { - passOR = 0; - break; - } + if(tautlv.DeltaR((*pho_itr)->p4()) < 0.2) { + passOR = 0; + break; + } } if(passOR){ - metTausOR.push_back(*taujet_itr); - is_tau = 1; + metTausOR.push_back(*taujet_itr); + is_tau = 1; } } @@ -734,52 +743,52 @@ for(const auto& it : corrTrk_names) { const xAOD::JetContainer* jets = nullptr; ATH_CHECK( evtStore()->retrieve(jets,name_jet) ); if (!jets) { - ATH_MSG_ERROR ( "Failed to retrieve Jet container: " << name_jet << ". Exiting." ); - return StatusCode::FAILURE; + ATH_MSG_ERROR ( "Failed to retrieve Jet container: " << name_jet << ". Exiting." ); + return StatusCode::FAILURE; } for(auto jet : *jets) { - float newjvt = (*jvtTool)->updateJvt(*jet); - jet->auxdecor<float>("NewJvt") = newjvt; + float newjvt = (*jvtTool)->updateJvt(*jet); + jet->auxdecor<float>("NewJvt") = newjvt; } ConstDataVector<JetContainer> metJets(SG::VIEW_ELEMENTS); - for(const auto& jet : *jets) { - metJets.push_back(jet); + for(const auto& jet : *jets) { + metJets.push_back(jet); } //Overlap Removal ConstDataVector<JetContainer> metJetsOR(SG::VIEW_ELEMENTS); bool is_jet = 0; for(jetc_itr = metJets.begin(); jetc_itr != metJets.end(); ++jetc_itr ) { - TLorentzVector jettlv = (*jetc_itr)->p4(); - bool passOR = 1; - for(ele_itr = metElectrons.begin(); ele_itr != metElectrons.end(); ++ele_itr) { - if(jettlv.DeltaR((*ele_itr)->p4()) < 0.2) { - passOR = 0; - break; - } - } - for(pho_itr = metPhotonsOR.begin(); pho_itr != metPhotonsOR.end(); ++pho_itr) { - if(jettlv.DeltaR((*pho_itr)->p4()) < 0.2) { - passOR = 0; - break; - } - } - for(taujet_itr = metTausOR.begin(); taujet_itr != metTausOR.end(); ++taujet_itr) { - if(jettlv.DeltaR((*taujet_itr)->p4()) < 0.2) { - passOR = 0; - break; - } - } - if(passOR){ - metJetsOR.push_back(*jetc_itr); - is_jet = 1; - } + TLorentzVector jettlv = (*jetc_itr)->p4(); + bool passOR = 1; + for(ele_itr = metElectrons.begin(); ele_itr != metElectrons.end(); ++ele_itr) { + if(jettlv.DeltaR((*ele_itr)->p4()) < 0.2) { + passOR = 0; + break; + } + } + for(pho_itr = metPhotonsOR.begin(); pho_itr != metPhotonsOR.end(); ++pho_itr) { + if(jettlv.DeltaR((*pho_itr)->p4()) < 0.2) { + passOR = 0; + break; + } + } + for(taujet_itr = metTausOR.begin(); taujet_itr != metTausOR.end(); ++taujet_itr) { + if(jettlv.DeltaR((*taujet_itr)->p4()) < 0.2) { + passOR = 0; + break; + } + } + if(passOR){ + metJetsOR.push_back(*jetc_itr); + is_jet = 1; + } } TLorentzVector jet_tlv; double sum_jet = 0; for(jetc_itr = metJetsOR.begin(); jetc_itr != metJetsOR.end(); ++jetc_itr ) { - jet_tlv += (*jetc_itr)->p4(); - sum_jet += (*jetc_itr)->pt(); + jet_tlv += (*jetc_itr)->p4(); + sum_jet += (*jetc_itr)->pt(); } // Fill MET_Ref @@ -789,93 +798,93 @@ for(const auto& it : corrTrk_names) { if(m_doMETRefPlots){ - // Retrieve Reference MET - ATH_CHECK( evtStore()->retrieve(met_Ref, name_met) ); - if (!met_Ref) { - ATH_MSG_ERROR ("Couldn't retrieve " << name_met); - return StatusCode::FAILURE; - } - - ATH_MSG_INFO( " MET_Ref_" << type << ":" ); - for(const auto& it : *met_Ref) { - const std::string& name = it->name(); - if(name == "RefEle"){ - (m_MET_Ref[type]).at(0)->Fill((*met_Ref)[name.c_str()]->met()/1000., weight); - (m_MET_Ref_x[type]).at(0)->Fill((*met_Ref)[name.c_str()]->mpx()/1000., weight); - (m_MET_Ref_y[type]).at(0)->Fill((*met_Ref)[name.c_str()]->mpy()/1000., weight); - (m_MET_Ref_phi[type]).at(0)->Fill((*met_Ref)[name.c_str()]->phi(), weight); - (m_MET_Ref_sum[type]).at(0)->Fill((*met_Ref)[name.c_str()]->sumet()/1000., weight); - } - if(name == "RefGamma"){ - (m_MET_Ref[type]).at(1)->Fill((*met_Ref)[name.c_str()]->met()/1000., weight); - (m_MET_Ref_x[type]).at(1)->Fill((*met_Ref)[name.c_str()]->mpx()/1000., weight); - (m_MET_Ref_y[type]).at(1)->Fill((*met_Ref)[name.c_str()]->mpy()/1000., weight); - (m_MET_Ref_phi[type]).at(1)->Fill((*met_Ref)[name.c_str()]->phi(), weight); - (m_MET_Ref_sum[type]).at(1)->Fill((*met_Ref)[name.c_str()]->sumet()/1000., weight); - } - if(name == "RefTau"){ - (m_MET_Ref[type]).at(2)->Fill((*met_Ref)[name.c_str()]->met()/1000., weight); - (m_MET_Ref_x[type]).at(2)->Fill((*met_Ref)[name.c_str()]->mpx()/1000., weight); - (m_MET_Ref_y[type]).at(2)->Fill((*met_Ref)[name.c_str()]->mpy()/1000., weight); - (m_MET_Ref_phi[type]).at(2)->Fill((*met_Ref)[name.c_str()]->phi(), weight); - (m_MET_Ref_sum[type]).at(2)->Fill((*met_Ref)[name.c_str()]->sumet()/1000., weight); - } - if(name == "Muons"){ - (m_MET_Ref[type]).at(3)->Fill((*met_Ref)[name.c_str()]->met()/1000., weight); - (m_MET_Ref_x[type]).at(3)->Fill((*met_Ref)[name.c_str()]->mpx()/1000., weight); - (m_MET_Ref_y[type]).at(3)->Fill((*met_Ref)[name.c_str()]->mpy()/1000., weight); - (m_MET_Ref_phi[type]).at(3)->Fill((*met_Ref)[name.c_str()]->phi(), weight); - (m_MET_Ref_sum[type]).at(3)->Fill((*met_Ref)[name.c_str()]->sumet()/1000., weight); - } - if(name == "RefJet"){ - (m_MET_Ref[type]).at(4)->Fill((*met_Ref)[name.c_str()]->met()/1000., weight); - (m_MET_Ref_x[type]).at(4)->Fill((*met_Ref)[name.c_str()]->mpx()/1000., weight); - (m_MET_Ref_y[type]).at(4)->Fill((*met_Ref)[name.c_str()]->mpy()/1000., weight); - (m_MET_Ref_phi[type]).at(4)->Fill((*met_Ref)[name.c_str()]->phi(), weight); - (m_MET_Ref_sum[type]).at(4)->Fill((*met_Ref)[name.c_str()]->sumet()/1000., weight); - } - if(name == "SoftClus"){ - (m_MET_Ref[type]).at(5)->Fill((*met_Ref)[name.c_str()]->met()/1000., weight); - (m_MET_Ref_x[type]).at(5)->Fill((*met_Ref)[name.c_str()]->mpx()/1000., weight); - (m_MET_Ref_y[type]).at(5)->Fill((*met_Ref)[name.c_str()]->mpy()/1000., weight); - (m_MET_Ref_phi[type]).at(5)->Fill((*met_Ref)[name.c_str()]->phi(), weight); - (m_MET_Ref_sum[type]).at(5)->Fill((*met_Ref)[name.c_str()]->sumet()/1000., weight); - } - if(name == "PVSoftTrk"){ - (m_MET_Ref[type]).at(6)->Fill((*met_Ref)[name.c_str()]->met()/1000., weight); - (m_MET_Ref_x[type]).at(6)->Fill((*met_Ref)[name.c_str()]->mpx()/1000., weight); - (m_MET_Ref_y[type]).at(6)->Fill((*met_Ref)[name.c_str()]->mpy()/1000., weight); - (m_MET_Ref_phi[type]).at(6)->Fill((*met_Ref)[name.c_str()]->phi(), weight); - (m_MET_Ref_sum[type]).at(6)->Fill((*met_Ref)[name.c_str()]->sumet()/1000., weight); - } - if(name == "FinalTrk"){ - (m_MET_Ref[type]).at(7)->Fill((*met_Ref)[name.c_str()]->met()/1000., weight); - (m_MET_Ref_x[type]).at(7)->Fill((*met_Ref)[name.c_str()]->mpx()/1000., weight); - (m_MET_Ref_y[type]).at(7)->Fill((*met_Ref)[name.c_str()]->mpy()/1000., weight); - (m_MET_Ref_phi[type]).at(7)->Fill((*met_Ref)[name.c_str()]->phi(), weight); - (m_MET_Ref_sum[type]).at(7)->Fill((*met_Ref)[name.c_str()]->sumet()/1000., weight); - } - if(name == "FinalClus"){ - (m_MET_Ref[type]).at(8)->Fill((*met_Ref)[name.c_str()]->met()/1000., weight); - (m_MET_Ref_x[type]).at(8)->Fill((*met_Ref)[name.c_str()]->mpx()/1000., weight); - (m_MET_Ref_y[type]).at(8)->Fill((*met_Ref)[name.c_str()]->mpy()/1000., weight); - (m_MET_Ref_phi[type]).at(8)->Fill((*met_Ref)[name.c_str()]->phi(), weight); - (m_MET_Ref_sum[type]).at(8)->Fill((*met_Ref)[name.c_str()]->sumet()/1000., weight); - } - } + // Retrieve Reference MET + ATH_CHECK( evtStore()->retrieve(met_Ref, name_met) ); + if (!met_Ref) { + ATH_MSG_ERROR ("Couldn't retrieve " << name_met); + return StatusCode::FAILURE; + } + + ATH_MSG_INFO( " MET_Ref_" << type << ":" ); + for(const auto& it : *met_Ref) { + const std::string& name = it->name(); + if(name == "RefEle"){ + (m_MET_Ref[type]).at(0)->Fill((*met_Ref)[name.c_str()]->met()/1000., weight); + (m_MET_Ref_x[type]).at(0)->Fill((*met_Ref)[name.c_str()]->mpx()/1000., weight); + (m_MET_Ref_y[type]).at(0)->Fill((*met_Ref)[name.c_str()]->mpy()/1000., weight); + (m_MET_Ref_phi[type]).at(0)->Fill((*met_Ref)[name.c_str()]->phi(), weight); + (m_MET_Ref_sum[type]).at(0)->Fill((*met_Ref)[name.c_str()]->sumet()/1000., weight); + } + if(name == "RefGamma"){ + (m_MET_Ref[type]).at(1)->Fill((*met_Ref)[name.c_str()]->met()/1000., weight); + (m_MET_Ref_x[type]).at(1)->Fill((*met_Ref)[name.c_str()]->mpx()/1000., weight); + (m_MET_Ref_y[type]).at(1)->Fill((*met_Ref)[name.c_str()]->mpy()/1000., weight); + (m_MET_Ref_phi[type]).at(1)->Fill((*met_Ref)[name.c_str()]->phi(), weight); + (m_MET_Ref_sum[type]).at(1)->Fill((*met_Ref)[name.c_str()]->sumet()/1000., weight); + } + if(name == "RefTau"){ + (m_MET_Ref[type]).at(2)->Fill((*met_Ref)[name.c_str()]->met()/1000., weight); + (m_MET_Ref_x[type]).at(2)->Fill((*met_Ref)[name.c_str()]->mpx()/1000., weight); + (m_MET_Ref_y[type]).at(2)->Fill((*met_Ref)[name.c_str()]->mpy()/1000., weight); + (m_MET_Ref_phi[type]).at(2)->Fill((*met_Ref)[name.c_str()]->phi(), weight); + (m_MET_Ref_sum[type]).at(2)->Fill((*met_Ref)[name.c_str()]->sumet()/1000., weight); + } + if(name == "Muons"){ + (m_MET_Ref[type]).at(3)->Fill((*met_Ref)[name.c_str()]->met()/1000., weight); + (m_MET_Ref_x[type]).at(3)->Fill((*met_Ref)[name.c_str()]->mpx()/1000., weight); + (m_MET_Ref_y[type]).at(3)->Fill((*met_Ref)[name.c_str()]->mpy()/1000., weight); + (m_MET_Ref_phi[type]).at(3)->Fill((*met_Ref)[name.c_str()]->phi(), weight); + (m_MET_Ref_sum[type]).at(3)->Fill((*met_Ref)[name.c_str()]->sumet()/1000., weight); + } + if(name == "RefJet"){ + (m_MET_Ref[type]).at(4)->Fill((*met_Ref)[name.c_str()]->met()/1000., weight); + (m_MET_Ref_x[type]).at(4)->Fill((*met_Ref)[name.c_str()]->mpx()/1000., weight); + (m_MET_Ref_y[type]).at(4)->Fill((*met_Ref)[name.c_str()]->mpy()/1000., weight); + (m_MET_Ref_phi[type]).at(4)->Fill((*met_Ref)[name.c_str()]->phi(), weight); + (m_MET_Ref_sum[type]).at(4)->Fill((*met_Ref)[name.c_str()]->sumet()/1000., weight); + } + if(name == "SoftClus"){ + (m_MET_Ref[type]).at(5)->Fill((*met_Ref)[name.c_str()]->met()/1000., weight); + (m_MET_Ref_x[type]).at(5)->Fill((*met_Ref)[name.c_str()]->mpx()/1000., weight); + (m_MET_Ref_y[type]).at(5)->Fill((*met_Ref)[name.c_str()]->mpy()/1000., weight); + (m_MET_Ref_phi[type]).at(5)->Fill((*met_Ref)[name.c_str()]->phi(), weight); + (m_MET_Ref_sum[type]).at(5)->Fill((*met_Ref)[name.c_str()]->sumet()/1000., weight); + } + if(name == "PVSoftTrk"){ + (m_MET_Ref[type]).at(6)->Fill((*met_Ref)[name.c_str()]->met()/1000., weight); + (m_MET_Ref_x[type]).at(6)->Fill((*met_Ref)[name.c_str()]->mpx()/1000., weight); + (m_MET_Ref_y[type]).at(6)->Fill((*met_Ref)[name.c_str()]->mpy()/1000., weight); + (m_MET_Ref_phi[type]).at(6)->Fill((*met_Ref)[name.c_str()]->phi(), weight); + (m_MET_Ref_sum[type]).at(6)->Fill((*met_Ref)[name.c_str()]->sumet()/1000., weight); + } + if(name == "FinalTrk"){ + (m_MET_Ref[type]).at(7)->Fill((*met_Ref)[name.c_str()]->met()/1000., weight); + (m_MET_Ref_x[type]).at(7)->Fill((*met_Ref)[name.c_str()]->mpx()/1000., weight); + (m_MET_Ref_y[type]).at(7)->Fill((*met_Ref)[name.c_str()]->mpy()/1000., weight); + (m_MET_Ref_phi[type]).at(7)->Fill((*met_Ref)[name.c_str()]->phi(), weight); + (m_MET_Ref_sum[type]).at(7)->Fill((*met_Ref)[name.c_str()]->sumet()/1000., weight); + } + if(name == "FinalClus"){ + (m_MET_Ref[type]).at(8)->Fill((*met_Ref)[name.c_str()]->met()/1000., weight); + (m_MET_Ref_x[type]).at(8)->Fill((*met_Ref)[name.c_str()]->mpx()/1000., weight); + (m_MET_Ref_y[type]).at(8)->Fill((*met_Ref)[name.c_str()]->mpy()/1000., weight); + (m_MET_Ref_phi[type]).at(8)->Fill((*met_Ref)[name.c_str()]->phi(), weight); + (m_MET_Ref_sum[type]).at(8)->Fill((*met_Ref)[name.c_str()]->sumet()/1000., weight); + } + } } //Prepare Rebuilding MET ATH_MSG_INFO( " Rebuilding MET_" << type ); MissingETContainer* met_Reb = new MissingETContainer(); if( evtStore()->record(met_Reb,("MET_Rebuilt"+type).c_str()).isFailure() ) { - ATH_MSG_WARNING("Unable to record MissingETContainer: MET_Rebuilt_" << type); - return StatusCode::FAILURE; + ATH_MSG_WARNING("Unable to record MissingETContainer: MET_Rebuilt_" << type); + return StatusCode::FAILURE; } MissingETAuxContainer* met_RebAux = new MissingETAuxContainer(); if( evtStore()->record(met_RebAux,("MET_Rebuilt"+type+"Aux").c_str()).isFailure() ) { - ATH_MSG_WARNING("Unable to record MissingETAuxContainer: MET_Rebuilt" << type); - return StatusCode::FAILURE; + ATH_MSG_WARNING("Unable to record MissingETAuxContainer: MET_Rebuilt" << type); + return StatusCode::FAILURE; } met_Reb->setStore(met_RebAux); @@ -883,14 +892,14 @@ for(const auto& it : corrTrk_names) { m_corename = "MET_Core_"+type; const MissingETAssociationMap* metMap = nullptr; if( evtStore()->retrieve(metMap, m_mapname).isFailure() ) { - ATH_MSG_WARNING("Unable to retrieve MissingETAssociationMap: " << m_mapname); - return StatusCode::SUCCESS; + ATH_MSG_WARNING("Unable to retrieve MissingETAssociationMap: " << m_mapname); + return StatusCode::SUCCESS; } MissingETAssociationHelper metHelper(metMap); const MissingETContainer* coreMet(nullptr); if( evtStore()->retrieve(coreMet, m_corename).isFailure() ) { - ATH_MSG_WARNING("Unable to retrieve MissingETContainer: " << m_corename); - return StatusCode::SUCCESS; + ATH_MSG_WARNING("Unable to retrieve MissingETContainer: " << m_corename); + return StatusCode::SUCCESS; } ATH_MSG_INFO( " MET_Rebuilt_" << type << ":" ); @@ -900,32 +909,32 @@ for(const auto& it : corrTrk_names) { // Electrons if( (*m_metmaker)->rebuildMET("RefEle", xAOD::Type::Electron, met_Reb, metElectrons.asDataVector(), metHelper).isFailure() ) { - ATH_MSG_WARNING("Failed to build electron term."); + ATH_MSG_WARNING("Failed to build electron term."); } // Photons if( (*m_metmaker)->rebuildMET("RefGamma", xAOD::Type::Photon, met_Reb, metPhotons.asDataVector(), metHelper).isFailure() ) { - ATH_MSG_WARNING("Failed to build photon term."); + ATH_MSG_WARNING("Failed to build photon term."); } // Taus if( (*m_metmaker)->rebuildMET("RefTau", xAOD::Type::Tau, met_Reb,metTaus.asDataVector(),metHelper).isFailure() ){ - ATH_MSG_WARNING("Failed to build tau term."); + ATH_MSG_WARNING("Failed to build tau term."); } // Muons if( (*m_metmaker)->rebuildMET("Muons", xAOD::Type::Muon, met_Reb, metMuons.asDataVector(), metHelper).isFailure() ) { - ATH_MSG_WARNING("Failed to build muon term."); + ATH_MSG_WARNING("Failed to build muon term."); } // Jets if( (*m_metmaker)->rebuildJetMET("RefJet", "SoftClus", "PVSoftTrk", met_Reb, jets, coreMet, metHelper, true).isFailure() ) { - ATH_MSG_WARNING("Failed to build jet and soft terms."); + ATH_MSG_WARNING("Failed to build jet and soft terms."); } MissingETBase::Types::bitmask_t trksource = static_cast<MissingETBase::Types::bitmask_t>(MissingETBase::Source::Signal::Track); if((*met_Reb)["PVSoftTrk"]) trksource = (*met_Reb)["PVSoftTrk"]->source(); if( met::buildMETSum("FinalTrk", met_Reb, trksource).isFailure() ){ - ATH_MSG_WARNING("Building MET FinalTrk sum failed."); + ATH_MSG_WARNING("Building MET FinalTrk sum failed."); } MissingETBase::Types::bitmask_t clsource; if (type == "AntiKt4EMTopo") clsource = static_cast<MissingETBase::Types::bitmask_t>(MissingETBase::Source::Signal::EMTopo); @@ -933,75 +942,75 @@ for(const auto& it : corrTrk_names) { if((*met_Reb)["SoftClus"]) clsource = (*met_Reb)["SoftClus"]->source(); if( met::buildMETSum("FinalClus", met_Reb, clsource).isFailure() ) { - ATH_MSG_WARNING("Building MET FinalClus sum failed."); + ATH_MSG_WARNING("Building MET FinalClus sum failed."); } // Fill MET_Reb for(const auto& it : *met_Reb) { - std::string name = it->name(); - if(name == "RefEle"){ - (m_MET_Reb[type]).at(0)->Fill((*met_Reb)[name.c_str()]->met()/1000., weight); - (m_MET_Reb_x[type]).at(0)->Fill((*met_Reb)[name.c_str()]->mpx()/1000., weight); - (m_MET_Reb_y[type]).at(0)->Fill((*met_Reb)[name.c_str()]->mpy()/1000., weight); - (m_MET_Reb_phi[type]).at(0)->Fill((*met_Reb)[name.c_str()]->phi(), weight); - (m_MET_Reb_sum[type]).at(0)->Fill((*met_Reb)[name.c_str()]->sumet()/1000., weight); - } - if(name == "RefGamma"){ - (m_MET_Reb[type]).at(1)->Fill((*met_Reb)[name.c_str()]->met()/1000., weight); - (m_MET_Reb_x[type]).at(1)->Fill((*met_Reb)[name.c_str()]->mpx()/1000., weight); - (m_MET_Reb_y[type]).at(1)->Fill((*met_Reb)[name.c_str()]->mpy()/1000., weight); - (m_MET_Reb_phi[type]).at(1)->Fill((*met_Reb)[name.c_str()]->phi(), weight); - (m_MET_Reb_sum[type]).at(1)->Fill((*met_Reb)[name.c_str()]->sumet()/1000., weight); - } - if(name == "RefTau"){ - (m_MET_Reb[type]).at(2)->Fill((*met_Reb)[name.c_str()]->met()/1000., weight); - (m_MET_Reb_x[type]).at(2)->Fill((*met_Reb)[name.c_str()]->mpx()/1000., weight); - (m_MET_Reb_y[type]).at(2)->Fill((*met_Reb)[name.c_str()]->mpy()/1000., weight); - (m_MET_Reb_phi[type]).at(2)->Fill((*met_Reb)[name.c_str()]->phi(), weight); - (m_MET_Reb_sum[type]).at(2)->Fill((*met_Reb)[name.c_str()]->sumet()/1000., weight); - } - if(name == "Muons"){ - (m_MET_Reb[type]).at(3)->Fill((*met_Reb)[name.c_str()]->met()/1000., weight); - (m_MET_Reb_x[type]).at(3)->Fill((*met_Reb)[name.c_str()]->mpx()/1000., weight); - (m_MET_Reb_y[type]).at(3)->Fill((*met_Reb)[name.c_str()]->mpy()/1000., weight); - (m_MET_Reb_phi[type]).at(3)->Fill((*met_Reb)[name.c_str()]->phi(), weight); - (m_MET_Reb_sum[type]).at(3)->Fill((*met_Reb)[name.c_str()]->sumet()/1000., weight); - } - if(name == "RefJet"){ - (m_MET_Reb[type]).at(4)->Fill((*met_Reb)[name.c_str()]->met()/1000., weight); - (m_MET_Reb_x[type]).at(4)->Fill((*met_Reb)[name.c_str()]->mpx()/1000., weight); - (m_MET_Reb_y[type]).at(4)->Fill((*met_Reb)[name.c_str()]->mpy()/1000., weight); - (m_MET_Reb_phi[type]).at(4)->Fill((*met_Reb)[name.c_str()]->phi(), weight); - (m_MET_Reb_sum[type]).at(4)->Fill((*met_Reb)[name.c_str()]->sumet()/1000., weight); - } - if(name == "SoftClus"){ - (m_MET_Reb[type]).at(5)->Fill((*met_Reb)[name.c_str()]->met()/1000., weight); - (m_MET_Reb_x[type]).at(5)->Fill((*met_Reb)[name.c_str()]->mpx()/1000., weight); - (m_MET_Reb_y[type]).at(5)->Fill((*met_Reb)[name.c_str()]->mpy()/1000., weight); - (m_MET_Reb_phi[type]).at(5)->Fill((*met_Reb)[name.c_str()]->phi(), weight); - (m_MET_Reb_sum[type]).at(5)->Fill((*met_Reb)[name.c_str()]->sumet()/1000., weight); - } - if(name == "PVSoftTrk"){ - (m_MET_Reb[type]).at(6)->Fill((*met_Reb)[name.c_str()]->met()/1000., weight); - (m_MET_Reb_x[type]).at(6)->Fill((*met_Reb)[name.c_str()]->mpx()/1000., weight); - (m_MET_Reb_y[type]).at(6)->Fill((*met_Reb)[name.c_str()]->mpy()/1000., weight); - (m_MET_Reb_phi[type]).at(6)->Fill((*met_Reb)[name.c_str()]->phi(), weight); - (m_MET_Reb_sum[type]).at(6)->Fill((*met_Reb)[name.c_str()]->sumet()/1000., weight); - } - if(name == "FinalTrk"){ - (m_MET_Reb[type]).at(7)->Fill((*met_Reb)[name.c_str()]->met()/1000., weight); - (m_MET_Reb_x[type]).at(7)->Fill((*met_Reb)[name.c_str()]->mpx()/1000., weight); - (m_MET_Reb_y[type]).at(7)->Fill((*met_Reb)[name.c_str()]->mpy()/1000., weight); - (m_MET_Reb_phi[type]).at(7)->Fill((*met_Reb)[name.c_str()]->phi(), weight); - (m_MET_Reb_sum[type]).at(7)->Fill((*met_Reb)[name.c_str()]->sumet()/1000., weight); - } - if(name == "FinalClus"){ - (m_MET_Reb[type]).at(8)->Fill((*met_Reb)[name.c_str()]->met()/1000., weight); - (m_MET_Reb_x[type]).at(8)->Fill((*met_Reb)[name.c_str()]->mpx()/1000., weight); - (m_MET_Reb_y[type]).at(8)->Fill((*met_Reb)[name.c_str()]->mpy()/1000., weight); - (m_MET_Reb_phi[type]).at(8)->Fill((*met_Reb)[name.c_str()]->phi(), weight); - (m_MET_Reb_sum[type]).at(8)->Fill((*met_Reb)[name.c_str()]->sumet()/1000., weight); - } + std::string name = it->name(); + if(name == "RefEle"){ + (m_MET_Reb[type]).at(0)->Fill((*met_Reb)[name.c_str()]->met()/1000., weight); + (m_MET_Reb_x[type]).at(0)->Fill((*met_Reb)[name.c_str()]->mpx()/1000., weight); + (m_MET_Reb_y[type]).at(0)->Fill((*met_Reb)[name.c_str()]->mpy()/1000., weight); + (m_MET_Reb_phi[type]).at(0)->Fill((*met_Reb)[name.c_str()]->phi(), weight); + (m_MET_Reb_sum[type]).at(0)->Fill((*met_Reb)[name.c_str()]->sumet()/1000., weight); + } + if(name == "RefGamma"){ + (m_MET_Reb[type]).at(1)->Fill((*met_Reb)[name.c_str()]->met()/1000., weight); + (m_MET_Reb_x[type]).at(1)->Fill((*met_Reb)[name.c_str()]->mpx()/1000., weight); + (m_MET_Reb_y[type]).at(1)->Fill((*met_Reb)[name.c_str()]->mpy()/1000., weight); + (m_MET_Reb_phi[type]).at(1)->Fill((*met_Reb)[name.c_str()]->phi(), weight); + (m_MET_Reb_sum[type]).at(1)->Fill((*met_Reb)[name.c_str()]->sumet()/1000., weight); + } + if(name == "RefTau"){ + (m_MET_Reb[type]).at(2)->Fill((*met_Reb)[name.c_str()]->met()/1000., weight); + (m_MET_Reb_x[type]).at(2)->Fill((*met_Reb)[name.c_str()]->mpx()/1000., weight); + (m_MET_Reb_y[type]).at(2)->Fill((*met_Reb)[name.c_str()]->mpy()/1000., weight); + (m_MET_Reb_phi[type]).at(2)->Fill((*met_Reb)[name.c_str()]->phi(), weight); + (m_MET_Reb_sum[type]).at(2)->Fill((*met_Reb)[name.c_str()]->sumet()/1000., weight); + } + if(name == "Muons"){ + (m_MET_Reb[type]).at(3)->Fill((*met_Reb)[name.c_str()]->met()/1000., weight); + (m_MET_Reb_x[type]).at(3)->Fill((*met_Reb)[name.c_str()]->mpx()/1000., weight); + (m_MET_Reb_y[type]).at(3)->Fill((*met_Reb)[name.c_str()]->mpy()/1000., weight); + (m_MET_Reb_phi[type]).at(3)->Fill((*met_Reb)[name.c_str()]->phi(), weight); + (m_MET_Reb_sum[type]).at(3)->Fill((*met_Reb)[name.c_str()]->sumet()/1000., weight); + } + if(name == "RefJet"){ + (m_MET_Reb[type]).at(4)->Fill((*met_Reb)[name.c_str()]->met()/1000., weight); + (m_MET_Reb_x[type]).at(4)->Fill((*met_Reb)[name.c_str()]->mpx()/1000., weight); + (m_MET_Reb_y[type]).at(4)->Fill((*met_Reb)[name.c_str()]->mpy()/1000., weight); + (m_MET_Reb_phi[type]).at(4)->Fill((*met_Reb)[name.c_str()]->phi(), weight); + (m_MET_Reb_sum[type]).at(4)->Fill((*met_Reb)[name.c_str()]->sumet()/1000., weight); + } + if(name == "SoftClus"){ + (m_MET_Reb[type]).at(5)->Fill((*met_Reb)[name.c_str()]->met()/1000., weight); + (m_MET_Reb_x[type]).at(5)->Fill((*met_Reb)[name.c_str()]->mpx()/1000., weight); + (m_MET_Reb_y[type]).at(5)->Fill((*met_Reb)[name.c_str()]->mpy()/1000., weight); + (m_MET_Reb_phi[type]).at(5)->Fill((*met_Reb)[name.c_str()]->phi(), weight); + (m_MET_Reb_sum[type]).at(5)->Fill((*met_Reb)[name.c_str()]->sumet()/1000., weight); + } + if(name == "PVSoftTrk"){ + (m_MET_Reb[type]).at(6)->Fill((*met_Reb)[name.c_str()]->met()/1000., weight); + (m_MET_Reb_x[type]).at(6)->Fill((*met_Reb)[name.c_str()]->mpx()/1000., weight); + (m_MET_Reb_y[type]).at(6)->Fill((*met_Reb)[name.c_str()]->mpy()/1000., weight); + (m_MET_Reb_phi[type]).at(6)->Fill((*met_Reb)[name.c_str()]->phi(), weight); + (m_MET_Reb_sum[type]).at(6)->Fill((*met_Reb)[name.c_str()]->sumet()/1000., weight); + } + if(name == "FinalTrk"){ + (m_MET_Reb[type]).at(7)->Fill((*met_Reb)[name.c_str()]->met()/1000., weight); + (m_MET_Reb_x[type]).at(7)->Fill((*met_Reb)[name.c_str()]->mpx()/1000., weight); + (m_MET_Reb_y[type]).at(7)->Fill((*met_Reb)[name.c_str()]->mpy()/1000., weight); + (m_MET_Reb_phi[type]).at(7)->Fill((*met_Reb)[name.c_str()]->phi(), weight); + (m_MET_Reb_sum[type]).at(7)->Fill((*met_Reb)[name.c_str()]->sumet()/1000., weight); + } + if(name == "FinalClus"){ + (m_MET_Reb[type]).at(8)->Fill((*met_Reb)[name.c_str()]->met()/1000., weight); + (m_MET_Reb_x[type]).at(8)->Fill((*met_Reb)[name.c_str()]->mpx()/1000., weight); + (m_MET_Reb_y[type]).at(8)->Fill((*met_Reb)[name.c_str()]->mpy()/1000., weight); + (m_MET_Reb_phi[type]).at(8)->Fill((*met_Reb)[name.c_str()]->phi(), weight); + (m_MET_Reb_sum[type]).at(8)->Fill((*met_Reb)[name.c_str()]->sumet()/1000., weight); + } } //Fill MET Angles @@ -1009,25 +1018,24 @@ for(const auto& it : corrTrk_names) { double leadPt = 0., subleadPt = 0., leadPhi = 0., subleadPhi = 0.; - for (auto jet_itr = jets->begin(); jet_itr != jets->end(); ++jet_itr) { - if ((*jet_itr)->pt() > leadPt && Accept(*jet_itr,JvtCut,jvtTool)) { - subleadPt = leadPt; - subleadPhi = leadPhi; - leadPt = (*jet_itr)->pt(); - leadPhi = (*jet_itr)->phi(); - } - else if ((*jet_itr)->pt() > subleadPt && Accept(*jet_itr,JvtCut,jvtTool)) { - subleadPt = (*jet_itr)->pt(); - subleadPhi = (*jet_itr)->phi(); - } + if ((*jet_itr)->pt() > leadPt && Accept(*jet_itr,JvtCut,jvtTool)) { + subleadPt = leadPt; + subleadPhi = leadPhi; + leadPt = (*jet_itr)->pt(); + leadPhi = (*jet_itr)->phi(); + } + else if ((*jet_itr)->pt() > subleadPt && Accept(*jet_itr,JvtCut,jvtTool)) { + subleadPt = (*jet_itr)->pt(); + subleadPhi = (*jet_itr)->phi(); + } } if(m_doMETRefPlots){ - (m_MET_dPhi_Ref[type]).at(0)->Fill( -remainder( leadPhi - (*met_Ref)["FinalClus"]->phi(), 2*M_PI ), weight ); - (m_MET_dPhi_Ref[type]).at(1)->Fill( -remainder( subleadPhi - (*met_Ref)["FinalClus"]->phi(), 2*M_PI ), weight ); - (m_MET_dPhi_Ref[type]).at(3)->Fill( -remainder( leadPhi - (*met_Ref)["FinalTrk"]->phi(), 2*M_PI ), weight ); - (m_MET_dPhi_Ref[type]).at(4)->Fill( -remainder( subleadPhi - (*met_Ref)["FinalTrk"]->phi(), 2*M_PI ), weight ); + (m_MET_dPhi_Ref[type]).at(0)->Fill( -remainder( leadPhi - (*met_Ref)["FinalClus"]->phi(), 2*M_PI ), weight ); + (m_MET_dPhi_Ref[type]).at(1)->Fill( -remainder( subleadPhi - (*met_Ref)["FinalClus"]->phi(), 2*M_PI ), weight ); + (m_MET_dPhi_Ref[type]).at(3)->Fill( -remainder( leadPhi - (*met_Ref)["FinalTrk"]->phi(), 2*M_PI ), weight ); + (m_MET_dPhi_Ref[type]).at(4)->Fill( -remainder( subleadPhi - (*met_Ref)["FinalTrk"]->phi(), 2*M_PI ), weight ); } (m_MET_dPhi_Reb[type]).at(0)->Fill( -remainder( leadPhi - (*met_Reb)["FinalClus"]->phi(), 2*M_PI ), weight ); @@ -1035,27 +1043,26 @@ for(const auto& it : corrTrk_names) { (m_MET_dPhi_Reb[type]).at(3)->Fill( -remainder( leadPhi - (*met_Reb)["FinalTrk"]->phi(), 2*M_PI ), weight ); (m_MET_dPhi_Reb[type]).at(4)->Fill( -remainder( subleadPhi - (*met_Reb)["FinalTrk"]->phi(), 2*M_PI ), weight ); - leadPt = 0.; leadPhi = 0.; xAOD::MuonContainer::const_iterator muon_itr = muons->begin(); xAOD::MuonContainer::const_iterator muon_end = muons->end(); for( ; muon_itr != muon_end; ++muon_itr ) { - if((*muon_itr)->pt() > leadPt) { - leadPt = (*muon_itr)->pt(); - leadPhi = (*muon_itr)->phi(); - } + if((*muon_itr)->pt() > leadPt) { + leadPt = (*muon_itr)->pt(); + leadPhi = (*muon_itr)->phi(); + } } xAOD::ElectronContainer::const_iterator electron_itr = electrons->begin(); xAOD::ElectronContainer::const_iterator electron_end = electrons->end(); for( ; electron_itr != electron_end; ++electron_itr ) { - if((*electron_itr)->pt() > leadPt) { - leadPt = (*electron_itr)->pt(); - leadPhi = (*electron_itr)->phi(); - } + if((*electron_itr)->pt() > leadPt) { + leadPt = (*electron_itr)->pt(); + leadPhi = (*electron_itr)->phi(); + } } (m_MET_dPhi_Reb[type]).at(2)->Fill( -remainder( leadPhi - (*met_Reb)["FinalClus"]->phi(), 2*M_PI ), weight ); @@ -1063,88 +1070,88 @@ for(const auto& it : corrTrk_names) { if(m_doMETRefPlots){ - (m_MET_dPhi_Ref[type]).at(2)->Fill( -remainder( leadPhi - (*met_Ref)["FinalClus"]->phi(), 2*M_PI ), weight ); - (m_MET_dPhi_Ref[type]).at(5)->Fill( -remainder( leadPhi - (*met_Ref)["FinalTrk"]->phi(), 2*M_PI ), weight ); - - //Fill Correlation Plots - //Reference - for(const auto& it : *met_Ref) { - const std::string& name = it->name(); - if(name == "RefEle"){ - (m_MET_CorrFinalTrk_Ref[type]).at(0)->Fill((*met_Ref)[name.c_str()]->met()/1000.,(*met_Ref)["FinalTrk"]->met()/1000., weight); - (m_MET_CorrFinalClus_Ref[type]).at(0)->Fill((*met_Ref)[name.c_str()]->met()/1000.,(*met_Ref)["FinalClus"]->met()/1000., weight); - } - if(name == "RefGamma"){ - (m_MET_CorrFinalTrk_Ref[type]).at(1)->Fill((*met_Ref)[name.c_str()]->met()/1000.,(*met_Ref)["FinalTrk"]->met()/1000., weight); - (m_MET_CorrFinalClus_Ref[type]).at(1)->Fill((*met_Ref)[name.c_str()]->met()/1000.,(*met_Ref)["FinalClus"]->met()/1000., weight); - } - if(name == "RefTau"){ - (m_MET_CorrFinalTrk_Ref[type]).at(2)->Fill((*met_Ref)[name.c_str()]->met()/1000.,(*met_Ref)["FinalTrk"]->met()/1000., weight); - (m_MET_CorrFinalClus_Ref[type]).at(2)->Fill((*met_Ref)[name.c_str()]->met()/1000.,(*met_Ref)["FinalClus"]->met()/1000., weight); - } - if(name == "Muons"){ - (m_MET_CorrFinalTrk_Ref[type]).at(3)->Fill((*met_Ref)[name.c_str()]->met()/1000.,(*met_Ref)["FinalTrk"]->met()/1000., weight); - (m_MET_CorrFinalClus_Ref[type]).at(3)->Fill((*met_Ref)[name.c_str()]->met()/1000.,(*met_Ref)["FinalClus"]->met()/1000., weight); - } - if(name == "RefJet"){ - (m_MET_CorrFinalTrk_Ref[type]).at(4)->Fill((*met_Ref)[name.c_str()]->met()/1000.,(*met_Ref)["FinalTrk"]->met()/1000., weight); - (m_MET_CorrFinalClus_Ref[type]).at(4)->Fill((*met_Ref)[name.c_str()]->met()/1000.,(*met_Ref)["FinalClus"]->met()/1000., weight); - } - if(name == "PVSoftTrk"){ - (m_MET_CorrFinalTrk_Ref[type]).at(5)->Fill((*met_Ref)[name.c_str()]->met()/1000.,(*met_Ref)["FinalTrk"]->met()/1000., weight); - } - if(name == "SoftClus"){ - (m_MET_CorrFinalClus_Ref[type]).at(5)->Fill((*met_Ref)[name.c_str()]->met()/1000.,(*met_Ref)["FinalClus"]->met()/1000., weight); - } - } + (m_MET_dPhi_Ref[type]).at(2)->Fill( -remainder( leadPhi - (*met_Ref)["FinalClus"]->phi(), 2*M_PI ), weight ); + (m_MET_dPhi_Ref[type]).at(5)->Fill( -remainder( leadPhi - (*met_Ref)["FinalTrk"]->phi(), 2*M_PI ), weight ); + + //Fill Correlation Plots + //Reference + for(const auto& it : *met_Ref) { + const std::string& name = it->name(); + if(name == "RefEle"){ + (m_MET_CorrFinalTrk_Ref[type]).at(0)->Fill((*met_Ref)[name.c_str()]->met()/1000.,(*met_Ref)["FinalTrk"]->met()/1000., weight); + (m_MET_CorrFinalClus_Ref[type]).at(0)->Fill((*met_Ref)[name.c_str()]->met()/1000.,(*met_Ref)["FinalClus"]->met()/1000., weight); + } + if(name == "RefGamma"){ + (m_MET_CorrFinalTrk_Ref[type]).at(1)->Fill((*met_Ref)[name.c_str()]->met()/1000.,(*met_Ref)["FinalTrk"]->met()/1000., weight); + (m_MET_CorrFinalClus_Ref[type]).at(1)->Fill((*met_Ref)[name.c_str()]->met()/1000.,(*met_Ref)["FinalClus"]->met()/1000., weight); + } + if(name == "RefTau"){ + (m_MET_CorrFinalTrk_Ref[type]).at(2)->Fill((*met_Ref)[name.c_str()]->met()/1000.,(*met_Ref)["FinalTrk"]->met()/1000., weight); + (m_MET_CorrFinalClus_Ref[type]).at(2)->Fill((*met_Ref)[name.c_str()]->met()/1000.,(*met_Ref)["FinalClus"]->met()/1000., weight); + } + if(name == "Muons"){ + (m_MET_CorrFinalTrk_Ref[type]).at(3)->Fill((*met_Ref)[name.c_str()]->met()/1000.,(*met_Ref)["FinalTrk"]->met()/1000., weight); + (m_MET_CorrFinalClus_Ref[type]).at(3)->Fill((*met_Ref)[name.c_str()]->met()/1000.,(*met_Ref)["FinalClus"]->met()/1000., weight); + } + if(name == "RefJet"){ + (m_MET_CorrFinalTrk_Ref[type]).at(4)->Fill((*met_Ref)[name.c_str()]->met()/1000.,(*met_Ref)["FinalTrk"]->met()/1000., weight); + (m_MET_CorrFinalClus_Ref[type]).at(4)->Fill((*met_Ref)[name.c_str()]->met()/1000.,(*met_Ref)["FinalClus"]->met()/1000., weight); + } + if(name == "PVSoftTrk"){ + (m_MET_CorrFinalTrk_Ref[type]).at(5)->Fill((*met_Ref)[name.c_str()]->met()/1000.,(*met_Ref)["FinalTrk"]->met()/1000., weight); + } + if(name == "SoftClus"){ + (m_MET_CorrFinalClus_Ref[type]).at(5)->Fill((*met_Ref)[name.c_str()]->met()/1000.,(*met_Ref)["FinalClus"]->met()/1000., weight); + } + } } //Rebuilt + for(const auto& it : *met_Reb) { - std::string name = it->name(); - if(name == "RefEle"){ - (m_MET_CorrFinalTrk_Reb[type]).at(0)->Fill((*met_Reb)[name.c_str()]->met()/1000.,(*met_Reb)["FinalTrk"]->met()/1000., weight); - (m_MET_CorrFinalClus_Reb[type]).at(0)->Fill((*met_Reb)[name.c_str()]->met()/1000.,(*met_Reb)["FinalClus"]->met()/1000., weight); - } - if(name == "RefGamma"){ - (m_MET_CorrFinalTrk_Reb[type]).at(1)->Fill((*met_Reb)[name.c_str()]->met()/1000.,(*met_Reb)["FinalTrk"]->met()/1000., weight); - (m_MET_CorrFinalClus_Reb[type]).at(1)->Fill((*met_Reb)[name.c_str()]->met()/1000.,(*met_Reb)["FinalClus"]->met()/1000., weight); - } - if(name == "RefTau"){ - (m_MET_CorrFinalTrk_Reb[type]).at(2)->Fill((*met_Reb)[name.c_str()]->met()/1000.,(*met_Reb)["FinalTrk"]->met()/1000., weight); - (m_MET_CorrFinalClus_Reb[type]).at(2)->Fill((*met_Reb)[name.c_str()]->met()/1000.,(*met_Reb)["FinalClus"]->met()/1000., weight); - } - if(name == "Muons"){ - (m_MET_CorrFinalTrk_Reb[type]).at(3)->Fill((*met_Reb)[name.c_str()]->met()/1000.,(*met_Reb)["FinalTrk"]->met()/1000., weight); - (m_MET_CorrFinalClus_Reb[type]).at(3)->Fill((*met_Reb)[name.c_str()]->met()/1000.,(*met_Reb)["FinalClus"]->met()/1000., weight); - } - if(name == "RefJet"){ - (m_MET_CorrFinalTrk_Reb[type]).at(4)->Fill((*met_Reb)[name.c_str()]->met()/1000.,(*met_Reb)["FinalTrk"]->met()/1000., weight); - (m_MET_CorrFinalClus_Reb[type]).at(4)->Fill((*met_Reb)[name.c_str()]->met()/1000.,(*met_Reb)["FinalClus"]->met()/1000., weight); - } - if(name == "PVSoftTrk"){ - (m_MET_CorrFinalTrk_Reb[type]).at(5)->Fill((*met_Reb)[name.c_str()]->met()/1000.,(*met_Reb)["FinalTrk"]->met()/1000., weight); - } - if(name == "SoftClus"){ - (m_MET_CorrFinalClus_Reb[type]).at(5)->Fill((*met_Reb)[name.c_str()]->met()/1000.,(*met_Reb)["FinalClus"]->met()/1000., weight); - } + std::string name = it->name(); + if(name == "RefEle"){ + (m_MET_CorrFinalTrk_Reb[type]).at(0)->Fill((*met_Reb)[name.c_str()]->met()/1000.,(*met_Reb)["FinalTrk"]->met()/1000., weight); + (m_MET_CorrFinalClus_Reb[type]).at(0)->Fill((*met_Reb)[name.c_str()]->met()/1000.,(*met_Reb)["FinalClus"]->met()/1000., weight); + } + if(name == "RefGamma"){ + (m_MET_CorrFinalTrk_Reb[type]).at(1)->Fill((*met_Reb)[name.c_str()]->met()/1000.,(*met_Reb)["FinalTrk"]->met()/1000., weight); + (m_MET_CorrFinalClus_Reb[type]).at(1)->Fill((*met_Reb)[name.c_str()]->met()/1000.,(*met_Reb)["FinalClus"]->met()/1000., weight); + } + if(name == "RefTau"){ + (m_MET_CorrFinalTrk_Reb[type]).at(2)->Fill((*met_Reb)[name.c_str()]->met()/1000.,(*met_Reb)["FinalTrk"]->met()/1000., weight); + (m_MET_CorrFinalClus_Reb[type]).at(2)->Fill((*met_Reb)[name.c_str()]->met()/1000.,(*met_Reb)["FinalClus"]->met()/1000., weight); + } + if(name == "Muons"){ + (m_MET_CorrFinalTrk_Reb[type]).at(3)->Fill((*met_Reb)[name.c_str()]->met()/1000.,(*met_Reb)["FinalTrk"]->met()/1000., weight); + (m_MET_CorrFinalClus_Reb[type]).at(3)->Fill((*met_Reb)[name.c_str()]->met()/1000.,(*met_Reb)["FinalClus"]->met()/1000., weight); + } + if(name == "RefJet"){ + (m_MET_CorrFinalTrk_Reb[type]).at(4)->Fill((*met_Reb)[name.c_str()]->met()/1000.,(*met_Reb)["FinalTrk"]->met()/1000., weight); + (m_MET_CorrFinalClus_Reb[type]).at(4)->Fill((*met_Reb)[name.c_str()]->met()/1000.,(*met_Reb)["FinalClus"]->met()/1000., weight); + } + if(name == "PVSoftTrk"){ + (m_MET_CorrFinalTrk_Reb[type]).at(5)->Fill((*met_Reb)[name.c_str()]->met()/1000.,(*met_Reb)["FinalTrk"]->met()/1000., weight); + } + if(name == "SoftClus"){ + (m_MET_CorrFinalClus_Reb[type]).at(5)->Fill((*met_Reb)[name.c_str()]->met()/1000.,(*met_Reb)["FinalClus"]->met()/1000., weight); + } } // Fill Resolution - if(m_doTruth) - { - ATH_MSG_INFO( " Resolution:" ); - if(m_doMETRefPlots){ - (m_MET_Resolution_Ref[type]).at(0)->Fill(((*met_Ref)["FinalClus"]->mpx()-(*met_Truth)["NonInt"]->mpx())/1000., weight); - (m_MET_Resolution_Ref[type]).at(1)->Fill(((*met_Ref)["FinalClus"]->mpy()-(*met_Truth)["NonInt"]->mpy())/1000., weight); - (m_MET_Resolution_Ref[type]).at(2)->Fill(((*met_Ref)["FinalTrk"]->mpx()-(*met_Truth)["NonInt"]->mpx())/1000., weight); - (m_MET_Resolution_Ref[type]).at(3)->Fill(((*met_Ref)["FinalTrk"]->mpy()-(*met_Truth)["NonInt"]->mpy())/1000., weight); - } - (m_MET_Resolution_Reb[type]).at(0)->Fill(((*met_Reb)["FinalClus"]->mpx()-(*met_Truth)["NonInt"]->mpx())/1000., weight); - (m_MET_Resolution_Reb[type]).at(1)->Fill(((*met_Reb)["FinalClus"]->mpy()-(*met_Truth)["NonInt"]->mpy())/1000., weight); - (m_MET_Resolution_Reb[type]).at(2)->Fill(((*met_Reb)["FinalTrk"]->mpx()-(*met_Truth)["NonInt"]->mpx())/1000., weight); - (m_MET_Resolution_Reb[type]).at(3)->Fill(((*met_Reb)["FinalTrk"]->mpy()-(*met_Truth)["NonInt"]->mpy())/1000., weight); - } + if(m_doTruth){ + ATH_MSG_INFO( " Resolution:" ); + if(m_doMETRefPlots){ + (m_MET_Resolution_Ref[type]).at(0)->Fill(((*met_Ref)["FinalClus"]->mpx()-(*met_Truth)["NonInt"]->mpx())/1000., weight); + (m_MET_Resolution_Ref[type]).at(1)->Fill(((*met_Ref)["FinalClus"]->mpy()-(*met_Truth)["NonInt"]->mpy())/1000., weight); + (m_MET_Resolution_Ref[type]).at(2)->Fill(((*met_Ref)["FinalTrk"]->mpx()-(*met_Truth)["NonInt"]->mpx())/1000., weight); + (m_MET_Resolution_Ref[type]).at(3)->Fill(((*met_Ref)["FinalTrk"]->mpy()-(*met_Truth)["NonInt"]->mpy())/1000., weight); + } + (m_MET_Resolution_Reb[type]).at(0)->Fill(((*met_Reb)["FinalClus"]->mpx()-(*met_Truth)["NonInt"]->mpx())/1000., weight); + (m_MET_Resolution_Reb[type]).at(1)->Fill(((*met_Reb)["FinalClus"]->mpy()-(*met_Truth)["NonInt"]->mpy())/1000., weight); + (m_MET_Resolution_Reb[type]).at(2)->Fill(((*met_Reb)["FinalTrk"]->mpx()-(*met_Truth)["NonInt"]->mpx())/1000., weight); + (m_MET_Resolution_Reb[type]).at(3)->Fill(((*met_Reb)["FinalTrk"]->mpy()-(*met_Truth)["NonInt"]->mpy())/1000., weight); + } //Fill MET significance if( (*met_Reb)["FinalClus"]->sumet() != 0) (m_MET_Significance_Reb[type]).at(0)->Fill((*met_Reb)["FinalClus"]->met()/sqrt((*met_Reb)["FinalClus"]->sumet()*1000.), weight); @@ -1152,159 +1159,159 @@ for(const auto& it : corrTrk_names) { TLorentzVector target_tlv; if(m_doMETRefPlots){ - //Fill MET Significance - ATH_MSG_INFO( " MET_significance:" ); - if( (*met_Ref)["FinalClus"]->sumet() != 0) (m_MET_Significance_Ref[type]).at(0)->Fill((*met_Ref)["FinalClus"]->met()/sqrt((*met_Ref)["FinalClus"]->sumet()*1000.), weight); - if( (*met_Ref)["FinalTrk"]->sumet() != 0) (m_MET_Significance_Ref[type]).at(1)->Fill((*met_Ref)["FinalTrk"]->met()/sqrt((*met_Ref)["FinalTrk"]->sumet()*1000.), weight); - - //Fill Diff histograms - for(const auto& it : *met_Ref) { - if(it->name() == "RefEle"){ - if(is_electron or (it->sumet() > 0)){ - target_tlv.SetPxPyPzE(-it->mpx(), -it->mpy(), 0, it->met()); - (m_MET_Diff_Ref[type]).at(0)->Fill((target_tlv.Pt() - el_tlv.Pt())/1000., weight); - (m_MET_Diff_Ref_x[type]).at(0)->Fill((target_tlv.Px() - el_tlv.Px())/1000., weight); - (m_MET_Diff_Ref_y[type]).at(0)->Fill((target_tlv.Py() - el_tlv.Py())/1000., weight); - (m_MET_Diff_Ref_phi[type]).at(0)->Fill(el_tlv.DeltaPhi(target_tlv), weight); - (m_MET_Diff_Ref_sum[type]).at(0)->Fill((it->sumet() - sum_el)/1000., weight); - } - } - if(it->name() == "RefGamma"){ - if(is_photon or (it->sumet() > 0)){ - target_tlv.SetPxPyPzE(-it->mpx(), -it->mpy(), 0, it->met()); - (m_MET_Diff_Ref[type]).at(1)->Fill((target_tlv.Pt() - photon_tlv.Pt())/1000., weight); - (m_MET_Diff_Ref_x[type]).at(1)->Fill((target_tlv.Px() - photon_tlv.Px())/1000., weight); - (m_MET_Diff_Ref_y[type]).at(1)->Fill((target_tlv.Py() - photon_tlv.Py())/1000., weight); - (m_MET_Diff_Ref_phi[type]).at(1)->Fill(photon_tlv.DeltaPhi(target_tlv), weight); - (m_MET_Diff_Ref_sum[type]).at(1)->Fill((it->sumet() - sum_photon)/1000., weight); - } - } - if(it->name() == "RefTau"){ - if(is_tau or (it->sumet() > 0)){ - target_tlv.SetPxPyPzE(-it->mpx(), -it->mpy(), 0, it->met()); - (m_MET_Diff_Ref[type]).at(2)->Fill((target_tlv.Pt() - tau_tlv.Pt())/1000., weight); - (m_MET_Diff_Ref_x[type]).at(2)->Fill((target_tlv.Px() - tau_tlv.Px())/1000., weight); - (m_MET_Diff_Ref_y[type]).at(2)->Fill((target_tlv.Py() - tau_tlv.Py())/1000., weight); - (m_MET_Diff_Ref_phi[type]).at(2)->Fill(tau_tlv.DeltaPhi(target_tlv), weight); - (m_MET_Diff_Ref_sum[type]).at(2)->Fill((it->sumet() - sum_tau)/1000., weight); - } - } - if(it->name() == "Muons"){ - if(is_muon or (it->sumet() > 0)){ - target_tlv.SetPxPyPzE(-it->mpx(), -it->mpy(), 0, it->met()); - (m_MET_Diff_Ref[type]).at(3)->Fill((target_tlv.Pt() - mu_tlv.Pt())/1000., weight); - (m_MET_Diff_Ref_x[type]).at(3)->Fill((target_tlv.Px() - mu_tlv.Px())/1000., weight); - (m_MET_Diff_Ref_y[type]).at(3)->Fill((target_tlv.Py() - mu_tlv.Py())/1000., weight); - (m_MET_Diff_Ref_phi[type]).at(3)->Fill(mu_tlv.DeltaPhi(target_tlv), weight); - (m_MET_Diff_Ref_sum[type]).at(3)->Fill((it->sumet() - sum_mu)/1000., weight); - } - } - if(it->name() == "RefJet"){ - if(is_jet or (it->sumet() > 0)){ - target_tlv.SetPxPyPzE(-it->mpx(), -it->mpy(), 0, it->met()); - (m_MET_Diff_Ref[type]).at(4)->Fill((target_tlv.Pt() - jet_tlv.Pt())/1000., weight); - (m_MET_Diff_Ref_x[type]).at(4)->Fill((target_tlv.Px() - jet_tlv.Px())/1000., weight); - (m_MET_Diff_Ref_y[type]).at(4)->Fill((target_tlv.Py() - jet_tlv.Py())/1000., weight); - (m_MET_Diff_Ref_phi[type]).at(4)->Fill(jet_tlv.DeltaPhi(target_tlv), weight); - (m_MET_Diff_Ref_sum[type]).at(4)->Fill((it->sumet() - sum_jet)/1000., weight); - } - } - } + //Fill MET Significance + ATH_MSG_INFO( " MET_significance:" ); + if( (*met_Ref)["FinalClus"]->sumet() != 0) (m_MET_Significance_Ref[type]).at(0)->Fill((*met_Ref)["FinalClus"]->met()/sqrt((*met_Ref)["FinalClus"]->sumet()*1000.), weight); + if( (*met_Ref)["FinalTrk"]->sumet() != 0) (m_MET_Significance_Ref[type]).at(1)->Fill((*met_Ref)["FinalTrk"]->met()/sqrt((*met_Ref)["FinalTrk"]->sumet()*1000.), weight); + + //Fill Diff histograms + for(const auto& it : *met_Ref) { + if(it->name() == "RefEle"){ + if(is_electron or (it->sumet() > 0)){ + target_tlv.SetPxPyPzE(-it->mpx(), -it->mpy(), 0, it->met()); + (m_MET_Diff_Ref[type]).at(0)->Fill((target_tlv.Pt() - el_tlv.Pt())/1000., weight); + (m_MET_Diff_Ref_x[type]).at(0)->Fill((target_tlv.Px() - el_tlv.Px())/1000., weight); + (m_MET_Diff_Ref_y[type]).at(0)->Fill((target_tlv.Py() - el_tlv.Py())/1000., weight); + (m_MET_Diff_Ref_phi[type]).at(0)->Fill(el_tlv.DeltaPhi(target_tlv), weight); + (m_MET_Diff_Ref_sum[type]).at(0)->Fill((it->sumet() - sum_el)/1000., weight); + } + } + if(it->name() == "RefGamma"){ + if(is_photon or (it->sumet() > 0)){ + target_tlv.SetPxPyPzE(-it->mpx(), -it->mpy(), 0, it->met()); + (m_MET_Diff_Ref[type]).at(1)->Fill((target_tlv.Pt() - photon_tlv.Pt())/1000., weight); + (m_MET_Diff_Ref_x[type]).at(1)->Fill((target_tlv.Px() - photon_tlv.Px())/1000., weight); + (m_MET_Diff_Ref_y[type]).at(1)->Fill((target_tlv.Py() - photon_tlv.Py())/1000., weight); + (m_MET_Diff_Ref_phi[type]).at(1)->Fill(photon_tlv.DeltaPhi(target_tlv), weight); + (m_MET_Diff_Ref_sum[type]).at(1)->Fill((it->sumet() - sum_photon)/1000., weight); + } + } + if(it->name() == "RefTau"){ + if(is_tau or (it->sumet() > 0)){ + target_tlv.SetPxPyPzE(-it->mpx(), -it->mpy(), 0, it->met()); + (m_MET_Diff_Ref[type]).at(2)->Fill((target_tlv.Pt() - tau_tlv.Pt())/1000., weight); + (m_MET_Diff_Ref_x[type]).at(2)->Fill((target_tlv.Px() - tau_tlv.Px())/1000., weight); + (m_MET_Diff_Ref_y[type]).at(2)->Fill((target_tlv.Py() - tau_tlv.Py())/1000., weight); + (m_MET_Diff_Ref_phi[type]).at(2)->Fill(tau_tlv.DeltaPhi(target_tlv), weight); + (m_MET_Diff_Ref_sum[type]).at(2)->Fill((it->sumet() - sum_tau)/1000., weight); + } + } + if(it->name() == "Muons"){ + if(is_muon or (it->sumet() > 0)){ + target_tlv.SetPxPyPzE(-it->mpx(), -it->mpy(), 0, it->met()); + (m_MET_Diff_Ref[type]).at(3)->Fill((target_tlv.Pt() - mu_tlv.Pt())/1000., weight); + (m_MET_Diff_Ref_x[type]).at(3)->Fill((target_tlv.Px() - mu_tlv.Px())/1000., weight); + (m_MET_Diff_Ref_y[type]).at(3)->Fill((target_tlv.Py() - mu_tlv.Py())/1000., weight); + (m_MET_Diff_Ref_phi[type]).at(3)->Fill(mu_tlv.DeltaPhi(target_tlv), weight); + (m_MET_Diff_Ref_sum[type]).at(3)->Fill((it->sumet() - sum_mu)/1000., weight); + } + } + if(it->name() == "RefJet"){ + if(is_jet or (it->sumet() > 0)){ + target_tlv.SetPxPyPzE(-it->mpx(), -it->mpy(), 0, it->met()); + (m_MET_Diff_Ref[type]).at(4)->Fill((target_tlv.Pt() - jet_tlv.Pt())/1000., weight); + (m_MET_Diff_Ref_x[type]).at(4)->Fill((target_tlv.Px() - jet_tlv.Px())/1000., weight); + (m_MET_Diff_Ref_y[type]).at(4)->Fill((target_tlv.Py() - jet_tlv.Py())/1000., weight); + (m_MET_Diff_Ref_phi[type]).at(4)->Fill(jet_tlv.DeltaPhi(target_tlv), weight); + (m_MET_Diff_Ref_sum[type]).at(4)->Fill((it->sumet() - sum_jet)/1000., weight); + } + } + } } // For rebuilt MET add only jets with pT>20e3 and JVT cut TLorentzVector jetReb_tlv; double sum_jetReb = 0; for(const auto jet : metJetsOR) { - if(Accept(jet, JvtCut, jvtTool)) { - jetReb_tlv += jet->p4(); - sum_jetReb += jet->pt(); - } + if(Accept(jet, JvtCut, jvtTool)) { + jetReb_tlv += jet->p4(); + sum_jetReb += jet->pt(); + } } for(const auto& it : *met_Reb) { - if(it->name() == "RefEle"){ - if(is_electron or (it->sumet() > 0)){ - target_tlv.SetPxPyPzE(-it->mpx(), -it->mpy(), 0, it->met()); - (m_MET_Diff_Reb[type]).at(0)->Fill((target_tlv.Pt() - el_tlv.Pt())/1000., weight); - (m_MET_Diff_Reb_x[type]).at(0)->Fill((target_tlv.Px() - el_tlv.Px())/1000., weight); - (m_MET_Diff_Reb_y[type]).at(0)->Fill((target_tlv.Py() - el_tlv.Py())/1000., weight); - (m_MET_Diff_Reb_phi[type]).at(0)->Fill(el_tlv.DeltaPhi(target_tlv), weight); - (m_MET_Diff_Reb_sum[type]).at(0)->Fill((it->sumet() - sum_el)/1000., weight); - } - } - if(it->name() == "RefGamma"){ - if(is_photon or (it->sumet() > 0)){ - target_tlv.SetPxPyPzE(-it->mpx(), -it->mpy(), 0, it->met()); - (m_MET_Diff_Reb[type]).at(1)->Fill((target_tlv.Pt() - photon_tlv.Pt())/1000., weight); - (m_MET_Diff_Reb_x[type]).at(1)->Fill((target_tlv.Px() - photon_tlv.Px())/1000., weight); - (m_MET_Diff_Reb_y[type]).at(1)->Fill((target_tlv.Py() - photon_tlv.Py())/1000., weight); - (m_MET_Diff_Reb_phi[type]).at(1)->Fill(photon_tlv.DeltaPhi(target_tlv), weight); - (m_MET_Diff_Reb_sum[type]).at(1)->Fill((it->sumet() - sum_photon)/1000., weight); - } - } - if(it->name() == "RefTau"){ - if(is_tau or (it->sumet() > 0)){ - target_tlv.SetPxPyPzE(-it->mpx(), -it->mpy(), 0, it->met()); - (m_MET_Diff_Reb[type]).at(2)->Fill((target_tlv.Pt() - tau_tlv.Pt())/1000., weight); - (m_MET_Diff_Reb_x[type]).at(2)->Fill((target_tlv.Px() - tau_tlv.Px())/1000., weight); - (m_MET_Diff_Reb_y[type]).at(2)->Fill((target_tlv.Py() - tau_tlv.Py())/1000., weight); - (m_MET_Diff_Reb_phi[type]).at(2)->Fill(tau_tlv.DeltaPhi(target_tlv), weight); - (m_MET_Diff_Reb_sum[type]).at(2)->Fill((it->sumet() - sum_tau)/1000., weight); - } - } - if(it->name() == "Muons"){ - if(is_muon or (it->sumet() > 0)){ - target_tlv.SetPxPyPzE(-it->mpx(), -it->mpy(), 0, it->met()); - (m_MET_Diff_Reb[type]).at(3)->Fill((target_tlv.Pt() - mu_tlv.Pt())/1000., weight); - (m_MET_Diff_Reb_x[type]).at(3)->Fill((target_tlv.Px() - mu_tlv.Px())/1000., weight); - (m_MET_Diff_Reb_y[type]).at(3)->Fill((target_tlv.Py() - mu_tlv.Py())/1000., weight); - (m_MET_Diff_Reb_phi[type]).at(3)->Fill(mu_tlv.DeltaPhi(target_tlv), weight); - (m_MET_Diff_Reb_sum[type]).at(3)->Fill((it->sumet() - sum_mu)/1000., weight); - } - } - if(it->name() == "RefJet"){ - if(is_jet or (it->sumet() > 0)){ - target_tlv.SetPxPyPzE(-it->mpx(), -it->mpy(), 0, it->met()); - (m_MET_Diff_Reb[type]).at(4)->Fill((target_tlv.Pt() - jetReb_tlv.Pt())/1000., weight); - (m_MET_Diff_Reb_x[type]).at(4)->Fill((target_tlv.Px() - jetReb_tlv.Px())/1000., weight); - (m_MET_Diff_Reb_y[type]).at(4)->Fill((target_tlv.Py() - jetReb_tlv.Py())/1000., weight); - (m_MET_Diff_Reb_phi[type]).at(4)->Fill(jetReb_tlv.DeltaPhi(target_tlv), weight); - (m_MET_Diff_Reb_sum[type]).at(4)->Fill((it->sumet() - sum_jetReb)/1000., weight); - } - } + if(it->name() == "RefEle"){ + if(is_electron or (it->sumet() > 0)){ + target_tlv.SetPxPyPzE(-it->mpx(), -it->mpy(), 0, it->met()); + (m_MET_Diff_Reb[type]).at(0)->Fill((target_tlv.Pt() - el_tlv.Pt())/1000., weight); + (m_MET_Diff_Reb_x[type]).at(0)->Fill((target_tlv.Px() - el_tlv.Px())/1000., weight); + (m_MET_Diff_Reb_y[type]).at(0)->Fill((target_tlv.Py() - el_tlv.Py())/1000., weight); + (m_MET_Diff_Reb_phi[type]).at(0)->Fill(el_tlv.DeltaPhi(target_tlv), weight); + (m_MET_Diff_Reb_sum[type]).at(0)->Fill((it->sumet() - sum_el)/1000., weight); + } + } + if(it->name() == "RefGamma"){ + if(is_photon or (it->sumet() > 0)){ + target_tlv.SetPxPyPzE(-it->mpx(), -it->mpy(), 0, it->met()); + (m_MET_Diff_Reb[type]).at(1)->Fill((target_tlv.Pt() - photon_tlv.Pt())/1000., weight); + (m_MET_Diff_Reb_x[type]).at(1)->Fill((target_tlv.Px() - photon_tlv.Px())/1000., weight); + (m_MET_Diff_Reb_y[type]).at(1)->Fill((target_tlv.Py() - photon_tlv.Py())/1000., weight); + (m_MET_Diff_Reb_phi[type]).at(1)->Fill(photon_tlv.DeltaPhi(target_tlv), weight); + (m_MET_Diff_Reb_sum[type]).at(1)->Fill((it->sumet() - sum_photon)/1000., weight); + } + } + if(it->name() == "RefTau"){ + if(is_tau or (it->sumet() > 0)){ + target_tlv.SetPxPyPzE(-it->mpx(), -it->mpy(), 0, it->met()); + (m_MET_Diff_Reb[type]).at(2)->Fill((target_tlv.Pt() - tau_tlv.Pt())/1000., weight); + (m_MET_Diff_Reb_x[type]).at(2)->Fill((target_tlv.Px() - tau_tlv.Px())/1000., weight); + (m_MET_Diff_Reb_y[type]).at(2)->Fill((target_tlv.Py() - tau_tlv.Py())/1000., weight); + (m_MET_Diff_Reb_phi[type]).at(2)->Fill(tau_tlv.DeltaPhi(target_tlv), weight); + (m_MET_Diff_Reb_sum[type]).at(2)->Fill((it->sumet() - sum_tau)/1000., weight); + } + } + if(it->name() == "Muons"){ + if(is_muon or (it->sumet() > 0)){ + target_tlv.SetPxPyPzE(-it->mpx(), -it->mpy(), 0, it->met()); + (m_MET_Diff_Reb[type]).at(3)->Fill((target_tlv.Pt() - mu_tlv.Pt())/1000., weight); + (m_MET_Diff_Reb_x[type]).at(3)->Fill((target_tlv.Px() - mu_tlv.Px())/1000., weight); + (m_MET_Diff_Reb_y[type]).at(3)->Fill((target_tlv.Py() - mu_tlv.Py())/1000., weight); + (m_MET_Diff_Reb_phi[type]).at(3)->Fill(mu_tlv.DeltaPhi(target_tlv), weight); + (m_MET_Diff_Reb_sum[type]).at(3)->Fill((it->sumet() - sum_mu)/1000., weight); + } + } + if(it->name() == "RefJet"){ + if(is_jet or (it->sumet() > 0)){ + target_tlv.SetPxPyPzE(-it->mpx(), -it->mpy(), 0, it->met()); + (m_MET_Diff_Reb[type]).at(4)->Fill((target_tlv.Pt() - jetReb_tlv.Pt())/1000., weight); + (m_MET_Diff_Reb_x[type]).at(4)->Fill((target_tlv.Px() - jetReb_tlv.Px())/1000., weight); + (m_MET_Diff_Reb_y[type]).at(4)->Fill((target_tlv.Py() - jetReb_tlv.Py())/1000., weight); + (m_MET_Diff_Reb_phi[type]).at(4)->Fill(jetReb_tlv.DeltaPhi(target_tlv), weight); + (m_MET_Diff_Reb_sum[type]).at(4)->Fill((it->sumet() - sum_jetReb)/1000., weight); + } + } } if(type == "AntiKt4EMTopo") { - //Calo MET - //const xAOD::JetContainer* emptyjets = 0; - ConstDataVector<JetContainer> metJetsEmpty(SG::VIEW_ELEMENTS); - MissingETContainer* met_Calo = new MissingETContainer(); - if( evtStore()->record(met_Calo,("MET_Calo"+type).c_str()).isFailure() ) { - ATH_MSG_WARNING("Unable to record MissingETContainer: MET_Calo_" << type); - return StatusCode::FAILURE; - } - MissingETAuxContainer* met_CaloAux = new MissingETAuxContainer(); - if( evtStore()->record(met_CaloAux,("MET_Calo"+type+"Aux").c_str()).isFailure() ) { - ATH_MSG_WARNING("Unable to record MissingETAuxContainer: MET_Calo" << type); - return StatusCode::FAILURE; - } - met_Calo->setStore(met_CaloAux); + //Calo MET + //const xAOD::JetContainer* emptyjets = 0; + ConstDataVector<JetContainer> metJetsEmpty(SG::VIEW_ELEMENTS); + MissingETContainer* met_Calo = new MissingETContainer(); + if( evtStore()->record(met_Calo,("MET_Calo"+type).c_str()).isFailure() ) { + ATH_MSG_WARNING("Unable to record MissingETContainer: MET_Calo_" << type); + return StatusCode::FAILURE; + } + MissingETAuxContainer* met_CaloAux = new MissingETAuxContainer(); + if( evtStore()->record(met_CaloAux,("MET_Calo"+type+"Aux").c_str()).isFailure() ) { + ATH_MSG_WARNING("Unable to record MissingETAuxContainer: MET_Calo" << type); + return StatusCode::FAILURE; + } + met_Calo->setStore(met_CaloAux); MissingETAssociationHelper metHelper(metMap); - if( (*m_metmaker)->rebuildJetMET("RefJet", "SoftClus", "PVSoftTrk", met_Calo, metJetsEmpty.asDataVector(), coreMet, metHelper, true).isFailure() ) { - ATH_MSG_WARNING("Failed to build jet and soft terms."); - } - - if((*met_Calo)["SoftClus"]) clsource = (*met_Calo)["SoftClus"]->source(); - if( met::buildMETSum("FinalClus", met_Calo, clsource).isFailure() ) { - ATH_MSG_WARNING("Building MET FinalClus sum failed."); - } - - m_MET_Calo->Fill((*met_Calo)["FinalClus"]->met()/1000., weight); - m_MET_Calo_x->Fill((*met_Calo)["FinalClus"]->mpx()/1000., weight); - m_MET_Calo_y->Fill((*met_Calo)["FinalClus"]->mpy()/1000., weight); - m_MET_Calo_phi->Fill((*met_Calo)["FinalClus"]->phi(), weight); - m_MET_Calo_sum->Fill((*met_Calo)["FinalClus"]->sumet()/1000., weight); + if( (*m_metmaker)->rebuildJetMET("RefJet", "SoftClus", "PVSoftTrk", met_Calo, metJetsEmpty.asDataVector(), coreMet, metHelper, true).isFailure() ) { + ATH_MSG_WARNING("Failed to build jet and soft terms."); + } + + if((*met_Calo)["SoftClus"]) clsource = (*met_Calo)["SoftClus"]->source(); + if( met::buildMETSum("FinalClus", met_Calo, clsource).isFailure() ) { + ATH_MSG_WARNING("Building MET FinalClus sum failed."); + } + + m_MET_Calo->Fill((*met_Calo)["FinalClus"]->met()/1000., weight); + m_MET_Calo_x->Fill((*met_Calo)["FinalClus"]->mpx()/1000., weight); + m_MET_Calo_y->Fill((*met_Calo)["FinalClus"]->mpy()/1000., weight); + m_MET_Calo_phi->Fill((*met_Calo)["FinalClus"]->phi(), weight); + m_MET_Calo_sum->Fill((*met_Calo)["FinalClus"]->sumet()/1000., weight); } @@ -1318,8 +1325,8 @@ for(const auto& it : corrTrk_names) { const xAOD::MissingETContainer* met_Track = nullptr; ATH_CHECK( evtStore()->retrieve(met_Track,"MET_Track") ); if (!met_Track) { - ATH_MSG_ERROR ( "Failed to retrieve MET_Track. Exiting." ); - return StatusCode::FAILURE; + ATH_MSG_ERROR ( "Failed to retrieve MET_Track. Exiting." ); + return StatusCode::FAILURE; } // Fill MET Track @@ -1334,23 +1341,23 @@ for(const auto& it : corrTrk_names) { const xAOD::VertexContainer *vxCont = nullptr; ATH_CHECK( evtStore()->retrieve(vxCont, "PrimaryVertices") ); for(const auto& vx : *vxCont) { - int N = vx->index(); - const std::string name = "PVTrack_vx"+std::to_string(N); - if(vx->vertexType()!=xAOD::VxType::NoVtx) { - if(vx->vertexType()==xAOD::VxType::PriVtx) { - m_MET_PVTrack_Nominal->Fill((*met_Track)[name]->met()/1000., weight); - m_MET_PVTrack_Nominal_x->Fill((*met_Track)[name]->mpx()/1000., weight); - m_MET_PVTrack_Nominal_y->Fill((*met_Track)[name]->mpy()/1000., weight); - m_MET_PVTrack_Nominal_phi->Fill((*met_Track)[name]->phi(), weight); - m_MET_PVTrack_Nominal_sum->Fill((*met_Track)[name]->sumet()/1000., weight); - } else { - m_MET_PVTrack_Pileup->Fill((*met_Track)[name]->met()/1000., weight); - m_MET_PVTrack_Pileup_x->Fill((*met_Track)[name]->mpx()/1000., weight); - m_MET_PVTrack_Pileup_y->Fill((*met_Track)[name]->mpy()/1000., weight); - m_MET_PVTrack_Pileup_phi->Fill((*met_Track)[name]->phi(), weight); - m_MET_PVTrack_Pileup_sum->Fill((*met_Track)[name]->sumet()/1000., weight); - } - } + int N = vx->index(); + const std::string name = "PVTrack_vx"+std::to_string(N); + if(vx->vertexType()!=xAOD::VxType::NoVtx) { + if(vx->vertexType()==xAOD::VxType::PriVtx) { + m_MET_PVTrack_Nominal->Fill((*met_Track)[name]->met()/1000., weight); + m_MET_PVTrack_Nominal_x->Fill((*met_Track)[name]->mpx()/1000., weight); + m_MET_PVTrack_Nominal_y->Fill((*met_Track)[name]->mpy()/1000., weight); + m_MET_PVTrack_Nominal_phi->Fill((*met_Track)[name]->phi(), weight); + m_MET_PVTrack_Nominal_sum->Fill((*met_Track)[name]->sumet()/1000., weight); + } else { + m_MET_PVTrack_Pileup->Fill((*met_Track)[name]->met()/1000., weight); + m_MET_PVTrack_Pileup_x->Fill((*met_Track)[name]->mpx()/1000., weight); + m_MET_PVTrack_Pileup_y->Fill((*met_Track)[name]->mpy()/1000., weight); + m_MET_PVTrack_Pileup_phi->Fill((*met_Track)[name]->phi(), weight); + m_MET_PVTrack_Pileup_sum->Fill((*met_Track)[name]->sumet()/1000., weight); + } + } } } @@ -1363,91 +1370,111 @@ for(const auto& it : corrTrk_names) { ATH_MSG_INFO ("Finalising hists " << name() << "..."); for (const auto& type : m_types){ - for(std::vector<TH1D*>::size_type i = 0; i < (m_MET_Ref[type]).size(); ++i) { - (m_MET_Ref[type]).at(i)->Sumw2(); - (m_MET_Ref_x[type]).at(i)->Sumw2(); - (m_MET_Ref_y[type]).at(i)->Sumw2(); - (m_MET_Ref_phi[type]).at(i)->Sumw2(); - (m_MET_Ref_sum[type]).at(i)->Sumw2(); - (m_MET_Reb[type]).at(i)->Sumw2(); - (m_MET_Reb_x[type]).at(i)->Sumw2(); - (m_MET_Reb_y[type]).at(i)->Sumw2(); - (m_MET_Reb_phi[type]).at(i)->Sumw2(); - (m_MET_Reb_sum[type]).at(i)->Sumw2(); + for(std::vector<TH1D*>::size_type i = 0; i < (m_MET_Reb[type]).size(); ++i) { + if (m_doMETRefPlots){ + (m_MET_Ref[type]).at(i)->Sumw2(); + (m_MET_Ref_x[type]).at(i)->Sumw2(); + (m_MET_Ref_y[type]).at(i)->Sumw2(); + (m_MET_Ref_phi[type]).at(i)->Sumw2(); + (m_MET_Ref_sum[type]).at(i)->Sumw2(); + } + (m_MET_Reb[type]).at(i)->Sumw2(); + (m_MET_Reb_x[type]).at(i)->Sumw2(); + (m_MET_Reb_y[type]).at(i)->Sumw2(); + (m_MET_Reb_phi[type]).at(i)->Sumw2(); + (m_MET_Reb_sum[type]).at(i)->Sumw2(); } - - for(std::vector<TH1D*>::size_type i = 0; i < (m_MET_Diff_Ref[type]).size(); ++i) { - (m_MET_Diff_Ref[type]).at(i)->Sumw2(); - (m_MET_Diff_Ref_x[type]).at(i)->Sumw2(); - (m_MET_Diff_Ref_y[type]).at(i)->Sumw2(); - (m_MET_Diff_Ref_phi[type]).at(i)->Sumw2(); - (m_MET_Diff_Ref_sum[type]).at(i)->Sumw2(); - (m_MET_Diff_Reb[type]).at(i)->Sumw2(); - (m_MET_Diff_Reb_x[type]).at(i)->Sumw2(); - (m_MET_Diff_Reb_y[type]).at(i)->Sumw2(); - (m_MET_Diff_Reb_phi[type]).at(i)->Sumw2(); - (m_MET_Diff_Reb_sum[type]).at(i)->Sumw2(); + + for(std::vector<TH1D*>::size_type i = 0; i < (m_MET_Diff_Reb[type]).size(); ++i) { + if (m_doMETRefPlots){ + (m_MET_Diff_Ref[type]).at(i)->Sumw2(); + (m_MET_Diff_Ref_x[type]).at(i)->Sumw2(); + (m_MET_Diff_Ref_y[type]).at(i)->Sumw2(); + (m_MET_Diff_Ref_phi[type]).at(i)->Sumw2(); + (m_MET_Diff_Ref_sum[type]).at(i)->Sumw2(); + } + (m_MET_Diff_Reb[type]).at(i)->Sumw2(); + (m_MET_Diff_Reb_x[type]).at(i)->Sumw2(); + (m_MET_Diff_Reb_y[type]).at(i)->Sumw2(); + (m_MET_Diff_Reb_phi[type]).at(i)->Sumw2(); + (m_MET_Diff_Reb_sum[type]).at(i)->Sumw2(); } - for(std::vector<TH2D*>::size_type i = 0; i < (m_MET_CorrFinalTrk_Ref[type]).size(); ++i) { - (m_MET_CorrFinalTrk_Ref[type]).at(i)->Sumw2(); - (m_MET_CorrFinalTrk_Reb[type]).at(i)->Sumw2(); + for(std::vector<TH2D*>::size_type i = 0; i < (m_MET_CorrFinalTrk_Reb[type]).size(); ++i) { + if (m_doMETRefPlots){ + (m_MET_CorrFinalTrk_Ref[type]).at(i)->Sumw2(); + } + (m_MET_CorrFinalTrk_Reb[type]).at(i)->Sumw2(); } - for(std::vector<TH2D*>::size_type i = 0; i < (m_MET_CorrFinalClus_Ref[type]).size(); ++i) { - (m_MET_CorrFinalClus_Ref[type]).at(i)->Sumw2(); - (m_MET_CorrFinalClus_Reb[type]).at(i)->Sumw2(); + for(std::vector<TH2D*>::size_type i = 0; i < (m_MET_CorrFinalClus_Reb[type]).size(); ++i) { + if (m_doMETRefPlots){ + (m_MET_CorrFinalClus_Ref[type]).at(i)->Sumw2(); + } + (m_MET_CorrFinalClus_Reb[type]).at(i)->Sumw2(); } - for(std::vector<TH1D*>::size_type i = 0; i < (m_MET_Significance_Ref[type]).size(); ++i) { - (m_MET_Significance_Ref[type]).at(i)->Sumw2(); - (m_MET_Significance_Reb[type]).at(i)->Sumw2(); + for(std::vector<TH1D*>::size_type i = 0; i < (m_MET_Significance_Reb[type]).size(); ++i) { + if (m_doMETRefPlots){ + (m_MET_Significance_Ref[type]).at(i)->Sumw2(); + } + (m_MET_Significance_Reb[type]).at(i)->Sumw2(); } - - for(std::vector<TH1D*>::size_type i = 0; i < (m_MET_Resolution_Ref[type]).size(); ++i) { - (m_MET_Resolution_Ref[type]).at(i)->Sumw2(); - (m_MET_Resolution_Reb[type]).at(i)->Sumw2(); + + for(std::vector<TH1D*>::size_type i = 0; i < (m_MET_Resolution_Reb[type]).size(); ++i) { + if (m_doMETRefPlots){ + (m_MET_Resolution_Ref[type]).at(i)->Sumw2(); + } + (m_MET_Resolution_Reb[type]).at(i)->Sumw2(); } - + for(std::vector<TH1D*>::size_type i = 0; i < (m_MET_dPhi_Ref[type]).size(); ++i) { - (m_MET_dPhi_Ref[type]).at(i)->Sumw2(); - (m_MET_dPhi_Reb[type]).at(i)->Sumw2(); + if (m_doMETRefPlots){ + (m_MET_dPhi_Ref[type]).at(i)->Sumw2(); + } + (m_MET_dPhi_Reb[type]).at(i)->Sumw2(); } - - int nBins = (m_MET_Ref[type]).at(7)->GetNbinsX(); + + int nBins = (m_MET_Reb[type]).at(7)->GetNbinsX(); for(int i=1;i<=nBins;i++){ - double err; - (m_MET_Cumu_Ref[type]).at(0)->SetBinContent(i, (m_MET_Ref[type]).at(8)->IntegralAndError(i,nBins+1,err)); - (m_MET_Cumu_Ref[type]).at(0)->SetBinError(i, err); - (m_MET_Cumu_Ref[type]).at(1)->SetBinContent(i, (m_MET_Ref[type]).at(7)->IntegralAndError(i,nBins+1,err)); - (m_MET_Cumu_Ref[type]).at(1)->SetBinError(i, err); - (m_MET_Cumu_Reb[type]).at(0)->SetBinContent(i, (m_MET_Reb[type]).at(8)->IntegralAndError(i,nBins+1,err)); - (m_MET_Cumu_Reb[type]).at(0)->SetBinError(i, err); - (m_MET_Cumu_Reb[type]).at(1)->SetBinContent(i, (m_MET_Reb[type]).at(7)->IntegralAndError(i,nBins+1,err)); - (m_MET_Cumu_Reb[type]).at(1)->SetBinError(i, err); + double err; + if (m_doMETRefPlots){ + (m_MET_Cumu_Ref[type]).at(0)->SetBinContent(i, (m_MET_Ref[type]).at(8)->IntegralAndError(i,nBins+1,err)); + (m_MET_Cumu_Ref[type]).at(0)->SetBinError(i, err); + (m_MET_Cumu_Ref[type]).at(1)->SetBinContent(i, (m_MET_Ref[type]).at(7)->IntegralAndError(i,nBins+1,err)); + (m_MET_Cumu_Ref[type]).at(1)->SetBinError(i, err); + } + (m_MET_Cumu_Reb[type]).at(0)->SetBinContent(i, (m_MET_Reb[type]).at(8)->IntegralAndError(i,nBins+1,err)); + (m_MET_Cumu_Reb[type]).at(0)->SetBinError(i, err); + (m_MET_Cumu_Reb[type]).at(1)->SetBinContent(i, (m_MET_Reb[type]).at(7)->IntegralAndError(i,nBins+1,err)); + (m_MET_Cumu_Reb[type]).at(1)->SetBinError(i, err); } for(std::vector<TH1D*>::size_type i = 0; i < (m_MET_Cumu_Ref[type]).size(); ++i) { - m_MET_Cumu_Ref[type].at(i)->Scale(1./(m_MET_Cumu_Ref[type]).at(i)->GetBinContent(1)); - m_MET_Cumu_Reb[type].at(i)->Scale(1./(m_MET_Cumu_Reb[type]).at(i)->GetBinContent(1)); + if (m_doMETRefPlots){ + m_MET_Cumu_Ref[type].at(i)->Scale(1./(m_MET_Cumu_Ref[type]).at(i)->GetBinContent(1)); + } + m_MET_Cumu_Reb[type].at(i)->Scale(1./(m_MET_Cumu_Reb[type]).at(i)->GetBinContent(1)); } } - m_MET_Track->Sumw2(); - m_MET_Track_x->Sumw2(); - m_MET_Track_y->Sumw2(); - m_MET_Track_phi->Sumw2(); - m_MET_Track_sum->Sumw2(); - m_MET_PVTrack_Nominal->Sumw2(); - m_MET_PVTrack_Nominal_x->Sumw2(); - m_MET_PVTrack_Nominal_y->Sumw2(); - m_MET_PVTrack_Nominal_phi->Sumw2(); - m_MET_PVTrack_Nominal_sum->Sumw2(); - m_MET_PVTrack_Pileup->Sumw2(); - m_MET_PVTrack_Pileup_x->Sumw2(); - m_MET_PVTrack_Pileup_y->Sumw2(); - m_MET_PVTrack_Pileup_phi->Sumw2(); - m_MET_PVTrack_Pileup_sum->Sumw2(); + if (m_doMETRefPlots){ + m_MET_Track->Sumw2(); + m_MET_Track_x->Sumw2(); + m_MET_Track_y->Sumw2(); + m_MET_Track_phi->Sumw2(); + m_MET_Track_sum->Sumw2(); + m_MET_PVTrack_Nominal->Sumw2(); + m_MET_PVTrack_Nominal_x->Sumw2(); + m_MET_PVTrack_Nominal_y->Sumw2(); + m_MET_PVTrack_Nominal_phi->Sumw2(); + m_MET_PVTrack_Nominal_sum->Sumw2(); + m_MET_PVTrack_Pileup->Sumw2(); + m_MET_PVTrack_Pileup_x->Sumw2(); + m_MET_PVTrack_Pileup_y->Sumw2(); + m_MET_PVTrack_Pileup_phi->Sumw2(); + m_MET_PVTrack_Pileup_sum->Sumw2(); + } m_MET_Calo->Sumw2(); m_MET_Calo_x->Sumw2();