File indexing completed on 2025-08-03 08:16:56
0001 #ifndef CALOBASE_RAWTOWERGEOMCONTAINER_H
0002 #define CALOBASE_RAWTOWERGEOMCONTAINER_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 <map>
0012 #include <utility>
0013
0014 class RawTowerGeom;
0015
0016
0017
0018
0019 class RawTowerGeomContainer : public PHObject
0020 {
0021 public:
0022 typedef std::map<RawTowerDefs::keytype, RawTowerGeom *> Map;
0023 typedef Map::iterator Iterator;
0024 typedef Map::const_iterator ConstIterator;
0025 typedef std::pair<Iterator, Iterator> Range;
0026 typedef std::pair<ConstIterator, ConstIterator> ConstRange;
0027
0028
0029 ~RawTowerGeomContainer() override {}
0030
0031 void identify(std::ostream &os = std::cout) const override;
0032
0033
0034 virtual void set_calorimeter_id(RawTowerDefs::CalorimeterId) { PHOOL_VIRTUAL_WARN("set_calorimeter_id()"); }
0035 virtual RawTowerDefs::CalorimeterId get_calorimeter_id() const
0036 {
0037 PHOOL_VIRTUAL_WARN("get_calorimeter_id()");
0038 return RawTowerDefs::NONE;
0039 }
0040
0041
0042 virtual ConstIterator add_tower_geometry(RawTowerGeom *geo);
0043 virtual RawTowerGeom *get_tower_geometry(RawTowerDefs::keytype)
0044 {
0045 PHOOL_VIRTUAL_WARN("get_tower_geometry()");
0046 return nullptr;
0047 }
0048
0049
0050 virtual ConstRange get_tower_geometries(void) const;
0051 virtual Range get_tower_geometries(void);
0052
0053 virtual unsigned int size() const
0054 {
0055 PHOOL_VIRTUAL_WARN("size()");
0056 return 0;
0057 }
0058
0059
0060
0061
0062
0063
0064
0065
0066 virtual double get_radius() const
0067 {
0068 PHOOL_VIRTUAL_WARN("get_radius()");
0069 return std::numeric_limits<double>::signaling_NaN();
0070 }
0071 virtual double get_thickness() const
0072 {
0073 PHOOL_VIRTUAL_WARN("get_thickness()");
0074 return std::numeric_limits<double>::signaling_NaN();
0075 }
0076 virtual int get_phibins() const
0077 {
0078 PHOOL_VIRTUAL_WARN("get_phibins()");
0079 return -1;
0080 }
0081
0082
0083 virtual int get_etabins() const
0084 {
0085 PHOOL_VIRTUAL_WARN("get_etabins()");
0086 return -1;
0087 }
0088
0089
0090
0091 virtual std::pair<double, double> get_phibounds(const int ) const
0092 {
0093 PHOOL_VIRTUAL_WARN("get_phibounds(const int)");
0094 return std::make_pair(std::numeric_limits<double>::signaling_NaN(), std::numeric_limits<double>::signaling_NaN());
0095 }
0096 virtual std::pair<double, double> get_etabounds(const int ) const
0097 {
0098 PHOOL_VIRTUAL_WARN("get_etabounds(const int)");
0099 return std::make_pair(std::numeric_limits<double>::signaling_NaN(), std::numeric_limits<double>::signaling_NaN());
0100 }
0101 virtual double get_etacenter(const int ) const
0102 {
0103 PHOOL_VIRTUAL_WARN("get_etacenter(const int)");
0104 return std::numeric_limits<double>::signaling_NaN();
0105 }
0106 virtual double get_phicenter(const int ) const
0107 {
0108 PHOOL_VIRTUAL_WARN("get_phicenter(const int)");
0109 return std::numeric_limits<double>::signaling_NaN();
0110 }
0111
0112 virtual int get_etabin(const double ) const
0113 {
0114 PHOOL_VIRTUAL_WARN("get_etabin(const double)");
0115 return -1;
0116 }
0117 virtual int get_phibin(const double ) const
0118 {
0119 PHOOL_VIRTUAL_WARN("get_phibin(const double)");
0120 return -1;
0121 }
0122
0123 virtual void set_radius(const double) { PHOOL_VIRTUAL_WARN("set_radius(const double)"); }
0124 virtual void set_thickness(const double) { PHOOL_VIRTUAL_WARN("set_thickness(const double)"); }
0125 virtual void set_phibins(const int) { PHOOL_VIRTUAL_WARN("set_phibins(const int)"); }
0126
0127
0128 virtual void set_etabins(const int) { PHOOL_VIRTUAL_WARN("set_etabins(const int)"); }
0129
0130
0131 virtual void set_etabounds(const int , const std::pair<double, double> & ) { PHOOL_VIRTUAL_WARN("set_etabounds(const int ibin, const std::pair<double, double> & bounds)"); }
0132 virtual void set_phibounds(const int , const std::pair<double, double> & ) { PHOOL_VIRTUAL_WARN("set_etabounds(const int ibin, const std::pair<double, double> & bounds)"); }
0133
0134
0135
0136 protected:
0137
0138 RawTowerGeomContainer() {}
0139
0140 ClassDefOverride(RawTowerGeomContainer, 2)
0141 };
0142
0143 #endif