File indexing completed on 2025-08-05 08:12:22
0001
0002
0003 #ifndef PROTOTYPE4_RAWTOWERPROTOTYPE4_H
0004 #define PROTOTYPE4_RAWTOWERPROTOTYPE4_H
0005
0006 #include "PROTOTYPE4_FEM.h"
0007
0008 #include <calobase/RawTower.h>
0009 #include <calobase/RawTowerDefs.h>
0010
0011 #include <iostream> // for cout, ostream
0012
0013 class RawTower_Prototype4 : public RawTower
0014 {
0015 public:
0016 RawTower_Prototype4();
0017 RawTower_Prototype4(const RawTower &tower);
0018 RawTower_Prototype4(RawTowerDefs::keytype id);
0019 RawTower_Prototype4(const unsigned int icol, const unsigned int irow);
0020 RawTower_Prototype4(const RawTowerDefs::CalorimeterId caloid,
0021 const unsigned int ieta, const unsigned int iphi);
0022 virtual ~RawTower_Prototype4() {}
0023
0024 void Reset() override;
0025 int isValid() const override;
0026 void identify(std::ostream &os = std::cout) const override;
0027
0028 void set_id(RawTowerDefs::keytype id) override { towerid = id; }
0029 RawTowerDefs::keytype get_id() const override { return towerid; }
0030 int get_bineta() const override { return RawTowerDefs::decode_index1(towerid); }
0031 int get_binphi() const override { return RawTowerDefs::decode_index2(towerid); }
0032 int get_column() const override { return RawTowerDefs::decode_index1(towerid); }
0033 int get_row() const override { return RawTowerDefs::decode_index2(towerid); }
0034 double get_energy() const override { return energy; }
0035 void set_energy(const double e) override { energy = e; }
0036 float get_time() const override { return time; }
0037 void set_time(const float t) override { time = t; }
0038
0039
0040
0041 enum
0042 {
0043 NSAMPLES = PROTOTYPE4_FEM::NSAMPLES
0044 };
0045 typedef float signal_type;
0046
0047 void set_signal_samples(int i, signal_type sig);
0048 signal_type get_signal_samples(int i) const;
0049 void set_HBD_channel_number(int i) { HBD_channel = i; }
0050 int get_HBD_channel_number() const { return HBD_channel; }
0051
0052
0053
0054 double get_energy_peak_sample(int verbosity = 0);
0055 double get_energy_power_law_exp(int verbosity = 0);
0056 double get_energy_power_law_double_exp(int verbosity = 0);
0057
0058 protected:
0059 RawTowerDefs::keytype towerid;
0060
0061
0062
0063 double energy;
0064
0065
0066 float time;
0067
0068
0069 signal_type signal_samples[NSAMPLES];
0070 int HBD_channel;
0071
0072 ClassDefOverride(RawTower_Prototype4, 3)
0073 };
0074
0075 #endif