File indexing completed on 2025-08-06 08:17:29
0001 #include "RawTowerGeomv3.h"
0002
0003 #include <cmath>
0004 #include <iostream>
0005
0006 RawTowerGeomv3::RawTowerGeomv3(RawTowerDefs::keytype id)
0007 : _towerid(id)
0008 {
0009 }
0010
0011 double RawTowerGeomv3::get_center_radius() const
0012 {
0013 return std::sqrt(_center_x * _center_x +
0014 _center_y * _center_y);
0015 }
0016
0017 double RawTowerGeomv3::get_theta() const
0018 {
0019 double radius = sqrt(_center_x * _center_x + _center_y * _center_y);
0020 double theta = atan2(radius, _center_z);
0021 return theta;
0022 }
0023
0024 double RawTowerGeomv3::get_eta() const
0025 {
0026 double theta = get_theta();
0027 double eta = -log(tan(theta / 2.));
0028 return eta;
0029 }
0030
0031 double RawTowerGeomv3::get_phi() const
0032 {
0033 return atan2(_center_y, _center_x);
0034 }
0035
0036 int RawTowerGeomv3::get_bineta() const
0037 {
0038 RawTowerDefs::CalorimeterId caloid = RawTowerDefs::decode_caloid(_towerid);
0039 if (caloid == RawTowerDefs::LFHCAL)
0040 {
0041 return RawTowerDefs::decode_index1v2(_towerid);
0042 }
0043 else
0044 {
0045 return RawTowerDefs::decode_index1(_towerid);
0046 }
0047 }
0048
0049 int RawTowerGeomv3::get_binphi() const
0050 {
0051 RawTowerDefs::CalorimeterId caloid = RawTowerDefs::decode_caloid(_towerid);
0052 if (caloid == RawTowerDefs::LFHCAL)
0053 {
0054 return RawTowerDefs::decode_index2v2(_towerid);
0055 }
0056 else
0057 {
0058 return RawTowerDefs::decode_index2(_towerid);
0059 }
0060 }
0061
0062 void RawTowerGeomv3::identify(std::ostream& os) const
0063 {
0064 os << "RawTowerGeomv3: x: " << get_center_x() << " y: " << get_center_y() << " z: " << get_center_z()
0065 << "\n dx: " << get_size_x() << " dy: " << get_size_y() << " dz: " << get_size_z()
0066 << "\n tower_type = " << _tower_type << std::endl;
0067 }