diff --git a/offline/packages/TrackingDiagnostics/.TrackResiduals.cc.swo b/offline/packages/TrackingDiagnostics/.TrackResiduals.cc.swo new file mode 100644 index 0000000000..17a9840a5d Binary files /dev/null and b/offline/packages/TrackingDiagnostics/.TrackResiduals.cc.swo differ diff --git a/offline/packages/TrackingDiagnostics/.TrackResiduals.h.swo b/offline/packages/TrackingDiagnostics/.TrackResiduals.h.swo new file mode 100644 index 0000000000..5130667e15 Binary files /dev/null and b/offline/packages/TrackingDiagnostics/.TrackResiduals.h.swo differ diff --git a/offline/packages/TrackingDiagnostics/.TrkrNtuplizer.h.swo b/offline/packages/TrackingDiagnostics/.TrkrNtuplizer.h.swo new file mode 100644 index 0000000000..d3aeaec639 Binary files /dev/null and b/offline/packages/TrackingDiagnostics/.TrkrNtuplizer.h.swo differ diff --git a/offline/packages/tpc/.TpcClusterizer.cc.swo b/offline/packages/tpc/.TpcClusterizer.cc.swo new file mode 100644 index 0000000000..407cf8f4e3 Binary files /dev/null and b/offline/packages/tpc/.TpcClusterizer.cc.swo differ diff --git a/offline/packages/trackbase/.TrkrClusterv6.h.swm b/offline/packages/trackbase/.TrkrClusterv6.h.swm new file mode 100644 index 0000000000..bfca8a7aa1 Binary files /dev/null and b/offline/packages/trackbase/.TrkrClusterv6.h.swm differ diff --git a/offline/packages/trackbase/.TrkrClusterv6.h.swn b/offline/packages/trackbase/.TrkrClusterv6.h.swn new file mode 100644 index 0000000000..f5452fabf6 Binary files /dev/null and b/offline/packages/trackbase/.TrkrClusterv6.h.swn differ diff --git a/offline/packages/trackbase/.TrkrClusterv6.h.swo b/offline/packages/trackbase/.TrkrClusterv6.h.swo new file mode 100644 index 0000000000..a59af23851 Binary files /dev/null and b/offline/packages/trackbase/.TrkrClusterv6.h.swo differ diff --git a/offline/packages/trackbase/Makefile.am b/offline/packages/trackbase/Makefile.am index bcb0b81d96..3e10b1f173 100644 --- a/offline/packages/trackbase/Makefile.am +++ b/offline/packages/trackbase/Makefile.am @@ -115,6 +115,7 @@ pkginclude_HEADERS = \ TrkrClusterv3.h \ TrkrClusterv4.h \ TrkrClusterv5.h \ + TrkrClusterv6.h \ TrkrDefs.h \ TrkrHit.h \ TrkrHitSet.h \ @@ -187,6 +188,7 @@ ROOTDICTS = \ TrkrClusterv3_Dict.cc \ TrkrClusterv4_Dict.cc \ TrkrClusterv5_Dict.cc \ + TrkrClusterv6_Dict.cc \ TrkrHitSetContMvtxHelper_Dict.cc \ TrkrHitSetContMvtxHelperv1_Dict.cc \ TrkrHitSetContainer_Dict.cc \ @@ -273,6 +275,7 @@ libtrack_io_la_SOURCES = \ TrkrClusterv3.cc \ TrkrClusterv4.cc \ TrkrClusterv5.cc \ + TrkrClusterv6.cc \ TrkrDefs.cc \ TrkrHitSet.cc \ TrkrHitSetContMvtxHelper.cc \ diff --git a/offline/packages/trackbase/TrkrCluster.h b/offline/packages/trackbase/TrkrCluster.h index 7fd091a527..e676b7ea62 100644 --- a/offline/packages/trackbase/TrkrCluster.h +++ b/offline/packages/trackbase/TrkrCluster.h @@ -13,6 +13,7 @@ #include #include +#include #include #include @@ -51,57 +52,81 @@ class TrkrCluster : public PHObject // // cluster position // - virtual float getLocalX() const { return NAN; } + virtual float getLocalX() const { return std::numeric_limits::quiet_NaN(); } virtual void setLocalX(float) {} - virtual float getLocalY() const { return NAN; } + virtual float getLocalY() const { return std::numeric_limits::quiet_NaN(); } virtual void setLocalY(float) {} // // cluster info // - virtual void setAdc(unsigned int) {} - virtual unsigned int getAdc() const { return UINT_MAX; } + virtual void setAdc(uint16_t) {} + virtual uint16_t getAdc() const { return UINT16_MAX; } virtual void setMaxAdc(uint16_t) {} - virtual unsigned int getMaxAdc() const { return UINT_MAX; } - virtual char getOverlap() const { return std::numeric_limits::max(); } - virtual void setOverlap(char) {} - virtual char getEdge() const { return std::numeric_limits::max(); } - virtual void setEdge(char) {} + virtual uint16_t getMaxAdc() const { return UINT16_MAX; } + virtual uint8_t getOverlap() const { return std::numeric_limits::max(); } + virtual void setOverlap(uint8_t) {} + virtual uint8_t getEdge() const { return std::numeric_limits::max(); } + virtual void setEdge(uint8_t) {} virtual void setTime(const float) {} - virtual float getTime() const { return NAN; } - virtual char getSize() const { return std::numeric_limits::max(); } + virtual float getTime() const { return std::numeric_limits::quiet_NaN(); } + virtual uint8_t getSize() const { return std::numeric_limits::max(); } // // convenience interface // - virtual float getPhiSize() const { return NAN; } - virtual float getZSize() const { return NAN; } - virtual float getPhiError() const { return NAN; } - virtual float getRPhiError() const { return NAN; } - virtual float getZError() const { return NAN; } + virtual float getPhiSize() const { return std::numeric_limits::quiet_NaN(); } + virtual float getZSize() const { return std::numeric_limits::quiet_NaN(); } + virtual float getPhiError() const { return std::numeric_limits::quiet_NaN(); } + virtual float getRPhiError() const { return std::numeric_limits::quiet_NaN(); } + virtual float getZError() const { return std::numeric_limits::quiet_NaN(); } + virtual uint16_t getCenAdc() const { return UINT16_MAX; } + virtual float getPadCen() const { return std::numeric_limits::quiet_NaN(); } + virtual float getTBinCen() const { return std::numeric_limits::quiet_NaN(); } + virtual float getPadMax() const { return std::numeric_limits::quiet_NaN(); } + virtual float getTBinMax() const { return std::numeric_limits::quiet_NaN(); } + virtual uint8_t getSLEdge() const { return std::numeric_limits::max(); } + virtual uint8_t getSREdge() const { return std::numeric_limits::max(); } + virtual uint8_t getTLEdge() const { return std::numeric_limits::max(); } + virtual uint8_t getTREdge() const { return std::numeric_limits::max(); } + virtual uint8_t getDLEdge() const { return std::numeric_limits::max(); } + virtual uint8_t getDREdge() const { return std::numeric_limits::max(); } + virtual uint8_t getHLEdge() const { return std::numeric_limits::max(); } + virtual uint8_t getHREdge() const { return std::numeric_limits::max(); } + virtual int getSLMix() const { return std::numeric_limits::max(); } + virtual int getSRMix() const { return std::numeric_limits::max(); } + virtual int getTLMix() const { return std::numeric_limits::max(); } + virtual int getTRMix() const { return std::numeric_limits::max(); } + virtual int getPhiBinLo() const { return std::numeric_limits::max(); } + virtual int getPhiBinHi() const { return std::numeric_limits::max(); } + virtual int getTBinLo() const { return std::numeric_limits::max(); } + virtual int getTBinHi() const { return std::numeric_limits::max(); } + virtual float getPadPhase() const { return std::numeric_limits::quiet_NaN(); } + virtual float getTBinPhase() const { return std::numeric_limits::quiet_NaN(); } + virtual float getRSize() const { return std::numeric_limits::quiet_NaN(); } /// Acts functions, for Acts modules use only virtual void setActsLocalError(unsigned int /*i*/, unsigned int /*j*/, float /*value*/) {} - virtual float getActsLocalError(unsigned int /*i*/, unsigned int /*j*/) const { return NAN; } + virtual float getActsLocalError(unsigned int /*i*/, unsigned int /*j*/) const { return std::numeric_limits::quiet_NaN(); } virtual TrkrDefs::subsurfkey getSubSurfKey() const { return TrkrDefs::SUBSURFKEYMAX; } virtual void setSubSurfKey(TrkrDefs::subsurfkey /*id*/) {} // Global coordinate functions are deprecated, use local // coordinate functions only - virtual float getX() const { return NAN; } + virtual float getX() const { return std::numeric_limits::quiet_NaN(); } virtual void setX(float) {} - virtual float getY() const { return NAN; } + virtual float getY() const { return std::numeric_limits::quiet_NaN(); } virtual void setY(float) {} - virtual float getZ() const { return NAN; } + virtual float getZ() const { return std::numeric_limits::quiet_NaN(); } virtual void setZ(float) {} - virtual float getPosition(int /*coor*/) const { return NAN; } + virtual float getPosition(int /*coor*/) const { return std::numeric_limits::quiet_NaN(); } virtual void setPosition(int /*coor*/, float /*xi*/) {} virtual void setGlobal() {} virtual void setLocal() {} virtual bool isGlobal() const { return true; } - virtual float getError(unsigned int /*i*/, unsigned int /*j*/) const { return NAN; } + virtual float getError(unsigned int /*i*/, unsigned int /*j*/) const { return std::numeric_limits::quiet_NaN(); } virtual void setError(unsigned int /*i*/, unsigned int /*j*/, float /*value*/) {} - virtual float getSize(unsigned int /*i*/, unsigned int /*j*/) const { return NAN; } + virtual float getSize(unsigned int /*i*/, unsigned int /*j*/) const { return std::numeric_limits::quiet_NaN(); } virtual void setSize(unsigned int /*i*/, unsigned int /*j*/, float /*value*/) {} protected: diff --git a/offline/packages/trackbase/TrkrClusterv1.cc b/offline/packages/trackbase/TrkrClusterv1.cc index bb26fbf760..46835c3abe 100644 --- a/offline/packages/trackbase/TrkrClusterv1.cc +++ b/offline/packages/trackbase/TrkrClusterv1.cc @@ -6,7 +6,9 @@ */ #include "TrkrClusterv1.h" +#include #include +#include #include // for swap namespace @@ -47,7 +49,7 @@ namespace TrkrClusterv1::TrkrClusterv1() : m_cluskey(TrkrDefs::CLUSKEYMAX) , m_isGlobal(true) - , m_adc(0xFFFFFFFF) + , m_adc(std::numeric_limits::max()) { for (float& m_po : m_pos) { @@ -130,7 +132,7 @@ int TrkrClusterv1::isValid() const return 0; } } - if (m_adc == 0xFFFFFFFF) + if (m_adc == std::numeric_limits::max()) { return 0; } diff --git a/offline/packages/trackbase/TrkrClusterv1.h b/offline/packages/trackbase/TrkrClusterv1.h index 67643db298..062ee26ed5 100644 --- a/offline/packages/trackbase/TrkrClusterv1.h +++ b/offline/packages/trackbase/TrkrClusterv1.h @@ -62,8 +62,8 @@ class TrkrClusterv1 : public TrkrCluster // // cluster info // - unsigned int getAdc() const override { return m_adc; } - void setAdc(unsigned int adc) override { m_adc = adc; } + uint16_t getAdc() const override { return m_adc; } + void setAdc(uint16_t adc) override { m_adc = adc; } float getSize(unsigned int i, unsigned int j) const override; //< get cluster dimension covar void setSize(unsigned int i, unsigned int j, float value) override; //< set cluster dimension covar @@ -84,11 +84,11 @@ class TrkrClusterv1 : public TrkrCluster TrkrDefs::cluskey m_cluskey; //< unique identifier within container float m_pos[3]{}; //< mean position x,y,z bool m_isGlobal; //< flag for coord sys (true = global) - unsigned int m_adc; //< cluster sum adc (D. McGlinchey - Do we need this?) + uint16_t m_adc; //< cluster sum adc (D. McGlinchey - Do we need this?) float m_size[6]{}; //< size covariance matrix (packed storage) (+/- cm^2) float m_err[6]{}; //< covariance matrix: rad, arc and z - ClassDefOverride(TrkrClusterv1, 1) + ClassDefOverride(TrkrClusterv1, 2) }; #endif // TRACKBASE_TRKRCLUSTERV1_H diff --git a/offline/packages/trackbase/TrkrClusterv2.cc b/offline/packages/trackbase/TrkrClusterv2.cc index c6e9bd7862..32b7c2c9af 100644 --- a/offline/packages/trackbase/TrkrClusterv2.cc +++ b/offline/packages/trackbase/TrkrClusterv2.cc @@ -6,7 +6,9 @@ */ #include "TrkrClusterv2.h" +#include #include +#include #include // for swap namespace @@ -48,7 +50,7 @@ TrkrClusterv2::TrkrClusterv2() : m_cluskey(TrkrDefs::CLUSKEYMAX) , m_subsurfkey(TrkrDefs::SUBSURFKEYMAX) , m_isGlobal(true) - , m_adc(0xFFFFFFFF) + , m_adc(std::numeric_limits::max()) { for (float& m_po : m_pos) { @@ -136,7 +138,7 @@ int TrkrClusterv2::isValid() const return 0; } } - if (m_adc == 0xFFFFFFFF) + if (m_adc == std::numeric_limits::max()) { return 0; } diff --git a/offline/packages/trackbase/TrkrClusterv2.h b/offline/packages/trackbase/TrkrClusterv2.h index fb7e6eda31..33608109b7 100644 --- a/offline/packages/trackbase/TrkrClusterv2.h +++ b/offline/packages/trackbase/TrkrClusterv2.h @@ -72,8 +72,8 @@ class TrkrClusterv2 : public TrkrCluster // // cluster info // - unsigned int getAdc() const override { return m_adc; } - void setAdc(unsigned int adc) override { m_adc = adc; } + uint16_t getAdc() const override { return m_adc; } + void setAdc(uint16_t adc) override { m_adc = adc; } float getSize(unsigned int i, unsigned int j) const override; //< get cluster dimension covar void setSize(unsigned int i, unsigned int j, float value) override; //< set cluster dimension covar @@ -95,14 +95,14 @@ class TrkrClusterv2 : public TrkrCluster TrkrDefs::subsurfkey m_subsurfkey; //< unique identifier for hitsetkey-surface maps float m_pos[3]{}; //< mean position x,y,z bool m_isGlobal; //< flag for coord sys (true = global) - unsigned int m_adc; //< cluster sum adc (D. McGlinchey - Do we need this?) + uint16_t m_adc; //< cluster sum adc (D. McGlinchey - Do we need this?) float m_size[6]{}; //< size covariance matrix (packed storage) (+/- cm^2) float m_err[6]{}; //< covariance matrix: rad, arc and z float m_local[2]{}; //< 2D local position [cm] float m_actsLocalErr[2][2]{}; //< 2D local error for Acts [cm] - ClassDefOverride(TrkrClusterv2, 2) + ClassDefOverride(TrkrClusterv2, 3) }; #endif // TRACKBASE_TRKRCLUSTERV2_H diff --git a/offline/packages/trackbase/TrkrClusterv3.cc b/offline/packages/trackbase/TrkrClusterv3.cc index de1fc2753a..de25382af5 100644 --- a/offline/packages/trackbase/TrkrClusterv3.cc +++ b/offline/packages/trackbase/TrkrClusterv3.cc @@ -6,7 +6,9 @@ */ #include "TrkrClusterv3.h" +#include #include +#include #include // for swap namespace @@ -22,7 +24,7 @@ namespace TrkrClusterv3::TrkrClusterv3() : m_cluskey(TrkrDefs::CLUSKEYMAX) , m_subsurfkey(TrkrDefs::SUBSURFKEYMAX) - , m_adc(0xFFFFFFFF) + , m_adc(std::numeric_limits::max()) { for (int i = 0; i < 2; i++) { @@ -77,7 +79,7 @@ int TrkrClusterv3::isValid() const } } } - if (m_adc == 0xFFFFFFFF) + if (m_adc == std::numeric_limits::max()) { return 0; } diff --git a/offline/packages/trackbase/TrkrClusterv3.h b/offline/packages/trackbase/TrkrClusterv3.h index ded341dd35..12c4e73ad1 100644 --- a/offline/packages/trackbase/TrkrClusterv3.h +++ b/offline/packages/trackbase/TrkrClusterv3.h @@ -62,8 +62,8 @@ class TrkrClusterv3 : public TrkrCluster // // cluster info // - unsigned int getAdc() const override { return m_adc; } - void setAdc(unsigned int adc) override { m_adc = adc; } + uint16_t getAdc() const override { return m_adc; } + void setAdc(uint16_t adc) override { m_adc = adc; } // // convenience interface @@ -137,12 +137,12 @@ class TrkrClusterv3 : public TrkrCluster TrkrDefs::cluskey m_cluskey; //< unique identifier within container TrkrDefs::subsurfkey m_subsurfkey; //< unique identifier for hitsetkey-surface maps - unsigned int m_adc; //< cluster sum adc (D. McGlinchey - Do we need this?) + uint16_t m_adc; //< cluster sum adc (D. McGlinchey - Do we need this?) float m_local[2]{}; //< 2D local position [cm] float m_actsLocalErr[2][2]{}; //< 2D local error for Acts [cm] - ClassDefOverride(TrkrClusterv3, 2) + ClassDefOverride(TrkrClusterv3, 3) }; #endif // TRACKBASE_TRKRCLUSTERV3_H diff --git a/offline/packages/trackbase/TrkrClusterv4.h b/offline/packages/trackbase/TrkrClusterv4.h index 15a17adf3a..9c8d7743cf 100644 --- a/offline/packages/trackbase/TrkrClusterv4.h +++ b/offline/packages/trackbase/TrkrClusterv4.h @@ -63,13 +63,13 @@ class TrkrClusterv4 : public TrkrCluster // // cluster info // - unsigned int getAdc() const override + uint16_t getAdc() const override { - uint8_t tmp = m_adc; + uint16_t tmp = m_adc; return tmp; } - void setAdc(unsigned int adc) override + void setAdc(uint16_t adc) override { uint16_t tmp = 0; if (adc > 0xff) @@ -79,10 +79,10 @@ class TrkrClusterv4 : public TrkrCluster m_adc |= tmp; } - unsigned int getMaxAdc() const override + uint16_t getMaxAdc() const override { - uint8_t tmp = (m_adc >> 8); - unsigned int out = 0; + uint16_t tmp = (m_adc >> 8); + uint16_t out = 0; out |= tmp; return out; } @@ -155,20 +155,20 @@ class TrkrClusterv4 : public TrkrCluster std::cout << "Deprecated seterr trkrcluster function!" << std::endl; } - char getSize() const override { return m_phisize * m_zsize; } - // void setSize(char size) { m_size = size; } + uint8_t getSize() const override { return m_phisize * m_zsize; } + // void setSize(uint8_t size) { m_size = size; } float getPhiSize() const override { return (float) m_phisize; } - void setPhiSize(char phisize) { m_phisize = phisize; } + void setPhiSize(uint8_t phisize) { m_phisize = phisize; } float getZSize() const override { return (float) m_zsize; } - void setZSize(char zsize) { m_zsize = zsize; } + void setZSize(uint8_t zsize) { m_zsize = zsize; } - char getOverlap() const override { return m_overlap; } - void setOverlap(char overlap) override { m_overlap = overlap; } + uint8_t getOverlap() const override { return m_overlap; } + void setOverlap(uint8_t overlap) override { m_overlap = overlap; } - char getEdge() const override { return m_edge; } - void setEdge(char edge) override { m_edge = edge; } + uint8_t getEdge() const override { return m_edge; } + void setEdge(uint8_t edge) override { m_edge = edge; } // float getPhiSize() const override //{ std::cout << "Deprecated size function"<< std::endl; return NAN;} @@ -180,13 +180,13 @@ class TrkrClusterv4 : public TrkrCluster protected: float m_local[2]{}; //< 2D local position [cm] 2 * 32 64bit - cumul 1*64 TrkrDefs::subsurfkey m_subsurfkey; //< unique identifier for hitsetkey-surface maps 16 bit - unsigned short int m_adc; //< cluster sum adc 16 - char m_phisize; // 8bit - char m_zsize; // 8bit - char m_overlap; // 8bit - char m_edge; // 8bit - cumul 2*64 + uint16_t m_adc; //< cluster sum adc 16 + uint8_t m_phisize; // 8bit + uint8_t m_zsize; // 8bit + uint8_t m_overlap; // 8bit + uint8_t m_edge; // 8bit - cumul 2*64 - ClassDefOverride(TrkrClusterv4, 2) + ClassDefOverride(TrkrClusterv4, 3) }; #endif // TRACKBASE_TRKRCLUSTERV4_H diff --git a/offline/packages/trackbase/TrkrClusterv5.h b/offline/packages/trackbase/TrkrClusterv5.h index 9e5e0fe7ff..a1c9c0886c 100644 --- a/offline/packages/trackbase/TrkrClusterv5.h +++ b/offline/packages/trackbase/TrkrClusterv5.h @@ -63,17 +63,17 @@ class TrkrClusterv5 : public TrkrCluster // // cluster info // - unsigned int getAdc() const override + uint16_t getAdc() const override { return m_adc; } - void setAdc(unsigned int adc) override + void setAdc(uint16_t adc) override { m_adc = adc; } - unsigned int getMaxAdc() const override + uint16_t getMaxAdc() const override { return m_maxadc; } @@ -151,20 +151,20 @@ class TrkrClusterv5 : public TrkrCluster std::cout << "Deprecated seterr trkrcluster function!" << std::endl; } - char getSize() const override { return m_phisize * m_zsize; } - // void setSize(char size) { m_size = size; } + uint8_t getSize() const override { return m_phisize * m_zsize; } + // void setSize(uint8_t size) { m_size = size; } float getPhiSize() const override { return (float) m_phisize; } - void setPhiSize(char phisize) { m_phisize = phisize; } + void setPhiSize(uint8_t phisize) { m_phisize = phisize; } float getZSize() const override { return (float) m_zsize; } - void setZSize(char zsize) { m_zsize = zsize; } + void setZSize(uint8_t zsize) { m_zsize = zsize; } - char getOverlap() const override { return m_overlap; } - void setOverlap(char overlap) override { m_overlap = overlap; } + uint8_t getOverlap() const override { return m_overlap; } + void setOverlap(uint8_t overlap) override { m_overlap = overlap; } - char getEdge() const override { return m_edge; } - void setEdge(char edge) override { m_edge = edge; } + uint8_t getEdge() const override { return m_edge; } + void setEdge(uint8_t edge) override { m_edge = edge; } // float getPhiSize() const override //{ std::cout << "Deprecated size function"<< std::endl; return NAN;} @@ -178,14 +178,14 @@ class TrkrClusterv5 : public TrkrCluster TrkrDefs::subsurfkey m_subsurfkey; //< unique identifier for hitsetkey-surface maps 16 bit float m_phierr; float m_zerr; - unsigned short int m_adc; //< cluster sum adc 16 - unsigned short int m_maxadc; //< cluster sum adc 16 - char m_phisize; // 8bit - char m_zsize; // 8bit - char m_overlap; // 8bit - char m_edge; // 8bit - cumul 2*64 - - ClassDefOverride(TrkrClusterv5, 2) + uint16_t m_adc; //< cluster sum adc 16 + uint16_t m_maxadc; //< cluster sum adc 16 + uint8_t m_phisize; // 8bit + uint8_t m_zsize; // 8bit + uint8_t m_overlap; // 8bit + uint8_t m_edge; // 8bit - cumul 2*64 + + ClassDefOverride(TrkrClusterv5, 3) }; #endif // TRACKBASE_TRKRCLUSTERV5_H diff --git a/offline/packages/trackbase/TrkrClusterv6.cc b/offline/packages/trackbase/TrkrClusterv6.cc new file mode 100644 index 0000000000..0bdcf47d39 --- /dev/null +++ b/offline/packages/trackbase/TrkrClusterv6.cc @@ -0,0 +1,102 @@ +/** + * @file trackbase/TrkrClusterv6.cc + * @author Ishan Goel + * @date May 2026 + * @brief Implementation of TrkrClusterv6 + */ +#include "TrkrClusterv6.h" + +#include +#include +#include +#include // for swap + +namespace +{ + // square convenience function + template + constexpr T square(const T& x) + { + return x * x; + } +} // namespace + +void TrkrClusterv6::identify(std::ostream& os) const +{ + os << "---TrkrClusterv6--------------------" << std::endl; + + os << " (rphi,z) = (" << getLocalX(); + os << ", " << getLocalY() << ") cm "; + + os << " valid = " << isValid() << std::endl; + + os << std::endl; + os << "-----------------------------------------------" << std::endl; + + return; +} + +int TrkrClusterv6::isValid() const +{ + for (int i = 0; i < 2; ++i) + { + if (std::isnan(getPosition(i))) + { + return 0; + } + } + if (m_adc == std::numeric_limits::max()) + { + return 0; + } + + return 1; +} + +void TrkrClusterv6::CopyFrom(const TrkrCluster& source) +{ + // do nothing if copying onto oneself + if (this == &source) + { + return; + } + + // parent class method + TrkrCluster::CopyFrom(source); + + setLocalX(source.getLocalX()); + setLocalY(source.getLocalY()); + setSubSurfKey(source.getSubSurfKey()); + setAdc(source.getAdc()); + setMaxAdc(source.getMaxAdc()); + setCenAdc(source.getCenAdc()); + setPadCen(source.getPadCen()); + setTBinCen(source.getTBinCen()); + setPadMax(source.getPadMax()); + setTBinMax(source.getTBinMax()); + setPhiError(source.getRPhiError()); + setZError(source.getZError()); + setRSize(source.getRSize()); + setPhiSize(source.getPhiSize()); + setZSize(source.getZSize()); + setOverlap(source.getOverlap()); + setEdge(source.getEdge()); + setSLEdge(source.getSLEdge()); + setSREdge(source.getSREdge()); + setTLEdge(source.getTLEdge()); + setTREdge(source.getTREdge()); + setDLEdge(source.getDLEdge()); + setDREdge(source.getDREdge()); + setHLEdge(source.getHLEdge()); + setHREdge(source.getHREdge()); + setSLMix(source.getSLMix()); + setSRMix(source.getSRMix()); + setTLMix(source.getTLMix()); + setTRMix(source.getTRMix()); + setPhiBinLo(source.getPhiBinLo()); + setPhiBinHi(source.getPhiBinHi()); + setTBinLo(source.getTBinLo()); + setTBinHi(source.getTBinHi()); + setPadPhase(source.getPadPhase()); + setTBinPhase(source.getTBinPhase()); +} diff --git a/offline/packages/trackbase/TrkrClusterv6.h b/offline/packages/trackbase/TrkrClusterv6.h new file mode 100644 index 0000000000..d74f98e664 --- /dev/null +++ b/offline/packages/trackbase/TrkrClusterv6.h @@ -0,0 +1,278 @@ +/** + * @file trackbase/TrkrClusterv6.h + * @author Ishan Goel + * @date May 2026 + * @brief Version 6 of TrkrCluster + */ +#ifndef TRACKBASE_TRKRCLUSTERV6_H +#define TRACKBASE_TRKRCLUSTERV6_H + +#include "TrkrCluster.h" +#include "TrkrDefs.h" + +#include +#include +#include + +class PHObject; + +/** + * @brief Version 6 of TrkrCluster + * + * This version of TrkrCluster is blown up to contain a maximum of information + */ + +class TrkrClusterv6 : public TrkrCluster +{ + public: + //! ctor + TrkrClusterv6() = default; + + //! dtor + ~TrkrClusterv6() override = default; + + // PHObject virtual overloads + + void identify(std::ostream& os = std::cout) const override; + void Reset() override { *this = TrkrClusterv6(); } + int isValid() const override; + PHObject* CloneMe() const override { return new TrkrClusterv6(*this); } + + //! import PHObject CopyFrom, in order to avoid clang warning + using PHObject::CopyFrom; + + //! copy content from base class + void CopyFrom(const TrkrCluster&) override; + + //! copy content from base class + void CopyFrom(TrkrCluster* source) override + { + if (!source) + { + return; + } + CopyFrom(*source); + } + + // + // cluster position + // + float getPosition(int coor) const override + { + return (coor >= 0 && coor < 2) ? m_local[coor] : std::numeric_limits::quiet_NaN(); + } + void setPosition(int coor, float xi) override + { + if (coor >= 0 && coor < 2) + { + m_local[coor] = xi; + } + } + float getLocalX() const override { return m_local[0]; } + void setLocalX(float loc0) override { m_local[0] = loc0; } + float getLocalY() const override { return m_local[1]; } + void setLocalY(float loc1) override { m_local[1] = loc1; } + + TrkrDefs::subsurfkey getSubSurfKey() const override { return m_subsurfkey; } + void setSubSurfKey(TrkrDefs::subsurfkey id) override { m_subsurfkey = id; } + + // + // cluster info + // + uint16_t getAdc() const override { return m_adc; } + void setAdc(uint16_t adc) override { m_adc = adc; } + + uint16_t getMaxAdc() const override { return m_maxadc; } + void setMaxAdc(uint16_t maxadc) override { m_maxadc = maxadc; } + + uint16_t getCenAdc() const override { return m_cenadc; } + void setCenAdc(uint16_t cenadc) { m_cenadc = cenadc; } + + float getPadCen() const override { return m_padcen; } + void setPadCen(float padcen) { m_padcen = padcen; } + + float getTBinCen() const override { return m_tbincen; } + void setTBinCen(float tbincen) { m_tbincen = tbincen; } + + float getPadMax() const override { return m_padmax; } + void setPadMax(float padmax) { m_padmax = padmax; } + + float getTBinMax() const override { return m_tbinmax; } + void setTBinMax(float tbinmax) { m_tbinmax = tbinmax; } + + // + // convenience interface + // + float getRPhiError() const override { return m_phierr; } + float getZError() const override { return m_zerr; } + + void setPhiError(float phierror) { m_phierr = phierror; } + void setZError(float zerror) { m_zerr = zerror; } + + /// deprecated global funtions with a warning + float getX() const override + { + std::cout << "Deprecated getx trkrcluster function!" << std::endl; + return std::numeric_limits::quiet_NaN(); + } + float getY() const override + { + std::cout << "Deprecated gety trkrcluster function!" << std::endl; + return std::numeric_limits::quiet_NaN(); + } + float getZ() const override + { + std::cout << "Deprecated getz trkrcluster function!" << std::endl; + return std::numeric_limits::quiet_NaN(); + } + void setX(float) override + { + std::cout << "Deprecated setx trkrcluster function!" << std::endl; + } + void setY(float) override + { + std::cout << "Deprecated sety trkrcluster function!" << std::endl; + } + void setZ(float) override + { + std::cout << "Deprecated setz trkrcluster function!" << std::endl; + } + float getSize(unsigned int, unsigned int) const override + { + std::cout << "Deprecated getsize trkrcluster function!" << std::endl; + return std::numeric_limits::quiet_NaN(); + } + void setSize(unsigned int, unsigned int, float) override + { + std::cout << "Deprecated setsize trkrcluster function!" << std::endl; + } + float getError(unsigned int, unsigned int) const override + { + std::cout << "Deprecated geterr trkrcluster function!" << std::endl; + return std::numeric_limits::quiet_NaN(); + } + void setError(unsigned int, unsigned int, float) override + { + std::cout << "Deprecated seterr trkrcluster function!" << std::endl; + } + + uint8_t getSize() const override { return m_phisize * m_zsize; } + // void setSize(uint8_t size) { m_size = size; } + + float getRSize() const override { return (float) m_rsize; } + void setRSize(uint8_t rsize) { m_rsize = rsize; } + + float getPhiSize() const override { return (float) m_phisize; } + void setPhiSize(uint8_t phisize) { m_phisize = phisize; } + + float getZSize() const override { return (float) m_zsize; } + void setZSize(uint8_t zsize) { m_zsize = zsize; } + + uint8_t getOverlap() const override { return m_overlap; } + void setOverlap(uint8_t overlap) override { m_overlap = overlap; } + + uint8_t getEdge() const override { return m_edge; } + void setEdge(uint8_t edge) override { m_edge = edge; } + + uint8_t getSLEdge() const override { return m_sledge; } + void setSLEdge(uint8_t sledge) { m_sledge = sledge; } + + uint8_t getSREdge() const override { return m_sredge; } + void setSREdge(uint8_t sredge) { m_sredge = sredge; } + + uint8_t getTLEdge() const override { return m_tledge; } + void setTLEdge(uint8_t tledge) { m_tledge = tledge; } + + uint8_t getTREdge() const override { return m_tredge; } + void setTREdge(uint8_t tredge) { m_tredge = tredge; } + + uint8_t getDLEdge() const override { return m_dledge; } + void setDLEdge(uint8_t dledge) { m_dledge = dledge; } + + uint8_t getDREdge() const override { return m_dredge; } + void setDREdge(uint8_t dredge) { m_dredge = dredge; } + + uint8_t getHLEdge() const override { return m_hledge; } + void setHLEdge(uint8_t hledge) { m_hledge = hledge; } + + uint8_t getHREdge() const override { return m_hredge; } + void setHREdge(uint8_t hredge) { m_hredge = hredge; } + + int getSLMix() const override { return m_slmix; } + void setSLMix(uint8_t slmix) { m_slmix = slmix; } + + int getSRMix() const override { return m_srmix; } + void setSRMix(uint8_t srmix) { m_srmix = srmix; } + + int getTLMix() const override { return m_tlmix; } + void setTLMix(uint8_t tlmix) { m_tlmix = tlmix; } + + int getTRMix() const override { return m_trmix; } + void setTRMix(uint8_t trmix) { m_trmix = trmix; } + + int getPhiBinLo() const override { return m_phibinlo; } + void setPhiBinLo(int phibinlo) { m_phibinlo = phibinlo; } + + int getPhiBinHi() const override { return m_phibinhi; } + void setPhiBinHi(int phibinhi) { m_phibinhi = phibinhi; } + + int getTBinLo() const override { return m_tbinlo; } + void setTBinLo(int tbinlo) { m_tbinlo = tbinlo; } + + int getTBinHi() const override { return m_tbinhi; } + void setTBinHi(int tbinhi) { m_tbinhi = tbinhi; } + + float getPadPhase() const override { return m_padphase; } + void setPadPhase(float padphase) { m_padphase = padphase; } + + float getTBinPhase() const override { return m_tbinphase; } + void setTBinPhase(float tbinphase){ m_tbinphase = tbinphase; } + + // float getPhiSize() const override + //{ std::cout << "Deprecated size function"<< std::endl; return std::numeric_limits::quiet_NaN();} + // float getZSize() const override + //{std::cout << "Deprecated size function" << std::endl; return std::numeric_limits::quiet_NaN();} + // float getPhiError() const override + //{ std::cout << "Deprecated getPhiError function"<< std::endl; return std::numeric_limits::quiet_NaN();} + + private: + float m_local[2]{std::numeric_limits::quiet_NaN(), std::numeric_limits::quiet_NaN()}; + //< 2D local position [cm] 2 * 32 64bit - cumul 1*64 + TrkrDefs::subsurfkey m_subsurfkey{TrkrDefs::SUBSURFKEYMAX}; //< unique identifier for hitsetkey-surface maps 16 bit + float m_phierr{0}; + float m_zerr{0}; + uint16_t m_adc{0}; //< cluster sum adc 16 + uint16_t m_maxadc{0}; //< cluster max adc 16 + uint16_t m_cenadc{0}; //< cluster centroid adc 16 + float m_padcen{0}; + float m_tbincen{0}; + float m_padmax{0}; + float m_tbinmax{0}; + uint8_t m_rsize{0}; // 8bit + uint8_t m_phisize{0}; // 8bit + uint8_t m_zsize{0}; // 8bit + uint8_t m_overlap{0}; // 8bit + uint8_t m_edge{0}; // 8bit - cumul 2*64 + uint8_t m_sledge{0}; // 8bit + uint8_t m_sredge{0}; // 8bit + uint8_t m_tledge{0}; // 8bit + uint8_t m_tredge{0}; // 8bit + uint8_t m_dledge{0}; // 8bit + uint8_t m_dredge{0}; // 8bit + uint8_t m_hledge{0}; // 8bit + uint8_t m_hredge{0}; // 8bit + uint8_t m_slmix{0}; // 8bit + uint8_t m_srmix{0}; // 8bit + uint8_t m_tlmix{0}; // 8bit + uint8_t m_trmix{0}; // 8bit + int m_phibinlo{0}; + int m_phibinhi{0}; + int m_tbinlo{0}; + int m_tbinhi{0}; + float m_padphase{0}; + float m_tbinphase{0}; + + ClassDefOverride(TrkrClusterv6, 1) +}; + +#endif // TRACKBASE_TRKRCLUSTERV6_H diff --git a/offline/packages/trackbase/TrkrClusterv6LinkDef.h b/offline/packages/trackbase/TrkrClusterv6LinkDef.h new file mode 100644 index 0000000000..936ec262cc --- /dev/null +++ b/offline/packages/trackbase/TrkrClusterv6LinkDef.h @@ -0,0 +1,5 @@ +#ifdef __CINT__ + +#pragma link C++ class TrkrClusterv6 + ; + +#endif