ATLAS Offline Software
Loading...
Searching...
No Matches
PufitGrid.h
Go to the documentation of this file.
1/*
2 * Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
3 */
4
5/******************************************************************************
6 * @package Trigger/TrigAlgorithms/TrigEFMissingET
7 * @class PufitGrid
8 *
9 * @brief Grid to use in the pufit calculation
10 * @author Bob Kowalewski, Jon Burr
11 *****************************************************************************/
12
13#ifndef TRIGEFMISSINGET_PUFITGRID_H
14#define TRIGEFMISSINGET_PUFITGRID_H
15
16#include <vector>
17#include <utility>
18#include <array>
21
22namespace HLT
23{
24 namespace MET
25 {
26 // Forward declare
27 class METComponent;
28
38 {
39 public:
48 {
49 public:
55 Tower(const PufitGrid *parent, std::size_t index);
56
57 Tower(const Tower &) = default;
58
66 Tower &operator=(const Tower &other);
67
69 double ex() const;
70
72 double ey() const;
73
75 double ez() const;
76
78 double sumEt() const;
79
81 double sumE() const;
82
84 double phi() const;
85
87 double eta() const;
88
90 bool masked() const;
91
93 void mask(bool value = true);
94
96 virtual const PufitGrid *grid() const override;
97
101 operator SignedKinematics() const;
102
111 Tower &operator+=(const SignedKinematics &kin);
120 Tower &operator-=(const SignedKinematics &kin);
121
125 Tower &operator+=(const Tower &other);
129 Tower &operator-=(const Tower &other);
130
131 private:
133 const PufitGrid *const m_parent;
134
137 double m_sumEt{0.};
139 double m_sumE{0.};
141 bool m_mask{false};
142 }; //> end class Tower
143
152 PufitGrid(
153 double maxEta,
154 std::size_t nEtaTowers,
155 std::size_t nPhiTowers,
156 bool displaceEta = false,
157 bool displacePhi = false);
158
161
163 PufitGrid(const PufitGrid &other);
164
173 PufitGrid &operator=(const PufitGrid &other);
174
176 void reset();
177
198
200 Tower &operator[](const std::pair<std::size_t, std::size_t> &indices);
202 const Tower &operator[](
203 const std::pair<std::size_t, std::size_t> &indices) const;
204
206 Tower &operator[](std::size_t index);
208 const Tower &operator[](std::size_t index) const;
209
211 std::vector<Tower>::iterator begin();
213 std::vector<Tower>::const_iterator begin() const;
215 std::vector<Tower>::iterator end();
217 std::vector<Tower>::const_iterator end() const;
218
220 enum class SumStrategy
221 {
222 All, //> Sum all towers, regardless of masks
223 Masked, //> Only sum masked towers
224 Unmasked //> Only sum unmasked towers
225 };
227
228 // All of these fail if the grid parameters do not match!
230 PufitGrid &operator+=(const PufitGrid &other);
232 PufitGrid &operator-=(const PufitGrid &other);
233
234 private:
235 std::vector<Tower> m_towers;
236 }; //> end class PufitGrid
237
240 {
241 PufitGridSet(double maxEta, std::size_t nEta, std::size_t nPhi);
242 std::array<PufitGrid, 4> grids;
249 const PufitGrid &operator[](GridDisplacement displacement) const;
250 };
251
253 PufitGrid operator+(const PufitGrid &lhs, const PufitGrid &rhs);
255 PufitGrid operator-(const PufitGrid &lhs, const PufitGrid &rhs);
256 } // namespace MET
257} // namespace HLT
258
259#endif //> !TRIGEFMISSINGET_PUFITGRID_H
Provide a base class for the grids used in some pufit algorithms.
Helper struct to build up MET values before moving them into the EDM.
Base class for towers belonging to the grids.
std::size_t nPhiTowers() const
The number of phi bins.
double maxEta() const
The maximum eta range for the grid.
std::size_t nEtaTowers() const
The number of eta bins.
bool displacePhi() const
Whether or not this is displaced in phi.
PeriodicGridBase(const GridParameters &parameters)
Construct the grid from its parameters.
bool displaceEta() const
Whether or not this is displaced in eta.
const GridParameters & parameters() const
The grid parameters.
void mask(bool value=true)
Set the mask on this tower.
Definition PufitGrid.cxx:37
Tower & operator=(const Tower &other)
Copy assignment operator.
Definition PufitGrid.cxx:20
double eta() const
This tower's kinematic eta.
Definition PufitGrid.cxx:35
double ey() const
The y-component of this tower's energy.
Definition PufitGrid.cxx:30
double m_sumE
The summed energy.
Definition PufitGrid.h:139
double phi() const
This tower's kinematic phi.
Definition PufitGrid.cxx:34
Tower & operator+=(const SignedKinematics &kin)
Add a signed object to this tower.
Definition PufitGrid.cxx:47
bool masked() const
Whether or not this tower was masked.
Definition PufitGrid.cxx:36
Tower & operator-=(const SignedKinematics &kin)
Remove the energy of a signed object from this tower.
Definition PufitGrid.cxx:54
SignedKinematics m_kin
Definition PufitGrid.h:135
bool m_mask
The mask value.
Definition PufitGrid.h:141
Tower(const Tower &)=default
double ez() const
The z-component of this tower's energy.
Definition PufitGrid.cxx:31
virtual const PufitGrid * grid() const override
The parent grid of this tower.
Definition PufitGrid.cxx:39
SignedKinematics kinematics() const
Build a kinematics object from this tower.
Definition PufitGrid.cxx:41
const PufitGrid *const m_parent
The parent grid.
Definition PufitGrid.h:133
double ex() const
The x-component of this tower's energy.
Definition PufitGrid.cxx:29
Tower(const PufitGrid *parent, std::size_t index)
Create a tower with its parent.
Definition PufitGrid.cxx:15
double sumEt() const
The total sumEt in this tower.
Definition PufitGrid.cxx:32
double m_sumEt
The summed et.
Definition PufitGrid.h:137
double sumE() const
The total sumE in this tower.
Definition PufitGrid.cxx:33
Bins energy deposits into a grid.
Definition PufitGrid.h:38
std::vector< Tower >::iterator begin()
Access by iterator.
std::vector< Tower >::iterator end()
Iterator end point.
SumStrategy
Helper enum to describe how to sum over towers.
Definition PufitGrid.h:221
PufitGrid & operator=(const PufitGrid &other)
Assignment operator.
Definition PufitGrid.cxx:99
PufitGrid & operator+=(const SignedKinematics &kin)
Add a signed object to this grid.
METComponent sum(SumStrategy strategy=SumStrategy::All) const
Tower & operator[](const std::pair< std::size_t, std::size_t > &indices)
Access stored value by eta/phi index (access is bounds-checked)
void reset()
Reset the internal storage.
PufitGrid & operator-=(const SignedKinematics &kin)
Remove the energy of a signed object from this grid.
PufitGrid(double maxEta, std::size_t nEtaTowers, std::size_t nPhiTowers, bool displaceEta=false, bool displacePhi=false)
Create a new tower grid.
Definition PufitGrid.cxx:76
std::vector< Tower > m_towers
Definition PufitGrid.h:235
Class to describe the kinematics of an object that can have negative energies.
METComponent operator+(const METComponent &lhs, const METComponent &rhs)
GridDisplacement
Enum to describe the positioning of the grid.
PufitGrid operator-(const PufitGrid &lhs, const PufitGrid &rhs)
Elementwise subtraction.
It used to be useful piece of code for replacing actual SG with other store of similar functionality ...
Definition index.py:1
Parameters describing a grid.
PufitGridSet & operator-=(const SignedKinematics &kin)
Subtract kinematics.
PufitGridSet & operator+=(const SignedKinematics &kin)
Add kinematics.
PufitGrid & operator[](GridDisplacement displacement)
Select a grid.
PufitGridSet(double maxEta, std::size_t nEta, std::size_t nPhi)
std::array< PufitGrid, 4 > grids
Definition PufitGrid.h:242