File indexing completed on 2025-08-06 08:18:09
0001
0002
0003
0004
0005
0006
0007 #ifndef TRACKBASE_LASERCLUSTERV1_H
0008 #define TRACKBASE_LASERCLUSTERV1_H
0009
0010 #include "LaserCluster.h"
0011
0012 #include <iostream>
0013 #include <vector>
0014
0015 class PHObject;
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025 class LaserClusterv1 : public LaserCluster
0026 {
0027 public:
0028
0029 LaserClusterv1() = default;
0030
0031
0032 void identify(std::ostream& os = std::cout) const override;
0033 void Reset() override {}
0034 int isValid() const override;
0035 PHObject* CloneMe() const override { return new LaserClusterv1(*this); }
0036
0037
0038 void CopyFrom( const LaserCluster& ) override;
0039
0040
0041 void CopyFrom( LaserCluster* source ) override
0042 { CopyFrom( *source ); }
0043
0044
0045
0046
0047 float getX() const override { return m_pos[0]; }
0048 void setX(float x) override { m_pos[0] = x; }
0049 float getY() const override { return m_pos[1]; }
0050 void setY(float y) override { m_pos[1] = y; }
0051 float getZ() const override { return m_pos[2]; }
0052 void setZ(float z) override { m_pos[2] = z; }
0053
0054 float getLayer() const override { return m_posHardware[0]; }
0055 void setLayer(float layer) override { m_posHardware[0] = layer; }
0056 float getIPhi() const override { return m_posHardware[1]; }
0057 void setIPhi(float iphi) override { m_posHardware[1] = iphi; }
0058 float getIT() const override { return m_posHardware[2]; }
0059 void setIT(float it) override { m_posHardware[2] = it; }
0060
0061 unsigned int getNhits() const override {return m_hitVec.size();}
0062
0063
0064
0065
0066 unsigned int getAdc() const override { return m_adc; }
0067 void setAdc(unsigned int adc) override { m_adc = adc; }
0068
0069 void setNLayers(unsigned int nLayers) override { m_nLayers = nLayers; }
0070 unsigned int getNLayers() const override { return m_nLayers; }
0071
0072 void setNIPhi(unsigned int nIPhi) override { m_nIPhi = nIPhi; }
0073 unsigned int getNIPhi() const override { return m_nIPhi; }
0074
0075 void setNIT(unsigned int nIT) override { m_nIT = nIT; }
0076 unsigned int getNIT() const override { return m_nIT; }
0077
0078 void setSDLayer(float SDLayer) override { m_SDLayer = SDLayer; }
0079 float getSDLayer() const override { return m_SDLayer; }
0080
0081 void setSDIPhi(float SDIPhi) override { m_SDIPhi = SDIPhi; }
0082 float getSDIPhi() const override { return m_SDIPhi; }
0083
0084 void setSDIT(float SDIT) override { m_SDIT = SDIT; }
0085 float getSDIT() const override { return m_SDIT; }
0086
0087 void setSDWeightedLayer(float SDLayer) override { m_SDWeightedLayer = SDLayer; }
0088 float getSDWeightedLayer() const override { return m_SDWeightedLayer; }
0089
0090 void setSDWeightedIPhi(float SDIPhi) override { m_SDWeightedIPhi = SDIPhi; }
0091 float getSDWeightedIPhi() const override { return m_SDWeightedIPhi; }
0092
0093 void setSDWeightedIT(float SDIT) override { m_SDWeightedIT = SDIT; }
0094 float getSDWeightedIT() const override { return m_SDWeightedIT; }
0095
0096 void addHit() override {m_hitVec.push_back({0.0,0.0,0.0,0.0}); m_hitVecHardware.push_back({0.0,0.0,0.0}); }
0097
0098 void setHitLayer(int i, float layer) override {m_hitVecHardware[i][0] = layer; }
0099 float getHitLayer(int i) const override { return m_hitVecHardware[i][0]; }
0100
0101 void setHitIPhi(int i, float iphi) override {m_hitVecHardware[i][1] = iphi; }
0102 float getHitIPhi(int i) const override { return m_hitVecHardware[i][1]; }
0103
0104 void setHitIT(int i, float it) override {m_hitVecHardware[i][2] = it; }
0105 float getHitIT(int i) const override { return m_hitVecHardware[i][2]; }
0106
0107 void setHitX(int i, float x) override {m_hitVec[i][0] = x; }
0108 float getHitX(int i) const override { return m_hitVec[i][0]; }
0109
0110 void setHitY(int i, float y) override {m_hitVec[i][1] = y; }
0111 float getHitY(int i) const override { return m_hitVec[i][1]; }
0112
0113 void setHitZ(int i, float z) override {m_hitVec[i][2] = z; }
0114 float getHitZ(int i) const override { return m_hitVec[i][2]; }
0115
0116 void setHitAdc(int i, float adc) override {m_hitVec[i][3] = adc; }
0117 float getHitAdc(int i) const override { return m_hitVec[i][3]; }
0118
0119
0120 protected:
0121
0122
0123 float m_pos[3] = {std::numeric_limits<float>::quiet_NaN(), std::numeric_limits<float>::quiet_NaN(), std::numeric_limits<float>::quiet_NaN()};
0124 float m_posHardware[3] = {std::numeric_limits<float>::quiet_NaN(), std::numeric_limits<float>::quiet_NaN(), std::numeric_limits<float>::quiet_NaN()};
0125
0126 std::vector<std::vector<float>> m_hitVec;
0127 std::vector<std::vector<float>> m_hitVecHardware;
0128
0129
0130 unsigned int m_adc = std::numeric_limits<unsigned int>::max();
0131
0132
0133 unsigned int m_nhits = std::numeric_limits<unsigned int>::max();
0134 unsigned int m_nLayers = std::numeric_limits<unsigned int>::max();
0135 unsigned int m_nIPhi = std::numeric_limits<unsigned int>::max();
0136 unsigned int m_nIT = std::numeric_limits<unsigned int>::max();
0137 float m_SDLayer = std::numeric_limits<float>::quiet_NaN();
0138 float m_SDIPhi = std::numeric_limits<float>::quiet_NaN();
0139 float m_SDIT = std::numeric_limits<float>::quiet_NaN();
0140 float m_SDWeightedLayer = std::numeric_limits<float>::quiet_NaN();
0141 float m_SDWeightedIPhi = std::numeric_limits<float>::quiet_NaN();
0142 float m_SDWeightedIT = std::numeric_limits<float>::quiet_NaN();
0143
0144 ClassDefOverride(LaserClusterv1, 1)
0145 };
0146
0147 #endif