Back to home page

EIC code displayed by LXR

 
 

    


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

0001 #ifndef PHASIC_Channels_RamboKK_H
0002 #define PHASIC_Channels_RamboKK_H
0003 
0004 #include "PHASIC++/Channels/Single_Channel.H"
0005 
0006 namespace PHASIC {
0007   class RamboKK : public Single_Channel {
0008     //! Flag to see wether massive or massless points are to be generated.
0009     bool     m_massflag;
0010     //! Constants needed for the weight and the phase space distribution.
0011     double   Z_N, * xm2, * p2, * E;
0012     //! Maximal number of iterations to generate the massive weight
0013     short int itmax;
0014     //! Accuracy when generating the massive weight.
0015     double accu;
0016     //! Constants needed to generate the mass of the KK particle 
0017     int     kkp,ed;
0018     double  r2,maxm2,maxn,mpss,gn,prevET,gam;
0019     /*!
0020       Determines the mass for the KK particle. This has to be done every time
0021       before a phase space point is generated.
0022 
0023       The distribution of the mass states is
0024       \f[
0025       m^{2}_{\vec{n}}=\frac{4\pi^{2}\vec{n}^{2}}{R^{2}},
0026       \f]
0027       where \f$\vec{n}\f$ is a $n$-dimensional vector of integers and with $R$ 
0028       contributes to the size of the extra dimensions, is given by
0029       \f[
0030       R^{n}=\frac{(4\pi)^{n/2}\Gamma(n/2)}{2M_s^{n+2}}.
0031       \f]
0032     */
0033     void Set_KKmass();
0034   public:
0035     RamboKK(int,int,const ATOOLS::Flavour *);
0036     ~RamboKK();
0037     /*!
0038       Generates the weight. In case of massless Rambo this is given by
0039       a constant, since Rambo uses uniform distribution. For massive
0040       points, this constant is corrected via MassiveWeight.
0041       /sa MassiveWeight
0042 
0043       In attendance of a KK particle the weight has to be multiplied by an 
0044       extra volume factor of
0045       \f[
0046       \frac{1}{n}\frac{\hat{m}^{n}}{M_s^{n+2}G_N},
0047       \f]
0048       due to the multiplicity of the mass states
0049     */
0050     void GenerateWeight(ATOOLS::Vec4D *,Cut_Data *);  
0051     /*!
0052       To generate a phase space point according to a uniform distribution.
0053       In case massive vectors are needed this point gets modified by 
0054       MassivePoint.
0055       /sa MassivePoint
0056     */
0057     void GeneratePoint(ATOOLS::Vec4D *,Cut_Data *);
0058     /*!
0059       This method is only a dummy method meant to comply with the multi-channel.
0060       In fact it calls the GeneratePoint method without random numbers.
0061     */
0062     void GeneratePoint(ATOOLS::Vec4D *,Cut_Data *,double *);
0063     /*!
0064       To generate a massive weight. The idea is to invert the generation of
0065       massive vectors, i.e. we start with massive vectors and force them
0066       on a zero-mass shell by rescaling and boosting all momenta by common 
0067       factors, such that both four momentum conservation and mass shell 
0068       conditions are fulfilled.
0069     */
0070     void MassiveWeight(ATOOLS::Vec4D *,double);
0071     /*!
0072       To generate a massive point. The idea is to start from a massless point
0073       given by ordinary RAMBO::GeneratePoint and then to force them
0074       on their mass shell by rescaling and boosting all momenta by common 
0075       factors, such that both four momentum conservation and mass shell 
0076       conditions are fulfilled.
0077     */
0078     void MassivePoint(ATOOLS::Vec4D *,double);
0079     std::string Name() { return std::string("RamboKK"); }
0080     int CountResonances(ATOOLS::Flavour *&) { return 0; }
0081   };
0082 }
0083 
0084 #endif