Back to home page

sPhenix code displayed by LXR

 
 

    


File indexing completed on 2025-08-06 08:17:29

0001 #include "RawTowerv1.h"
0002 
0003 #include <iostream>
0004 
0005 RawTowerv1::RawTowerv1(const RawTower& tower)
0006 {
0007   towerid = (tower.get_id());
0008   energy = (tower.get_energy());
0009   time = (tower.get_time());
0010 
0011   CellConstRange cell_range = tower.get_g4cells();
0012 
0013   for (CellConstIterator cell_iter = cell_range.first;
0014        cell_iter != cell_range.second; ++cell_iter)
0015   {
0016     add_ecell(cell_iter->first, cell_iter->second);
0017   }
0018 
0019   ShowerConstRange shower_range = tower.get_g4showers();
0020 
0021   for (ShowerConstIterator shower_iter = shower_range.first;
0022        shower_iter != shower_range.second; ++shower_iter)
0023   {
0024     add_eshower(shower_iter->first, shower_iter->second);
0025   }
0026 }
0027 
0028 RawTowerv1::RawTowerv1(RawTowerDefs::keytype id)
0029   : towerid(id)
0030 {
0031 }
0032 
0033 RawTowerv1::RawTowerv1(const unsigned int ieta, const unsigned int iphi)
0034 {
0035   towerid = RawTowerDefs::encode_towerid(RawTowerDefs::NONE, ieta, iphi);
0036 }
0037 
0038 RawTowerv1::RawTowerv1(const RawTowerDefs::CalorimeterId caloid,
0039                        const unsigned int ieta, const unsigned int iphi)
0040 {
0041   towerid = RawTowerDefs::encode_towerid(caloid, ieta, iphi);
0042 }
0043 
0044 void RawTowerv1::Reset()
0045 {
0046   energy = 0;
0047   time = std::numeric_limits<float>::signaling_NaN();
0048   ecells.clear();
0049   eshowers.clear();
0050 }
0051 
0052 int RawTowerv1::isValid() const
0053 {
0054   return get_energy() != 0;
0055 }
0056 
0057 void RawTowerv1::identify(std::ostream& os) const
0058 {
0059   RawTowerDefs::CalorimeterId caloid = RawTowerDefs::decode_caloid(towerid);
0060   if (caloid == RawTowerDefs::LFHCAL)
0061   {
0062     os << "RawTowerv1: etabin: " << get_bineta() << ", phibin: " << get_binphi() << ", l-bin: " << get_binl()
0063        << " energy=" << get_energy() << std::endl;
0064   }
0065   else
0066   {
0067     os << "RawTowerv1: etabin: " << get_bineta() << ", phibin: " << get_binphi()
0068        << " energy=" << get_energy() << std::endl;
0069   }
0070   return;
0071 }
0072 
0073 void RawTowerv1::add_ecell(const CellKeyType g4cellid,
0074                            const float ecell)
0075 {
0076   if (ecells.find(g4cellid) == ecells.end())
0077   {
0078     ecells[g4cellid] = ecell;
0079   }
0080   else
0081   {
0082     ecells[g4cellid] += ecell;
0083   }
0084 }
0085 
0086 void RawTowerv1::add_eshower(const int g4showerid, const float eshower)
0087 {
0088   if (eshowers.find(g4showerid) == eshowers.end())
0089   {
0090     eshowers[g4showerid] = eshower;
0091   }
0092   else
0093   {
0094     eshowers[g4showerid] += eshower;
0095   }
0096 }
0097 
0098 int RawTowerv1::get_bineta() const
0099 {
0100   RawTowerDefs::CalorimeterId caloid = RawTowerDefs::decode_caloid(towerid);
0101   if (caloid == RawTowerDefs::LFHCAL)
0102   {
0103     return RawTowerDefs::decode_index1v2(towerid);
0104   }
0105   else
0106   {
0107     return RawTowerDefs::decode_index1(towerid);
0108   }
0109 }
0110 
0111 int RawTowerv1::get_binphi() const
0112 {
0113   RawTowerDefs::CalorimeterId caloid = RawTowerDefs::decode_caloid(towerid);
0114   if (caloid == RawTowerDefs::LFHCAL)
0115   {
0116     return RawTowerDefs::decode_index2v2(towerid);
0117   }
0118   else
0119   {
0120     return RawTowerDefs::decode_index2(towerid);
0121   }
0122 }