Back to home page

sPhenix code displayed by LXR

 
 

    


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

0001 /**
0002  * @file trackbase/LaserClusterv4.h
0003  * @author Ben Kimelman
0004  * @date July 2026
0005  * @brief Version 4 of CMFLashCluster
0006  */
0007 #ifndef TRACKBASE_LASERCLUSTERV4_H
0008 #define TRACKBASE_LASERCLUSTERV4_H
0009 
0010 #include "LaserCluster.h"
0011 
0012 #include <iostream>
0013 #include <vector>
0014 
0015 class PHObject;
0016 
0017 /**
0018  * @brief Version 4 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 LaserClusterv4 : public LaserCluster
0028 {
0029  public:
0030   //! ctor
0031   LaserClusterv4() = default;
0032 
0033   // PHObject virtual overloads
0034   void Reset() override {}
0035   int isValid() const override;
0036   PHObject* CloneMe() const override { return new LaserClusterv4(*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 getNhits() const override {return (unsigned int)m_hits.size();}
0049 
0050   //
0051   // cluster info
0052   //
0053   unsigned int getAdc() const override;
0054 
0055   void setNLayers(unsigned int nLayers) override { m_nLayers = nLayers; }
0056   unsigned int getNLayers() const override { return m_nLayers; }
0057 
0058   void setNIPhi(unsigned int nIPhi) override { m_nIPhi = nIPhi; }
0059   unsigned int getNIPhi() const override { return m_nIPhi; }
0060 
0061   void setNIT(unsigned int nIT) override { m_nIT = nIT; }
0062   unsigned int getNIT() const override { return m_nIT; }
0063 
0064   void setSDLayer(float SDLayer) override { m_SDLayer = SDLayer; }
0065   float getSDLayer() const override { return m_SDLayer; }
0066 
0067   void setSDIPhi(float SDIPhi) override { m_SDIPhi = SDIPhi; }
0068   float getSDIPhi() const override { return m_SDIPhi; }
0069 
0070   void setSDIT(float SDIT) override { m_SDIT = SDIT; }
0071   float getSDIT() const override { return m_SDIT; }
0072 
0073   void setSDWeightedLayer(float SDLayer) override { m_SDWeightedLayer = SDLayer; }
0074   float getSDWeightedLayer() const override { return m_SDWeightedLayer; }
0075 
0076   void setSDWeightedIPhi(float SDIPhi) override { m_SDWeightedIPhi = SDIPhi; }
0077   float getSDWeightedIPhi() const override { return m_SDWeightedIPhi; }
0078 
0079   void setSDWeightedIT(float SDIT) override { m_SDWeightedIT = SDIT; }
0080   float getSDWeightedIT() const override { return m_SDWeightedIT; }
0081 
0082   void addHit(TrkrDefs::hitsetkey hitsetkey, TrkrDefs::hitkey hitkey, uint16_t adc) override { m_hits.push_back(LaserClusterHitInfo(hitsetkey, hitkey, adc)); };
0083   LaserClusterHitInfo getHit(int hitIndex) const override { return m_hits[hitIndex]; };
0084 
0085   void identify(std::ostream& os = std::cout) const override;
0086 
0087  protected:
0088 
0089   std::vector<LaserClusterHitInfo> m_hits;
0090   
0091   bool m_fitMode{false};
0092 
0093   /// number of TPC clusters used to create this central mebrane cluster
0094   unsigned int m_nhits = std::numeric_limits<unsigned int>::max();
0095   unsigned int m_nLayers = std::numeric_limits<unsigned int>::max();
0096   unsigned int m_nIPhi = std::numeric_limits<unsigned int>::max();
0097   unsigned int m_nIT = std::numeric_limits<unsigned int>::max();
0098   float m_SDLayer = std::numeric_limits<float>::quiet_NaN();
0099   float m_SDIPhi = std::numeric_limits<float>::quiet_NaN();
0100   float m_SDIT = std::numeric_limits<float>::quiet_NaN();
0101   float m_SDWeightedLayer = std::numeric_limits<float>::quiet_NaN();
0102   float m_SDWeightedIPhi = std::numeric_limits<float>::quiet_NaN();
0103   float m_SDWeightedIT = std::numeric_limits<float>::quiet_NaN();
0104 
0105   ClassDefOverride(LaserClusterv4, 1)
0106 };
0107 
0108 #endif //TRACKBASE_4_H