File indexing completed on 2025-08-06 08:17:29
0001 #include "RawTowerv2.h"
0002
0003 #include <iostream>
0004 #include <limits>
0005 #include <string> // for operator<<, string
0006 #include <utility> // for pair
0007
0008 RawTowerv2::RawTowerv2(const RawTower& tower)
0009 : RawTowerv1(tower)
0010 {
0011
0012
0013
0014 for (unsigned int ic = 0; ic < std::numeric_limits<unsigned char>::max(); ic++)
0015 {
0016 PROPERTY prop_id = static_cast<PROPERTY>(ic);
0017 if (tower.has_property(prop_id))
0018 {
0019 set_property(prop_id, tower.get_property(prop_id));
0020 }
0021 }
0022 }
0023
0024 RawTowerv2::RawTowerv2(RawTowerDefs::keytype id)
0025 : RawTowerv1(id)
0026 {
0027 }
0028
0029 RawTowerv2::RawTowerv2(const unsigned int ieta, const unsigned int iphi)
0030 : RawTowerv1(ieta, iphi)
0031 {
0032 }
0033
0034 RawTowerv2::RawTowerv2(const RawTowerDefs::CalorimeterId caloid,
0035 const unsigned int ieta, const unsigned int iphi)
0036 : RawTowerv1(caloid, ieta, iphi)
0037 {
0038 }
0039
0040 void RawTowerv2::Reset()
0041 {
0042 RawTowerv1::Reset();
0043 prop_map.clear();
0044 }
0045
0046 int RawTowerv2::isValid() const
0047 {
0048 return RawTowerv1::isValid();
0049 }
0050
0051 void RawTowerv2::identify(std::ostream& os) const
0052 {
0053 os << "RawTowerv2: etabin: " << get_bineta() << ", phibin: " << get_binphi()
0054 << " energy=" << get_energy() << std::endl;
0055
0056 for (auto i : prop_map)
0057 {
0058 PROPERTY prop_id = static_cast<PROPERTY>(i.first);
0059 const std::string property_info = get_property_info(prop_id);
0060 std::cout << "\t" << prop_id << ":\t" << property_info << " = \t" << get_property(prop_id) << std::endl;
0061 }
0062 }
0063
0064 bool RawTowerv2::has_property(const PROPERTY prop_id) const
0065 {
0066 prop_map_t::const_iterator i = prop_map.find(prop_id);
0067 return i != prop_map.end();
0068 }
0069
0070 double
0071 RawTowerv2::get_property(const PROPERTY prop_id) const
0072 {
0073 prop_map_t::const_iterator i = prop_map.find(prop_id);
0074
0075 if (i != prop_map.end())
0076 {
0077 return i->second;
0078 }
0079
0080 return std::numeric_limits<double>::signaling_NaN();
0081 }
0082
0083 void RawTowerv2::set_property(const PROPERTY prop_id, const double value)
0084 {
0085 prop_map[prop_id] = value;
0086 }