Back to home page

sPhenix code displayed by LXR

 
 

    


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   // This is a generic copy of ALL properties a hit has
0012   // do not add explicit copies, they will be added to
0013   // the new hits with their default value increasing memory use
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 }