Back to home page

EIC code displayed by LXR

 
 

    


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

0001 #include "EXTAMP/CS_Dipole.H"
0002 
0003 namespace EXTAMP {
0004 
0005   ///////////////////////////////////////////////////////////////
0006   ////////// FINAL FINAL ////////////////////////////////////////
0007   ///////////////////////////////////////////////////////////////
0008 
0009   
0010   /* Kinematic variables of hep-ph/9605323v3 eq. (5.3) - (5.6) */
0011   struct FF_Dipole_Kinematics : public Dipole_Kinematics {
0012     ATOOLS::Vec4D m_pi;
0013     ATOOLS::Vec4D m_pj;
0014     ATOOLS::Vec4D m_pk;
0015     ATOOLS::Vec4D m_pij_tilde;
0016     ATOOLS::Vec4D m_pk_tilde;
0017     double m_zi;
0018     double m_zj;
0019     double m_y;
0020 
0021     double Alpha() const { return m_y; }
0022 
0023     double ShowerX()  const { return m_zi; }
0024     double ShowerY()  const { return m_y ; }
0025     double ShowerQ2() const { return (m_pi+m_pj+m_pk).Abs2(); }
0026   };
0027 
0028 
0029   class FF_Dipole : virtual public CS_Dipole {
0030 
0031   public:
0032 
0033     FF_Dipole(const Dipole_Info& di) : CS_Dipole(di) {};
0034     virtual ~FF_Dipole() {};
0035 
0036     void  CalcKinematics(const ATOOLS::Vec4D_Vector& p);
0037     const ATOOLS::Vec4D_Vector& Momenta() const { return m_kin.m_born_mom; }
0038 
0039   protected:
0040 
0041     double CalcB() const;
0042     double CalcA() const;
0043     double CalcKinDependentPrefac() const;
0044     ATOOLS::Vec4D CalcPtilde() const;
0045 
0046     const Dipole_Kinematics* const LastKinematics() const { return &m_kin; }
0047 
0048     /* Legacy structure: NLO_subevts only maintain pointers to const
0049        momenta and flavours. These pointers need to point to
0050        persistent copies of momenta/flavours that do not run out of
0051        scope. Therefore have to maintain a copy of the last calculated
0052        momentum configuration in this class and let the momentum
0053        pointer of one NLO_subevt point to that instance. */
0054     FF_Dipole_Kinematics m_kin;
0055 
0056   };
0057 
0058 
0059   ///////////////////////////////////////////////////////////////
0060   ////////// FINAL INITIAL //////////////////////////////////////
0061   ///////////////////////////////////////////////////////////////
0062 
0063 
0064   /* Kinematic variables of hep-ph/9605323v3 eq. (5.3) - (5.6) */
0065   struct FI_Dipole_Kinematics : public Dipole_Kinematics {
0066     ATOOLS::Vec4D m_pi;
0067     ATOOLS::Vec4D m_pj;
0068     ATOOLS::Vec4D m_pa;
0069     ATOOLS::Vec4D m_pij_tilde;
0070     ATOOLS::Vec4D m_pa_tilde;
0071     double m_x;
0072     double m_zi;
0073     double m_zj;
0074 
0075     double Alpha() const { return 1.-m_x; }
0076 
0077     double ShowerX()  const { return m_zi; }
0078     double ShowerY()  const { return m_x ; }
0079     double ShowerQ2() const { return (m_pi+m_pj-m_pa).Abs2(); }
0080   };
0081 
0082 
0083   class FI_Dipole : virtual public CS_Dipole {
0084 
0085   public:
0086 
0087     FI_Dipole(const Dipole_Info& di) : CS_Dipole(di) {};
0088     virtual ~FI_Dipole() {};
0089 
0090     void  CalcKinematics(const ATOOLS::Vec4D_Vector& p);
0091     const ATOOLS::Vec4D_Vector& Momenta() const { return m_kin.m_born_mom; }
0092 
0093   protected:
0094 
0095     double CalcB() const;
0096     double CalcA() const;
0097     double CalcKinDependentPrefac() const;
0098     ATOOLS::Vec4D CalcPtilde() const;
0099 
0100     const Dipole_Kinematics* const LastKinematics() const { return &m_kin; }
0101 
0102     FI_Dipole_Kinematics m_kin;
0103 
0104   };
0105 
0106 
0107   ///////////////////////////////////////////////////////////////
0108   ////////// INITIAL FINAL //////////////////////////////////////
0109   ///////////////////////////////////////////////////////////////
0110   
0111 
0112   /* Kinematic variables of hep-ph/9605323v3 eq. (5.3) - (5.6) */
0113   struct IF_Dipole_Kinematics : public Dipole_Kinematics {
0114     ATOOLS::Vec4D m_pa;
0115     ATOOLS::Vec4D m_pi;
0116     ATOOLS::Vec4D m_pk;
0117     ATOOLS::Vec4D m_pai_tilde;
0118     ATOOLS::Vec4D m_pk_tilde;
0119     double m_ui;
0120     double m_x;
0121 
0122     double Alpha() const { return m_ui; }
0123 
0124     double ShowerX()  const { return m_x; }
0125     double ShowerY()  const { return m_ui; }
0126     double ShowerQ2() const { return (-m_pa+m_pi+m_pk).Abs2(); }
0127   };
0128 
0129 
0130   class IF_Dipole : virtual public CS_Dipole {
0131 
0132   public:
0133 
0134     IF_Dipole(const Dipole_Info& di) : CS_Dipole(di) {};
0135     virtual ~IF_Dipole() {};
0136 
0137     void  CalcKinematics(const ATOOLS::Vec4D_Vector& p);
0138     const ATOOLS::Vec4D_Vector& Momenta() const { return m_kin.m_born_mom; }
0139 
0140   protected:
0141 
0142     double CalcB() const;
0143     double CalcA() const;
0144     double CalcKinDependentPrefac() const;
0145     ATOOLS::Vec4D CalcPtilde() const;
0146 
0147     const Dipole_Kinematics* const LastKinematics() const { return &m_kin; }
0148 
0149     IF_Dipole_Kinematics m_kin;
0150 
0151   };
0152 
0153 
0154   ///////////////////////////////////////////////////////////////
0155   ////////// INITIAL INITIAL ////////////////////////////////////
0156   ///////////////////////////////////////////////////////////////
0157   
0158 
0159   /* Kinematic variables of hep-ph/9605323v3 eq. (5.3) - (5.6) */
0160   struct II_Dipole_Kinematics : public Dipole_Kinematics {
0161     ATOOLS::Vec4D m_pa;
0162     ATOOLS::Vec4D m_pi;
0163     ATOOLS::Vec4D m_pb;
0164     ATOOLS::Vec4D m_pai_tilde;
0165     ATOOLS::Vec4D m_pb_tilde;
0166     double m_ui;
0167     double m_x;
0168     double m_v;
0169 
0170     double Alpha() const { return m_v; }
0171 
0172     double ShowerX()  const { return m_x; }
0173     double ShowerY()  const { return m_v; }
0174     double ShowerQ2() const { return (-m_pa+m_pi-m_pb).Abs2(); }
0175   };
0176 
0177 
0178   class II_Dipole : virtual public CS_Dipole {
0179 
0180   public:
0181 
0182     II_Dipole(const Dipole_Info& di) : CS_Dipole(di) {};
0183     virtual ~II_Dipole() {};
0184 
0185     void  CalcKinematics(const ATOOLS::Vec4D_Vector& p);
0186     const ATOOLS::Vec4D_Vector& Momenta() const { return m_kin.m_born_mom; }
0187 
0188   protected:
0189 
0190     double CalcB() const;
0191     double CalcA() const;
0192     double CalcKinDependentPrefac() const;
0193     ATOOLS::Vec4D CalcPtilde() const;
0194 
0195     const Dipole_Kinematics* const LastKinematics() const { return &m_kin; }
0196     
0197     II_Dipole_Kinematics m_kin;
0198 
0199   };
0200 
0201 }