File indexing completed on 2025-12-16 09:19:46
0001 #ifndef CALOBASE_RAWTOWERV1_H
0002 #define CALOBASE_RAWTOWERV1_H
0003
0004 #include "RawTower.h"
0005
0006 #include "RawTowerDefs.h"
0007
0008 #include <cstddef>
0009 #include <iostream>
0010 #include <limits>
0011 #include <utility>
0012
0013 class RawTowerv1 : public RawTower
0014 {
0015 public:
0016 RawTowerv1() = default;
0017 RawTowerv1(const RawTower& tower);
0018 RawTowerv1(RawTowerDefs::keytype id);
0019 RawTowerv1(const unsigned int ieta, const unsigned int iphi);
0020 RawTowerv1(const RawTowerDefs::CalorimeterId caloid, const unsigned int ieta,
0021 const unsigned int iphi);
0022 ~RawTowerv1() override = default;
0023
0024 void Reset() override;
0025 int isValid() const override;
0026 void identify(std::ostream& os = std::cout) const override;
0027
0028 void set_id(RawTowerDefs::keytype id) override { towerid = id; }
0029 RawTowerDefs::keytype get_id() const override { return towerid; }
0030 int get_bineta() const override;
0031 int get_binphi() const override;
0032 int get_binl() const override { return RawTowerDefs::decode_index3v2(towerid); }
0033 double get_energy() const override { return energy; }
0034 void set_energy(const double e) override { energy = e; }
0035 float get_time() const override { return time; }
0036 void set_time(const float t) override { time = t; }
0037
0038
0039
0040 bool empty_g4cells() const override { return ecells.empty(); }
0041 size_t size_g4cells() const override { return ecells.size(); }
0042 RawTower::CellConstRange get_g4cells() const override
0043 {
0044 return make_pair(ecells.begin(), ecells.end());
0045 }
0046 RawTower::CellIterator find_g4cell(CellKeyType id) override { return ecells.find(id); }
0047 RawTower::CellConstIterator find_g4cell(CellKeyType id) const override { return ecells.find(id); }
0048 void add_ecell(const CellKeyType g4cellid,
0049 const float ecell) override;
0050 void clear_g4cells() override { ecells.clear(); }
0051
0052
0053
0054 bool empty_g4showers() const override { return eshowers.empty(); }
0055 size_t size_g4showers() const override { return eshowers.size(); }
0056 RawTower::ShowerConstRange get_g4showers() const override
0057 {
0058 return make_pair(eshowers.begin(), eshowers.end());
0059 }
0060 RawTower::ShowerIterator find_g4shower(int id) override { return eshowers.find(id); }
0061 RawTower::ShowerConstIterator find_g4shower(int id) const override { return eshowers.find(id); }
0062 void add_eshower(const int g4showerid, const float eshower) override;
0063 void clear_g4showers() override { eshowers.clear(); }
0064
0065 protected:
0066 RawTowerDefs::keytype towerid{std::numeric_limits<RawTowerDefs::keytype>::max()};
0067
0068
0069
0070 double energy{0.};
0071
0072
0073 float time{std::numeric_limits<float>::quiet_NaN()};
0074
0075 CellMap ecells;
0076 ShowerMap eshowers;
0077
0078 ClassDefOverride(RawTowerv1, 5)
0079 };
0080
0081 #endif