ATLAS Offline Software
METNet.cxx
Go to the documentation of this file.
1 /*
3  Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
4 */
5 // Author: Bill Balunas <balunas@cern.ch>, based on earlier implementation by M. Leigh
7 
8 // STL Includes
9 #include <math.h>
10 
11 // ASG includes
13 #include "AsgTools/AsgToolConfig.h"
15 
16 // Tool headers
17 #include "METUtilities/METNet.h"
19 
20 // Event info and extra EDMs
22 
23 // ETMiss EDMs
27 
28 // Physics object EDMs
29 #include "xAODJet/JetContainer.h"
30 
31 namespace met {
32 
34  static const SG::AuxElement::ConstAccessor< std::vector<iplink_t > > acc_constitObjLinks("ConstitObjectLinks");
35  static const SG::AuxElement::Decorator< std::vector<iplink_t> > dec_constitObjLinks("ConstitObjectLinks");
36 
37  static const SG::AuxElement::ConstAccessor< std::vector<float> > acc_inputvalues("input_values");
38  static const SG::AuxElement::ConstAccessor< std::vector<std::string> > acc_inputnames("input_names");
39  static const SG::AuxElement::Decorator< std::vector<float> > dec_inputvalues("input_values");
40  static const SG::AuxElement::Decorator< std::vector<std::string> > dec_inputnames("input_names");
41 
42  METNet::METNet(const std::string& name):
43  AsgTool(name){}
44 
46  ATH_MSG_INFO( "Initializing " << name() << "..." );
47 
49  ATH_CHECK(m_pvContainerKey.initialize());
50 
51  if( m_netLocation.empty()){
52  ATH_MSG_ERROR("NetworkFile property was not specified!");
53  return StatusCode::FAILURE;
54  }
55  std::string netFilePath = PathResolverFindCalibFile(m_netLocation);
56  std::unique_ptr<METNetHandler> metNetHandler = std::make_unique<METNetHandler>( netFilePath );
57  if( metNetHandler->initialize() != 0){
58  ATH_MSG_ERROR("METNet model file not found!");
59  return StatusCode::FAILURE;
60  }
61  ATH_MSG_INFO("Resolved METNet ONNX file at " + netFilePath);
62  m_metNetHandler = std::move(metNetHandler);
63 
64  if(m_metmaker_loose.empty()){
65  asg::AsgToolConfig toolConfig("met::METMaker/metmaker_loose");
66  ATH_CHECK( toolConfig.setProperty("DoPFlow", true) );
67  ATH_CHECK( toolConfig.setProperty("JetSelection", "Loose") );
69  }
70  ATH_CHECK( m_metmaker_loose.retrieve() );
71 
72  if(m_metmaker_tight.empty()){
73  asg::AsgToolConfig toolConfig("met::METMaker/metmaker_tight");
74  ATH_CHECK( toolConfig.setProperty("DoPFlow", true) );
75  ATH_CHECK( toolConfig.setProperty("JetSelection", "Tight") );
77  }
78  ATH_CHECK( m_metmaker_tight.retrieve() );
79 
80  if(m_metmaker_tghtr.empty()){
81  asg::AsgToolConfig toolConfig("met::METMaker/metmaker_tghtr");
82  ATH_CHECK( toolConfig.setProperty("DoPFlow", true) );
83  ATH_CHECK( toolConfig.setProperty("JetSelection", "Tighter") );
85  }
86  ATH_CHECK( m_metmaker_tghtr.retrieve() );
87 
88  if(m_metmaker_tenac.empty()){
89  asg::AsgToolConfig toolConfig("met::METMaker/metmaker_tenac");
90  ATH_CHECK( toolConfig.setProperty("DoPFlow", true) );
91  ATH_CHECK( toolConfig.setProperty("JetSelection", "Tenacious") );
93  }
94  ATH_CHECK( m_metmaker_tenac.retrieve() );
95 
96  return StatusCode::SUCCESS;
97  }
98 
99  StatusCode METNet::rebuildMET( const std::string& metKey,
100  xAOD::Type::ObjectType metType,
101  xAOD::MissingETContainer* metCont,
102  const xAOD::IParticleContainer* collection,
104  MissingETBase::UsageHandler::Policy objScale ) const {
105  return m_metmaker_tight->rebuildMET( metKey, metType, metCont, collection, helper, objScale );
106  }
107 
108  StatusCode METNet::rebuildJetMET( const std::string&,
109  const std::string& softClusKey,
110  const std::string& softTrkKey,
111  xAOD::MissingETContainer* metCont,
112  const xAOD::JetContainer* jets,
113  const xAOD::MissingETContainer* metCoreCont,
115  bool ) const {
116 
117  // Retrieving the event information (Needed for METSig, so we do it early)
119 
120  float avgmu = ei->averageInteractionsPerCrossing();
121  float actmu = ei->actualInteractionsPerCrossing();
122 
123  // Creating the new containers for all the WPs
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() );
127 
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() );
131 
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() );
135 
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() );
139 
140  // Copying the contents of the original container into each WP container
141  // Avoids redundant calculation of identical terms.
142  ATH_MSG_VERBOSE( "Making copies of base MET container" );
143  ATH_CHECK( copyMETContainer( metCont_loose.get(), metCont ) );
144  ATH_CHECK( copyMETContainer( metCont_tight.get(), metCont ) );
145  ATH_CHECK( copyMETContainer( metCont_tghtr.get(), metCont ) );
146  ATH_CHECK( copyMETContainer( metCont_tenac.get(), metCont ) );
147 
148  // Selected objects may differ between WPs due to jets, muon-in-jet treatment, etc. Need unique helpers, so copy current state.
153 
154  // Building the jet and soft terms for each WP
155  ATH_MSG_VERBOSE( "Building jet and soft terms for each MET WP" );
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 ) );
160 
161  // Building and adding the "Final" MET object to each WP container
162  ATH_MSG_VERBOSE( "Building the Final MET object for each MET WP" );
163  ATH_CHECK( met::buildMETSum( "FinalTrk", metCont_loose.get(), static_cast<MissingETBase::Types::bitmask_t>(MissingETBase::Source::Signal::Track)) );
164  ATH_CHECK( met::buildMETSum( "FinalTrk", metCont_tight.get(), static_cast<MissingETBase::Types::bitmask_t>(MissingETBase::Source::Signal::Track)) );
165  ATH_CHECK( met::buildMETSum( "FinalTrk", metCont_tghtr.get(), static_cast<MissingETBase::Types::bitmask_t>(MissingETBase::Source::Signal::Track)) );
166  ATH_CHECK( met::buildMETSum( "FinalTrk", metCont_tenac.get(), static_cast<MissingETBase::Types::bitmask_t>(MissingETBase::Source::Signal::Track)) );
167  // CST uses the LCTopo source bitmask even if the clusters are actually at EM scale
168  ATH_CHECK( met::buildMETSum( "FinalClus", metCont_loose.get(), static_cast<MissingETBase::Types::bitmask_t>(MissingETBase::Source::Signal::LCTopo)) );
169  ATH_CHECK( met::buildMETSum( "FinalClus", metCont_tight.get(), static_cast<MissingETBase::Types::bitmask_t>(MissingETBase::Source::Signal::LCTopo)) );
170  ATH_CHECK( met::buildMETSum( "FinalClus", metCont_tghtr.get(), static_cast<MissingETBase::Types::bitmask_t>(MissingETBase::Source::Signal::LCTopo)) );
171  ATH_CHECK( met::buildMETSum( "FinalClus", metCont_tenac.get(), static_cast<MissingETBase::Types::bitmask_t>(MissingETBase::Source::Signal::LCTopo)) );
172 
174 
175  // Initialise two vectors: One for holding the network input values and another for the input names
176  std::vector<std::string> input_names;
177  std::vector<float> input_values;
178 
179  ATH_CHECK( addMETFinal( "Loose", metCont_loose.get(), input_names, input_values ) );
180 
181  // Tight gets all its hard terms included as well (same as all th others, only needed once)
182  ATH_CHECK( addMETTerm( "Tight", *(metCont_tight->find(MissingETBase::Source::electron())), input_names, input_values ) );
183  ATH_CHECK( addMETTerm( "Tight", *(metCont_tight->find(MissingETBase::Source::photon())), input_names, input_values ) );
184  ATH_CHECK( addMETTerm( "Tight", *(metCont_tight->find(MissingETBase::Source::tau())), input_names, input_values ) );
185  ATH_CHECK( addMETTerm( "Tight", *(metCont_tight->find(MissingETBase::Source::muon())), input_names, input_values ) );
186  ATH_CHECK( addMETFinal( "Tight", metCont_tight.get(), input_names, input_values ) );
187 
188  ATH_CHECK( addMETFinal( "Tighter", metCont_tghtr.get(), input_names, input_values ) );
189  ATH_CHECK( addMETFinal( "Tenacious", metCont_tenac.get(), input_names, input_values ) );
190 
191  // Pileup information and tracking information (using the user provided primary vertex container name)
193  if(!pvtxs.isValid()){
194  ATH_MSG_ERROR("Could not retrieve primary vertex container!");
195  return StatusCode::FAILURE;
196  }
197  int NVx_2Tracks = 0;
198  int NVx_4Tracks = 0;
199  int PV_NTracks = 0;
200  int n_tracks = 0;
201  for ( const xAOD::Vertex* vx : *pvtxs ) {
202  n_tracks = vx->nTrackParticles();
203  if ( n_tracks>=2 ) NVx_2Tracks++;
204  if ( n_tracks>=4 ) NVx_4Tracks++;
205  if ( vx->vertexType() == xAOD::VxType::PriVtx ) PV_NTracks = n_tracks;
206  }
207  ATH_CHECK( addInputValue( "ActualMu", actmu, input_names, input_values ) );
208  ATH_CHECK( addInputValue( "AverageMu", avgmu, input_names, input_values ) );
209  ATH_CHECK( addInputValue( "NPV_2Tracks", NVx_2Tracks, input_names, input_values ) );
210  ATH_CHECK( addInputValue( "NPV_4Tracks", NVx_4Tracks, input_names, input_values ) );
211  ATH_CHECK( addInputValue( "PV_NTracks", PV_NTracks, input_names, input_values ) );
212 
213  // Creating a dummy MET object on the output container to carry the NN features and decorate it with the two vectors
214  ATH_MSG_VERBOSE( "Saving network inputs to base MET container" );
215  xAOD::MissingET* net_inpts = nullptr;
216  ATH_CHECK( fillMET( net_inpts, metCont, "NetInputDummy", static_cast<MissingETBase::Types::bitmask_t>(MissingETBase::Source::Type::UnknownType) ) );
217  dec_inputnames( *(*metCont)["NetInputDummy"] ) = input_names;
218  dec_inputvalues( *(*metCont)["NetInputDummy"] ) = input_values;
219 
220  return StatusCode::SUCCESS;
221  }
222 
223  StatusCode METNet::evaluateNNMET( const std::string& totalName,
224  xAOD::MissingETContainer* metCont) const {
225 
226  // First we check that the container has the correct decorations
227  ATH_MSG_VERBOSE( "Checking MET container for network inputs" );
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;
231  }
232 
233  // Pull out the vector from the met containter
234  std::vector<float> tmp_inputs = acc_inputvalues(*(*metCont)["NetInputDummy"]);
235  ATH_MSG_VERBOSE( "Loaded " << tmp_inputs.size() << " network inputs" );
236 
237  // Check that the list of inputs matches the network size
238  if ( tmp_inputs.size() != m_metNetHandler->getReqSize() ) {
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;
242  }
243 
244  // Passing the inputs through the network
245  std::vector<float> net_met;
246  m_metNetHandler->predict(net_met, tmp_inputs);
247 
248  // Adding the network output to the Final Met container
249  xAOD::MissingET* metFinal = nullptr;
250  ATH_CHECK( fillMET( metFinal, metCont, totalName, MissingETBase::Source::total() ) );
251  metFinal->setMpx( net_met[0] );
252  metFinal->setMpy( net_met[1] );
253 
254  ATH_MSG_VERBOSE( "Writing the Final Network MET: (" << net_met[0] << ", " << net_met[1] << ")" );
255 
256  return StatusCode::SUCCESS;
257  }
258 
259  StatusCode METNet::addMETFinal( const std::string& WP_name,
260  xAOD::MissingETContainer* met_container,
261  std::vector<std::string>& name_vec,
262  std::vector<float>& val_vec ) const {
263  // Add the jet, soft, and final terms to the vector
264  ATH_CHECK( addMETTerm( WP_name, (*met_container)["RefJet"], name_vec, val_vec ) );
265  ATH_CHECK( addMETTerm( WP_name, (*met_container)["PVSoftTrk"], name_vec, val_vec ) );
266  ATH_CHECK( addMETTerm( WP_name, (*met_container)["FinalTrk"], name_vec, val_vec ) );
267  ATH_CHECK( addMETTerm( WP_name, (*met_container)["SoftClus"], name_vec, val_vec ) );
268  ATH_CHECK( addMETTerm( WP_name, (*met_container)["FinalClus"], name_vec, val_vec ) );
269  return StatusCode::SUCCESS;
270  }
271 
272  StatusCode METNet::addMETTerm( const std::string &WP_name,
274  std::vector<std::string>& name_vec,
275  std::vector<float>& val_vec ) const {
276 
277  if(!met){
278  ATH_MSG_ERROR("addMETTerm was called with a null pointer for the input MET value!");
279  return StatusCode::FAILURE;
280  }
281 
282  // Build the name of the term from the WP and the Object type from the container
283  std::string tname = WP_name + "_" + met->name();
284 
285  // Add the MET components and SumET
286  ATH_CHECK( addInputValue( tname+"_mpx", met->mpx(), name_vec, val_vec ) );
287  ATH_CHECK( addInputValue( tname+"_mpy", met->mpy(), name_vec, val_vec ) );
288  ATH_CHECK( addInputValue( tname+"_sumet", met->sumet(), name_vec, val_vec ) );
289 
290  return StatusCode::SUCCESS;
291  }
292 
294  float value,
295  std::vector<std::string>& name_vec,
296  std::vector<float>& val_vec ) const {
297  // This is the only place we push_back to either vector
298  // Ensuring that they are always consistant with each other!!
299  ATH_MSG_VERBOSE( "Adding variable: " << var_name << " = " << value << " to the network input vector" );
300  name_vec.push_back( var_name );
301  val_vec.push_back( value );
302  return StatusCode::SUCCESS;
303  }
304 
306  const xAOD::MissingETContainer* old_container) const {
307  xAOD::MissingET* blank_met;
308 
309  for ( const xAOD::MissingET* old_met : *old_container ) {
310  blank_met = nullptr;
311  const std::string& name = old_met->name();
312 
313  ATH_CHECK( fillMET( blank_met, new_container, name, old_met->source() ) ); // Initialize the blank met with the new name in the new container
314  *(*new_container)[name] = *(*old_container)[name]; // Copy over the contents of this "term" from old container to new
315 
316  // Also need to copy the original object links
317  dec_constitObjLinks(*(*new_container)[name]) = acc_constitObjLinks(*(*old_container)[name]);
318  }
319 
320  return StatusCode::SUCCESS;
321  }
322 
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"
336  ")" );
337  return StatusCode::FAILURE;
338  }
339 
344  bool,
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"
355  ")" );
356  return StatusCode::FAILURE;
357  }
358 
359  StatusCode METNet::rebuildJetMET(const std::string& metJetKey,
360  const std::string& /*metSoftKey*/,
361  xAOD::MissingETContainer* metCont,
362  const xAOD::JetContainer* jets,
363  const xAOD::MissingETContainer* metCoreCont,
365  bool doJetJVT) const {
366  return rebuildJetMET(metJetKey, "SoftClus", "PVSoftTrk", metCont, jets, metCoreCont, helper, doJetJVT);
367  }
368 
370  const xAOD::JetContainer*,
373  const xAOD::MissingET*,
375  const xAOD::MissingET*,
376  bool,
377  bool,
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"
389  "bool doJetJVT\n"
390  ")" );
391  return StatusCode::FAILURE;
392  }
393 
394  StatusCode METNet::rebuildTrackMET( const std::string&,
395  const std::string&,
397  const xAOD::JetContainer*,
400  bool ) const {
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;
404  }
405 
407  const xAOD::JetContainer*,
410  const xAOD::MissingET*,
411  bool ) const {
412  ATH_MSG_ERROR( "METNet does not support Track MET!" );
413  return StatusCode::FAILURE;
414  }
415 
418  xAOD::MissingETContainer* ) const {
419  ATH_MSG_ERROR( "METNet does not support markInvisible!");
420  return StatusCode::FAILURE;
421  }
422 
423 }
met::METNet::rebuildJetMET
virtual StatusCode rebuildJetMET(const std::string &metJetKey, const std::string &softTrkKey, xAOD::MissingETContainer *metCont, const xAOD::JetContainer *jets, const xAOD::MissingETContainer *metCoreCont, xAOD::MissingETAssociationHelper &helper, bool doJetJVT=false) const override
Definition: METNet.cxx:359
MissingETBase::Source::muon
static Types::bitmask_t muon(Region reg=Region::FullAcceptance)
Standard MET term from reconstructed muons.
Definition: MissingETBase.h:250
MissingETBase::Source::Type::UnknownType
@ UnknownType
Indicator for an unknown MET term source.
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
ObjectType
ObjectType
Definition: BaseObject.h:11
CheckAppliedSFs.var_name
var_name
Definition: CheckAppliedSFs.py:241
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:67
xAOD::MissingET_v1::setMpy
void setMpy(float value)
Set the component.
MissingETBase::Source::electron
static Types::bitmask_t electron(Region reg=Region::FullAcceptance)
Standard MET term from reconstructed electrons.
Definition: MissingETBase.h:229
met::METNet::copyMETContainer
StatusCode copyMETContainer(xAOD::MissingETContainer *new_container, const xAOD::MissingETContainer *old_container) const
Definition: METNet.cxx:305
met::METNet::m_netLocation
Gaudi::Property< std::string > m_netLocation
Definition: METNet.h:136
defineDB.jets
jets
Definition: JetTagCalibration/share/defineDB.py:24
met::METNet::m_metmaker_tghtr
ToolHandle< IMETMaker > m_metmaker_tghtr
Definition: METNet.h:145
athena.value
value
Definition: athena.py:124
MissingETBase::Source::Signal::LCTopo
@ LCTopo
Indicator for MET contribution from TopoClusters with LCW calibration applied.
SG::ConstAccessor
Helper class to provide constant type-safe access to aux data.
Definition: ConstAccessor.h:55
ATH_MSG_VERBOSE
#define ATH_MSG_VERBOSE(x)
Definition: AthMsgStreamMacros.h:28
met::METNet::markInvisible
virtual StatusCode markInvisible(const xAOD::IParticleContainer *collection, xAOD::MissingETAssociationHelper &helper, xAOD::MissingETContainer *metCont) const override
Definition: METNet.cxx:416
MissingETBase::Types::bitmask_t
uint64_t bitmask_t
Type for status word bit mask.
Definition: MissingETBase.h:39
asg::AsgToolConfig::makePrivateTool
::StatusCode makePrivateTool(ToolHandle< T > &toolHandle) const
make a private tool with the given configuration
met::METNet::m_eventInfoKey
SG::ReadHandleKey< xAOD::EventInfo > m_eventInfoKey
Definition: METNet.h:138
met::METNet::m_metmaker_tight
ToolHandle< IMETMaker > m_metmaker_tight
Definition: METNet.h:144
runBeamSpotCalibration.helper
helper
Definition: runBeamSpotCalibration.py:115
met::buildMETSum
StatusCode buildMETSum(const std::string &totalName, xAOD::MissingETContainer *metCont)
Definition: METHelpers.cxx:64
met::METNet::m_pvContainerKey
SG::ReadHandleKey< xAOD::VertexContainer > m_pvContainerKey
Definition: METNet.h:139
METHelpers.h
met::METNet::m_metNetHandler
std::unique_ptr< const METNetHandler > m_metNetHandler
Definition: METNet.h:141
met
Definition: IMETSignificance.h:24
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
asg::AsgToolConfig
an object that can create a AsgTool
Definition: AsgToolConfig.h:22
SG::Decorator
Helper class to provide type-safe access to aux data.
Definition: Decorator.h:59
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
MissingETAuxContainer.h
AsgToolConfig.h
xAOD::VxType::PriVtx
@ PriVtx
Primary vertex.
Definition: TrackingPrimitives.h:572
met::METNet::rebuildTrackMET
virtual StatusCode rebuildTrackMET(const std::string &metJetKey, const std::string &softTrkKey, xAOD::MissingETContainer *metCont, const xAOD::JetContainer *jets, const xAOD::MissingETContainer *metCoreCont, xAOD::MissingETAssociationHelper &helper, bool doJetJVT) const override
Definition: METNet.cxx:394
xAOD::MissingET_v1
Principal data object for Missing ET.
Definition: MissingET_v1.h:25
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
SG::VarHandleKey::initialize
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:103
METNet.h
DataVector
Derived DataVector<T>.
Definition: DataVector.h:795
met::METNet::addMETFinal
StatusCode addMETFinal(const std::string &WP_name, xAOD::MissingETContainer *met_container, std::vector< std::string > &name_vec, std::vector< float > &val_vec) const
Definition: METNet.cxx:259
met::METNet::addMETTerm
StatusCode addMETTerm(const std::string &WP_name, xAOD::MissingET *met, std::vector< std::string > &name_vec, std::vector< float > &val_vec) const
Definition: METNet.cxx:272
xAOD::MissingET_v1::setMpx
void setMpx(float value)
Set the component.
SG::ReadHandle::isValid
virtual bool isValid() override final
Can the handle be successfully dereferenced?
met::METNet::METNet
METNet(const std::string &name)
Definition: METNet.cxx:42
MissingETBase::UsageHandler::Policy
Policy
Policies on usage checks.
Definition: MissingETCompositionBase.h:182
xAOD::EventInfo_v1::averageInteractionsPerCrossing
float averageInteractionsPerCrossing() const
Average interactions per crossing for all BCIDs - for out-of-time pile-up.
Definition: EventInfo_v1.cxx:397
xAOD::MissingETContainer_v1
Container for xAOD::MissingET_v1 objects.
Definition: MissingETContainer_v1.h:21
PathResolver.h
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:240
MissingETBase::Source::tau
static Types::bitmask_t tau(Region reg=Region::FullAcceptance)
Standard MET term from reconstructed tau leptons.
Definition: MissingETBase.h:243
ReadHandle.h
Handle class for reading from StoreGate.
xAOD::MissingETAssociationHelper
Definition: MissingETAssociationHelper.h:22
met::METNet::m_metmaker_tenac
ToolHandle< IMETMaker > m_metmaker_tenac
Definition: METNet.h:146
PathResolverFindCalibFile
std::string PathResolverFindCalibFile(const std::string &logical_file_name)
Definition: PathResolver.cxx:321
MissingETBase::Source::Signal::Track
@ Track
Indicator for MET contribution from reconstructed charged particle tracks.
xAOD::Vertex_v1
Class describing a Vertex.
Definition: Vertex_v1.h:42
JetContainer.h
met::METNet::evaluateNNMET
virtual StatusCode evaluateNNMET(const std::string &totalName, xAOD::MissingETContainer *metCont) const override
Definition: METNet.cxx:223
asg::AsgComponentConfig::setProperty
StatusCode setProperty(const std::string &name, const T &value)
set the given property
met::METNet::initialize
virtual StatusCode initialize() override
Dummy implementation of the initialisation function.
Definition: METNet.cxx:45
MissingETBase::Source::photon
static Types::bitmask_t photon(Region reg=Region::FullAcceptance)
Standard MET term from reconstructed photons.
Definition: MissingETBase.h:236
IParticleHelpers.h
MissingETBase::Source::total
static Types::bitmask_t total(Region reg=Region::FullAcceptance)
Standard full reconstructed MET.
Definition: MissingETBase.h:271
met::fillMET
StatusCode fillMET(xAOD::MissingET *&met, xAOD::MissingETContainer *metCont, const std::string &metKey, const MissingETBase::Types::bitmask_t metSource)
Definition: METHelpers.cxx:123
met::METNet::addInputValue
StatusCode addInputValue(const std::string &var_name, float value, std::vector< std::string > &name_vec, std::vector< float > &val_vec) const
Definition: METNet.cxx:293
MissingETComposition.h
MissingETContainer.h
met::METNet::rebuildMET
virtual StatusCode rebuildMET(const std::string &metKey, xAOD::Type::ObjectType metType, xAOD::MissingETContainer *metCont, const xAOD::IParticleContainer *collection, xAOD::MissingETAssociationHelper &helper, MissingETBase::UsageHandler::Policy objScale) const override
Definition: METNet.cxx:99
xAOD::EventInfo_v1::actualInteractionsPerCrossing
float actualInteractionsPerCrossing() const
Average interactions per crossing for the current BCID - for in-time pile-up.
Definition: EventInfo_v1.cxx:380
met::METNet::m_metmaker_loose
ToolHandle< IMETMaker > m_metmaker_loose
Definition: METNet.h:143
met::iplink_t
ElementLink< xAOD::IParticleContainer > iplink_t
Definition: ColumnarMETMaker.cxx:63