Back to home page

sPhenix code displayed by LXR

 
 

    


File indexing completed on 2026-07-16 08:14:33

0001 /**
0002  * @file trackbase/TrkrClusterv6.h
0003  * @author Ishan Goel
0004  * @date May 2026
0005  * @brief Version 6 of TrkrCluster
0006  */
0007 #ifndef TRACKBASE_TRKRCLUSTERV6_H
0008 #define TRACKBASE_TRKRCLUSTERV6_H
0009 
0010 #include "TrkrCluster.h"
0011 #include "TrkrDefs.h"
0012 
0013 #include <limits>
0014 #include <iostream>
0015 
0016 class PHObject;
0017 
0018 /**
0019  * @brief Version 6 of TrkrCluster
0020  *
0021  * This version of TrkrCluster is blown up to contain a maximum of information
0022  */
0023 
0024 class TrkrClusterv6 : public TrkrCluster
0025 {
0026  public:
0027   //! ctor
0028   TrkrClusterv6() = default;
0029 
0030   //! dtor
0031   ~TrkrClusterv6() override = default;
0032 
0033   // PHObject virtual overloads
0034 
0035   void identify(std::ostream& os = std::cout) const override;
0036   void Reset() override { *this = TrkrClusterv6(); }
0037   int isValid() const override;
0038   PHObject* CloneMe() const override { return new TrkrClusterv6(*this); }
0039 
0040   //! import PHObject CopyFrom, in order to avoid clang warning
0041   using PHObject::CopyFrom;
0042 
0043   //! copy content from base class
0044   void CopyFrom(const TrkrCluster&) override;
0045 
0046   //! copy content from base class
0047   void CopyFrom(TrkrCluster* source) override
0048   {
0049     if (!source)
0050     {
0051       return;
0052     }
0053     CopyFrom(*source);
0054   }
0055 
0056   //
0057   // cluster position
0058   //
0059   float getPosition(int coor) const override
0060   {
0061     return (coor >= 0 && coor < 2) ? m_local[coor] : std::numeric_limits<float>::quiet_NaN();
0062   }
0063   void setPosition(const int coor, const float xi) override
0064   {
0065     if (coor >= 0 && coor < 2)
0066     {
0067       m_local[coor] = xi;
0068     }
0069   }
0070   float getLocalX() const override { return m_local[0]; }
0071   void setLocalX(const float loc0) override { m_local[0] = loc0; }
0072   float getLocalY() const override { return m_local[1]; }
0073   void setLocalY(const float loc1) override { m_local[1] = loc1; }
0074 
0075   TrkrDefs::subsurfkey getSubSurfKey() const override { return m_subsurfkey; }
0076   void setSubSurfKey(const TrkrDefs::subsurfkey id) override { m_subsurfkey = id; }
0077 
0078   //
0079   // cluster info
0080   //
0081   unsigned int getAdc() const override { return m_adc; }
0082   void setAdc(const unsigned int adc) override { m_adc = adc; }
0083 
0084   unsigned int getMaxAdc() const override { return m_maxadc; }
0085   void setMaxAdc(const uint16_t maxadc) override { m_maxadc = maxadc; }
0086 
0087   unsigned int getCenAdc() const override { return m_cenadc; }
0088   void setCenAdc(const uint16_t cenadc) override { m_cenadc = cenadc; }
0089 
0090   float getPadCen() const override { return m_padcen; }
0091   void setPadCen(const float padcen) override { m_padcen = padcen; }
0092 
0093   float getTBinCen() const override { return m_tbincen; }
0094   void setTBinCen(const float tbincen) override { m_tbincen = tbincen; }
0095 
0096   int getPadMax() const override { return m_padmax; }
0097   void setPadMax(const int padmax) override { m_padmax = padmax; }
0098 
0099   int getTBinMax() const override { return m_tbinmax; }
0100   void setTBinMax(const int tbinmax) override { m_tbinmax = tbinmax; }
0101 
0102   //
0103   // convenience interface
0104   //
0105   float getRPhiError() const override { return m_phierr; }
0106   float getZError() const override { return m_zerr; }
0107 
0108   void setPhiError(const float phierror) override { m_phierr = phierror; }
0109   void setZError(const float zerror) override { m_zerr = zerror; }
0110 
0111   char getSize() const override { return m_phisize * m_zsize; }
0112   // void setSize(const char size) { m_size = size; }
0113 
0114   float getRSize() const override { return (float) m_rsize; }
0115   void setRSize(const char rsize) override { m_rsize = rsize; }
0116 
0117   float getPhiSize() const override { return (float) m_phisize; }
0118   void setPhiSize(const char phisize) override { m_phisize = phisize; }
0119 
0120   float getZSize() const override { return (float) m_zsize; }
0121   void setZSize(const char zsize) override { m_zsize = zsize; }
0122 
0123   char getOverlap() const override { return m_overlap; }
0124   void setOverlap(const char overlap) override { m_overlap = overlap; }
0125 
0126   char getEdge() const override { return m_edge; }
0127   void setEdge(const char edge) override { m_edge = edge; }
0128 
0129   char getSLEdge() const override { return m_sledge; }
0130   void setSLEdge(const char sledge) override { m_sledge = sledge; }
0131 
0132   char getSREdge() const override { return m_sredge; }
0133   void setSREdge(const char sredge) override { m_sredge = sredge; }
0134 
0135   char getTLEdge() const override { return m_tledge; }
0136   void setTLEdge(const char tledge) override { m_tledge = tledge; }
0137 
0138   char getTREdge() const override { return m_tredge; }
0139   void setTREdge(const char tredge) override { m_tredge = tredge; }
0140 
0141   char getDLEdge() const override { return m_dledge; }
0142   void setDLEdge(const char dledge) override { m_dledge = dledge; }
0143 
0144   char getDREdge() const override { return m_dredge; }
0145   void setDREdge(const char dredge) override { m_dredge = dredge; }
0146 
0147   char getHLEdge() const override { return m_hledge; }
0148   void setHLEdge(const char hledge) override { m_hledge = hledge; }
0149 
0150   char getHREdge() const override { return m_hredge; }
0151   void setHREdge(const char hredge) override { m_hredge = hredge; }
0152 
0153   char getSLMix() const override { return m_slmix; }
0154   void setSLMix(const char slmix) override { m_slmix = slmix; }
0155 
0156   char getSRMix() const override { return m_srmix; }
0157   void setSRMix(const char srmix) override { m_srmix = srmix; }
0158 
0159   char getTLMix() const override { return m_tlmix; }
0160   void setTLMix(const char tlmix) override { m_tlmix = tlmix; }
0161 
0162   char getTRMix() const override { return m_trmix; }
0163   void setTRMix(const char trmix) override { m_trmix = trmix; }
0164 
0165   unsigned short getPhiBinLo() const override { return m_phibinlo; }
0166   void setPhiBinLo(const unsigned short phibinlo) override { m_phibinlo = phibinlo; }
0167 
0168   unsigned short getPhiBinHi() const override { return m_phibinhi; }
0169   void setPhiBinHi(const unsigned short phibinhi) override { m_phibinhi = phibinhi; }
0170 
0171   unsigned short getTBinLo() const override { return m_tbinlo; }
0172   void setTBinLo(const unsigned short tbinlo) override { m_tbinlo = tbinlo; }
0173 
0174   unsigned short getTBinHi() const override { return m_tbinhi; }
0175   void setTBinHi(const unsigned short tbinhi) override { m_tbinhi = tbinhi; }
0176 
0177   float getPadPhase() const override { return m_padphase; }
0178   void setPadPhase(const float padphase) override { m_padphase = padphase; }
0179 
0180   float getTBinPhase() const override { return m_tbinphase; }
0181   void setTBinPhase(const float tbinphase) override { m_tbinphase = tbinphase; }
0182 
0183  private:
0184   float m_local[2]{std::numeric_limits<float>::quiet_NaN(), std::numeric_limits<float>::quiet_NaN()};
0185   //< 2D local position [cm] 2 * 32 64bit  - cumul 1*64
0186   TrkrDefs::subsurfkey m_subsurfkey {TrkrDefs::SUBSURFKEYMAX};  //< unique identifier for hitsetkey-surface maps 16 bit
0187   float m_phierr{std::numeric_limits<float>::quiet_NaN()};
0188   float m_zerr{std::numeric_limits<float>::quiet_NaN()};
0189   unsigned short m_adc{std::numeric_limits<unsigned short>::max()};     //< cluster sum adc 16
0190   unsigned short m_maxadc{std::numeric_limits<unsigned short>::max()};  //< cluster max adc 16
0191   unsigned short m_cenadc{std::numeric_limits<unsigned short>::max()};  //< cluster centroid adc 16
0192   float m_padcen{std::numeric_limits<float>::quiet_NaN()};
0193   float m_tbincen{std::numeric_limits<float>::quiet_NaN()};
0194   int m_padmax{std::numeric_limits<int>::max()};
0195   int m_tbinmax{std::numeric_limits<int>::max()};
0196   char m_rsize{std::numeric_limits<char>::max()};        
0197   char m_phisize{std::numeric_limits<char>::max()};               
0198   char m_zsize{std::numeric_limits<char>::max()};                 
0199   char m_overlap{std::numeric_limits<char>::max()};               
0200   char m_edge{std::numeric_limits<char>::max()};                   
0201   char m_sledge{std::numeric_limits<char>::max()};                
0202   char m_sredge{std::numeric_limits<char>::max()};                
0203   char m_tledge{std::numeric_limits<char>::max()};                
0204   char m_tredge{std::numeric_limits<char>::max()};                
0205   char m_dledge{std::numeric_limits<char>::max()};                
0206   char m_dredge{std::numeric_limits<char>::max()};                
0207   char m_hledge{std::numeric_limits<char>::max()};                
0208   char m_hredge{std::numeric_limits<char>::max()};                
0209   char m_slmix{std::numeric_limits<char>::max()};                 
0210   char m_srmix{std::numeric_limits<char>::max()};                 
0211   char m_tlmix{std::numeric_limits<char>::max()};                 
0212   char m_trmix{std::numeric_limits<char>::max()};                 
0213   unsigned short m_phibinlo{std::numeric_limits<unsigned short>::max()};
0214   unsigned short m_phibinhi{std::numeric_limits<unsigned short>::max()};
0215   unsigned short m_tbinlo{std::numeric_limits<unsigned short>::max()};
0216   unsigned short m_tbinhi{std::numeric_limits<unsigned short>::max()};
0217   float m_padphase{std::numeric_limits<float>::quiet_NaN()};
0218   float m_tbinphase{std::numeric_limits<float>::quiet_NaN()};
0219 
0220   ClassDefOverride(TrkrClusterv6, 1)
0221 };
0222 
0223 #endif  // TRACKBASE_TRKRCLUSTERV6_H