CMS 3D CMS Logo

CaloClusterer.h
Go to the documentation of this file.
1 #ifndef L1Trigger_Phase2L1ParticleFlow_CALOCLUSTERER_H
2 #define L1Trigger_Phase2L1ParticleFlow_CALOCLUSTERER_H
3 
7 // fwd declarations
8 namespace edm {
9  class ParameterSet;
10 }
11 
12 // real includes
13 #include <cstdint>
14 #include <cmath>
15 #include <vector>
16 #include <array>
17 #include <algorithm>
20 
21 namespace l1tpf_calo {
22  class Grid {
23  public:
24  virtual ~Grid() {}
25  unsigned int size() const { return ncells_; }
26  virtual int find_cell(float eta, float phi) const = 0;
27  int neighbour(int icell, unsigned int idx) const { return neighbours_[icell][idx]; }
28  float eta(int icell) const { return eta_[icell]; }
29  float phi(int icell) const { return phi_[icell]; }
30  float etaWidth(int icell) const { return etaWidth_[icell]; }
31  float phiWidth(int icell) const { return phiWidth_[icell]; }
32  int ieta(int icell) const { return ieta_[icell]; }
33  int iphi(int icell) const { return iphi_[icell]; }
34 
35  protected:
36  Grid(unsigned int size)
37  : ncells_(size),
38  eta_(size),
39  etaWidth_(size),
40  phi_(size),
41  phiWidth_(size),
42  ieta_(size),
43  iphi_(size),
44  neighbours_(size) {}
45  unsigned int ncells_;
46  std::vector<float> eta_, etaWidth_, phi_, phiWidth_;
47  std::vector<int> ieta_, iphi_;
48  std::vector<std::array<int, 8>> neighbours_; // indices of the neigbours, -1 = none
49  };
50 
51  class Phase1GridBase : public Grid {
52  public:
53  Phase1GridBase(int nEta, int nPhi, int ietaCoarse, int ietaVeryCoarse, const float *towerEtas);
54 
55  int find_cell(float eta, float phi) const override;
56  int ifind_cell(int ieta, int iphi) const { return cell_map_[(ieta + nEta_) + 2 * nEta_ * (iphi - 1)]; }
57 
58  protected:
60  const float *towerEtas_;
61  std::vector<int> cell_map_;
62  // valid ieta, iphi (does not check for outside bounds, only for non-existence of ieta=0, iphi=0, and coarser towers at high eta)
63  bool valid_ieta_iphi(int ieta, int iphi) const {
64  if (ieta == 0 || iphi == 0)
65  return false;
66  if (std::abs(ieta) >= ietaVeryCoarse_ && (iphi % 4 != 1))
67  return false;
68  if (std::abs(ieta) >= ietaCoarse_ && (iphi % 2 != 1))
69  return false;
70  return true;
71  }
72  // move by +/-1 around a cell; return icell or -1 if not available
73  int imove(int ieta, int iphi, int deta, int dphi);
74  };
75 
76  class Phase1Grid : public Phase1GridBase {
77  public:
80 
81  protected:
82  static const int phase1_nEta_ = 41, phase1_nPhi_ = 72, phase1_ietaCoarse_ = 29, phase1_ietaVeryCoarse_ = 40;
83  static const float phase1_towerEtas_[phase1_nEta_];
84  };
85  class Phase2Grid : public Phase1GridBase {
86  public:
89 
90  protected:
91  static const int phase2_nEta_ = 48, phase2_nPhi_ = 72, phase2_ietaCoarse_ = 36, phase2_ietaVeryCoarse_ = 47;
92  static const float phase2_towerEtas_[phase2_nEta_];
93  };
94 
95  template <typename T>
96  class GridData {
97  public:
98  GridData() : grid_(nullptr), data_(), empty_() {}
99  GridData(const Grid &grid) : grid_(&grid), data_(grid.size()), empty_() {}
100 
101  T &operator()(float eta, float phi) { return data_[grid_->find_cell(eta, phi)]; }
102  const T &operator()(float eta, float phi) const { return data_[grid_->find_cell(eta, phi)]; }
103 
104  const Grid &grid() const { return *grid_; }
105 
106  unsigned int size() const { return data_.size(); }
107 
108  float eta(int icell) const { return grid().eta(icell); }
109  float phi(int icell) const { return grid().phi(icell); }
110  int ieta(int icell) const { return grid().ieta(icell); }
111  int iphi(int icell) const { return grid().iphi(icell); }
112 
113  T &operator[](int icell) { return data_[icell]; }
114  const T &operator[](int icell) const { return data_[icell]; }
115 
116  const T &neigh(int icell, unsigned int idx) const {
117  int ineigh = grid_->neighbour(icell, idx);
118  return (ineigh < 0 ? empty_ : data_[ineigh]);
119  }
120 
122  assert(grid_ == other.grid_);
123  data_ = other.data_;
124  return *this;
125  }
127  assert(grid_ == other.grid_);
128  for (unsigned int i = 0, n = data_.size(); i < n; ++i) {
129  data_[i] += other.data_[i];
130  }
131  return *this;
132  }
133 
134  // always defined
135  void fill(const T &val) { std::fill(data_.begin(), data_.end(), val); }
136  void zero() { fill(T()); }
137 
138  // defined only if T has a 'clear' method
139  void clear() {
140  for (T &t : data_)
141  t.clear();
142  }
143 
144  private:
145  const Grid *grid_;
146  std::vector<T> data_;
147  const T empty_;
148  };
151 
152  struct PreCluster {
154  float ptLocalMax; // pt if it's a local max, zero otherwise
155  float ptOverNeighLocalMaxSum; // pt / (sum of ptLocalMax of neighbours); zero if no neighbours
157  };
159 
160  struct Cluster {
161  Cluster() : et(0), eta(0), phi(0) {}
162  float et, eta, phi;
163  std::vector<std::pair<int, float>> constituents;
164  void clear() {
165  et = eta = phi = 0;
166  constituents.clear();
167  }
168  };
169 
170  struct CombinedCluster : public Cluster {
171  float ecal_et, hcal_et;
172  void clear() {
173  Cluster::clear();
174  ecal_et = hcal_et = 0;
175  }
176  };
177 
178  const Grid *getGrid(const std::string &type);
179 
181  public:
184  void clear();
185  void add(const reco::Candidate &c) { add(c.pt(), c.eta(), c.phi()); }
186  void add(float pt, float eta, float phi) { rawet_(eta, phi) += pt; }
187  void run();
188 
190  // note: there can be some double-counting as the same unclustered energy can go into more clusters
191  void grow();
192 
193  const EtGrid &raw() const { return rawet_; }
194  const IndexGrid &indexGrid() const { return clusterIndex_; }
195  const std::vector<Cluster> &clusters() const { return clusters_; }
196  const Cluster &cluster(int i) const {
197  return (i == -1 || clusterIndex_[i] == -1) ? nullCluster_ : clusters_[clusterIndex_[i]];
198  }
199 
201  EtGrid &raw() { return rawet_; }
202 
203  // for the moment, generic interface that takes a cluster and returns the corrected pt
204  template <typename Corrector>
205  void correct(const Corrector &corrector) {
206  for (Cluster &c : clusters_) {
207  c.et = corrector(c);
208  }
209  }
210 
211  std::unique_ptr<l1t::PFClusterCollection> fetchCells(bool unclusteredOnly = false, float ptMin = 0.) const;
212 
213  std::unique_ptr<l1t::PFClusterCollection> fetch(float ptMin = 0.) const;
214  std::unique_ptr<l1t::PFClusterCollection> fetch(const edm::OrphanHandle<l1t::PFClusterCollection> &cells,
215  float ptMin = 0.) const;
216 
217  private:
218  enum class EnergyShareAlgo {
219  Fractions, /* each local maximum neighbour takes a share proportional to its value */
220  None, /* each local maximum neighbour takes all the value (double counting!) */
221  Greedy, /* assing cell to the highest local maximum neighbour */
222  Crude
223  }; /* if there's more than one local maximum neighbour, they all take half of the value (no fp division) */
224  const Grid *grid_;
228  std::vector<Cluster> clusters_;
232  bool energyWeightedPosition_; // do the energy-weighted cluster position instead of the cell center
233  };
234 
236  public:
238  const SingleCaloClusterer &ecal,
239  const SingleCaloClusterer &hcal);
240  virtual ~SimpleCaloLinkerBase();
241  virtual void clear() { clearBase(); }
242  virtual void run() = 0;
243  void clearBase() {
244  clusters_.clear();
245  clusterIndex_.fill(-1);
246  }
247 
248  // for the moment, generic interface that takes a cluster and returns the corrected pt
249  template <typename Corrector>
250  void correct(const Corrector &corrector) {
251  for (CombinedCluster &c : clusters_) {
252  c.et = corrector(c);
253  }
254  }
255 
256  std::unique_ptr<l1t::PFClusterCollection> fetch() const;
257  std::unique_ptr<l1t::PFClusterCollection> fetch(const edm::OrphanHandle<l1t::PFClusterCollection> &ecal,
259 
260  protected:
261  const Grid *grid_;
264  std::vector<CombinedCluster> clusters_;
267  };
268 
270  public:
272  ~SimpleCaloLinker() override;
273  void clear() override;
274  void run() override;
275 
276  protected:
278  };
280  public:
282  ~FlatCaloLinker() override;
283  void clear() override;
284  void run() override;
285 
286  protected:
288  };
289 
290  // makes a calo linker (pointer will be owned by the callee)
291  std::unique_ptr<SimpleCaloLinkerBase> makeCaloLinker(const edm::ParameterSet &pset,
292  const SingleCaloClusterer &ecal,
293  const SingleCaloClusterer &hcal);
294 
295 } // namespace l1tpf_calo
296 
297 #endif
l1tpf_calo::CombinedCluster::clear
void clear()
Definition: CaloClusterer.h:172
l1tpf_calo::SimpleCaloLinkerBase::run
virtual void run()=0
l1tpf_calo::Phase1Grid::phase1_ietaCoarse_
static const int phase1_ietaCoarse_
Definition: CaloClusterer.h:82
l1tpf_calo::Grid::neighbours_
std::vector< std::array< int, 8 > > neighbours_
Definition: CaloClusterer.h:48
l1tpf_calo::SimpleCaloLinkerBase::~SimpleCaloLinkerBase
virtual ~SimpleCaloLinkerBase()
Definition: CaloClusterer.cc:429
l1tpf_calo::SimpleCaloLinkerBase::clear
virtual void clear()
Definition: CaloClusterer.h:241
l1tpf_calo::GridData::clear
void clear()
Definition: CaloClusterer.h:139
mps_fire.i
i
Definition: mps_fire.py:428
l1tpf_calo::SimpleCaloLinkerBase::clusterIndex_
IndexGrid clusterIndex_
Definition: CaloClusterer.h:263
l1tpf_calo::GridData::empty_
const T empty_
Definition: CaloClusterer.h:147
l1tpf_calo::Phase1GridBase::nEta_
const int nEta_
Definition: CaloClusterer.h:59
dqmiodumpmetadata.n
n
Definition: dqmiodumpmetadata.py:28
l1tpf_calo::Phase1GridBase::towerEtas_
const float * towerEtas_
Definition: CaloClusterer.h:60
l1tpf_calo::Phase1GridBase::nPhi_
const int nPhi_
Definition: CaloClusterer.h:59
l1tpf_calo::Phase1GridBase::imove
int imove(int ieta, int iphi, int deta, int dphi)
Definition: CaloClusterer.cc:118
l1tpf_calo::SingleCaloClusterer::indexGrid
const IndexGrid & indexGrid() const
Definition: CaloClusterer.h:194
l1tpf_calo::GridData::GridData
GridData()
Definition: CaloClusterer.h:98
l1tpf_calo::PreCluster::clear
void clear()
Definition: CaloClusterer.h:156
l1tpf_calo::GridData::fill
void fill(const T &val)
Definition: CaloClusterer.h:135
HLT_FULL_cff.nEta
nEta
Definition: HLT_FULL_cff.py:6596
l1tpf_calo::Phase2Grid::phase2_ietaVeryCoarse_
static const int phase2_ietaVeryCoarse_
Definition: CaloClusterer.h:91
l1tpf_calo::FlatCaloLinker
Definition: CaloClusterer.h:279
l1tpf_calo::getGrid
const Grid * getGrid(const std::string &type)
Definition: CaloClusterer.cc:155
l1tpf_calo::SingleCaloClusterer::nullCluster_
const Cluster nullCluster_
Definition: CaloClusterer.h:229
DiDispStaMuonMonitor_cfi.pt
pt
Definition: DiDispStaMuonMonitor_cfi.py:39
l1tpf_calo::Cluster::Cluster
Cluster()
Definition: CaloClusterer.h:161
l1tpf_calo::GridData::grid
const Grid & grid() const
Definition: CaloClusterer.h:104
hcal
Definition: ConfigurationDatabase.cc:13
l1tpf_calo::Phase2Grid::Phase2Grid
Phase2Grid()
Definition: CaloClusterer.h:87
edm
HLT enums.
Definition: AlignableModifier.h:19
l1tpf_calo::GridData::operator()
T & operator()(float eta, float phi)
Definition: CaloClusterer.h:101
l1tpf_calo::CombinedCluster::ecal_et
float ecal_et
Definition: CaloClusterer.h:171
l1tpf_calo::SimpleCaloLinkerBase::minHadronEt_
float minHadronEt_
Definition: CaloClusterer.h:265
l1tpf_calo::SingleCaloClusterer::clusters_
std::vector< Cluster > clusters_
Definition: CaloClusterer.h:228
l1tpf_calo::Grid
Definition: CaloClusterer.h:22
l1tpf_calo::Grid::ncells_
unsigned int ncells_
Definition: CaloClusterer.h:45
l1tpf_calo::FlatCaloLinker::clear
void clear() override
Definition: CaloClusterer.cc:588
ptMin
constexpr float ptMin
Definition: PhotonIDValueMapProducer.cc:155
cms::cuda::assert
assert(be >=bs)
l1tpf_calo::GridData::iphi
int iphi(int icell) const
Definition: CaloClusterer.h:111
l1tpf_calo
Definition: CaloClusterer.h:21
l1tpf_calo::SimpleCaloLinker::ecalToHCal_
PreClusterGrid ecalToHCal_
Definition: CaloClusterer.h:277
l1tpf_calo::Phase2Grid::phase2_ietaCoarse_
static const int phase2_ietaCoarse_
Definition: CaloClusterer.h:91
l1tpf_calo::SimpleCaloLinkerBase::hcal_
const SingleCaloClusterer & hcal_
Definition: CaloClusterer.h:262
l1tpf_calo::Grid::phi_
std::vector< float > phi_
Definition: CaloClusterer.h:46
l1tpf_calo::SingleCaloClusterer::seedEt_
float seedEt_
Definition: CaloClusterer.h:230
l1tpf_calo::SingleCaloClusterer::zsEt_
float zsEt_
Definition: CaloClusterer.h:230
l1tpf_calo::Phase2Grid::phase2_nEta_
static const int phase2_nEta_
Definition: CaloClusterer.h:91
l1tpf_calo::Phase1Grid::phase1_towerEtas_
static const float phase1_towerEtas_[phase1_nEta_]
Definition: CaloClusterer.h:83
l1tpf_calo::FlatCaloLinker::run
void run() override
Definition: CaloClusterer.cc:593
l1tpf_calo::Phase1Grid::Phase1Grid
Phase1Grid()
Definition: CaloClusterer.h:78
l1tpf_calo::GridData::operator[]
const T & operator[](int icell) const
Definition: CaloClusterer.h:114
l1tpf_calo::SimpleCaloLinker::SimpleCaloLinker
SimpleCaloLinker(const edm::ParameterSet &pset, const SingleCaloClusterer &ecal, const SingleCaloClusterer &hcal)
Definition: CaloClusterer.cc:471
l1tpf_calo::makeCaloLinker
std::unique_ptr< SimpleCaloLinkerBase > makeCaloLinker(const edm::ParameterSet &pset, const SingleCaloClusterer &ecal, const SingleCaloClusterer &hcal)
Definition: CaloClusterer.cc:627
l1tpf_calo::Cluster::constituents
std::vector< std::pair< int, float > > constituents
Definition: CaloClusterer.h:163
l1tpf_calo::SimpleCaloLinkerBase::SimpleCaloLinkerBase
SimpleCaloLinkerBase(const edm::ParameterSet &pset, const SingleCaloClusterer &ecal, const SingleCaloClusterer &hcal)
Definition: CaloClusterer.cc:410
heavyIonCSV_trainingSettings.idx
idx
Definition: heavyIonCSV_trainingSettings.py:5
l1tpf_calo::Phase1GridBase::ifind_cell
int ifind_cell(int ieta, int iphi) const
Definition: CaloClusterer.h:56
pfClustersFromHGC3DClusters_cfi.corrector
corrector
Definition: pfClustersFromHGC3DClusters_cfi.py:5
l1tpf_calo::Grid::iphi
int iphi(int icell) const
Definition: CaloClusterer.h:33
l1tpf_calo::GridData::ieta
int ieta(int icell) const
Definition: CaloClusterer.h:110
l1tpf_calo::Cluster
Definition: CaloClusterer.h:160
l1tpf_calo::Cluster::clear
void clear()
Definition: CaloClusterer.h:164
l1tpf_calo::SingleCaloClusterer::add
void add(const reco::Candidate &c)
Definition: CaloClusterer.h:185
l1tpf_calo::Grid::etaWidth_
std::vector< float > etaWidth_
Definition: CaloClusterer.h:46
l1tpf_calo::SingleCaloClusterer::grow
void grow()
possibly grow clusters by adding unclustered energy on the sides
Definition: CaloClusterer.cc:341
l1tpf_calo::SingleCaloClusterer::EnergyShareAlgo
EnergyShareAlgo
Definition: CaloClusterer.h:218
PVValHelper::eta
Definition: PVValidationHelpers.h:69
l1tpf_calo::FlatCaloLinker::FlatCaloLinker
FlatCaloLinker(const edm::ParameterSet &pset, const SingleCaloClusterer &ecal, const SingleCaloClusterer &hcal)
Definition: CaloClusterer.cc:581
OrphanHandle.h
l1tpf_calo::GridData::GridData
GridData(const Grid &grid)
Definition: CaloClusterer.h:99
l1tpf_calo::Phase1GridBase::cell_map_
std::vector< int > cell_map_
Definition: CaloClusterer.h:61
l1tpf_calo::GridData::operator[]
T & operator[](int icell)
Definition: CaloClusterer.h:113
l1tpf_calo::SimpleCaloLinkerBase::fetch
std::unique_ptr< l1t::PFClusterCollection > fetch() const
Definition: CaloClusterer.cc:431
l1tpf_calo::Phase1GridBase::valid_ieta_iphi
bool valid_ieta_iphi(int ieta, int iphi) const
Definition: CaloClusterer.h:63
l1tpf_calo::Phase2Grid::phase2_nPhi_
static const int phase2_nPhi_
Definition: CaloClusterer.h:91
l1tpf_calo::SingleCaloClusterer::minClusterEt_
float minClusterEt_
Definition: CaloClusterer.h:230
trackingPlots.other
other
Definition: trackingPlots.py:1467
l1tpf_calo::Grid::phi
float phi(int icell) const
Definition: CaloClusterer.h:29
l1tpf_calo::GridData::zero
void zero()
Definition: CaloClusterer.h:136
l1tpf_calo::SingleCaloClusterer::fetchCells
std::unique_ptr< l1t::PFClusterCollection > fetchCells(bool unclusteredOnly=false, float ptMin=0.) const
Definition: CaloClusterer.cc:368
l1tpf_calo::Grid::ieta_
std::vector< int > ieta_
Definition: CaloClusterer.h:47
l1tpf_calo::SingleCaloClusterer::raw
const EtGrid & raw() const
Definition: CaloClusterer.h:193
l1tpf_calo::Phase1Grid::phase1_nPhi_
static const int phase1_nPhi_
Definition: CaloClusterer.h:82
l1tpf_calo::SimpleCaloLinkerBase::clearBase
void clearBase()
Definition: CaloClusterer.h:243
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
l1tpf_calo::Phase1GridBase::find_cell
int find_cell(float eta, float phi) const override
Definition: CaloClusterer.cc:77
l1tpf_calo::SingleCaloClusterer::~SingleCaloClusterer
~SingleCaloClusterer()
Definition: CaloClusterer.cc:193
l1tpf_calo::Phase1GridBase
Definition: CaloClusterer.h:51
l1tpf_calo::SingleCaloClusterer::cellKey_
IndexGrid cellKey_
Definition: CaloClusterer.h:227
l1tpf_calo::SingleCaloClusterer::add
void add(float pt, float eta, float phi)
Definition: CaloClusterer.h:186
ntuplemaker.fill
fill
Definition: ntuplemaker.py:304
l1tpf_calo::Phase1GridBase::ietaVeryCoarse_
const int ietaVeryCoarse_
Definition: CaloClusterer.h:59
l1tpf_calo::PreCluster::ptLocalMax
float ptLocalMax
Definition: CaloClusterer.h:154
edm::ParameterSet
Definition: ParameterSet.h:47
l1tpf_calo::PreCluster::ptOverNeighLocalMaxSum
float ptOverNeighLocalMaxSum
Definition: CaloClusterer.h:155
l1tpf_calo::GridData::neigh
const T & neigh(int icell, unsigned int idx) const
Definition: CaloClusterer.h:116
l1tpf_calo::SingleCaloClusterer::clear
void clear()
Definition: CaloClusterer.cc:195
ParameterSet
Definition: Functions.h:16
l1tpf_calo::Grid::size
unsigned int size() const
Definition: CaloClusterer.h:25
l1tpf_calo::SingleCaloClusterer::rawet_
EtGrid rawet_
Definition: CaloClusterer.h:225
type
type
Definition: SiPixelVCal_PayloadInspector.cc:37
l1tpf_calo::CombinedCluster
Definition: CaloClusterer.h:170
l1tpf_calo::SingleCaloClusterer::unclustered_
EtGrid unclustered_
Definition: CaloClusterer.h:225
HLT_FULL_cff.nPhi
nPhi
Definition: HLT_FULL_cff.py:6597
l1tpf_calo::SingleCaloClusterer::minEtToGrow_
float minEtToGrow_
Definition: CaloClusterer.h:230
l1tpf_calo::SingleCaloClusterer::grid_
const Grid * grid_
Definition: CaloClusterer.h:224
l1tpf_calo::GridData::operator()
const T & operator()(float eta, float phi) const
Definition: CaloClusterer.h:102
l1tpf_calo::Grid::neighbour
int neighbour(int icell, unsigned int idx) const
Definition: CaloClusterer.h:27
l1tpf_calo::Grid::phiWidth_
std::vector< float > phiWidth_
Definition: CaloClusterer.h:46
l1tpf_calo::Phase1Grid::phase1_ietaVeryCoarse_
static const int phase1_ietaVeryCoarse_
Definition: CaloClusterer.h:82
l1tpf_calo::Cluster::eta
float eta
Definition: CaloClusterer.h:162
l1tpf_calo::PreCluster::PreCluster
PreCluster()
Definition: CaloClusterer.h:153
l1tpf_calo::GridData::data_
std::vector< T > data_
Definition: CaloClusterer.h:146
l1tpf_calo::Phase2Grid::phase2_towerEtas_
static const float phase2_towerEtas_[phase2_nEta_]
Definition: CaloClusterer.h:92
l1tpf_calo::SimpleCaloLinkerBase::ecal_
const SingleCaloClusterer & ecal_
Definition: CaloClusterer.h:262
HltBtagPostValidation_cff.c
c
Definition: HltBtagPostValidation_cff.py:31
l1tpf_calo::SimpleCaloLinkerBase::correct
void correct(const Corrector &corrector)
Definition: CaloClusterer.h:250
l1tpf_calo::SingleCaloClusterer::raw
EtGrid & raw()
non-const access to the energy: be careful to use it only before 'run()'
Definition: CaloClusterer.h:201
l1tpf_calo::SimpleCaloLinkerBase::minHadronRawEt_
float minHadronRawEt_
Definition: CaloClusterer.h:265
l1tpf_calo::SimpleCaloLinkerBase::minPhotonEt_
float minPhotonEt_
Definition: CaloClusterer.h:265
l1tpf_calo::GridData::size
unsigned int size() const
Definition: CaloClusterer.h:106
l1tpf_calo::SingleCaloClusterer::EnergyShareAlgo::Fractions
l1tpf_calo::Phase1GridBase::ietaCoarse_
const int ietaCoarse_
Definition: CaloClusterer.h:59
l1tpf_calo::SingleCaloClusterer::run
void run()
Definition: CaloClusterer.cc:201
reco::Candidate
Definition: Candidate.h:27
l1tpf_calo::GridData::eta
float eta(int icell) const
Definition: CaloClusterer.h:108
l1tpf_calo::Cluster::et
float et
Definition: CaloClusterer.h:162
PFCluster.h
l1tpf_calo::Grid::~Grid
virtual ~Grid()
Definition: CaloClusterer.h:24
l1tpf_calo::PreClusterGrid
GridData< PreCluster > PreClusterGrid
Definition: CaloClusterer.h:158
l1tpf_calo::FlatCaloLinker::combClusterer_
SingleCaloClusterer combClusterer_
Definition: CaloClusterer.h:287
l1tpf_calo::SimpleCaloLinkerBase::grid_
const Grid * grid_
Definition: CaloClusterer.h:261
l1tpf_calo::Grid::Grid
Grid(unsigned int size)
Definition: CaloClusterer.h:36
l1tpf_calo::GridData
Definition: CaloClusterer.h:96
l1tpf_calo::SimpleCaloLinkerBase::noEmInHGC_
bool noEmInHGC_
Definition: CaloClusterer.h:266
l1tpf_calo::Phase2Grid
Definition: CaloClusterer.h:85
l1tpf_calo::SimpleCaloLinker::run
void run() override
Definition: CaloClusterer.cc:483
l1tpf_calo::GridData::phi
float phi(int icell) const
Definition: CaloClusterer.h:109
l1tpf_calo::Grid::eta_
std::vector< float > eta_
Definition: CaloClusterer.h:46
l1tpf_calo::SingleCaloClusterer::EnergyShareAlgo::Greedy
heppy_batch.val
val
Definition: heppy_batch.py:351
edm::OrphanHandle
Definition: EDProductfwd.h:39
l1tpf_calo::SingleCaloClusterer::correct
void correct(const Corrector &corrector)
Definition: CaloClusterer.h:205
l1tpf_calo::IndexGrid
GridData< int > IndexGrid
Definition: CaloClusterer.h:150
l1tpf_calo::Cluster::phi
float phi
Definition: CaloClusterer.h:162
l1tpf_calo::GridData::operator=
GridData< T > & operator=(const GridData< T > &other)
Definition: CaloClusterer.h:121
T
long double T
Definition: Basic3DVectorLD.h:48
l1tpf_calo::PreCluster
Definition: CaloClusterer.h:152
l1tpf_calo::SingleCaloClusterer::EnergyShareAlgo::Crude
l1tpf_calo::Grid::ieta
int ieta(int icell) const
Definition: CaloClusterer.h:32
l1tpf_calo::SingleCaloClusterer::clusterIndex_
IndexGrid clusterIndex_
Definition: CaloClusterer.h:227
postprocess-scan-build.cells
cells
Definition: postprocess-scan-build.py:13
l1tpf_calo::SingleCaloClusterer::EnergyShareAlgo::None
l1tpf_calo::EtGrid
GridData< float > EtGrid
Definition: CaloClusterer.h:149
l1tpf_calo::SimpleCaloLinkerBase
Definition: CaloClusterer.h:235
l1tpf_calo::SingleCaloClusterer::energyWeightedPosition_
bool energyWeightedPosition_
Definition: CaloClusterer.h:232
l1tpf_calo::SingleCaloClusterer::cluster
const Cluster & cluster(int i) const
Definition: CaloClusterer.h:196
l1tpf_calo::FlatCaloLinker::~FlatCaloLinker
~FlatCaloLinker() override
Definition: CaloClusterer.cc:586
l1tpf_calo::GridData::operator+=
GridData< T > & operator+=(const GridData< T > &other)
Definition: CaloClusterer.h:126
l1tpf_calo::SingleCaloClusterer
Definition: CaloClusterer.h:180
bsc_activity_cfg.ecal
ecal
Definition: bsc_activity_cfg.py:25
l1tpf_calo::Grid::iphi_
std::vector< int > iphi_
Definition: CaloClusterer.h:47
l1tpf_calo::GridData::grid_
const Grid * grid_
Definition: CaloClusterer.h:145
funct::abs
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
l1tpf_calo::SimpleCaloLinkerBase::hoeCut_
float hoeCut_
Definition: CaloClusterer.h:265
l1tpf_calo::Grid::eta
float eta(int icell) const
Definition: CaloClusterer.h:28
l1tpf_calo::SingleCaloClusterer::precluster_
PreClusterGrid precluster_
Definition: CaloClusterer.h:226
submitPVValidationJobs.t
string t
Definition: submitPVValidationJobs.py:644
l1tpf_calo::SimpleCaloLinker
Definition: CaloClusterer.h:269
l1tpf_calo::Grid::phiWidth
float phiWidth(int icell) const
Definition: CaloClusterer.h:31
l1tpf_calo::CombinedCluster::hcal_et
float hcal_et
Definition: CaloClusterer.h:171
l1tpf_calo::SimpleCaloLinker::~SimpleCaloLinker
~SimpleCaloLinker() override
Definition: CaloClusterer.cc:476
l1tpf_calo::SingleCaloClusterer::energyShareAlgo_
EnergyShareAlgo energyShareAlgo_
Definition: CaloClusterer.h:231
l1tpf_calo::SingleCaloClusterer::fetch
std::unique_ptr< l1t::PFClusterCollection > fetch(float ptMin=0.) const
Definition: CaloClusterer.cc:385
l1tpf_calo::SingleCaloClusterer::SingleCaloClusterer
SingleCaloClusterer(const edm::ParameterSet &pset)
Definition: CaloClusterer.cc:166
l1tpf_calo::SingleCaloClusterer::clusters
const std::vector< Cluster > & clusters() const
Definition: CaloClusterer.h:195
l1tpf_calo::Phase1GridBase::Phase1GridBase
Phase1GridBase(int nEta, int nPhi, int ietaCoarse, int ietaVeryCoarse, const float *towerEtas)
Definition: CaloClusterer.cc:19
l1tpf_calo::Grid::find_cell
virtual int find_cell(float eta, float phi) const =0
l1tpf_calo::SimpleCaloLinker::clear
void clear() override
Definition: CaloClusterer.cc:478
l1tpf_calo::SimpleCaloLinkerBase::clusters_
std::vector< CombinedCluster > clusters_
Definition: CaloClusterer.h:264
l1tpf_calo::Phase1Grid
Definition: CaloClusterer.h:76
muonDTDigis_cfi.pset
pset
Definition: muonDTDigis_cfi.py:27
l1tpf_calo::Grid::etaWidth
float etaWidth(int icell) const
Definition: CaloClusterer.h:30
l1tpf_calo::Phase1Grid::phase1_nEta_
static const int phase1_nEta_
Definition: CaloClusterer.h:82