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