Back to home page

sPhenix code displayed by LXR

 
 

    


File indexing completed on 2026-09-01 08:21:04

0001 /**
0002  * @file trackbase/LaserClusterv3.h
0003  * @author Ben Kimelman
0004  * @date July 2026
0005  * @brief Version 3 of CMFLashCluster
0006  */
0007 #ifndef TRACKBASE_LASERCLUSTERV3_H
0008 #define TRACKBASE_LASERCLUSTERV3_H
0009 
0010 #include "LaserCluster.h"
0011 
0012 #include <iostream>
0013 #include <vector>
0014 
0015 class PHObject;
0016 
0017 /**
0018  * @brief Version 3 of LaserCluster
0019  *
0020  * Note - D. McGlinchey June 2018:
0021  *   CINT does not like "override", so ignore where CINT
0022  *   complains. Should be checked with ROOT 6 once
0023  *   migration occurs.
0024  */
0025 
0026 
0027 class LaserClusterv3 : public LaserCluster
0028 {
0029  public:
0030   //! ctor
0031   LaserClusterv3() = default;
0032 
0033   // PHObject virtual overloads
0034   void Reset() override {}
0035   int isValid() const override;
0036   PHObject* CloneMe() const override { return new LaserClusterv3(*this); }
0037  
0038   //! copy content from base class
0039   void CopyFrom( const LaserCluster& ) override;
0040 
0041   //! copy content from base class
0042   void CopyFrom( LaserCluster* source ) override
0043   { CopyFrom( *source ); }
0044 
0045   bool getFitMode() const override { return m_fitMode; }
0046   void setFitMode(bool fitMode) override { m_fitMode = fitMode; }
0047 
0048   unsigned int getLayerInt() const override { return m_posHardware[0]; }
0049   void setLayerInt(unsigned int layer) override { m_posHardware[0] = layer; }
0050   unsigned int getIPhiInt() const override { return m_posHardware[1]; }
0051   void setIPhiInt(unsigned int iphi) override { m_posHardware[1] = iphi; }
0052   unsigned int getITInt() const override { return m_posHardware[2]; }
0053   void setITInt(unsigned int it) override { m_posHardware[2] = it; }
0054 
0055   unsigned int getNhits() const override {return (unsigned int)m_hits.size();}
0056 
0057   //
0058   // cluster info
0059   //
0060   unsigned int getAdc() const override;
0061 
0062   void setNLayers(unsigned int nLayers) override { m_nLayers = nLayers; }
0063   unsigned int getNLayers() const override { return m_nLayers; }
0064 
0065   void setNIPhi(unsigned int nIPhi) override { m_nIPhi = nIPhi; }
0066   unsigned int getNIPhi() const override { return m_nIPhi; }
0067 
0068   void setNIT(unsigned int nIT) override { m_nIT = nIT; }
0069   unsigned int getNIT() const override { return m_nIT; }
0070 
0071   void setSDLayer(float SDLayer) override { m_SDLayer = SDLayer; }
0072   float getSDLayer() const override { return m_SDLayer; }
0073 
0074   void setSDIPhi(float SDIPhi) override { m_SDIPhi = SDIPhi; }
0075   float getSDIPhi() const override { return m_SDIPhi; }
0076 
0077   void setSDIT(float SDIT) override { m_SDIT = SDIT; }
0078   float getSDIT() const override { return m_SDIT; }
0079 
0080   void setSDWeightedLayer(float SDLayer) override { m_SDWeightedLayer = SDLayer; }
0081   float getSDWeightedLayer() const override { return m_SDWeightedLayer; }
0082 
0083   void setSDWeightedIPhi(float SDIPhi) override { m_SDWeightedIPhi = SDIPhi; }
0084   float getSDWeightedIPhi() const override { return m_SDWeightedIPhi; }
0085 
0086   void setSDWeightedIT(float SDIT) override { m_SDWeightedIT = SDIT; }
0087   float getSDWeightedIT() const override { return m_SDWeightedIT; }
0088 
0089   void addHit(TrkrDefs::hitsetkey hitsetkey, TrkrDefs::hitkey hitkey, uint16_t adc) override { m_hits.push_back(LaserClusterHitInfo(hitsetkey, hitkey, adc)); };
0090   LaserClusterHitInfo getHit(int hitIndex) const override { return m_hits[hitIndex]; };
0091 
0092   void identify(std::ostream& os = std::cout) const override;
0093 
0094  protected:
0095 
0096   std::vector<LaserClusterHitInfo> m_hits;
0097   
0098   unsigned int m_posHardware[3] = {std::numeric_limits<unsigned int>::max(), std::numeric_limits<unsigned int>::max(), std::numeric_limits<unsigned int>::max()};
0099   bool m_fitMode{false};
0100 
0101   /// number of TPC clusters used to create this central mebrane cluster
0102   unsigned int m_nhits = std::numeric_limits<unsigned int>::max();
0103   unsigned int m_nLayers = std::numeric_limits<unsigned int>::max();
0104   unsigned int m_nIPhi = std::numeric_limits<unsigned int>::max();
0105   unsigned int m_nIT = std::numeric_limits<unsigned int>::max();
0106   float m_SDLayer = std::numeric_limits<float>::quiet_NaN();
0107   float m_SDIPhi = std::numeric_limits<float>::quiet_NaN();
0108   float m_SDIT = std::numeric_limits<float>::quiet_NaN();
0109   float m_SDWeightedLayer = std::numeric_limits<float>::quiet_NaN();
0110   float m_SDWeightedIPhi = std::numeric_limits<float>::quiet_NaN();
0111   float m_SDWeightedIT = std::numeric_limits<float>::quiet_NaN();
0112 
0113   ClassDefOverride(LaserClusterv3, 1)
0114 };
0115 
0116 #endif //TRACKBASE_LASERCLUSTERV3_H