53 return StatusCode::FAILURE;
56 std::unique_ptr<METNetHandler> metNetHandler = std::make_unique<METNetHandler>( netFilePath );
57 if( metNetHandler->initialize() != 0){
59 return StatusCode::FAILURE;
61 ATH_MSG_INFO(
"Resolved METNet ONNX file at " + netFilePath);
96 return StatusCode::SUCCESS;
109 const std::string& softClusKey,
110 const std::string& softTrkKey,
124 auto metCont_loose = std::make_shared<xAOD::MissingETContainer>();
125 auto metCont_looseAux = std::make_shared<xAOD::MissingETAuxContainer>();
126 metCont_loose->setStore( metCont_looseAux.get() );
128 auto metCont_tight = std::make_shared<xAOD::MissingETContainer>();
129 auto metCont_tightAux = std::make_shared<xAOD::MissingETAuxContainer>();
130 metCont_tight->setStore( metCont_tightAux.get() );
132 auto metCont_tghtr = std::make_shared<xAOD::MissingETContainer>();
133 auto metCont_tghtrAux = std::make_shared<xAOD::MissingETAuxContainer>();
134 metCont_tghtr->setStore( metCont_tghtrAux.get() );
136 auto metCont_tenac = std::make_shared<xAOD::MissingETContainer>();
137 auto metCont_tenacAux = std::make_shared<xAOD::MissingETAuxContainer>();
138 metCont_tenac->setStore( metCont_tenacAux.get() );
156 ATH_CHECK(
m_metmaker_loose->rebuildJetMET(
"RefJet", softClusKey, softTrkKey, metCont_loose.get(),
jets, metCoreCont, helper_loose,
true ) );
157 ATH_CHECK(
m_metmaker_tight->rebuildJetMET(
"RefJet", softClusKey, softTrkKey, metCont_tight.get(),
jets, metCoreCont, helper_tight,
true ) );
158 ATH_CHECK(
m_metmaker_tghtr->rebuildJetMET(
"RefJet", softClusKey, softTrkKey, metCont_tghtr.get(),
jets, metCoreCont, helper_tghtr,
true ) );
159 ATH_CHECK(
m_metmaker_tenac->rebuildJetMET(
"RefJet", softClusKey, softTrkKey, metCont_tenac.get(),
jets, metCoreCont, helper_tenac,
true ) );
176 std::vector<std::string> input_names;
177 std::vector<float> input_values;
194 ATH_MSG_ERROR(
"Could not retrieve primary vertex container!");
195 return StatusCode::FAILURE;
202 n_tracks = vx->nTrackParticles();
203 if ( n_tracks>=2 ) NVx_2Tracks++;
204 if ( n_tracks>=4 ) NVx_4Tracks++;
217 dec_inputnames( *(*metCont)[
"NetInputDummy"] ) = input_names;
218 dec_inputvalues( *(*metCont)[
"NetInputDummy"] ) = input_values;
220 return StatusCode::SUCCESS;
228 if ( (*metCont)[
"NetInputDummy"] == NULL ) {
229 ATH_MSG_ERROR(
"Could not find the NetInputDummy MET object in the container. Did you run rebuildJetMET?" );
230 return StatusCode::FAILURE;
234 std::vector<float> tmp_inputs = acc_inputvalues(*(*metCont)[
"NetInputDummy"]);
235 ATH_MSG_VERBOSE(
"Loaded " << tmp_inputs.size() <<
" network inputs" );
239 ATH_MSG_ERROR(
"The MET container provided " << tmp_inputs.size()
240 <<
" elements, but the ONNX network needs exactly " <<
m_metNetHandler->getReqSize() <<
"!" );
241 return StatusCode::FAILURE;
245 std::vector<float> net_met;
251 metFinal->
setMpx( net_met[0] );
252 metFinal->
setMpy( net_met[1] );
254 ATH_MSG_VERBOSE(
"Writing the Final Network MET: (" << net_met[0] <<
", " << net_met[1] <<
")" );
256 return StatusCode::SUCCESS;
261 std::vector<std::string>& name_vec,
262 std::vector<float>& val_vec )
const {
269 return StatusCode::SUCCESS;
274 std::vector<std::string>& name_vec,
275 std::vector<float>& val_vec )
const {
278 ATH_MSG_ERROR(
"addMETTerm was called with a null pointer for the input MET value!");
279 return StatusCode::FAILURE;
283 std::string tname = WP_name +
"_" +
met->name();
290 return StatusCode::SUCCESS;
295 std::vector<std::string>& name_vec,
296 std::vector<float>& val_vec )
const {
301 val_vec.push_back(
value );
302 return StatusCode::SUCCESS;
311 const std::string&
name = old_met->name();
314 *(*new_container)[
name] = *(*old_container)[
name];
317 dec_constitObjLinks(*(*new_container)[
name]) = acc_constitObjLinks(*(*old_container)[
name]);
320 return StatusCode::SUCCESS;
327 ATH_MSG_ERROR(
"METNet has not overloaded this version of rebuildMET from IMETMaker!\n"
328 "Please only use this method:\n"
329 "StatusCode METMaker::rebuildMET("
330 "const std::string& metKey,\n"
331 "xAOD::Type::ObjectType metType,\n"
332 "xAOD::MissingETContainer* metCont,\n"
333 "const xAOD::IParticleContainer* collection,\n"
334 "xAOD::MissingETAssociationHelper& helper,\n"
335 "MissingETBase::UsageHandler::Policy objScale\n"
337 return StatusCode::FAILURE;
346 ATH_MSG_ERROR(
"METNet has not overloaded this version of rebuildMET from IMETMaker!\n"
347 "Please only use this method:\n"
348 "StatusCode METMaker::rebuildMET("
349 "const std::string& metKey,\n"
350 "xAOD::Type::ObjectType metType,\n"
351 "xAOD::MissingETContainer* metCont,\n"
352 "const xAOD::IParticleContainer* collection,\n"
353 "xAOD::MissingETAssociationHelper& helper,\n"
354 "MissingETBase::UsageHandler::Policy objScale\n"
356 return StatusCode::FAILURE;
365 bool doJetJVT)
const {
378 std::vector<const xAOD::IParticle*>* )
const {
379 ATH_MSG_ERROR(
"METNet has not overloaded this version of rebuildJetMET from IMETMaker!\n"
380 "Please use the method with the following arguments:\n"
381 "StatusCode METNet::rebuildJetMET(\n"
382 "const std::string& metJetKey,\n"
383 "const std::string& softClusKey,\n"
384 "const std::string& softTrkKey,\n"
385 "xAOD::MissingETContainer* metCont,\n"
386 "const xAOD::JetContainer* jets,\n"
387 "const xAOD::MissingETContainer* metCoreCont,\n"
388 "xAOD::MissingETAssociationHelper& helper,\n"
391 return StatusCode::FAILURE;
401 ATH_MSG_ERROR(
"Please don't use the method METNet::rebuildTrackMET!\n"
402 "It has no use in METNet and is a holdover from its inheritance from IMETMaker." );
403 return StatusCode::FAILURE;
413 return StatusCode::FAILURE;
420 return StatusCode::FAILURE;