Back to home page

sPhenix code displayed by LXR

 
 

    


File indexing completed on 2025-08-05 08:17:03

0001 /**
0002  * @file trackbase/TrkrClusterv4.h
0003  * @author C. Roland
0004  * @date April 2022
0005  * @brief Version 4 of TrkrCluster
0006  */
0007 #ifndef TRACKBASE_TRKRCLUSTERV4_H
0008 #define TRACKBASE_TRKRCLUSTERV4_H
0009 
0010 #include <iostream>
0011 #include "TrkrCluster.h"
0012 #include "TrkrDefs.h"
0013 
0014 class PHObject;
0015 
0016 /**
0017  * @brief Version 4 of TrkrCluster
0018  *
0019  * This version of TrkrCluster is reduced to a minimal number of data members
0020  */
0021 
0022 class TrkrClusterv4 : public TrkrCluster
0023 {
0024  public:
0025   //! ctor
0026   TrkrClusterv4();
0027 
0028   //! dtor
0029   ~TrkrClusterv4() override = default;
0030 
0031   // PHObject virtual overloads
0032 
0033   void identify(std::ostream& os = std::cout) const override;
0034   void Reset() override {}
0035   int isValid() const override;
0036   PHObject* CloneMe() const override { return new TrkrClusterv4(*this); }
0037 
0038   //! import PHObject CopyFrom, in order to avoid clang warning
0039   using PHObject::CopyFrom;
0040 
0041   //! copy content from base class
0042   void CopyFrom(const TrkrCluster&) override;
0043 
0044   //! copy content from base class
0045   void CopyFrom(TrkrCluster* source) override
0046   {
0047     CopyFrom(*source);
0048   }
0049 
0050   //
0051   // cluster position
0052   //
0053   float getPosition(int coor) const override { return m_local[coor]; }
0054   void setPosition(int coor, float xi) override { m_local[coor] = xi; }
0055   float getLocalX() const override { return m_local[0]; }
0056   void setLocalX(float loc0) override { m_local[0] = loc0; }
0057   float getLocalY() const override { return m_local[1]; }
0058   void setLocalY(float loc1) override { m_local[1] = loc1; }
0059 
0060   TrkrDefs::subsurfkey getSubSurfKey() const override { return m_subsurfkey; }
0061   void setSubSurfKey(TrkrDefs::subsurfkey id) override { m_subsurfkey = id; }
0062 
0063   //
0064   // cluster info
0065   //
0066   unsigned int getAdc() const override
0067   {
0068     uint8_t tmp = m_adc;
0069     return tmp;
0070   }
0071 
0072   void setAdc(unsigned int adc) override
0073   {
0074     uint16_t tmp = 0;
0075     if (adc > 0xff)
0076       tmp = 0xff;
0077     else
0078       tmp = adc;
0079     m_adc |= tmp;
0080   }
0081 
0082   unsigned int getMaxAdc() const override
0083   {
0084     uint8_t tmp = (m_adc >> 8);
0085     unsigned int out = 0;
0086     out |= tmp;
0087     return out;
0088   }
0089 
0090   void setMaxAdc(uint16_t maxadc) override
0091   {
0092     if (maxadc > 0xff) maxadc = 0xff;
0093     uint16_t tmp = (maxadc << 8);
0094     m_adc |= tmp;
0095   }
0096 
0097   //
0098   // convenience interface
0099   //
0100   float getRPhiError() const override
0101   {
0102     std::cout << "Deprecated getRPhiError trkrcluster function!" << std::endl;
0103     return NAN;
0104   }
0105   float getZError() const override
0106   {
0107     std::cout << "Deprecated getZError trkrcluster function!" << std::endl;
0108     return NAN;
0109   }
0110 
0111   /// deprecated global funtions with a warning
0112   float getX() const override
0113   {
0114     std::cout << "Deprecated getx trkrcluster function!" << std::endl;
0115     return NAN;
0116   }
0117   float getY() const override
0118   {
0119     std::cout << "Deprecated gety trkrcluster function!" << std::endl;
0120     return NAN;
0121   }
0122   float getZ() const override
0123   {
0124     std::cout << "Deprecated getz trkrcluster function!" << std::endl;
0125     return NAN;
0126   }
0127   void setX(float) override
0128   {
0129     std::cout << "Deprecated setx trkrcluster function!" << std::endl;
0130   }
0131   void setY(float) override
0132   {
0133     std::cout << "Deprecated sety trkrcluster function!" << std::endl;
0134   }
0135   void setZ(float) override
0136   {
0137     std::cout << "Deprecated setz trkrcluster function!" << std::endl;
0138   }
0139   float getSize(unsigned int, unsigned int) const override
0140   {
0141     std::cout << "Deprecated getsize trkrcluster function!" << std::endl;
0142     return NAN;
0143   }
0144   void setSize(unsigned int, unsigned int, float) override
0145   {
0146     std::cout << "Deprecated setsize trkrcluster function!" << std::endl;
0147   }
0148   float getError(unsigned int, unsigned int) const override
0149   {
0150     std::cout << "Deprecated geterr trkrcluster function!" << std::endl;
0151     return NAN;
0152   }
0153   void setError(unsigned int, unsigned int, float) override
0154   {
0155     std::cout << "Deprecated seterr trkrcluster function!" << std::endl;
0156   }
0157 
0158   char getSize() const override { return m_phisize * m_zsize; }
0159   //   void setSize(char size) { m_size = size; }
0160 
0161   float getPhiSize() const override { return (float) m_phisize; }
0162   void setPhiSize(char phisize) { m_phisize = phisize; }
0163 
0164   float getZSize() const override { return (float) m_zsize; }
0165   void setZSize(char zsize) { m_zsize = zsize; }
0166 
0167   char getOverlap() const override { return m_overlap; }
0168   void setOverlap(char overlap) override { m_overlap = overlap; }
0169 
0170   char getEdge() const override { return m_edge; }
0171   void setEdge(char edge) override { m_edge = edge; }
0172 
0173   // float getPhiSize() const override
0174   //{ std::cout << "Deprecated size function"<< std::endl; return NAN;}
0175   // float getZSize() const override
0176   //{std::cout << "Deprecated size function" << std::endl; return NAN;}
0177   // float getPhiError() const override
0178   //{ std::cout << "Deprecated getPhiError function"<< std::endl; return NAN;}
0179 
0180  protected:
0181   float m_local[2]{};                 //< 2D local position [cm] 2 * 32 64bit  - cumul 1*64
0182   TrkrDefs::subsurfkey m_subsurfkey;  //< unique identifier for hitsetkey-surface maps 16 bit
0183   unsigned short int m_adc;           //< cluster sum adc 16
0184   char m_phisize;                     // 8bit
0185   char m_zsize;                       // 8bit
0186   char m_overlap;                     // 8bit
0187   char m_edge;                        // 8bit - cumul 2*64
0188 
0189   ClassDefOverride(TrkrClusterv4, 2)
0190 };
0191 
0192 #endif  // TRACKBASE_TRKRCLUSTERV4_H