ATLAS Offline Software
Loading...
Searching...
No Matches
MissingET_v1.icc
Go to the documentation of this file.
1// -*- c++ -*-
2
3/*
4 Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
5*/
6
7
8////////////////////////////////////////////
9// MissingET_v1 Inline Functions: Getters //
10////////////////////////////////////////////
11
12inline float xAOD::MissingET_v1::met() const { return sqrt(this->mpx()*this->mpx()+this->mpy()*this->mpy()); }
13inline float xAOD::MissingET_v1::phi() const { return atan2(this->mpy(),this->mpx()); }
14inline float xAOD::MissingET_v1::mpx() const { return m_acc_mpx(*this); }
15inline float xAOD::MissingET_v1::mpy() const { return m_acc_mpy(*this); }
16inline float xAOD::MissingET_v1::sumet() const { return m_acc_sumet(*this); }
17
18inline const std::string& xAOD::MissingET_v1::name() const { static const SG::AuxElement::Accessor<std::string> acc("name"); return acc(*this); }
19inline 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();
22}
23inline MissingETBase::Types::bitmask_t xAOD::MissingET_v1::source() const { static const SG::AuxElement::Accessor<MissingETBase::Types::bitmask_t> acc("source"); return acc(*this); }
24
25////////////////////////////////////////////
26// MissingET_v1 Inline Functions: Setters //
27////////////////////////////////////////////
28
29inline float& xAOD::MissingET_v1::f_mpx() { return m_acc_mpx(*this); }
30inline float& xAOD::MissingET_v1::f_mpy() { return m_acc_mpy(*this); }
31inline float& xAOD::MissingET_v1::f_sumet() { return m_acc_sumet(*this); }
32
33inline std::string& xAOD::MissingET_v1::f_name() { static const SG::AuxElement::Accessor<std::string> acc("name"); return acc(*this); }
34inline const std::string& xAOD::MissingET_v1::f_nameConst() const { static const SG::AuxElement::ConstAccessor<std::string> acc("name"); return acc(*this); }
35inline MissingETBase::Types::bitmask_t& xAOD::MissingET_v1::f_source() { static const SG::AuxElement::Accessor<MissingETBase::Types::bitmask_t> acc("source"); return acc(*this); }
36
37inline void xAOD::MissingET_v1::setMpx(float mpx) { this->f_mpx() = mpx; }
38inline void xAOD::MissingET_v1::setMpy(float mpy) { this->f_mpy() = mpy; }
39inline void xAOD::MissingET_v1::setSumet(float sumet) { this->f_sumet() = sumet; }
40
41inline void xAOD::MissingET_v1::setName(const std::string& name) {
42 this->f_name() = name;
43 updateHash();
44}
45
46inline void xAOD::MissingET_v1::updateHash() {
47 m_nameHash.reset();
48 m_nameHash.set(std::hash<std::string>()(this->f_nameConst()));
49}
50inline void xAOD::MissingET_v1::setSource(MissingETBase::Types::bitmask_t src) { this->f_source() = src; }
51
52///////////////////////////////////////////////////
53// MissingET_v1 Inline Functions: Object algebra //
54///////////////////////////////////////////////////
55
56inline xAOD::MissingET_v1& xAOD::MissingET_v1::operator+=(const IParticle* particle)
57{ this->add(particle); return *this; }
58
59inline 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; }
61
62inline 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; }
64
65inline xAOD::MissingET_v1& xAOD::MissingET_v1::operator*=(float scale)
66{ this->f_mpx() *= scale; this->f_mpy() *= scale; this->f_sumet() *= scale; return *this; }
67
68inline xAOD::MissingET_v1& xAOD::MissingET_v1::operator/=(float scale)
69{ float f(MissingETBase::Numerical::divide(1.,scale)); this->operator*=(f); return *this; }
70
71///////////////////////////////////////////////////////////////////////
72// MissingET_v1 Inline Functions: Object Algebra in Global Namespace //
73///////////////////////////////////////////////////////////////////////
74
75inline 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()); }
77
78inline 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()); }
80
81inline 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); }
83
84inline xAOD::MissingET_v1 operator*(float scale,const xAOD::MissingET_v1& met)
85{ return met * scale; }
86
87inline xAOD::MissingET_v1 operator/(const xAOD::MissingET_v1& met,float scale)
88{ float f(MissingETBase::Numerical::divide(1.,scale)); return f * met; }
89
90////////////////////////////////////////////////
91// MissingET_v1 Inline Functions: Comparators //
92////////////////////////////////////////////////
93
94inline 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()); }
96
97inline bool xAOD::MissingET_v1::operator!=(const MissingET_v1& met) const
98{ return !this->operator==(met); }
99
100//////////////////////////////////////////////////
101// MissingET_v1 Inline Functions: Data Managers //
102//////////////////////////////////////////////////
103
104inline void xAOD::MissingET_v1::clear()
105{ this->f_mpx() = 0.; this->f_mpy() = 0.; this->f_sumet() = 0.; }
106
107///////////////////////////////////////////////////////////////
108// The rest of the file contains doxygen documentation only! //
109///////////////////////////////////////////////////////////////
110
111/*! @class xAOD::MissingET_v1
112 *
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.
120 *
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.
123 *
124 * Adding kinematics to a MET term implies to use the correct convention, which is given by
125 * @f{eqnarray*}{
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}.
129 * @f}
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.
132 *
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.
141 *
142 * @author Peter Loch <loch_AT_physics.arizona.edu>
143 * @author Silvia Resconi <Silvia.Resconi_AT_cern.ch>
144 *
145 * @date Feb. 20, 2014
146 * @version v1.0 (for release 19.0.1)
147 */
148
149//////////////////
150// Constructors //
151//////////////////
152
153/*! @fn xAOD::MissingET_v1::MissingET_v1(bool createStore)
154 *
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.
157 *
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)
159 *
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.
162 */
163
164/*! @fn xAOD::MissingET_v1::MissingET_v1(const std::string& name="MissingET",MissingETBase::Types::bitmask_t src)
165 *
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.
167 *
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().
170 *
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.
173 */
174
175/*! @fn xAOD::MissingET_v1::MissingET_v1(const IParticle* particle, const std::string& name,MissingETBase::Types::bitmask_t src)
176 *
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.
179 *
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().
183 *
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.
186 */
187
188/*! @fn xAOD::MissingET_v1::MissingET_v1(float mpx,float mpy,float pt,const std::string& name,MissingETBase::Types::bitmask_t src);
189 *
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.
192 *
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().
198 *
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$ .
202 */
203
204/*! @fn xAOD::MissingET_v1::MissingET_v1(const MissingET_v1& met)
205 *
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.
208 *
209 * @note The particular behaviour concerning the data store depends on the actual implementation of SG::AuxElement::makePrivateStore.
210 *
211 * @parm[in] met reference to non-modifiable MET object (the source).
212 */
213
214/////////////
215// Setters //
216/////////////
217
218/*! @fn void xAOD::MissingET_v1::setMpx(float value)
219 *
220 * @param[in] value new value for component.
221 *
222 * @note This is a true setter function. The previous stored value is replaced by the new value.
223 *
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.
226 */
227
228/*! @fn void xAOD::MissingET_v1::setMpy(float value)
229 * @copydetails xAOD::MissingET_v1::setMpx(float)
230 */
231
232/*! @fn void xAOD::MissingET_v1::setSumet(float value)
233 * @copydetails xAOD::MissingET_v1::setMpx(float)
234 */
235
236/*! @fn void xAOD::MissingET_v1::setName(const std::string& name)
237 *
238 * @param[in] name reference to non-modifiable dataword holding the desired name of the MET object.
239 *
240 * @note This is a true setter function. The previous stored value is replaced by the new value.
241 */
242
243/*! @fn void xAOD::MissingET_v1::setSource(MissingETBase::Types::bitmask_t src)
244 *
245 * Elements of the bitmasks and helpers interpreting them are given in the MissingETBase::Source structure.
246 *
247 * @param[in] src bitmask of new source indicator
248 *
249 * @note This is a true setter function. The previous stored value is replaced by the new value.
250 */
251
252///////////////
253// Accessors //
254///////////////
255
256/*! @fn const std::string& xAOD::MissingET_v1::name() const
257 *
258 * @return Reference to non-modifiable dataword storing the name of the MET object.
259 */
260
261/*! @fn MissingETBase::Types::bitmask_t xAOD::MissingET_v1::source() const
262 *
263 * @return Bit mask characterizing the source of this MET term
264 */
265
266/////////////////////////////
267// Manipulating Kinematics //
268/////////////////////////////
269
270/*! @fn virtual void xAOD::MissingET_v1::add(const IParticle* particle)
271 *
272 * The particle kinematics is added to MET.
273 *
274 * @param[in] particle pointer to the particle object
275 *
276 * This method updates the internal data stores holding @f$ (p_{x},p_{y},\Sigma E_{\rm T}) @f$ like:
277 * @f{eqnarray*}{
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} .
281 * @f}
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$.
283 *
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.
286 */
287
288/*! @fn virtual void xAOD::MissingET_v1::add(const IParticle* particle,float scale)
289 *
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.
292 *
293 * @param[in] particle pointer to the particle object
294 * @param[in] scale scale factor
295 *
296 * This method updates the internal data stores holding @f$ (p_{x},p_{y},\Sigma E_{\rm T}) @f$ like:
297 * @f{eqnarray*}{
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} .
301 * @f}
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$.
304 *
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.
307 */
308
309/*! @fn virtual void xAOD::MissingET_v1::add(float px,float py)
310 *
311 * The given kinematic quantities are added to MET.
312 *
313 * @param[in] px momentum component @f$ p_{x} @f$
314 * @param[in] py momentum component @f$ p_{y} @f$
315 *
316 * This method updates the internal data stores.
317 */
318
319/*! @fn xAOD::MissingET_v1& xAOD::MissingET_v1::operator+=(const IParticle* particle)
320 *
321 * @return Reference to (updated) self.
322 * @copydetails xAOD::MissingET_v1::add(const IParticle* particle)
323 */
324
325/*! @fn xAOD::MissingET_v1& xAOD::MissingET_v1::operator-=(const IParticle* part)
326 *
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.
329 *
330 * @return Reference to (updated) self.
331 *
332 * @param[in] particle pointer to the particle object
333 *
334 * This method updates the internal data stores holding @f$ (p_{x},p_{y},\Sigma E_{\rm T}) @f$ like:
335 * @f{eqnarray*}{
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} .
339 * @f}
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$.
341 */
342
343/*! @fn xAOD::MissingET_v1& xAOD::MissingET_v1::operator+=(const xAOD::MissingET_v1& met)
344 *
345 * @return Reference to self.
346 *
347 * @param[in] met reference to non-modifiable MET object.
348 *
349 * The data content of this MET object is updated with the components provided by the referenced MET object:
350 * @f{eqnarray*}{
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} .
354 * @f}
355 *
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.
358 */
359
360/*! @fn xAOD::MissingET_v1& xAOD::MissingET_v1::operator-=(const xAOD::MissingET_v1& met)
361 *
362 * @return Reference to self.
363 *
364 * @param[in] met reference to non-modifiable MET object.
365 *
366 * The data content of this MET object is updated with the components provided by the referenced MET object:
367 * @f{eqnarray*}{
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} .
371 * @f}
372 *
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.
375 */
376
377/*! @fn xAOD::MissingET_v1& xAOD::MissingET_v1::operator*=(float scale)
378 *
379 * @return Reference to self.
380 *
381 * @param[in] scale scale factor to be applied to all MET components.
382 *
383 * The data content of this MET object is updated as follows:
384 * @f{eqnarray*}{
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}
388 * @f}
389 *
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.
391 */
392
393/*! @fn xAOD::MissingET_v1& xAOD::MissingET_v1::operator/=(float scale)
394 *
395 * @return Reference to self.
396 *
397 * @param[in] scale scale factor to be applied to all MET components.
398 *
399 * The data content of this MET object is updated as follows:
400 * @f{eqnarray*}{
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
404 * @f}
405 *
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.
407 *
408 * @note If @f$ f = 0 @f$, the rule implemented in MissingETBase::Numerical::divide(float,float) is applied to the results for each
409 * component.
410 */
411
412/////////////////
413// Reset/Clear //
414/////////////////
415
416/*! @fn void xAOD::MissingET_v1::clear()
417 *
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.
420 */
421
422/////////////////
423// Comparators //
424/////////////////
425
426/*! @fn bool xAOD::MissingET_v1::operator==(const xAOD::MissingET_v1& met) const
427 *
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$.
430 *
431 * @return @c true if two MET objects are equal.
432 */
433
434 /*! @fn bool xAOD::MissingET_v1::operator!=(const xAOD::MissingET_v1& met) const
435 *
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$.
438 *
439 * @return @c true if two MET objects are not equal.
440 */
441
442/////////////////////////
443// Protected Functions //
444/////////////////////////
445
446/*! @fn float& xAOD::MissingET_v1::f_mpx(()
447 *
448 * The underlying SG::AuxElement store is accessed through references to keyed, modifiable data members.
449 *
450 * @return Reference to modifiable dataword storing MET object data.
451 */
452
453/*! @fn float& xAOD::MissingET_v1::f_py()
454 * @copydetails xAOD::MissingET_v1::f_mpx()
455 */
456
457/*! @fn float& xAOD::MissingET_v1::f_sumet()
458 * @copydetails xAOD::MissingET_v1::f_mpx()
459 */
460
461/*! @fn const std::string& xAOD::MissingET_v1::f_name()
462 * @copydetails xAOD::MissingET_v1::f_mpx()
463 */
464
465/*! @fn MissingETBase::Types::bitmask_t& xAOD::MissingET_v1::f_source()
466 * @copydetails xAOD::MissingET_v1::f_mpx()
467 */
468
469////////////////////////////////
470// Global Namespace Operators //
471////////////////////////////////
472
473/*! @fn xAOD::MissingET_v1 operator+(const xAOD::MissingET_v1& met0,const xAOD::MissingET_v1& met1)
474 *
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.
477 *
478 * @return New MissingET_v1 object reflecting the result of the add operation.
479 *
480 * @param[in] met0 reference to non-modifiable first MET object
481 * @param[in] met1 reference to non-modifiable second MET object
482 */
483
484/*! @fn xAOD::MissingET_v1 operator-(const xAOD::MissingET_v1& met0,const xAOD::MissingET_v1& met1)
485 *
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.
488 *
489 * @return New MissingET_v1 object reflecting the result of the subtract operation.
490 *
491 * @param[in] met0 reference to non-modifiable first MET object
492 * @param[in] met1 reference to non-modifiable second MET object
493 */
494
495/*! @fn xAOD::MissingET_v1 operator*(const xAOD::MissingET_v1& met,float scale)
496 *
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.
499 *
500 * @return New MissingET_v1 object reflecting the result of the multiply operation.
501 *
502 * @param[in] met reference to non-modifiable MET object
503 * @param[in] scale scale factor to be applied
504 */
505
506/*! @fn xAOD::MissingET_v1 operator*(float scale,const xAOD::MissingET_v1& met)
507 * @copydetails operator*(const xAOD::MissingET_v1&,float)
508 */
509
510/*! @fn xAOD::MissingET_v1 operator/(const xAOD::MissingET_v1& met,float scale);
511 *
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.
514 *
515 * @return New MissingET_v1 object reflecting the result of the divide operation.
516 *
517 * @param[in] met reference to non-modifiable MET object
518 * @param[in] scale scale factor to be applied
519 */
520