File indexing completed on 2025-08-05 08:12:22
0001
0002
0003 #ifndef PROTOTYPE4_RAWTOWERTEMPERATURE_H
0004 #define PROTOTYPE4_RAWTOWERTEMPERATURE_H
0005
0006 #include <calobase/RawTower.h>
0007 #include <calobase/RawTowerDefs.h>
0008
0009 #include <ctime>
0010 #include <iostream> // for cout, ostream
0011 #include <vector>
0012
0013 class RawTower_Temperature : public RawTower
0014 {
0015 public:
0016 RawTower_Temperature();
0017 RawTower_Temperature(const unsigned int icol, const unsigned int irow);
0018 RawTower_Temperature(RawTowerDefs::keytype id);
0019 virtual ~RawTower_Temperature() {}
0020
0021 void Reset() override;
0022 int isValid() const override { return get_nr_entries(); }
0023 void identify(std::ostream &os = std::cout) const override;
0024 void print(std::ostream &os = std::cout) const;
0025
0026 int get_column() const override { return RawTowerDefs::decode_index1(towerid); }
0027 int get_row() const override { return RawTowerDefs::decode_index2(towerid); }
0028
0029 void set_id(RawTowerDefs::keytype id) override { towerid = id; }
0030 RawTowerDefs::keytype get_id() const override { return towerid; }
0031
0032 int get_nr_entries() const { return temperatures.size(); }
0033
0034 int add_entry(const int eventnr, const time_t t, const float temp)
0035 {
0036 eventnumbers.push_back(eventnr);
0037 times.push_back(t);
0038 temperatures.push_back(temp);
0039 return get_nr_entries();
0040 }
0041
0042 float get_temperature_from_entry(const unsigned int entry) const
0043 {
0044 if (entry >= temperatures.size())
0045 return -1;
0046 return temperatures[entry];
0047 }
0048
0049 time_t get_time_from_entry(const unsigned int entry) const
0050 {
0051 if (entry >= times.size())
0052 return 0;
0053 return times[entry];
0054 }
0055
0056 int get_eventnumber_from_entry(const unsigned int entry) const
0057 {
0058 if (entry >= eventnumbers.size())
0059 return -1;
0060 return eventnumbers[entry];
0061 }
0062
0063 float get_temperature_from_time(const time_t t) const;
0064
0065
0066
0067
0068 protected:
0069 RawTowerDefs::keytype towerid;
0070
0071
0072
0073
0074
0075 std::vector<int> eventnumbers;
0076 std::vector<time_t> times;
0077 std::vector<float> temperatures;
0078
0079 ClassDefOverride(RawTower_Temperature, 1)
0080 };
0081
0082 #endif