diff --git a/Event/xAOD/xAODMissingET/xAODMissingET/MissingETAssociationHelper.h b/Event/xAOD/xAODMissingET/xAODMissingET/MissingETAssociationHelper.h index 27a84425f64ac079be4b3fdfc94d265a4044fae8..2ba2129df012da8f7cd5636966cc78b5fe1ec2d6 100644 --- a/Event/xAOD/xAODMissingET/xAODMissingET/MissingETAssociationHelper.h +++ b/Event/xAOD/xAODMissingET/xAODMissingET/MissingETAssociationHelper.h @@ -42,7 +42,7 @@ namespace xAOD void setObjSelectionFlag(const MissingETAssociation_v1* assoc, const IParticle* pPart, bool status); /*!< @brief Flag object as selected for MET calculation */ inline void resetObjSelectionFlags() { m_useObjectFlags.clear(); } - inline const MissingETAssociationMap_v1* map() const { return m_map; } + inline const MissingETAssociationMap_v1* map() const { return m_map; } private: diff --git a/PhysicsAnalysis/JetMissingEtID/JetMissingEtTagTools/src/JetMissingEtTagTool.cxx b/PhysicsAnalysis/JetMissingEtID/JetMissingEtTagTools/src/JetMissingEtTagTool.cxx index ff2c203afeecebe4b1e7a4fdfc2a6904e1e3195c..7693687480087dc63843ea1304643d0e3856bb05 100755 --- a/PhysicsAnalysis/JetMissingEtID/JetMissingEtTagTools/src/JetMissingEtTagTool.cxx +++ b/PhysicsAnalysis/JetMissingEtID/JetMissingEtTagTools/src/JetMissingEtTagTool.cxx @@ -574,7 +574,7 @@ StatusCode JetMetTagTool::recomputeMissingEt() { ATH_MSG_WARNING("Unable to retrieve MissingETAssociationMap: " << m_METMapName); return StatusCode::SUCCESS; } - xAOD::MissingETAssociationHelper* metHelper = new xAOD::MissingETAssociationHelper(metMap); + xAOD::MissingETAssociationHelper metHelper(metMap); /// MET core const xAOD::MissingETContainer* coreMet(0); @@ -596,7 +596,7 @@ StatusCode JetMetTagTool::recomputeMissingEt() { // uniques.clear(); if( m_metmaker->rebuildMET("RefEle", xAOD::Type::Electron, newMet, elCont, - metHelper).isFailure() ) { + &metHelper).isFailure() ) { ATH_MSG_WARNING("Failed to build electron term."); } //ATH_MSG_DEBUG("Selected " << elCont->size() << " MET electrons. " @@ -616,7 +616,7 @@ StatusCode JetMetTagTool::recomputeMissingEt() { //uniques.clear(); if( m_metmaker->rebuildMET("RefGamma", xAOD::Type::Photon, newMet, phCont, - metHelper).isFailure() ) { + &metHelper).isFailure() ) { ATH_MSG_WARNING("Failed to build photon term."); } //ATH_MSG_DEBUG("Selected " << phCont->size() << " MET photons. " @@ -636,7 +636,7 @@ StatusCode JetMetTagTool::recomputeMissingEt() { //uniques.clear(); if( m_metmaker->rebuildMET("RefTau", xAOD::Type::Tau, newMet, tauCont, - metHelper).isFailure() ){ + &metHelper).isFailure() ){ ATH_MSG_WARNING("Failed to build tau term."); } //ATH_MSG_DEBUG("Selected " << tauCont->size() << " MET taus. " @@ -656,7 +656,7 @@ StatusCode JetMetTagTool::recomputeMissingEt() { //uniques.clear(); if( m_metmaker->rebuildMET("Muons", xAOD::Type::Muon, newMet, muonCont, - metHelper).isFailure() ) { + &metHelper).isFailure() ) { ATH_MSG_WARNING("Failed to build muon term."); } //ATH_MSG_DEBUG("Selected " << muonCont->size() << " MET muons. " @@ -674,7 +674,7 @@ StatusCode JetMetTagTool::recomputeMissingEt() { // compute MET term //uniques.clear(); if( m_metmaker->rebuildJetMET("RefJet", m_metSoftClusName, m_metPVSoftTrkName, newMet, - jetCont, coreMet, metHelper, true ).isFailure() ) { + jetCont, coreMet, &metHelper, true ).isFailure() ) { ATH_MSG_WARNING("Failed to build jet and soft terms."); } //ATH_MSG_DEBUG("Of " << jetCont->size() << " jets, " @@ -693,7 +693,6 @@ StatusCode JetMetTagTool::recomputeMissingEt() { if( m_metmaker->buildMETSum("FinalClus", newMet, clsource).isFailure() ) { ATH_MSG_WARNING("Building MET FinalClus sum failed."); } - delete metHelper; return StatusCode::SUCCESS; } diff --git a/PhysicsAnalysis/JetMissingEtID/MissingEtDQA/src/PhysValMET.cxx b/PhysicsAnalysis/JetMissingEtID/MissingEtDQA/src/PhysValMET.cxx index d5982379b354303dd6f95989f53a7a425579b3be..8c97a137f5d63af0ac7742dee88e7c70d0f9bf2b 100644 --- a/PhysicsAnalysis/JetMissingEtID/MissingEtDQA/src/PhysValMET.cxx +++ b/PhysicsAnalysis/JetMissingEtID/MissingEtDQA/src/PhysValMET.cxx @@ -27,6 +27,7 @@ #include "AthenaBaseComps/AthCheckMacros.h" #include "xAODMissingET/MissingETComposition.h" #include "xAODMissingET/MissingETAssociationMap.h" +#include "xAODMissingET/MissingETAssociationHelper.h" #include "xAODJet/JetContainer.h" #include "xAODMuon/MuonContainer.h" @@ -881,7 +882,7 @@ namespace MissingEtDQA { ATH_MSG_WARNING("Unable to retrieve MissingETAssociationMap: " << m_mapname); return StatusCode::SUCCESS; } - metMap->resetObjSelectionFlags(); + MissingETAssociationHelper metHelper(metMap); const MissingETContainer* coreMet(0); if( evtStore()->retrieve(coreMet, m_corename).isFailure() ) { ATH_MSG_WARNING("Unable to retrieve MissingETContainer: " << m_corename); @@ -894,27 +895,27 @@ namespace MissingEtDQA { else m_metmaker = m_metmakerTopo; // Electrons - if( m_metmaker->rebuildMET("RefEle", xAOD::Type::Electron, met_Reb, metElectrons.asDataVector(), metMap).isFailure() ) { + if( m_metmaker->rebuildMET("RefEle", xAOD::Type::Electron, met_Reb, metElectrons.asDataVector(), &metHelper).isFailure() ) { ATH_MSG_WARNING("Failed to build electron term."); } // Photons - if( m_metmaker->rebuildMET("RefGamma", xAOD::Type::Photon, met_Reb, metPhotons.asDataVector(), metMap).isFailure() ) { + if( m_metmaker->rebuildMET("RefGamma", xAOD::Type::Photon, met_Reb, metPhotons.asDataVector(), &metHelper).isFailure() ) { ATH_MSG_WARNING("Failed to build photon term."); } // Taus - if( m_metmaker->rebuildMET("RefTau", xAOD::Type::Tau, met_Reb,metTaus.asDataVector(),metMap).isFailure() ){ + if( m_metmaker->rebuildMET("RefTau", xAOD::Type::Tau, met_Reb,metTaus.asDataVector(),&metHelper).isFailure() ){ ATH_MSG_WARNING("Failed to build tau term."); } // Muons - if( m_metmaker->rebuildMET("Muons", xAOD::Type::Muon, met_Reb, metMuons.asDataVector(), metMap).isFailure() ) { + if( m_metmaker->rebuildMET("Muons", xAOD::Type::Muon, met_Reb, metMuons.asDataVector(), &metHelper).isFailure() ) { ATH_MSG_WARNING("Failed to build muon term."); } // Jets - if( m_metmaker->rebuildJetMET("RefJet", "SoftClus", "PVSoftTrk", met_Reb, jets, coreMet, metMap, true).isFailure() ) { + if( m_metmaker->rebuildJetMET("RefJet", "SoftClus", "PVSoftTrk", met_Reb, jets, coreMet, &metHelper, true).isFailure() ) { ATH_MSG_WARNING("Failed to build jet and soft terms."); } MissingETBase::Types::bitmask_t trksource = MissingETBase::Source::Track; diff --git a/Reconstruction/MET/METReconstruction/src/METAssocTestAlg.cxx b/Reconstruction/MET/METReconstruction/src/METAssocTestAlg.cxx index c33236af6ddec685df7291aae2354a744839989c..fcc68795a525640d93ae2d2937d472053208cea6 100644 --- a/Reconstruction/MET/METReconstruction/src/METAssocTestAlg.cxx +++ b/Reconstruction/MET/METReconstruction/src/METAssocTestAlg.cxx @@ -4,6 +4,7 @@ #include "METAssocTestAlg.h" #include "xAODMissingET/MissingETAssociationMap.h" +#include "xAODMissingET/MissingETAssociationHelper.h" using namespace xAOD; @@ -71,14 +72,15 @@ namespace met { JetFourMom_t jetconstp4 = jet.jetP4(JetConstitScaleMomentum); MissingETBase::Types::constvec_t jettrkvec = assoc.jetTrkVec(); + xAOD::MissingETAssociationHelper helper; + // switch on all overlapping objects - assoc.resetObjSelectionFlags(); for(size_t iobj=0; iobj<assoc.objects().size(); ++iobj) { - assoc.setObjSelectionFlag(iobj,true); + helper.setObjSelectionFlag(&assoc,iobj,true); } // get cluster/inclusive pflow and track/charged pflow constituent sums - MissingETBase::Types::constvec_t overlapcalvec = assoc.overlapCalVec(); - MissingETBase::Types::constvec_t overlaptrkvec = assoc.overlapTrkVec(); + MissingETBase::Types::constvec_t overlapcalvec = assoc.overlapCalVec(&helper); + MissingETBase::Types::constvec_t overlaptrkvec = assoc.overlapTrkVec(&helper); ATH_MSG_VERBOSE(" Jet constituent-scale pt: " << jetconstp4.pt() << ", E: " << jetconstp4.e() ); ATH_MSG_VERBOSE(" Max constituent overlap pt: " << overlapcalvec.cpt() << ", E: " << overlapcalvec.ce() ); @@ -105,16 +107,18 @@ namespace met { JetFourMom_t jetconstp4 = jet.jetP4(JetConstitScaleMomentum); MissingETBase::Types::constvec_t jettrkvec = assoc.jetTrkVec(); + xAOD::MissingETAssociationHelper helper; + // loop over individual objects and check that none of them has a larger // associated constituent sum than the jet for(size_t iobj=0; iobj<assoc.objects().size(); ++iobj) { ATH_MSG_VERBOSE(" Now on constituent " << iobj ); const IParticle* obj = assoc.objects()[iobj]; if(!obj) continue; // invalid ElementLink -- thinned? - assoc.resetObjSelectionFlags(); - assoc.setObjSelectionFlag(iobj,true); - MissingETBase::Types::constvec_t overlapcalvec = assoc.overlapCalVec(); - MissingETBase::Types::constvec_t overlaptrkvec = assoc.overlapTrkVec(); + helper.resetObjSelectionFlags(); + helper.setObjSelectionFlag(&assoc,iobj,true); + MissingETBase::Types::constvec_t overlapcalvec = assoc.overlapCalVec(&helper); + MissingETBase::Types::constvec_t overlaptrkvec = assoc.overlapTrkVec(&helper); ATH_MSG_VERBOSE(" Object pt: " << obj->pt() << ", E: " << obj->e() << ", type: " << obj->type()); ATH_MSG_VERBOSE(" Constituent pt: " << overlapcalvec.cpt() << ", E: " << overlapcalvec.ce() ); diff --git a/Reconstruction/MET/METUtilities/src/METMakerAlg.cxx b/Reconstruction/MET/METUtilities/src/METMakerAlg.cxx index 1ffc68b5099b5f11ddd732660ad07443084f8ec2..909d89033195d63ba5fec77de67cff03060b1b58 100644 --- a/Reconstruction/MET/METUtilities/src/METMakerAlg.cxx +++ b/Reconstruction/MET/METUtilities/src/METMakerAlg.cxx @@ -140,7 +140,7 @@ namespace met { ATH_CHECK( m_metMap.isValid() ); MissingETAssociationMap* metMap = new MissingETAssociationMap((*m_metMap)); - MissingETAssociationHelper* metHelper = new MissingETAssociationHelper(metMap); + MissingETAssociationHelper metHelper(metMap); // Retrieve containers *********************************************** /// MET @@ -201,7 +201,7 @@ namespace met { } if( m_metmaker->rebuildMET("RefEle", xAOD::Type::Electron, newMet, metElectrons.asDataVector(), - metHelper, objScale).isFailure() ) { + &metHelper, objScale).isFailure() ) { ATH_MSG_WARNING("Failed to build electron term."); } ATH_MSG_DEBUG("Selected " << metElectrons.size() << " MET electrons. " @@ -218,7 +218,7 @@ namespace met { } if( m_metmaker->rebuildMET("RefGamma", xAOD::Type::Photon, newMet, metPhotons.asDataVector(), - metHelper, objScale).isFailure() ) { + &metHelper, objScale).isFailure() ) { ATH_MSG_WARNING("Failed to build photon term."); } ATH_MSG_DEBUG("Selected " << metPhotons.size() << " MET photons. " @@ -235,7 +235,7 @@ namespace met { } if( m_metmaker->rebuildMET("RefTau", xAOD::Type::Tau, newMet, metTaus.asDataVector(), - metHelper, objScale).isFailure() ){ + &metHelper, objScale).isFailure() ){ ATH_MSG_WARNING("Failed to build tau term."); } ATH_MSG_DEBUG("Selected " << metTaus.size() << " MET taus. " @@ -254,7 +254,7 @@ namespace met { if(m_doTruthLep) objScale = MissingETBase::UsageHandler::OnlyTrack; if( m_metmaker->rebuildMET("Muons", xAOD::Type::Muon, newMet, metMuons.asDataVector(), - metHelper, objScale).isFailure() ) { + &metHelper, objScale).isFailure() ) { ATH_MSG_WARNING("Failed to build muon term."); } ATH_MSG_DEBUG("Selected " << metMuons.size() << " MET muons. " @@ -262,7 +262,7 @@ namespace met { } if( m_metmaker->rebuildJetMET("RefJet", m_softclname, m_softtrkname, newMet, - Jets.cptr(), coreMet.cptr(), metHelper, false ).isFailure() ) { + Jets.cptr(), coreMet.cptr(), &metHelper, false ).isFailure() ) { ATH_MSG_WARNING("Failed to build jet and soft terms."); } ATH_MSG_DEBUG("Of " << Jets.cptr()->size() << " jets, " @@ -280,7 +280,6 @@ namespace met { ATH_MSG_WARNING("Building MET FinalClus sum failed."); } - delete metHelper; return StatusCode::SUCCESS; } diff --git a/Reconstruction/MET/METUtilities/util/example_METMaker_METSystematicsTool.cxx b/Reconstruction/MET/METUtilities/util/example_METMaker_METSystematicsTool.cxx index 2c7ed77cc57e06dcd78a68e6f143251ba06d5557..adb37b80ca1557f27c9196cc8fb28db20f71e2fa 100644 --- a/Reconstruction/MET/METUtilities/util/example_METMaker_METSystematicsTool.cxx +++ b/Reconstruction/MET/METUtilities/util/example_METMaker_METSystematicsTool.cxx @@ -29,6 +29,7 @@ int main() { #include "xAODMissingET/MissingETAuxContainer.h" #include "xAODMissingET/MissingETAssociationMap.h" #include "xAODMissingET/MissingETContainer.h" +#include "xAODMissingET/MissingETAssociationHelper.h" #include "xAODCore/ShallowAuxContainer.h" #include "xAODCore/ShallowCopy.h" @@ -194,8 +195,8 @@ int main( int argc, char* argv[]) {std::cout << __PRETTY_FUNCTION__ << std::endl xAOD::MissingETAuxContainer* newMetAuxContainer = new xAOD::MissingETAuxContainer(); newMetContainer->setStore(newMetAuxContainer); - // It is necessary to reset the selected objects before every MET calculation - metMap->resetObjSelectionFlags(); + // A MET Association Helper is needed to keep track of selected objects + xAOD::MissingETAssociationHelper metHelper(metMap); //here we apply some basic cuts and rebuild the met at each step //Electrons @@ -207,7 +208,7 @@ int main( int argc, char* argv[]) {std::cout << __PRETTY_FUNCTION__ << std::endl xAOD::Type::Electron, //telling the rebuilder that this is electron met newMetContainer, //filling this met container metElectrons.asDataVector(),//using these metElectrons that accepted our cuts - metMap) //and this association map + &metHelper) //and this association map ); //Photons @@ -219,7 +220,7 @@ int main( int argc, char* argv[]) {std::cout << __PRETTY_FUNCTION__ << std::endl xAOD::Type::Photon, newMetContainer, metPhotons.asDataVector(), - metMap) + &metHelper) ); //Taus @@ -231,7 +232,7 @@ int main( int argc, char* argv[]) {std::cout << __PRETTY_FUNCTION__ << std::endl xAOD::Type::Tau, newMetContainer, metTaus.asDataVector(), - metMap) + &metHelper) ); //Muons @@ -243,7 +244,7 @@ int main( int argc, char* argv[]) {std::cout << __PRETTY_FUNCTION__ << std::endl xAOD::Type::Muon, newMetContainer, metMuons.asDataVector(), - metMap) + &metHelper) ); //Now time to rebuild jetMet and get the soft term @@ -255,7 +256,7 @@ int main( int argc, char* argv[]) {std::cout << __PRETTY_FUNCTION__ << std::endl newMetContainer, //adding to this new met container calibJets, //using this jet collection to calculate jet met coreMet, //core met container - metMap, //with this association map + &metHelper, //with this association map false //don't apply jet jvt cut ) ); diff --git a/Reconstruction/MET/METUtilities/util/example_METMaker_advanced.cxx b/Reconstruction/MET/METUtilities/util/example_METMaker_advanced.cxx index bdb1db9e08a8c22ca659c3dac1d2ffa4bdf56ebe..248723221a0fa12d4decb48810256f0ce55b6274 100644 --- a/Reconstruction/MET/METUtilities/util/example_METMaker_advanced.cxx +++ b/Reconstruction/MET/METUtilities/util/example_METMaker_advanced.cxx @@ -28,6 +28,7 @@ int main() { #include "xAODMissingET/MissingETAuxContainer.h" #include "xAODMissingET/MissingETAssociationMap.h" #include "xAODMissingET/MissingETContainer.h" +#include "xAODMissingET/MissingETAssociationHelper.h" #include "xAODCore/ShallowCopy.h" #include "xAODJet/JetContainer.h" @@ -158,14 +159,12 @@ int main( int argc, char* argv[] ){std::cout << __PRETTY_FUNCTION__ << std::endl const xAOD::MissingETAssociationMap* metMap = nullptr; std::string metAssocKey = "METAssoc_" + jetType; ANA_CHECK( event->retrieve(metMap, metAssocKey) ); - metMap->resetObjSelectionFlags(); xAOD::MissingETContainer* newMetContainer = new xAOD::MissingETContainer(); xAOD::MissingETAuxContainer* newMetAuxContainer = new xAOD::MissingETAuxContainer(); newMetContainer->setStore(newMetAuxContainer); - // It is necessary to reset the selected objects before every MET calculation - metMap->resetObjSelectionFlags(); + xAOD::MissingETAssociationHelper metHelper(metMap); //here we apply some basic cuts and rebuild the met at each step //InvisibleElectrons @@ -178,7 +177,7 @@ int main( int argc, char* argv[] ){std::cout << __PRETTY_FUNCTION__ << std::endl } //this line will mark the electron as invisible if it passes the (inv) electron selection cut //this removes the particle and associated clusters from the jet and soft term calculations - ANA_CHECK( metMaker->markInvisible(metInvisibleElectrons.asDataVector(),metMap,newMetContainer) ); + ANA_CHECK( metMaker->markInvisible(metInvisibleElectrons.asDataVector(),&metHelper,newMetContainer) ); // NOTE: Objects marked as invisible should not also be added as part // of another term! However, you can e.g. mark some electrons invisible // and compute RefEle with others. @@ -193,7 +192,7 @@ int main( int argc, char* argv[] ){std::cout << __PRETTY_FUNCTION__ << std::endl xAOD::Type::Photon, newMetContainer, metPhotons.asDataVector(), - metMap) + &metHelper) ); //Taus ConstDataVector<xAOD::TauJetContainer> metTaus(SG::VIEW_ELEMENTS); @@ -204,7 +203,7 @@ int main( int argc, char* argv[] ){std::cout << __PRETTY_FUNCTION__ << std::endl xAOD::Type::Tau, newMetContainer, metTaus.asDataVector(), - metMap) + &metHelper) ); //Muons @@ -217,7 +216,7 @@ int main( int argc, char* argv[] ){std::cout << __PRETTY_FUNCTION__ << std::endl xAOD::Type::Muon, newMetContainer, metMuons.asDataVector(), - metMap) + &metHelper) ); met::addGhostMuonsToJets(*muons, *calibJets); @@ -230,7 +229,7 @@ int main( int argc, char* argv[] ){std::cout << __PRETTY_FUNCTION__ << std::endl newMetContainer, //adding to this new met container calibJets, //using this jet collection to calculate jet met coreMet, //core met container - metMap, //with this association map + &metHelper, //with this association map false //don't apply jet jvt cut ) ); @@ -240,7 +239,7 @@ int main( int argc, char* argv[] ){std::cout << __PRETTY_FUNCTION__ << std::endl newMetContainer,//adding to this new met container calibJets, //using this jet collection to calculate jet track met coreMet, //core met container - metMap, //with this association map + &metHelper, //with this association map false //don't apply jet jvt cut ) ); diff --git a/Reconstruction/MET/METUtilities/util/example_rebuildTrackMET.cxx b/Reconstruction/MET/METUtilities/util/example_rebuildTrackMET.cxx index 533f8a9e2c2b8d475cd944e7ace236842dc40103..849c29b2ef80bfd6735f2488ff29a1f3f3344236 100644 --- a/Reconstruction/MET/METUtilities/util/example_rebuildTrackMET.cxx +++ b/Reconstruction/MET/METUtilities/util/example_rebuildTrackMET.cxx @@ -28,6 +28,7 @@ int main() { #include "xAODMissingET/MissingETAuxContainer.h" #include "xAODMissingET/MissingETAssociationMap.h" #include "xAODMissingET/MissingETContainer.h" +#include "xAODMissingET/MissingETAssociationHelper.h" #include "xAODCore/ShallowAuxContainer.h" #include "xAODCore/ShallowCopy.h" @@ -178,9 +179,7 @@ int main( int argc, char* argv[]) {std::cout << __PRETTY_FUNCTION__ << std::endl xAOD::MissingETAuxContainer* newMetAuxContainer = new xAOD::MissingETAuxContainer(); newMetContainer->setStore(newMetAuxContainer); - // It is necessary to reset the selected objects before every MET calculation - metMap->resetObjSelectionFlags(); - + xAOD::MissingETAssociationHelper metHelper(metMap); //here we apply some basic cuts and rebuild the met at each step //Electrons ConstDataVector<xAOD::ElectronContainer> invisElectrons(SG::VIEW_ELEMENTS); @@ -195,14 +194,14 @@ int main( int argc, char* argv[]) {std::cout << __PRETTY_FUNCTION__ << std::endl } } if(!invisElectrons.empty()){ - ANA_CHECK( metMaker->markInvisible(invisElectrons.asDataVector(),metMap,newMetContainer) ); + ANA_CHECK( metMaker->markInvisible(invisElectrons.asDataVector(),&metHelper,newMetContainer) ); } ANA_CHECK( metMaker->rebuildMET("TrkEle", //name of metElectrons in metContainer xAOD::Type::Electron, //telling the rebuilder that this is electron met newMetContainer, //filling this met container metElectrons.asDataVector(),//using these metElectrons that accepted our cuts - metMap) //and this association map + &metHelper) //and this association map ); //Muons @@ -214,7 +213,7 @@ int main( int argc, char* argv[]) {std::cout << __PRETTY_FUNCTION__ << std::endl xAOD::Type::Muon, newMetContainer, metMuons.asDataVector(), - metMap) + &metHelper) ); // for rebuilding track MET @@ -223,7 +222,7 @@ int main( int argc, char* argv[]) {std::cout << __PRETTY_FUNCTION__ << std::endl newMetContainer,//adding to this new met container calibJets, //using this jet collection to calculate jet track met coreMet, //core met container - metMap, //with this association map + &metHelper, //with this association map false //don't apply jet jvt cut ) ); @@ -245,7 +244,7 @@ int main( int argc, char* argv[]) {std::cout << __PRETTY_FUNCTION__ << std::endl // when doing track MET xAOD::MissingET * jetTrkMet = (*newMetContainer)["TrkJet"]; ANA_CHECK( jetTrkMet != nullptr); - ANA_CHECK( metSystTool->applyCorrection(*jetTrkMet, metMap));//for jetTrkMet correction, we need the METAssociationMap + ANA_CHECK( metSystTool->applyCorrection(*jetTrkMet, &metHelper));//for jetTrkMet correction, we need the METAssociationMap if(debug) std::cout << "Jet track met: " << jetTrkMet->met(); //this builds the final track or cluster met sums, using systematic varied container