File indexing completed on 2025-08-06 08:18:09
0001
0002
0003
0004
0005
0006
0007 #ifndef TRACKBASE_LASERCLUSTERV2_H
0008 #define TRACKBASE_LASERCLUSTERV2_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 LaserClusterv2 : public LaserCluster
0026 {
0027 public:
0028
0029 LaserClusterv2() = 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 LaserClusterv2(*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 bool getFitMode() const override { return m_fitMode; }
0055 void setFitMode(bool fitMode) override { m_fitMode = fitMode; }
0056
0057 float getLayer() const override { return m_posHardware[0]; }
0058 void setLayer(float layer) override { m_posHardware[0] = layer; }
0059 float getIPhi() const override { return m_posHardware[1]; }
0060 void setIPhi(float iphi) override { m_posHardware[1] = iphi; }
0061 float getIT() const override { return m_posHardware[2]; }
0062 void setIT(float it) override { m_posHardware[2] = it; }
0063
0064 unsigned int getNhits() const override {return m_hitVec.size();}
0065
0066
0067
0068
0069 unsigned int getAdc() const override { return m_adc; }
0070 void setAdc(unsigned int adc) override { m_adc = adc; }
0071
0072 void setNLayers(unsigned int nLayers) override { m_nLayers = nLayers; }
0073 unsigned int getNLayers() const override { return m_nLayers; }
0074
0075 void setNIPhi(unsigned int nIPhi) override { m_nIPhi = nIPhi; }
0076 unsigned int getNIPhi() const override { return m_nIPhi; }
0077
0078 void setNIT(unsigned int nIT) override { m_nIT = nIT; }
0079 unsigned int getNIT() const override { return m_nIT; }
0080
0081 void setSDLayer(float SDLayer) override { m_SDLayer = SDLayer; }
0082 float getSDLayer() const override { return m_SDLayer; }
0083
0084 void setSDIPhi(float SDIPhi) override { m_SDIPhi = SDIPhi; }
0085 float getSDIPhi() const override { return m_SDIPhi; }
0086
0087 void setSDIT(float SDIT) override { m_SDIT = SDIT; }
0088 float getSDIT() const override { return m_SDIT; }
0089
0090 void setSDWeightedLayer(float SDLayer) override { m_SDWeightedLayer = SDLayer; }
0091 float getSDWeightedLayer() const override { return m_SDWeightedLayer; }
0092
0093 void setSDWeightedIPhi(float SDIPhi) override { m_SDWeightedIPhi = SDIPhi; }
0094 float getSDWeightedIPhi() const override { return m_SDWeightedIPhi; }
0095
0096 void setSDWeightedIT(float SDIT) override { m_SDWeightedIT = SDIT; }
0097 float getSDWeightedIT() const override { return m_SDWeightedIT; }
0098
0099 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}); }
0100
0101 void setHitLayer(int i, float layer) override {m_hitVecHardware[i][0] = layer; }
0102 float getHitLayer(int i) const override { return m_hitVecHardware[i][0]; }
0103
0104 void setHitIPhi(int i, float iphi) override {m_hitVecHardware[i][1] = iphi; }
0105 float getHitIPhi(int i) const override { return m_hitVecHardware[i][1]; }
0106
0107 void setHitIT(int i, float it) override {m_hitVecHardware[i][2] = it; }
0108 float getHitIT(int i) const override { return m_hitVecHardware[i][2]; }
0109
0110 void setHitX(int i, float x) override {m_hitVec[i][0] = x; }
0111 float getHitX(int i) const override { return m_hitVec[i][0]; }
0112
0113 void setHitY(int i, float y) override {m_hitVec[i][1] = y; }
0114 float getHitY(int i) const override { return m_hitVec[i][1]; }
0115
0116 void setHitZ(int i, float z) override {m_hitVec[i][2] = z; }
0117 float getHitZ(int i) const override { return m_hitVec[i][2]; }
0118
0119 void setHitAdc(int i, float adc) override {m_hitVec[i][3] = adc; }
0120 float getHitAdc(int i) const override { return m_hitVec[i][3]; }
0121
0122
0123 protected:
0124
0125
0126 float m_pos[3] = {std::numeric_limits<float>::quiet_NaN(), std::numeric_limits<float>::quiet_NaN(), std::numeric_limits<float>::quiet_NaN()};
0127 float m_posHardware[3] = {std::numeric_limits<float>::quiet_NaN(), std::numeric_limits<float>::quiet_NaN(), std::numeric_limits<float>::quiet_NaN()};
0128
0129 bool m_fitMode{false};
0130
0131 std::vector<std::vector<float>> m_hitVec;
0132 std::vector<std::vector<float>> m_hitVecHardware;
0133
0134
0135 unsigned int m_adc = std::numeric_limits<unsigned int>::max();
0136
0137
0138 unsigned int m_nhits = std::numeric_limits<unsigned int>::max();
0139 unsigned int m_nLayers = std::numeric_limits<unsigned int>::max();
0140 unsigned int m_nIPhi = std::numeric_limits<unsigned int>::max();
0141 unsigned int m_nIT = std::numeric_limits<unsigned int>::max();
0142 float m_SDLayer = std::numeric_limits<float>::quiet_NaN();
0143 float m_SDIPhi = std::numeric_limits<float>::quiet_NaN();
0144 float m_SDIT = std::numeric_limits<float>::quiet_NaN();
0145 float m_SDWeightedLayer = std::numeric_limits<float>::quiet_NaN();
0146 float m_SDWeightedIPhi = std::numeric_limits<float>::quiet_NaN();
0147 float m_SDWeightedIT = std::numeric_limits<float>::quiet_NaN();
0148
0149 ClassDefOverride(LaserClusterv2, 1)
0150 };
0151
0152 #endif