4 Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
8 ////////////////////////////////////////////
9 // MissingET_v1 Inline Functions: Getters //
10 ////////////////////////////////////////////
12 inline float xAOD::MissingET_v1::met() const { return sqrt(this->mpx()*this->mpx()+this->mpy()*this->mpy()); }
13 inline float xAOD::MissingET_v1::phi() const { return atan2(this->mpy(),this->mpx()); }
14 inline float xAOD::MissingET_v1::mpx() const { return m_acc_mpx(*this); }
15 inline float xAOD::MissingET_v1::mpy() const { return m_acc_mpy(*this); }
16 inline float xAOD::MissingET_v1::sumet() const { return m_acc_sumet(*this); }
18 inline const std::string& xAOD::MissingET_v1::name() const { static const SG::AuxElement::Accessor<std::string> acc("name"); return acc(*this); }
19 inline std::size_t xAOD::MissingET_v1::nameHash() const {
20 if (!m_nameHash.isValid()) { m_nameHash.set(std::hash<std::string>()(this->f_nameConst())); }
21 return *m_nameHash.ptr();
23 inline MissingETBase::Types::bitmask_t xAOD::MissingET_v1::source() const { static const SG::AuxElement::Accessor<MissingETBase::Types::bitmask_t> acc("source"); return acc(*this); }
25 ////////////////////////////////////////////
26 // MissingET_v1 Inline Functions: Setters //
27 ////////////////////////////////////////////
29 inline float& xAOD::MissingET_v1::f_mpx() { return m_acc_mpx(*this); }
30 inline float& xAOD::MissingET_v1::f_mpy() { return m_acc_mpy(*this); }
31 inline float& xAOD::MissingET_v1::f_sumet() { return m_acc_sumet(*this); }
33 inline std::string& xAOD::MissingET_v1::f_name() { static const SG::AuxElement::Accessor<std::string> acc("name"); return acc(*this); }
34 inline const std::string& xAOD::MissingET_v1::f_nameConst() const { static const SG::AuxElement::ConstAccessor<std::string> acc("name"); return acc(*this); }
35 inline MissingETBase::Types::bitmask_t& xAOD::MissingET_v1::f_source() { static const SG::AuxElement::Accessor<MissingETBase::Types::bitmask_t> acc("source"); return acc(*this); }
37 inline void xAOD::MissingET_v1::setMpx(float mpx) { this->f_mpx() = mpx; }
38 inline void xAOD::MissingET_v1::setMpy(float mpy) { this->f_mpy() = mpy; }
39 inline void xAOD::MissingET_v1::setSumet(float sumet) { this->f_sumet() = sumet; }
41 inline void xAOD::MissingET_v1::setName(const std::string& name) {
42 this->f_name() = name;
46 inline void xAOD::MissingET_v1::updateHash() {
48 m_nameHash.set(std::hash<std::string>()(this->f_nameConst()));
50 inline void xAOD::MissingET_v1::setSource(MissingETBase::Types::bitmask_t src) { this->f_source() = src; }
52 ///////////////////////////////////////////////////
53 // MissingET_v1 Inline Functions: Object algebra //
54 ///////////////////////////////////////////////////
56 inline xAOD::MissingET_v1& xAOD::MissingET_v1::operator+=(const IParticle* particle)
57 { this->add(particle); return *this; }
59 inline xAOD::MissingET_v1& xAOD::MissingET_v1::operator+=(const MissingET_v1& met)
60 { this->f_mpx() += met.mpx(); this->f_mpy() += met.mpy(); this->f_sumet() += met.sumet(); return *this; }
62 inline xAOD::MissingET_v1& xAOD::MissingET_v1::operator-=(const MissingET_v1& met)
63 { this->f_mpx() -= met.mpx(); this->f_mpy() -= met.mpy(); this->f_sumet() -= met.sumet(); return *this; }
65 inline xAOD::MissingET_v1& xAOD::MissingET_v1::operator*=(float scale)
66 { this->f_mpx() *= scale; this->f_mpy() *= scale; this->f_sumet() *= scale; return *this; }
68 inline xAOD::MissingET_v1& xAOD::MissingET_v1::operator/=(float scale)
69 { float f(MissingETBase::Numerical::divide(1.,scale)); this->operator*=(f); return *this; }
71 ///////////////////////////////////////////////////////////////////////
72 // MissingET_v1 Inline Functions: Object Algebra in Global Namespace //
73 ///////////////////////////////////////////////////////////////////////
75 inline xAOD::MissingET_v1 operator+(const xAOD::MissingET_v1& met0,const xAOD::MissingET_v1& met1)
76 { return xAOD::MissingET_v1(met0.mpx()+met1.mpx(),met0.mpy()+met1.mpy(),met0.sumet()+met1.sumet()); }
78 inline xAOD::MissingET_v1 operator-(const xAOD::MissingET_v1& met0,const xAOD::MissingET_v1& met1)
79 { return xAOD::MissingET_v1(met0.mpx()-met1.mpx(),met0.mpy()-met1.mpy(),met0.sumet()-met1.sumet()); }
81 inline xAOD::MissingET_v1 operator*(const xAOD::MissingET_v1& met,float scale)
82 { return xAOD::MissingET_v1(met.mpx()*scale,met.mpy()*scale,met.sumet()*scale); }
84 inline xAOD::MissingET_v1 operator*(float scale,const xAOD::MissingET_v1& met)
85 { return met * scale; }
87 inline xAOD::MissingET_v1 operator/(const xAOD::MissingET_v1& met,float scale)
88 { float f(MissingETBase::Numerical::divide(1.,scale)); return f * met; }
90 ////////////////////////////////////////////////
91 // MissingET_v1 Inline Functions: Comparators //
92 ////////////////////////////////////////////////
94 inline bool xAOD::MissingET_v1::operator==(const MissingET_v1& met) const
95 { return MissingETBase::Numerical::isEqual(met.mpx(),this->mpx()) && MissingETBase::Numerical::isEqual(met.mpy(),this->mpy()) && MissingETBase::Numerical::isEqual(met.sumet(),this->sumet()); }
97 inline bool xAOD::MissingET_v1::operator!=(const MissingET_v1& met) const
98 { return !this->operator==(met); }
100 //////////////////////////////////////////////////
101 // MissingET_v1 Inline Functions: Data Managers //
102 //////////////////////////////////////////////////
104 inline void xAOD::MissingET_v1::clear()
105 { this->f_mpx() = 0.; this->f_mpy() = 0.; this->f_sumet() = 0.; }
107 ///////////////////////////////////////////////////////////////
108 // The rest of the file contains doxygen documentation only! //
109 ///////////////////////////////////////////////////////////////
111 /*! @class xAOD::MissingET_v1
113 * This object provides the data store for the missing transverse momentum (MET) components @f$(p_{x},p_{y},\Sigma E_{\rmT}) @f$. In addition, each
114 * xAOD::MissingET_v1 object stores the name of the MET term it represents, and a source indicator. The object can be instantiated as a default (no-op)
115 * @link xAOD::MissingET_v1::MissingET_v1(bool) object without a datastore @endlink, or a fully functional plain-old-data (POD) object with a private data store.
116 * The latter is supported by constructors with just @link xAOD::MissingET_v1::MissingET_v1(const std::string&,MissingETBase::Types::bitmask_t) name and source indicator @endlink,
117 * initial kinematics are set to zero), and constructors storing (initial or final) kinematic contributions, either from a
118 * @link xAOD::MissingET_v1::MissingET_v1(const IParticle*,const std::string&,MissingETBase::Types::bitmask_t) physics or signal object reference @endlink
119 * or from @link xAOD::MissingET_v1::MissingET_v1(float,float,float,const std::string&,MissingETBase::Types::bitmask_t) individually specified kinematics @endlink.
121 * @note This object is designed to store only the summed kinematics of a MET term, together with some identifiers. The actual contribution to this term from
122 * any physics or signal object to this MET term is not stored here, but in a dedicated @link xAOD::MissingETComponent_v1 MET component object @endlink.
124 * Adding kinematics to a MET term implies to use the correct convention, which is given by
126 * p_{x}^{\rm miss} & = & - \sum p_{x} \\
127 * p_{y}^{\rm miss} & = & - \sum p_{y} \\
128 * \Sigma E_{\rm T} & = & \sum p_{\rm T}.
130 * Here @f$ p_{x,y} @f$ and @f$ p_{\rm T} @f$ are the transverse momentum and its components of the particle (or detector signal object) added to the MET object. This convention
131 * is implemented by the xAOD::MissingET_v1::add() method, which is highly recommended to be used to fill the MET term.
133 * MET data are initially represented in indivdual, non-storable data objects.
134 * As mentioned above, each of these data objects typically contains the contribution from a set of same type final state objects
135 * like particles and jets, and is identified as a specific contribution by a name and a source indicator (bit pattern). In general all MET objects from the various
136 * sources contribute to a given MET reconstruction configuration and their sum is the overall MET for the event. For storage, and to indicated that a given xAOD::MissingET_v1
137 * object represents a certain MET term in a given MET reconstruction configuration, the individual MET objects
138 * are collected into a xAOD::MissingETContainer_v1 object. Typically, the insertion sequence (e.g. the index of an individual MET object) in this container is
139 * determined by the tool sequence with which the MET terms are reconstructed, there is no particular enforcement of this rule in the EDM. Safe (random) accessors using the
140 * name or the source indicator of the requested MET object are provided by the MET object.
142 * @author Peter Loch <loch_AT_physics.arizona.edu>
143 * @author Silvia Resconi <Silvia.Resconi_AT_cern.ch>
145 * @date Feb. 20, 2014
146 * @version v1.0 (for release 19.0.1)
153 /*! @fn xAOD::MissingET_v1::MissingET_v1(bool createStore)
155 * This constructor generates a no-op object without an attached store, if invoked with its default argument, which is the same as explicitly invoking it
156 * the argument @c false.
158 * @param[in] createStore flags if private store should be created (@c true) or not (@c false) (optional, default is @c false - no private store)
160 * @note The default constructor is provided in accordance with requirements for the general xAOD EDM design. An object constructed this way does not
161 * provide a data store, and any use of an accessor method for such an object may lead to undesired behaviour and program crashes.
164 /*! @fn xAOD::MissingET_v1::MissingET_v1(const std::string& name="MissingET",MissingETBase::Types::bitmask_t src)
166 * A MET object with a name and and (optional) source indicator is constructed. The initiat MET components @f$ (p_{x},p_{y},\Sigma E_{\rm T}) @f$ are each set to zero.
168 * @param[in] name argument providing a name for the MissingET_v1 object, default "MissingET"
169 * @param[in] src optional argument providing the source tag, default is "unknown" MissingETBase::Source::unknown().
171 * @note This constructors instantiates a MET object with a private data store for the kinematics with meaningful inditial values, and the given name and source indicator. While the
172 * object instantiated this way is not storable, it is otherwise a fully usable.
175 /*! @fn xAOD::MissingET_v1::MissingET_v1(const IParticle* particle, const std::string& name,MissingETBase::Types::bitmask_t src)
177 * A MET object with a name (optional) and a source indicator (optional) is constructed. The initial MET components
178 * @f$ (p_{x},p_{y},\Sigma E_{\rm T}) @f$ are each set to the corresponding components in the particle.
180 * @param[in] particle reference to particle with initial kinematics
181 * @param[in] name optional argument providing a name for the MissingET_v1 object, default "MissingET"
182 * @param[in] src optional argument providing the source tag, default is "unknown" MissingETBase::Source::unknown().
184 * @note This constructors instantiates a MET object with a private data store for the kinematics with meaningful inditial values, and the given name and source indicator. While the
185 * object instantiated this way is not storable, it is otherwise a fully usable.
188 /*! @fn xAOD::MissingET_v1::MissingET_v1(float mpx,float mpy,float pt,const std::string& name,MissingETBase::Types::bitmask_t src);
190 * A MET object with a name (optional) and a source indicator (optional) is constructed. The initial MET components
191 * @f$ (p_{x},p_{y},\Sigma E_{\rm T}) @f$ are given in the argument list.
193 * @param[in] mpx momentum component @f$ p_{x} @f$
194 * @param[in] mpy momentum component @f$ p_{y} @f$
195 * @param[in] pt momentum component @f$ p_{\rm T} @f$
196 * @param[in] name optional argument providing a name for the MissingET_v1 object, default "MissingET"
197 * @param[in] src optional argument providing the source tag, default is "unknown" MissingETBase::Source::unknown().
199 * @note This constructors instantiates a MET object with a private data store for the kinematics with meaningful inditial values, and the given name and source indicator. While the
200 * object instantiated this way is not storable, it is otherwise a fully usable. Not enforcing @f$ p_{\rm T} = \sqrt{ p_{x}^{2} + p_{y}^{2} } @f$ is intentional, as in
201 * principle the MET components ( @f$ E_{\rm T}^{\rm miss} @f$ ) can have a different scale than the scalar transverse momentum sum @f$ \Sigma E_{\rm T} @f$ .
204 /*! @fn xAOD::MissingET_v1::MissingET_v1(const MissingET_v1& met)
206 * Provides a deep copy of the MET object. The constructed MissingET_v1 object does not share its AuxElement with the source object. If the source object is
207 * incomplete (has no data store), the resulting object does not have a data store either.
209 * @note The particular behaviour concerning the data store depends on the actual implementation of SG::AuxElement::makePrivateStore.
211 * @parm[in] met reference to non-modifiable MET object (the source).
218 /*! @fn void xAOD::MissingET_v1::setMpx(float value)
220 * @param[in] value new value for component.
222 * @note This is a true setter function. The previous stored value is replaced by the new value.
224 * @warning This method only sets one MET component. It does not update any other data held by the MET object. Clients should use the
225 * xAOD::MissingET_v1::add methods for coherent update of all related data.
228 /*! @fn void xAOD::MissingET_v1::setMpy(float value)
229 * @copydetails xAOD::MissingET_v1::setMpx(float)
232 /*! @fn void xAOD::MissingET_v1::setSumet(float value)
233 * @copydetails xAOD::MissingET_v1::setMpx(float)
236 /*! @fn void xAOD::MissingET_v1::setName(const std::string& name)
238 * @param[in] name reference to non-modifiable dataword holding the desired name of the MET object.
240 * @note This is a true setter function. The previous stored value is replaced by the new value.
243 /*! @fn void xAOD::MissingET_v1::setSource(MissingETBase::Types::bitmask_t src)
245 * Elements of the bitmasks and helpers interpreting them are given in the MissingETBase::Source structure.
247 * @param[in] src bitmask of new source indicator
249 * @note This is a true setter function. The previous stored value is replaced by the new value.
256 /*! @fn const std::string& xAOD::MissingET_v1::name() const
258 * @return Reference to non-modifiable dataword storing the name of the MET object.
261 /*! @fn MissingETBase::Types::bitmask_t xAOD::MissingET_v1::source() const
263 * @return Bit mask characterizing the source of this MET term
266 /////////////////////////////
267 // Manipulating Kinematics //
268 /////////////////////////////
270 /*! @fn virtual void xAOD::MissingET_v1::add(const IParticle* particle)
272 * The particle kinematics is added to MET.
274 * @param[in] particle pointer to the particle object
276 * This method updates the internal data stores holding @f$ (p_{x},p_{y},\Sigma E_{\rm T}) @f$ like:
278 * p_{x}^{\rm miss} & \to & p_{x}^{\rm miss} - p_{x}^{\rm particle} \\
279 * p_{y}^{\rm miss} & \to & p_{y}^{\rm miss} - p_{y}^{\rm particle} \\
280 * \Sigma E_{\rm T} & \to & \Sigma E_{\rm T} + p_{\rm T}^{\rm particle} .
282 * The particle momentum components contributing to MET are @f$ p_{x}^{\rm particle} @f$, @f$ p_{y}^{\rm particle} @f$, and @f$ p_{\rm T}^{\rm particle} @f$.
284 * @note There is no reference to the particle object added to the MET object. Its composition can be stored in a MissingETComponent_v1 object, but this
285 * has to be explicitly done by the user.
288 /*! @fn virtual void xAOD::MissingET_v1::add(const IParticle* particle,float scale)
290 * Here the particle kinematics is added to the MET object with a common scale factor. This method updates the internal data stores. If each
291 * MET component needs a different scale, xAOD::MissingET_v1::add(float,float,float) can be used.
293 * @param[in] particle pointer to the particle object
294 * @param[in] scale scale factor
296 * This method updates the internal data stores holding @f$ (p_{x},p_{y},\Sigma E_{\rm T}) @f$ like:
298 * p_{x}^{\rm miss} & \to & p_{x}^{\rm miss} - f \cdot p_{x}^{\rm particle} \\
299 * p_{y}^{\rm miss} & \to & p_{y}^{\rm miss} - f \cdot p_{y}^{\rm particle} \\
300 * \Sigma E_{\rm T} & \to & \Sigma E_{\rm T} + f \cdot p_{\rm T}^{\rm particle} .
302 * The particle momentum components contributing to MET are @f$ p_{x}^{\rm particle} @f$, @f$ p_{y}^{\rm particle} @f$, and @f$ p_{\rm T}^{\rm particle} @f$.
303 * The scale factor if @f$ f @f$.
305 * @note There is no reference to the particle object added to the MET object. Its composition can be stored in a MissingETComponent_v1 object, but this
306 * has to be explicitly done by the user.
309 /*! @fn virtual void xAOD::MissingET_v1::add(float px,float py)
311 * The given kinematic quantities are added to MET.
313 * @param[in] px momentum component @f$ p_{x} @f$
314 * @param[in] py momentum component @f$ p_{y} @f$
316 * This method updates the internal data stores.
319 /*! @fn xAOD::MissingET_v1& xAOD::MissingET_v1::operator+=(const IParticle* particle)
321 * @return Reference to (updated) self.
322 * @copydetails xAOD::MissingET_v1::add(const IParticle* particle)
325 /*! @fn xAOD::MissingET_v1& xAOD::MissingET_v1::operator-=(const IParticle* part)
327 * The particle kinematics is subtracted to the MET object This method updates the internal data stores. If each
328 * MET component needs a different scale, xAOD::MissingET_v1::add(float,float,float) can be used.
330 * @return Reference to (updated) self.
332 * @param[in] particle pointer to the particle object
334 * This method updates the internal data stores holding @f$ (p_{x},p_{y},\Sigma E_{\rm T}) @f$ like:
336 * p_{x}^{\rm miss} & \to & p_{x}^{\rm miss} + p_{x}^{\rm particle} \\
337 * p_{y}^{\rm miss} & \to & p_{y}^{\rm miss} + p_{y}^{\rm particle} \\
338 * \Sigma E_{\rm T} & \to & \Sigma E_{\rm T} - p_{\rm T}^{\rm particle} .
340 * The particle momentum components subtracted from MET are @f$ p_{x}^{\rm particle} @f$, @f$ p_{y}^{\rm particle} @f$, and @f$ p_{\rm T}^{\rm particle} @f$.
343 /*! @fn xAOD::MissingET_v1& xAOD::MissingET_v1::operator+=(const xAOD::MissingET_v1& met)
345 * @return Reference to self.
347 * @param[in] met reference to non-modifiable MET object.
349 * The data content of this MET object is updated with the components provided by the referenced MET object:
351 * p_{x}^{\rm miss} & \to & p_{x}^{\rm miss} + p_{x}^{{\rm miss}\prime} \\
352 * p_{y}^{\rm miss} & \to & p_{y}^{\rm miss} + p_{y}^{{\rm miss}\prime} \\
353 * \Sigma E_{\rm T} & \to & \Sigma E_{\rm T} + \Sigma E_{\rm miss}^{\prime} .
356 * Here @f$ (p_{x}^{\rm miss},p_{y}^{\rm miss},\Sigma E_{\rm T}) @f$ are the components of this object, while
357 * @f$ (p_{x}^{{\rm miss}\prime},p_{y}^{{\rm miss}\prime},\Sigma E_{\rm T}^{\prime}) @f$ are the components of the added object.
360 /*! @fn xAOD::MissingET_v1& xAOD::MissingET_v1::operator-=(const xAOD::MissingET_v1& met)
362 * @return Reference to self.
364 * @param[in] met reference to non-modifiable MET object.
366 * The data content of this MET object is updated with the components provided by the referenced MET object:
368 * p_{x}^{\rm miss} & \to & p_{x}^{\rm miss} - p_{x}^{{\rm miss}\prime} \\
369 * p_{y}^{\rm miss} & \to & p_{y}^{\rm miss} - p_{y}^{{\rm miss}\prime} \\
370 * \Sigma E_{\rm T} & \to & \Sigma E_{\rm T} - \Sigma E_{\rm miss}^{\prime} .
373 * Here @f$ (p_{x}^{\rm miss},p_{y}^{\rm miss},\Sigma E_{\rm T}) @f$ are the components of this object, while
374 * @f$ (p_{x}^{{\rm miss}\prime},p_{y}^{{\rm miss}\prime},\Sigma E_{\rm T}^{\prime}) @f$ are the components of the subtracted object.
377 /*! @fn xAOD::MissingET_v1& xAOD::MissingET_v1::operator*=(float scale)
379 * @return Reference to self.
381 * @param[in] scale scale factor to be applied to all MET components.
383 * The data content of this MET object is updated as follows:
385 * p_{x}^{\rm miss} & \to & f \cdot p_{x}^{\rm miss} \\
386 * p_{y}^{\rm miss} & \to & f \cdot p_{y}^{\rm miss} \\
387 * \Sigma E_{\rm T} & \to & f \cdot \Sigma E_{\rm T}
390 * Here @f$ (p_{x}^{\rm miss},p_{y}^{\rm miss},\Sigma E_{\rm T}) @f$ are the components of this object, and @f$ f @f$ is the scale factor.
393 /*! @fn xAOD::MissingET_v1& xAOD::MissingET_v1::operator/=(float scale)
395 * @return Reference to self.
397 * @param[in] scale scale factor to be applied to all MET components.
399 * The data content of this MET object is updated as follows:
401 * p_{x}^{\rm miss} & \to & p_{x}^{\rm miss} / f \\
402 * p_{y}^{\rm miss} & \to & p_{y}^{\rm miss} / f \\
403 * \Sigma E_{\rm T} & \to & \Sigma E_{\rm T} / f
406 * Here @f$ (p_{x}^{\rm miss},p_{y}^{\rm miss},\Sigma E_{\rm T}) @f$ are the components of this object, and @f$ f @f$ is the scale factor.
408 * @note If @f$ f = 0 @f$, the rule implemented in MissingETBase::Numerical::divide(float,float) is applied to the results for each
416 /*! @fn void xAOD::MissingET_v1::clear()
418 * This function sets @f$ p_{x} = 0 @f$, @f$ p_{y} = 0 @f$, and @f$ \Sigma E_{\rm T} = 0 @f$. The name and the source indicator
419 * of this MET object are not changed.
426 /*! @fn bool xAOD::MissingET_v1::operator==(const xAOD::MissingET_v1& met) const
428 * Two MET objects are equal when they have, within the precision defined in MissingETBase::Numerical::precision(),
429 * the same @f$ E_{\rm T}^{\rm miss} @f$ and the same @f$ \Sigma E_{\rm T} @f$.
431 * @return @c true if two MET objects are equal.
434 /*! @fn bool xAOD::MissingET_v1::operator!=(const xAOD::MissingET_v1& met) const
436 * Two MET objects are not equal when they do not have, within the precision defined in MissingETBase::Numerical::precision(),
437 * the same @f$ E_{\rm T}^{\rm miss} @f$ and the same @f$ \Sigma E_{\rm T} @f$.
439 * @return @c true if two MET objects are not equal.
442 /////////////////////////
443 // Protected Functions //
444 /////////////////////////
446 /*! @fn float& xAOD::MissingET_v1::f_mpx(()
448 * The underlying SG::AuxElement store is accessed through references to keyed, modifiable data members.
450 * @return Reference to modifiable dataword storing MET object data.
453 /*! @fn float& xAOD::MissingET_v1::f_py()
454 * @copydetails xAOD::MissingET_v1::f_mpx()
457 /*! @fn float& xAOD::MissingET_v1::f_sumet()
458 * @copydetails xAOD::MissingET_v1::f_mpx()
461 /*! @fn const std::string& xAOD::MissingET_v1::f_name()
462 * @copydetails xAOD::MissingET_v1::f_mpx()
465 /*! @fn MissingETBase::Types::bitmask_t& xAOD::MissingET_v1::f_source()
466 * @copydetails xAOD::MissingET_v1::f_mpx()
469 ////////////////////////////////
470 // Global Namespace Operators //
471 ////////////////////////////////
473 /*! @fn xAOD::MissingET_v1 operator+(const xAOD::MissingET_v1& met0,const xAOD::MissingET_v1& met1)
475 * The MET components of the two referenced objects are added by (1) creating a copy of the first referenced MET object and
476 * (2) use the xAOD::MissingET_v1::operator+=(const xAOD::MissingET_v1&) method to add the second referenced MET object to it.
478 * @return New MissingET_v1 object reflecting the result of the add operation.
480 * @param[in] met0 reference to non-modifiable first MET object
481 * @param[in] met1 reference to non-modifiable second MET object
484 /*! @fn xAOD::MissingET_v1 operator-(const xAOD::MissingET_v1& met0,const xAOD::MissingET_v1& met1)
486 * The MET components of the two referenced objects are subtracted by (1) creating a copy of the first referenced MET object and
487 * (2) use the xAOD::MissingET_v1::operator-=(const xAOD::MissingET_v1&) method to subtract the second referenced MET object from it.
489 * @return New MissingET_v1 object reflecting the result of the subtract operation.
491 * @param[in] met0 reference to non-modifiable first MET object
492 * @param[in] met1 reference to non-modifiable second MET object
495 /*! @fn xAOD::MissingET_v1 operator*(const xAOD::MissingET_v1& met,float scale)
497 * The kinematic components of the referenced MET objects are scaled by (1) creating a copy of the referenced MET object and
498 * (2) use the xAOD::MissingET_v1::operator*=(float) method to apply the scale to the components of the new MET object.
500 * @return New MissingET_v1 object reflecting the result of the multiply operation.
502 * @param[in] met reference to non-modifiable MET object
503 * @param[in] scale scale factor to be applied
506 /*! @fn xAOD::MissingET_v1 operator*(float scale,const xAOD::MissingET_v1& met)
507 * @copydetails operator*(const xAOD::MissingET_v1&,float)
510 /*! @fn xAOD::MissingET_v1 operator/(const xAOD::MissingET_v1& met,float scale);
512 * The kinematic components of the referenced MET objects are scaled by (1) creating a copy of the referenced MET object and
513 * (2) use the xAOD::MissingET_v1::operator/=(float) method to divide the components of the new MET object by the scale factor.
515 * @return New MissingET_v1 object reflecting the result of the divide operation.
517 * @param[in] met reference to non-modifiable MET object
518 * @param[in] scale scale factor to be applied