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_PiPiPiPi1Charged_H
0002 #define HADRONS_Current_Library_VA_0_PiPiPiPi1Charged_H
0003 
0004 #include "HADRONS++/Current_Library/Current_Base.H"
0005 #include "HADRONS++/PS_Library/ResonanceFlavour.H"
0006 #include "HADRONS++/Main/Tools.H"
0007 #include "ATOOLS/Math/Histogram.H"
0008 
0009 namespace HADRONS {
0010   class VA_0_PiPiPiPi1Charged : public Current_Base {
0011   // indices: pi- = 0, pi0 = 1, pi0 = 2, pi0 = 3
0012 
0013     class LorenzBase {
0014       public :
0015         const ATOOLS::Vec4D   * p_p;
0016         int * p_i;
0017     ATOOLS::Vec4D     m_q;
0018         ATOOLS::Vec4D     m_r[4];
0019         double            m_s[4];
0020         double            m_q2;
0021        
0022       LorenzBase( ) {};
0023       virtual ~LorenzBase() {};
0024       virtual ATOOLS::Vec4C operator()() { return ATOOLS::Vec4C(); };
0025       void SetPrivates(const ATOOLS::Vec4D *, int* i);
0026     };
0027 
0028     class Novo : public LorenzBase {  // Novosibirsk parameterisation hep-ex/0201149, hep-ph/0312240
0029 
0030       double m_mpi2;
0031       SimpleResonanceFlavour m_rho, m_sigma;
0032       SimpleResonanceFlavour m_a1;
0033       ATOOLS::Histogram * p_G, * p_a1width, * p_zforma1;
0034       Complex m_z;
0035       double m_Lambda2;
0036        
0037       double G( double q2 );
0038       double F2_a1( double s );
0039       Complex Da1( double s );
0040       double hrho( double s );
0041       Complex Drho( double s );
0042       Complex Dsigma( double s );
0043       ATOOLS::Vec4C t1( int a, int b, int c, int d );
0044       ATOOLS::Vec4C t2( int a, int b, int c, int d );
0045 
0046       public : 
0047       Novo(GeneralModel _md);
0048       ~Novo() {
0049         delete p_G;
0050         delete p_zforma1;
0051         delete p_a1width;
0052       }
0053       ATOOLS::Vec4C operator()();
0054     }; 
0055 
0056     class KS : public LorenzBase {  // CLEO parameterisation hep-ex/9908024 and CERN-TH.6793/93
0057        
0058 
0059       double  m_fpi2;                   // pion decay constant
0060       double  m_mpi2, m_mpi02;          // mass^2 of pion, pion0
0061       ResonanceFlavour m_Rho, m_RR, m_RRR;  // rho resonances
0062       double  m_beta, m_gamma;          // relative strength of vector resonances
0063        
0064       double  Dots( int, int );
0065       Complex Trho( double );
0066        
0067       public : 
0068        
0069       KS(GeneralModel _md);
0070       ATOOLS::Vec4C operator()();
0071     }; 
0072 
0073     static const int  m_ncontrib = 4;   // # contributions to total hadr current
0074     int          m_nutau, m_pion1, m_pion2, m_pion3, m_pion0;
0075      
0076     double       m_global;
0077     LorenzBase * p_lorenz;              // pointer to current contributions
0078      
0079   public:
0080     VA_0_PiPiPiPi1Charged(const ATOOLS::Flavour_Vector& flavs,
0081                           const std::vector<int>& indices,
0082                           const std::string& name) :
0083       Current_Base(flavs, indices, name) {};
0084     ~VA_0_PiPiPiPi1Charged() {
0085       if (p_lorenz!=NULL) delete p_lorenz;
0086     }
0087     void SetModelParameters( struct GeneralModel _md );
0088     void Calc(const ATOOLS::Vec4D_Vector& moms, bool m_anti);
0089   };
0090 }
0091 #endif
0092 
0093 // to look at: m_r, m_R, m_s, Dots()