ATLAS Offline Software
Public Member Functions | Public Attributes | Static Public Attributes | List of all members
columnar::MetHelpers::MetMomentumAccessors< CI, CM > Struct Template Referencefinal

a special accessor for the MET momentum More...

#include <MetHelpers.h>

Collaboration diagram for columnar::MetHelpers::MetMomentumAccessors< CI, CM >:

Public Member Functions

 MetMomentumAccessors (ColumnarTool< CM > &columnarBase)
 
double met (ObjectId< CI, CM > object) const
 
double phi (ObjectId< CI, CM > object) const
 
void addParticle (ObjectId< CI, CM > met, float px, float py, float pt) const requires(isMutable)
 
void addParticle (ObjectId< CI, CM > met, const xAOD::IParticle &particle) const requires(isMutable)
 
template<ContainerIdConcept CI2, typename MomAcc >
void addParticle (ObjectId< CI, CM > met, const MomAcc &momAcc, const ObjectId< CI2, CM > &object) const requires(isMutable) &&requires(const MomAcc &acc
 
 float (acc.py(object))
 
 float (acc.pt(object))
 
template<ContainerIdConcept CI2>
void addMet (ObjectId< CI, CM > met, const MetMomentumAccessors< CI2, CM > &momAcc, ObjectId< CI2, CM > metSource) const requires(isMutable)
 

Public Attributes

AccessorTemplate< CI, float, CAM, CMmpx
 
AccessorTemplate< CI, float, CAM, CMmpy
 
AccessorTemplate< CI, float, CAM, CMsumet
 
void ObjectId< CI2, CMobject {float(acc.px(object))
 

Static Public Attributes

static constexpr bool isMutable = CI::isMutable
 
static constexpr ColumnAccessMode CAM = isMutable?ColumnAccessMode::output:ColumnAccessMode::input
 

Detailed Description

template<ContainerIdConcept CI = ContainerId::met, typename CM = ColumnarModeDefault>
struct columnar::MetHelpers::MetMomentumAccessors< CI, CM >

a special accessor for the MET momentum

MET has a somewhat special momentum structure, and the METMaker tool also needs to add to the momentum in a special way. So this class tries to provide a somewhat convenient and robust interface for that.

Definition at line 167 of file MetHelpers.h.

Constructor & Destructor Documentation

◆ MetMomentumAccessors()

template<ContainerIdConcept CI = ContainerId::met, typename CM = ColumnarModeDefault>
columnar::MetHelpers::MetMomentumAccessors< CI, CM >::MetMomentumAccessors ( ColumnarTool< CM > &  columnarBase)
inline

Definition at line 173 of file MetHelpers.h.

174  : mpx (columnarBase, "mpx"),
175  mpy (columnarBase, "mpy"),
176  sumet (columnarBase, "sumet")
177  {}

Member Function Documentation

◆ addMet()

template<ContainerIdConcept CI = ContainerId::met, typename CM = ColumnarModeDefault>
template<ContainerIdConcept CI2>
void columnar::MetHelpers::MetMomentumAccessors< CI, CM >::addMet ( ObjectId< CI, CM met,
const MetMomentumAccessors< CI2, CM > &  momAcc,
ObjectId< CI2, CM metSource 
) const
inline

Definition at line 197 of file MetHelpers.h.

197  {
198  mpx(met) += momAcc.mpx(metSource); mpy(met) += momAcc.mpy(metSource); sumet(met) += momAcc.sumet(metSource);}

◆ addParticle() [1/3]

template<ContainerIdConcept CI = ContainerId::met, typename CM = ColumnarModeDefault>
template<ContainerIdConcept CI2, typename MomAcc >
void columnar::MetHelpers::MetMomentumAccessors< CI, CM >::addParticle ( ObjectId< CI, CM met,
const MomAcc &  momAcc,
const ObjectId< CI2, CM > &  object 
) const &

◆ addParticle() [2/3]

template<ContainerIdConcept CI = ContainerId::met, typename CM = ColumnarModeDefault>
void columnar::MetHelpers::MetMomentumAccessors< CI, CM >::addParticle ( ObjectId< CI, CM met,
const xAOD::IParticle particle 
) const
inline

Definition at line 190 of file MetHelpers.h.

190  {
191  auto p4 = particle.p4();
192  addParticle (met, p4.Px(), p4.Py(), particle.pt());}

◆ addParticle() [3/3]

template<ContainerIdConcept CI = ContainerId::met, typename CM = ColumnarModeDefault>
void columnar::MetHelpers::MetMomentumAccessors< CI, CM >::addParticle ( ObjectId< CI, CM met,
float  px,
float  py,
float  pt 
) const
inline

Definition at line 188 of file MetHelpers.h.

188  {
189  mpx(met) -= px; mpy(met) -= py; sumet(met) += pt;}

◆ float() [1/2]

template<ContainerIdConcept CI = ContainerId::met, typename CM = ColumnarModeDefault>
columnar::MetHelpers::MetMomentumAccessors< CI, CM >::float ( acc.  ptobject)

◆ float() [2/2]

template<ContainerIdConcept CI = ContainerId::met, typename CM = ColumnarModeDefault>
columnar::MetHelpers::MetMomentumAccessors< CI, CM >::float ( acc.  pyobject)

◆ met()

template<ContainerIdConcept CI = ContainerId::met, typename CM = ColumnarModeDefault>
double columnar::MetHelpers::MetMomentumAccessors< CI, CM >::met ( ObjectId< CI, CM object) const
inline

Definition at line 183 of file MetHelpers.h.

183  {
184  return std::hypot(mpx(object), mpy(object));}

◆ phi()

template<ContainerIdConcept CI = ContainerId::met, typename CM = ColumnarModeDefault>
double columnar::MetHelpers::MetMomentumAccessors< CI, CM >::phi ( ObjectId< CI, CM object) const
inline

Definition at line 185 of file MetHelpers.h.

185  {
186  return std::atan2(mpy(object), mpx(object));}

Member Data Documentation

◆ CAM

template<ContainerIdConcept CI = ContainerId::met, typename CM = ColumnarModeDefault>
constexpr ColumnAccessMode columnar::MetHelpers::MetMomentumAccessors< CI, CM >::CAM = isMutable?ColumnAccessMode::output:ColumnAccessMode::input
staticconstexpr

Definition at line 170 of file MetHelpers.h.

◆ isMutable

template<ContainerIdConcept CI = ContainerId::met, typename CM = ColumnarModeDefault>
constexpr bool columnar::MetHelpers::MetMomentumAccessors< CI, CM >::isMutable = CI::isMutable
staticconstexpr

Definition at line 169 of file MetHelpers.h.

◆ mpx

template<ContainerIdConcept CI = ContainerId::met, typename CM = ColumnarModeDefault>
AccessorTemplate<CI,float,CAM,CM> columnar::MetHelpers::MetMomentumAccessors< CI, CM >::mpx

Definition at line 179 of file MetHelpers.h.

◆ mpy

template<ContainerIdConcept CI = ContainerId::met, typename CM = ColumnarModeDefault>
AccessorTemplate<CI,float,CAM,CM> columnar::MetHelpers::MetMomentumAccessors< CI, CM >::mpy

Definition at line 180 of file MetHelpers.h.

◆ object

template<ContainerIdConcept CI = ContainerId::met, typename CM = ColumnarModeDefault>
void ObjectId<CI2,CM> columnar::MetHelpers::MetMomentumAccessors< CI, CM >::object {float(acc.px(object))

Definition at line 194 of file MetHelpers.h.

◆ sumet

template<ContainerIdConcept CI = ContainerId::met, typename CM = ColumnarModeDefault>
AccessorTemplate<CI,float,CAM,CM> columnar::MetHelpers::MetMomentumAccessors< CI, CM >::sumet

Definition at line 181 of file MetHelpers.h.


The documentation for this struct was generated from the following file:
Trk::ParticleSwitcher::particle
constexpr ParticleHypothesis particle[PARTICLEHYPOTHESES]
the array of masses
Definition: ParticleHypothesis.h:79
test_pyathena.px
px
Definition: test_pyathena.py:18
test_pyathena.pt
pt
Definition: test_pyathena.py:11
met
Definition: IMETSignificance.h:24
columnar::MetHelpers::MetMomentumAccessors::sumet
AccessorTemplate< CI, float, CAM, CM > sumet
Definition: MetHelpers.h:181
columnar::MetHelpers::MetMomentumAccessors::mpy
AccessorTemplate< CI, float, CAM, CM > mpy
Definition: MetHelpers.h:180
columnar::MetHelpers::MetMomentumAccessors::mpx
AccessorTemplate< CI, float, CAM, CM > mpx
Definition: MetHelpers.h:179
Amg::py
@ py
Definition: GeoPrimitives.h:39
columnar::MetHelpers::MetMomentumAccessors::addParticle
void addParticle(ObjectId< CI, CM > met, float px, float py, float pt) const requires(isMutable)
Definition: MetHelpers.h:188