Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-04-19 09:10:07

0001 #ifndef METOOLS__Main__Polarization_Index_H
0002 #define METOOLS__Main__Polarization_Index_H
0003 
0004 #include <vector>
0005 #include <cstddef>
0006 #include <string>
0007 
0008 namespace METOOLS {
0009 
0010   class Polarization_Index {
0011   protected:
0012 
0013     /*!
0014       \brief vector containing the number of spin combinations for each particle "node".
0015     */
0016     std::vector<int> m_spins;
0017     std::string      m_id;
0018 
0019     size_t m_n;
0020 
0021   public:
0022 
0023     inline Polarization_Index(): m_n(0) {}
0024     inline Polarization_Index(const std::vector<int> &spins) { Init(spins); }
0025 
0026     void Init(const std::vector<int> &spins);
0027 
0028     size_t operator()(const std::vector<int> &spins) const;
0029 
0030     std::vector<int> operator()(size_t number) const;
0031     
0032     inline const std::vector<int> &Spins() const { return m_spins; }
0033 
0034     inline const std::string &SpinID() const { return m_id; }
0035 
0036     inline size_t N() const { return m_n; }
0037 
0038   };// end of class Polarization_Index
0039 
0040 }// end of namespace METOOLS
0041 
0042 #endif