Back to home page

EIC code displayed by LXR

 
 

    


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

0001 #ifndef HADRONS_Current_Library_VA_0_PiPiPiPi3Charged_H
0002 #define HADRONS_Current_Library_VA_0_PiPiPiPi3Charged_H
0003 
0004 #include "HADRONS++/Current_Library/Current_Base.H"
0005 #include "HADRONS++/PS_Library/ResonanceFlavour.H"
0006 #include "HADRONS++/Main/Tools.H"
0007 
0008 namespace HADRONS {
0009   class VA_0_PiPiPiPi3Charged : public Current_Base {
0010   // indices: pi+ = 0, pi0 = 1, pi- = 2, pi- = 3
0011     class LorenzBase {
0012       public :
0013 //         Complex         * p_X;
0014        
0015         const ATOOLS::Vec4D * p_p;
0016         int             * p_i;
0017         ATOOLS::Vec4D     m_q;
0018         double            m_q2;
0019        
0020       LorenzBase( ) {};
0021       virtual ~LorenzBase() {};
0022       virtual ATOOLS::Vec4C operator()() { return ATOOLS::Vec4C(); };
0023       void                 SetPrivates(const ATOOLS::Vec4D *, int * i);
0024     };
0025 
0026     class Novo : public LorenzBase { // Novosibirsk parameterisation hep-ph/0201149, hep-ph/0312240
0027 
0028       double m_mpi2;
0029       SimpleResonanceFlavour m_rho, m_sigma, m_omega;
0030       SimpleResonanceFlavour m_a1;
0031       ATOOLS::Histogram * p_G, * p_Go, * p_a1width;
0032       Complex m_z;
0033       double m_Lambda2;
0034        
0035       double G( double q2 );
0036       double Go( double q2 );
0037       double F2_a1( double s );
0038       Complex Da1( double s );
0039       double hrho( double s );
0040       Complex Drho( double s );
0041       Complex Dsigma( double s );
0042       double F2_o( double s );
0043       Complex Do( double s );
0044       ATOOLS::Vec4C t1( int a, int b, int c, int d );
0045       ATOOLS::Vec4C t2( int a, int b, int c, int d );
0046       ATOOLS::Vec4C t3( int a, int b, int c, int d );
0047        
0048       public:
0049 
0050         Novo(GeneralModel _md );
0051           ~Novo() {
0052             delete p_G;
0053             delete p_Go;
0054             delete p_a1width;
0055           }
0056         ATOOLS::Vec4C operator()();
0057 
0058     };
0059 
0060 
0061     class KS : public LorenzBase {  // CLEO parameterisation hep-ex/9908024 and CERN-TH.6793/93
0062             // this class does not only provide form factors
0063             // but the complete Lorentz structure
0064        
0065 
0066       ATOOLS::Vec4D     m_r[4];
0067       double            m_s[4];
0068        
0069       static const int  m_ncontrib = 4;   // # contributions to total hadr current
0070       Complex      m_Alpha[m_ncontrib];   // weight of each contribution
0071       Complex      m_SumAlpha;            // sum of all weights
0072        
0073       double  m_fpi2;                   // pion decay constant
0074       double  m_Go3p, m_Frho, m_grop;   // coupling constants
0075       double  m_mpi2, m_mpi02;          // mass^2 of pion, pion0
0076       ResonanceFlavour m_Rho, m_RR, m_RRR;  // rho resonances
0077       ResonanceFlavour m_O, m_S, m_F, m_A;  // omega, sigma, f0, a1 resonance
0078       double  m_beta, m_gamma;          // relative strength of vector resonances
0079       double  m_sigma;                  // relative strength of vector resonance
0080       double  m_R[4];                   // important factor
0081       ATOOLS::Vec4C OmegaPi();  Complex m_Beta_opi[4];
0082       ATOOLS::Vec4C AonePi();   Complex m_Beta_api[4];
0083       ATOOLS::Vec4C SigmaRho(); Complex m_Beta_srh[4];
0084       ATOOLS::Vec4C FzeroRho(); Complex m_Beta_frh[4];
0085        
0086       double  Dots( int, int );
0087       Complex Fk( double, Complex * );
0088       Complex Trho( double );
0089       Complex TTrho( double );
0090        
0091       public : 
0092        
0093       KS(GeneralModel _md );
0094       ATOOLS::Vec4C operator()();
0095     }; 
0096 
0097 //     int          m_inter[6];            // internal numbering
0098      
0099     double       m_global;              // GF/sqrt(2)*Vud
0100     LorenzBase * p_lorenz;              // pointer to current contributions
0101      
0102 //     ATOOLS::Vec4D   m_p[6];             // momenta
0103 //     Complex         m_X[5];             // value of an X function
0104      
0105   public:
0106     VA_0_PiPiPiPi3Charged(const ATOOLS::Flavour_Vector& flavs,
0107                           const std::vector<int>& indices,
0108                           const std::string& name) :
0109       Current_Base(flavs, indices, name) {};
0110     ~VA_0_PiPiPiPi3Charged() {
0111       if (p_lorenz!=NULL) delete p_lorenz;
0112     }
0113     void SetModelParameters( struct GeneralModel _md );
0114     void Calc(const ATOOLS::Vec4D_Vector& moms, bool m_anti);
0115   };
0116 }
0117 #endif
0118 
0119 // to look at: m_r, m_R, m_s, Dots()