File indexing completed on 2025-12-16 09:19:45
0001 #ifndef CALOBASE_RAWTOWERGEO_H
0002 #define CALOBASE_RAWTOWERGEO_H
0003
0004 #include "RawTowerDefs.h"
0005
0006 #include <phool/PHObject.h>
0007 #include <phool/phool.h>
0008
0009 #include <iostream>
0010 #include <limits>
0011 #include <vector>
0012
0013 class RawTowerGeom : public PHObject
0014 {
0015 public:
0016 ~RawTowerGeom() override = default;
0017
0018 RawTowerGeom(const RawTowerGeom& ) = default;;
0019
0020 void identify(std::ostream& os = std::cout) const override;
0021
0022 virtual void set_id(RawTowerDefs::keytype) { PHOOL_VIRTUAL_WARN("set_id()"); }
0023
0024 virtual RawTowerDefs::keytype get_id() const
0025 {
0026 PHOOL_VIRTUAL_WARN("get_id()");
0027 return 0;
0028 }
0029
0030 virtual int get_bineta() const
0031 {
0032 PHOOL_VIRTUAL_WARN("get_ieta()");
0033 return -1;
0034 }
0035
0036 virtual int get_binphi() const
0037 {
0038 PHOOL_VIRTUAL_WARN("get_iphi()");
0039 return -1;
0040 }
0041
0042 virtual int get_binl() const
0043 {
0044 PHOOL_VIRTUAL_WARN("get_binl()");
0045 return -1;
0046 }
0047
0048 virtual int get_column() const
0049 {
0050 PHOOL_VIRTUAL_WARN("get_column()");
0051 return -1;
0052 }
0053
0054 virtual int get_row() const
0055 {
0056 PHOOL_VIRTUAL_WARN("get_row()");
0057 return -1;
0058 }
0059
0060 virtual void set_center_x(double)
0061 {
0062 PHOOL_VIRTUAL_WARN("set_center_x()");
0063 return;
0064 }
0065
0066 virtual void set_center_y(double)
0067 {
0068 PHOOL_VIRTUAL_WARN("set_center_y()");
0069 return;
0070 }
0071
0072 virtual void set_center_z(double)
0073 {
0074 PHOOL_VIRTUAL_WARN("set_center_z()");
0075 return;
0076 }
0077
0078 virtual void set_vertices(const std::vector<double>&)
0079 {
0080 PHOOL_VIRTUAL_WARN("set_vertices()");
0081 return;
0082 }
0083
0084 virtual void compute_vertices(const std::vector<std::pair<double, double>>&,
0085 const std::pair<double, double>&,
0086 const double&,
0087 const double&)
0088 {
0089 PHOOL_VIRTUAL_WARN("compute_vertices()");
0090 return;
0091 }
0092
0093 virtual void set_size_x(double)
0094 {
0095 PHOOL_VIRTUAL_WARN("set_size_x()");
0096 return;
0097 }
0098
0099 virtual void set_size_y(double)
0100 {
0101 PHOOL_VIRTUAL_WARN("set_size_y()");
0102 return;
0103 }
0104
0105 virtual void set_size_z(double)
0106 {
0107 PHOOL_VIRTUAL_WARN("set_size_z()");
0108 return;
0109 }
0110
0111 virtual double get_center_x() const
0112 {
0113 PHOOL_VIRTUAL_WARN("get_center_x()");
0114 return std::numeric_limits<float>::quiet_NaN();
0115 }
0116
0117 virtual double get_center_y() const
0118 {
0119 PHOOL_VIRTUAL_WARN("get_center_y()");
0120 return std::numeric_limits<float>::quiet_NaN();
0121 }
0122
0123 virtual double get_center_z() const
0124 {
0125 PHOOL_VIRTUAL_WARN("get_center_z()");
0126 return std::numeric_limits<float>::quiet_NaN();
0127 }
0128
0129 virtual double get_center_int_x() const
0130 {
0131 PHOOL_VIRTUAL_WARN("get_center_int_x()");
0132 return std::numeric_limits<float>::quiet_NaN();
0133 }
0134
0135 virtual double get_center_int_y() const
0136 {
0137 PHOOL_VIRTUAL_WARN("get_center_int_y()");
0138 return std::numeric_limits<float>::quiet_NaN();
0139 }
0140
0141 virtual double get_center_int_z() const
0142 {
0143 PHOOL_VIRTUAL_WARN("get_center_int_z()");
0144 return std::numeric_limits<float>::quiet_NaN();
0145 }
0146
0147 virtual double get_center_ext_x() const
0148 {
0149 PHOOL_VIRTUAL_WARN("get_center_ext_x()");
0150 return std::numeric_limits<float>::quiet_NaN();
0151 }
0152
0153 virtual double get_center_ext_y() const
0154 {
0155 PHOOL_VIRTUAL_WARN("get_center_ext_y()");
0156 return std::numeric_limits<float>::quiet_NaN();
0157 }
0158
0159 virtual double get_center_ext_z() const
0160 {
0161 PHOOL_VIRTUAL_WARN("get_center_ext_z()");
0162 return std::numeric_limits<float>::quiet_NaN();
0163 }
0164
0165 virtual double get_center_low_eta_x() const
0166 {
0167 PHOOL_VIRTUAL_WARN("get_center_low_eta_x()");
0168 return std::numeric_limits<float>::quiet_NaN();
0169 }
0170
0171 virtual double get_center_low_eta_y() const
0172 {
0173 PHOOL_VIRTUAL_WARN("get_center_low_eta_y()");
0174 return std::numeric_limits<float>::quiet_NaN();
0175 }
0176
0177 virtual double get_center_low_eta_z() const
0178 {
0179 PHOOL_VIRTUAL_WARN("get_center_low_eta_z()");
0180 return std::numeric_limits<float>::quiet_NaN();
0181 }
0182
0183 virtual double get_center_high_eta_x() const
0184 {
0185 PHOOL_VIRTUAL_WARN("get_center_high_eta_x()");
0186 return std::numeric_limits<float>::quiet_NaN();
0187 }
0188
0189 virtual double get_center_high_eta_y() const
0190 {
0191 PHOOL_VIRTUAL_WARN("get_center_high_eta_y()");
0192 return std::numeric_limits<float>::quiet_NaN();
0193 }
0194
0195 virtual double get_center_high_eta_z() const
0196 {
0197 PHOOL_VIRTUAL_WARN("get_center_high_eta_z()");
0198 return std::numeric_limits<float>::quiet_NaN();
0199 }
0200
0201 virtual double get_center_low_phi_x() const
0202 {
0203 PHOOL_VIRTUAL_WARN("get_center_low_phi_x()");
0204 return std::numeric_limits<float>::quiet_NaN();
0205 }
0206
0207 virtual double get_center_low_phi_y() const
0208 {
0209 PHOOL_VIRTUAL_WARN("get_center_low_phi_y()");
0210 return std::numeric_limits<float>::quiet_NaN();
0211 }
0212
0213 virtual double get_center_low_phi_z() const
0214 {
0215 PHOOL_VIRTUAL_WARN("get_center_low_phi_z()");
0216 return std::numeric_limits<float>::quiet_NaN();
0217 }
0218
0219 virtual double get_center_high_phi_x() const
0220 {
0221 PHOOL_VIRTUAL_WARN("get_center_high_phi_x()");
0222 return std::numeric_limits<float>::quiet_NaN();
0223 }
0224
0225 virtual double get_center_high_phi_y() const
0226 {
0227 PHOOL_VIRTUAL_WARN("get_center_high_phi_y()");
0228 return std::numeric_limits<float>::quiet_NaN();
0229 }
0230
0231 virtual double get_center_high_phi_z() const
0232 {
0233 PHOOL_VIRTUAL_WARN("get_center_high_phi_z()");
0234 return std::numeric_limits<float>::quiet_NaN();
0235 }
0236
0237 virtual double get_vertex_x(int) const
0238 {
0239 PHOOL_VIRTUAL_WARN("get_vertex_x()");
0240 return std::numeric_limits<float>::quiet_NaN();
0241 }
0242
0243 virtual double get_vertex_y(int) const
0244 {
0245 PHOOL_VIRTUAL_WARN("get_vertex_y()");
0246 return std::numeric_limits<float>::quiet_NaN();
0247 }
0248
0249 virtual double get_vertex_z(int) const
0250 {
0251 PHOOL_VIRTUAL_WARN("get_vertex_z()");
0252 return std::numeric_limits<float>::quiet_NaN();
0253 }
0254
0255 virtual double get_size_x() const
0256 {
0257 PHOOL_VIRTUAL_WARN("get_size_x()");
0258 return std::numeric_limits<float>::quiet_NaN();
0259 }
0260
0261 virtual double get_size_y() const
0262 {
0263 PHOOL_VIRTUAL_WARN("get_size_y()");
0264 return std::numeric_limits<float>::quiet_NaN();
0265 }
0266
0267 virtual double get_size_z() const
0268 {
0269 PHOOL_VIRTUAL_WARN("get_size_z()");
0270 return std::numeric_limits<float>::quiet_NaN();
0271 }
0272
0273 virtual double get_volume() const
0274 {
0275 PHOOL_VIRTUAL_WARN("get_volume()");
0276 return std::numeric_limits<float>::quiet_NaN();
0277 }
0278
0279 virtual double get_center_radius() const
0280 {
0281 PHOOL_VIRTUAL_WARN("get_center_radius()");
0282 return std::numeric_limits<float>::quiet_NaN();
0283 }
0284
0285 virtual double get_eta() const
0286 {
0287 PHOOL_VIRTUAL_WARN("get_eta()");
0288 return std::numeric_limits<float>::quiet_NaN();
0289 }
0290
0291 virtual double get_theta() const
0292 {
0293 PHOOL_VIRTUAL_WARN("get_theta()");
0294 return std::numeric_limits<float>::quiet_NaN();
0295 }
0296
0297 virtual double get_phi() const
0298 {
0299 PHOOL_VIRTUAL_WARN("get_phi()");
0300 return std::numeric_limits<float>::quiet_NaN();
0301 }
0302
0303 virtual void set_tower_type(int)
0304 {
0305 PHOOL_VIRTUAL_WARN("set_tower_type()");
0306 return;
0307 }
0308 virtual int get_tower_type() const
0309 {
0310 PHOOL_VIRTUAL_WARN("get_tower_type()");
0311 return -1;
0312 }
0313
0314 virtual double get_rotx() const
0315 {
0316 PHOOL_VIRTUAL_WARN("get_rotx()");
0317 return std::numeric_limits<float>::quiet_NaN();
0318 }
0319 virtual double get_roty() const
0320 {
0321 PHOOL_VIRTUAL_WARN("get_roty()");
0322 return std::numeric_limits<float>::quiet_NaN();
0323 }
0324 virtual double get_rotz() const
0325 {
0326 PHOOL_VIRTUAL_WARN("get_rotz()");
0327 return std::numeric_limits<float>::quiet_NaN();
0328 }
0329
0330 virtual void set_rotx(double)
0331 {
0332 PHOOL_VIRTUAL_WARN("set_rotx()");
0333 return;
0334 }
0335 virtual void set_roty(double)
0336 {
0337 PHOOL_VIRTUAL_WARN("set_roty()");
0338 return;
0339 }
0340 virtual void set_rotz(double)
0341 {
0342 PHOOL_VIRTUAL_WARN("set_rotz()");
0343 return;
0344 }
0345
0346 protected:
0347 RawTowerGeom() = default;
0348
0349 ClassDefOverride(RawTowerGeom, 2)
0350 };
0351
0352 #endif