HGCalTowerMap

Macros

Line Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
#ifndef DataFormats_L1TCalorimeter_HGCalTowerMap_h
#define DataFormats_L1TCalorimeter_HGCalTowerMap_h

#include "DataFormats/L1THGCal/interface/HGCalTower.h"
#include "DataFormats/L1Trigger/interface/BXVector.h"

#include <unordered_map>

namespace l1t {

  class HGCalTowerMap;
  struct HGCalTowerCoord;
  typedef BXVector<HGCalTowerMap> HGCalTowerMapBxCollection;

  class HGCalTowerMap {
  public:
    HGCalTowerMap() : layer_(0) {}

    HGCalTowerMap(const std::vector<l1t::HGCalTowerCoord>& tower_ids, const int layer);

    int layer() const { return layer_; }

    const HGCalTowerMap& operator+=(const HGCalTowerMap& map);

    bool addEt(const std::unordered_map<unsigned short, float>& towerIDandShares, float etEm, float etHad);

    unsigned nTowers() const { return towerMap_.size(); }
    const std::unordered_map<unsigned short, l1t::HGCalTower>& towers() const { return towerMap_; }

  private:
    std::unordered_map<unsigned short, l1t::HGCalTower> towerMap_;
    unsigned layer_;
  };

}  // namespace l1t

#endif