File indexing completed on 2025-04-19 09:09:44
0001 #ifndef AHADIC_Tools_Wave_Function_H
0002 #define AHADIC_Tools_Wave_Function_H
0003
0004 #include "ATOOLS/Phys/Flavour.H"
0005 #include <map>
0006 #include <string>
0007
0008
0009 namespace AHADIC {
0010 typedef std::pair<ATOOLS::Flavour,ATOOLS::Flavour> Flavour_Pair;
0011 typedef std::map<Flavour_Pair *,double> WaveComponents;
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022 class Wave_Function {
0023 private:
0024 ATOOLS::Flavour m_hadron;
0025 int m_kfcode, m_spin2;
0026 double m_mpletwt, m_extrawt;
0027 WaveComponents m_waves;
0028 bool m_barrable;
0029 public:
0030 Wave_Function();
0031 Wave_Function(const ATOOLS::Flavour &);
0032 ~Wave_Function();
0033
0034 Wave_Function * GetAnti();
0035 ATOOLS::Flavour GetFlavour() const { return m_hadron; }
0036 WaveComponents * GetWaves() { return &m_waves; }
0037 const size_t size() const { return m_waves.size(); }
0038
0039 void AddToWaves(Flavour_Pair *,double);
0040 double WaveWeight(ATOOLS::Flavour,ATOOLS::Flavour);
0041
0042 void SetMultipletWeight(const double & wt) { m_mpletwt = wt; }
0043 void SetExtraWeight(const double & wt) { m_extrawt = wt; }
0044 void SetFlavour(ATOOLS::Flavour & flav) { m_hadron = flav; }
0045 void SetKfCode(const int & _kfcode) { m_kfcode = _kfcode; }
0046 void SetSpin(const double & spin) { m_spin2 = spin; }
0047
0048 const double & MultipletWeight() const { return m_mpletwt; }
0049 const double & ExtraWeight() const { return m_extrawt; }
0050 const int & Spin() const { return m_spin2; }
0051 const double SpinWeight() const { return double(m_spin2); }
0052 const int & KfCode() const { return m_kfcode; }
0053 const bool & ExistAnti() const { return m_barrable; }
0054
0055 friend std::ostream & operator<<(std::ostream & s, Wave_Function & wf);
0056 };
0057
0058 typedef std::map<ATOOLS::Flavour,Wave_Function *> Wave_Functions;
0059 }
0060
0061 #endif