.. _program_listing_file_Root_MetContainer.cxx: Program Listing for File MetContainer.cxx ========================================= |exhale_lsh| :ref:`Return to documentation for file ` (``Root/MetContainer.cxx``) .. |exhale_lsh| unicode:: U+021B0 .. UPWARDS ARROW WITH TIP LEFTWARDS .. code-block:: cpp #include "xAODAnaHelpers/MetContainer.h" #include using namespace xAH; MetContainer::MetContainer(const std::string& name, const std::string& detailStr, float units) : m_name(name), m_infoSwitch(detailStr), m_debug(false), m_units(units) { } MetContainer::~MetContainer() { if(m_debug) std::cout << " Deleting MetContainer " << std::endl; } void MetContainer::setTree(TTree *tree) { if ( m_infoSwitch.m_metClus ) { connectBranch(tree, "FinalClus", &m_metFinalClus ); connectBranch(tree, "FinalClusPx", &m_metFinalClusPx ); connectBranch(tree, "FinalClusPy", &m_metFinalClusPy ); connectBranch(tree, "FinalClusSumEt", &m_metFinalClusSumEt); connectBranch(tree, "FinalClusPhi", &m_metFinalClusPhi ); } if ( m_infoSwitch.m_sigClus ) { connectBranch(tree, "FinalClusOverSqrtSumEt", &m_metFinalClusOverSqrtSumEt ); connectBranch(tree, "FinalClusOverSqrtHt", &m_metFinalClusOverSqrtHt ); connectBranch(tree, "FinalClusSignificance", &m_metFinalClusSignificance ); connectBranch(tree, "FinalClusSigDirectional", &m_metFinalClusSigDirectional); } if ( m_infoSwitch.m_sigResolutionClus ) { connectBranch(tree, "FinalClusRho", &m_metFinalClusRho ); connectBranch(tree, "FinalClusVarL", &m_metFinalClusVarL); connectBranch(tree, "FinalClusVarT", &m_metFinalClusVarT); } if ( m_infoSwitch.m_metTrk ) { connectBranch(tree, "FinalTrk", &m_metFinalTrk ); connectBranch(tree, "FinalTrkPx", &m_metFinalTrkPx ); connectBranch(tree, "FinalTrkPy", &m_metFinalTrkPy ); connectBranch(tree, "FinalTrkSumEt", &m_metFinalTrkSumEt); connectBranch(tree, "FinalTrkPhi", &m_metFinalTrkPhi ); } if ( m_infoSwitch.m_sigTrk ) { connectBranch(tree, "FinalTrkOverSqrtSumEt", &m_metFinalTrkOverSqrtSumEt ); connectBranch(tree, "FinalTrkOverSqrtHt", &m_metFinalTrkOverSqrtHt ); connectBranch(tree, "FinalTrkSignificance", &m_metFinalTrkSignificance ); connectBranch(tree, "FinalTrkSigDirectional", &m_metFinalTrkSigDirectional); } if ( m_infoSwitch.m_sigResolutionTrk ) { connectBranch(tree, "FinalTrkRho", &m_metFinalTrkRho ); connectBranch(tree, "FinalTrkVarL", &m_metFinalTrkVarL); connectBranch(tree, "FinalTrkVarT", &m_metFinalTrkVarT); } if ( m_infoSwitch.m_refEle ) { connectBranch(tree, "Ele", &m_metEle ); connectBranch(tree, "EleSumEt", &m_metEleSumEt ); connectBranch(tree, "ElePhi", &m_metElePhi ); } if ( m_infoSwitch.m_refGamma ) { connectBranch(tree, "Gamma", &m_metGamma ); connectBranch(tree, "GammaSumEt", &m_metGammaSumEt); connectBranch(tree, "GammaPhi", &m_metGammaPhi ); } if ( m_infoSwitch.m_refTau ) { connectBranch(tree, "Tau", &m_metTau ); connectBranch(tree, "TauSumEt", &m_metTauSumEt ); connectBranch(tree, "TauPhi", &m_metTauPhi ); } if ( m_infoSwitch.m_refMuons ) { connectBranch(tree, "Muons", &m_metMuons ); connectBranch(tree, "MuonsSumEt", &m_metMuonsSumEt ); connectBranch(tree, "MuonsPhi", &m_metMuonsPhi ); } if ( m_infoSwitch.m_refJet ) { connectBranch(tree, "Jet", &m_metJet ); connectBranch(tree, "JetSumEt", &m_metJetSumEt ); connectBranch(tree, "JetPhi", &m_metJetPhi ); } if ( m_infoSwitch.m_refJetTrk ) { connectBranch(tree, "JetTrk", &m_metJetTrk ); connectBranch(tree, "JetTrkSumEt", &m_metJetTrkSumEt); connectBranch(tree, "JetTrkPhi", &m_metJetTrkPhi ); } if ( m_infoSwitch.m_softClus) { connectBranch(tree, "SoftClus", &m_metSoftClus ); connectBranch(tree, "SoftClusSumEt", &m_metSoftClusSumEt); connectBranch(tree, "SoftClusPhi", &m_metSoftClusPhi ); } if ( m_infoSwitch.m_softTrk) { connectBranch(tree, "SoftTrk", &m_metSoftTrk ); connectBranch(tree, "SoftTrkSumEt", &m_metSoftTrkSumEt); connectBranch(tree, "SoftTrkPhi", &m_metSoftTrkPhi ); } } void MetContainer::setBranches(TTree *tree) { if ( m_infoSwitch.m_metClus ) { setBranch(tree, "FinalClus", &m_metFinalClus, "F"); setBranch(tree, "FinalClusPx", &m_metFinalClusPx, "F"); setBranch(tree, "FinalClusPy", &m_metFinalClusPy, "F"); setBranch(tree, "FinalClusSumEt", &m_metFinalClusSumEt, "F"); setBranch(tree, "FinalClusPhi", &m_metFinalClusPhi, "F"); } if ( m_infoSwitch.m_sigClus ) { setBranch(tree, "FinalClusOverSqrtSumEt", &m_metFinalClusOverSqrtSumEt, "F"); setBranch(tree, "FinalClusOverSqrtHt", &m_metFinalClusOverSqrtHt, "F"); setBranch(tree, "FinalClusSignificance", &m_metFinalClusSignificance, "F"); setBranch(tree, "FinalClusSigDirectional", &m_metFinalClusSigDirectional, "F"); } if ( m_infoSwitch.m_sigResolutionClus ) { setBranch(tree, "FinalClusRho", &m_metFinalClusRho, "F"); setBranch(tree, "FinalClusVarL", &m_metFinalClusVarL, "F"); setBranch(tree, "FinalClusVarT", &m_metFinalClusVarT, "F"); } if ( m_infoSwitch.m_metTrk ) { setBranch(tree, "FinalTrk", &m_metFinalTrk, "F"); setBranch(tree, "FinalTrkPx", &m_metFinalTrkPx, "F"); setBranch(tree, "FinalTrkPy", &m_metFinalTrkPy, "F"); setBranch(tree, "FinalTrkSumEt", &m_metFinalTrkSumEt, "F"); setBranch(tree, "FinalTrkPhi", &m_metFinalTrkPhi, "F"); } if ( m_infoSwitch.m_sigTrk ) { setBranch(tree, "FinalTrkOverSqrtSumEt", &m_metFinalTrkOverSqrtSumEt, "F"); setBranch(tree, "FinalTrkOverSqrtHt", &m_metFinalTrkOverSqrtHt, "F"); setBranch(tree, "FinalTrkSignificance", &m_metFinalTrkSignificance, "F"); setBranch(tree, "FinalTrkSigDirectional", &m_metFinalTrkSigDirectional, "F"); } if ( m_infoSwitch.m_sigResolutionTrk ) { setBranch(tree, "FinalTrkRho", &m_metFinalTrkRho, "F"); setBranch(tree, "FinalTrkVarL", &m_metFinalTrkVarL, "F"); setBranch(tree, "FinalTrkVarT", &m_metFinalTrkVarT, "F"); } if ( m_infoSwitch.m_refEle ) { setBranch(tree, "Ele", &m_metEle, "F"); setBranch(tree, "EleSumEt", &m_metEleSumEt, "F"); setBranch(tree, "ElePhi", &m_metElePhi, "F"); } if ( m_infoSwitch.m_refGamma ) { setBranch(tree, "Gamma", &m_metGamma, "F"); setBranch(tree, "GammaSumEt", &m_metGammaSumEt, "F"); setBranch(tree, "GammaPhi", &m_metGammaPhi, "F"); } if ( m_infoSwitch.m_refTau ) { setBranch(tree, "Tau", &m_metTau, "F"); setBranch(tree, "TauSumEt", &m_metTauSumEt, "F"); setBranch(tree, "TauPhi", &m_metTauPhi, "F"); } if ( m_infoSwitch.m_refMuons ) { setBranch(tree, "Muons", &m_metMuons, "F"); setBranch(tree, "MuonsSumEt", &m_metMuonsSumEt, "F"); setBranch(tree, "MuonsPhi", &m_metMuonsPhi, "F"); } if ( m_infoSwitch.m_refJet ) { setBranch(tree, "Jet", &m_metJet, "F"); setBranch(tree, "JetSumEt", &m_metJetSumEt, "F"); setBranch(tree, "JetPhi", &m_metJetPhi, "F"); } if ( m_infoSwitch.m_refJetTrk ) { setBranch(tree, "JetTrk", &m_metJetTrk, "F"); setBranch(tree, "JetTrkSumEt", &m_metJetTrkSumEt, "F"); setBranch(tree, "JetTrkPhi", &m_metJetTrkPhi, "F"); } if ( m_infoSwitch.m_softClus) { setBranch(tree, "SoftClus", &m_metSoftClus, "F"); setBranch(tree, "SoftClusSumEt", &m_metSoftClusSumEt, "F"); setBranch(tree, "SoftClusPhi", &m_metSoftClusPhi, "F"); } if ( m_infoSwitch.m_softTrk) { setBranch(tree, "SoftTrk", &m_metSoftTrk, "F"); setBranch(tree, "SoftTrkSumEt", &m_metSoftTrkSumEt, "F"); setBranch(tree, "SoftTrkPhi", &m_metSoftTrkPhi, "F"); } return; } void MetContainer::clear() { if ( m_infoSwitch.m_metClus ) { m_metFinalClus = -999; m_metFinalClusPx = -999; m_metFinalClusPy = -999; m_metFinalClusSumEt = -999; m_metFinalClusPhi = -999; } if ( m_infoSwitch.m_metTrk ) { m_metFinalTrk = -999; m_metFinalTrkPx = -999; m_metFinalTrkPy = -999; m_metFinalTrkSumEt = -999; m_metFinalTrkPhi = -999; } if ( m_infoSwitch.m_sigClus ) { m_metFinalClusOverSqrtSumEt = -999; m_metFinalClusOverSqrtHt = -999; m_metFinalClusSignificance = -999; m_metFinalClusSigDirectional = -999; } if ( m_infoSwitch.m_sigTrk ) { m_metFinalTrkOverSqrtSumEt = -999; m_metFinalTrkOverSqrtHt = -999; m_metFinalTrkSignificance = -999; m_metFinalTrkSigDirectional = -999; } if ( m_infoSwitch.m_sigResolutionClus ) { m_metFinalClusRho = -999; m_metFinalClusVarL = -999; m_metFinalClusVarT = -999; } if ( m_infoSwitch.m_sigResolutionTrk ) { m_metFinalTrkRho = -999; m_metFinalTrkVarL = -999; m_metFinalTrkVarT = -999; } if ( m_infoSwitch.m_refEle ) { m_metEle = m_metEleSumEt = m_metElePhi = -999; } if ( m_infoSwitch.m_refGamma ) { m_metGamma = m_metGammaSumEt = m_metGammaPhi = -999; } if ( m_infoSwitch.m_refTau ) { m_metTau = m_metTauSumEt = m_metTauPhi = -999; } if ( m_infoSwitch.m_refMuons ) { m_metMuons = m_metMuonsSumEt = m_metMuonsPhi = -999; } if ( m_infoSwitch.m_refJet ) { m_metJet = m_metJetSumEt = m_metJetPhi = -999; } if ( m_infoSwitch.m_refJetTrk ) { m_metJetTrk = m_metJetTrkSumEt = m_metJetTrkPhi = -999; } if ( m_infoSwitch.m_softClus) { m_metSoftClus = m_metSoftClusSumEt = m_metSoftClusPhi = -999; } return; } void MetContainer::FillMET( const xAOD::MissingETContainer* met) { //if ( m_debug ) { Info("HelpTreeBase::FillMET()", "Filling MET info"); } if ( m_infoSwitch.m_metClus ) { const xAOD::MissingET* final_clus = *met->find("FinalClus"); // ("FinalClus" uses the calocluster-based soft terms, "FinalTrk" uses the track-based onleares) m_metFinalClus = final_clus->met() / m_units; m_metFinalClusPx = final_clus->mpx() / m_units; m_metFinalClusPy = final_clus->mpy() / m_units; m_metFinalClusSumEt = final_clus->sumet() / m_units; m_metFinalClusPhi = final_clus->phi(); if ( m_infoSwitch.m_sigClus ) { m_metFinalClusOverSqrtSumEt = final_clus->auxdecor("METOverSqrtSumET"); m_metFinalClusOverSqrtHt = final_clus->auxdecor("METOverSqrtHT"); m_metFinalClusSignificance = final_clus->auxdecor("Significance"); m_metFinalClusSigDirectional = final_clus->auxdecor("SigDirectional"); } if ( m_infoSwitch.m_sigResolutionClus ) { m_metFinalClusRho = final_clus->auxdecor("Rho"); m_metFinalClusVarL = final_clus->auxdecor("VarL"); m_metFinalClusVarT = final_clus->auxdecor("VarT"); } } if ( m_infoSwitch.m_metTrk ) { const xAOD::MissingET* final_trk = *met->find("FinalTrk"); // ("FinalClus" uses the calocluster-based soft terms, "FinalTrk" uses the track-based ones) m_metFinalTrk = final_trk->met() / m_units; m_metFinalTrkPx = final_trk->mpx() / m_units; m_metFinalTrkPy = final_trk->mpy() / m_units; m_metFinalTrkSumEt = final_trk->sumet() / m_units; m_metFinalTrkPhi = final_trk->phi(); if ( m_infoSwitch.m_sigTrk ) { m_metFinalTrkOverSqrtSumEt = final_trk->auxdecor("METOverSqrtSumET"); m_metFinalTrkOverSqrtHt = final_trk->auxdecor("METOverSqrtHT"); m_metFinalTrkSignificance = final_trk->auxdecor("Significance"); m_metFinalTrkSigDirectional = final_trk->auxdecor("SigDirectional"); } if ( m_infoSwitch.m_sigResolutionTrk ) { m_metFinalTrkRho = final_trk->auxdecor("Rho"); m_metFinalTrkVarL = final_trk->auxdecor("VarL"); m_metFinalTrkVarT = final_trk->auxdecor("VarT"); } } if ( m_infoSwitch.m_refEle ) { const xAOD::MissingET* ref_ele = *met->find("RefEle"); m_metEle = ref_ele->met() / m_units; m_metEleSumEt = ref_ele->sumet() / m_units; m_metElePhi = ref_ele->phi(); } if ( m_infoSwitch.m_refGamma ) { const xAOD::MissingET* ref_gamma = *met->find("RefGamma"); m_metGamma = ref_gamma->met() / m_units; m_metGammaSumEt = ref_gamma->sumet() / m_units; m_metGammaPhi = ref_gamma->phi(); } if ( m_infoSwitch.m_refTau ) { const xAOD::MissingET* ref_tau = *met->find("RefTau"); m_metTau = ref_tau->met() / m_units; m_metTauSumEt = ref_tau->sumet() / m_units; m_metTauPhi = ref_tau->phi(); } if ( m_infoSwitch.m_refMuons ) { const xAOD::MissingET* ref_muon = *met->find("Muons"); m_metMuons = ref_muon->met() / m_units; m_metMuonsSumEt = ref_muon->sumet() / m_units; m_metMuonsPhi = ref_muon->phi(); } if ( m_infoSwitch.m_refJet ) { const xAOD::MissingET* ref_jet = *met->find("RefJet"); m_metJet = ref_jet->met() / m_units; m_metJetSumEt = ref_jet->sumet() / m_units; m_metJetPhi = ref_jet->phi(); } if ( m_infoSwitch.m_refJetTrk ) { const xAOD::MissingET* ref_jet_trk = *met->find("RefJetTrk"); m_metJetTrk = ref_jet_trk->met() / m_units; m_metJetTrkSumEt = ref_jet_trk->sumet() / m_units; m_metJetTrkPhi = ref_jet_trk->phi(); } if ( m_infoSwitch.m_softClus) { const xAOD::MissingET* ref_soft_clus = *met->find("SoftClus"); m_metSoftClus = ref_soft_clus->met() / m_units; m_metSoftClusSumEt = ref_soft_clus->sumet() / m_units; m_metSoftClusPhi = ref_soft_clus->phi(); } if ( m_infoSwitch.m_softTrk) { const xAOD::MissingET* ref_soft_trk = *met->find("PVSoftTrk"); m_metSoftTrk = ref_soft_trk->met() / m_units; m_metSoftTrkSumEt = ref_soft_trk->sumet() / m_units; m_metSoftTrkPhi = ref_soft_trk->phi(); } return; }