Back to home page

EIC code displayed by LXR

 
 

    


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   // This is more or less a container class:
0014   // For every hadron it contains the probabilities related to a decomposition
0015   // into it constituent quark-antiquark or quark-diquark pairs, the
0016   // WaveComponents.
0017   // This information is hard-coded in the Multiplet_Constructor class - not
0018   // very elegant.
0019   // The only real functionality it adds is to allow "barring", i.e.
0020   // constructing the wave function for the anti-hadron.
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