if(event.m_isLoose)top::check(evtStore()->retrieve(mets,m_config->sgKeyMissingEtLoose(event.m_hashValue)+"WithLooseObjects"),"Failed to retrieve MET");
elsetop::check(evtStore()->retrieve(mets,m_config->sgKeyMissingEt(event.m_hashValue)+"WithLooseObjects"),"Failed to retrieve MET");
registerParameter("DoLoose","Run Loose selection and dumps the Loose trees : Data (default), MC, Both, False",
"Data");
registerParameter("DoSysts","Run systematics on given selection: Both (default), Tight, Loose","Both");
registerParameter("UseLooseObjectsInMETInLooseTree","Experimental: use loose objects when rebuilding the MET for the loose tree : True or False (default = False)","False");
registerParameter("UseLooseObjectsInMETInNominalTree","Experimental: use loose objects when rebuilding the MET for the nominal tree : True or False (default = False)","False");
registerParameter("WriteMETBuiltWithLooseObjects","Write a separate branch with the met built with loose objects in the output for tests: True or False (default = False)","False");
registerParameter("OverlapRemovalLeptonDef",
"Special: run overlap removal on : Tight (top default) or Loose (not top default) lepton definitions",
//by default AT uses always tight objects in MET re-building; these options allow for using loose objects instead in the loose analysis and/or in the nominal analysis
top::check(recalculateEventMET(x,xaod_met_core,xaod_met_map),"Failed to recalculate MET for event");
if(m_config->writeMETBuiltWithLooseObjects())top::check(recalculateEventMET(x,xaod_met_core,xaod_met_map,true,"WithLooseObjects"),"Failed to recalculate MET using loose leptons for event");
top::check(recalculateEventMET(x,xaod_met_core,xaod_met_map),"Failed to recalculate MET for loose event");
if(m_config->writeMETBuiltWithLooseObjects())top::check(recalculateEventMET(x,xaod_met_core,xaod_met_map,true,"WithLooseObjects"),"Failed to recalculate MET using loose leptons for event");