Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-08-06 09:38:23

0001 // -*- C++ -*-
0002 //
0003 // SSSSVertex.h is a part of ThePEG - Toolkit for HEP Event Generation
0004 // Copyright (C) 2003-2019 Peter Richardson, Leif Lonnblad
0005 //
0006 // ThePEG is licenced under version 3 of the GPL, see COPYING for details.
0007 // Please respect the MCnet academic guidelines, see GUIDELINES for details.
0008 //
0009 #ifndef ThePEG_SSSSVertex_H
0010 #define ThePEG_SSSSVertex_H
0011 //
0012 // This is the declaration of the SSSSVertex class.
0013 //
0014 #include "ThePEG/Helicity/Vertex/AbstractSSSSVertex.h"
0015 #include "ThePEG/Helicity/WaveFunction/ScalarWaveFunction.h"
0016 #include "SSSSVertex.fh"
0017 
0018 namespace ThePEG {
0019 namespace Helicity {
0020 
0021 /** \ingroup Helicity
0022  * 
0023  *  The SSSSVertex class is the implementation of the interaction of
0024  *  four scalars. It inherits from the AbstractSSSSVertex class for the storage 
0025  *  of the particles interacting at the vertex and implements the 
0026  *  helicity calculations.
0027  *
0028  *  Any classes implementating the vertex should inherit from it and implement
0029  *  the virtual set Coupling member.
0030  *
0031  *  The form of the vertex is
0032  * \f[ic\phi_1\phi_2\phi_3\phi_4\f]
0033  *
0034  *  @see AbstractSSSSVertex
0035  */
0036 class SSSSVertex: public AbstractSSSSVertex {
0037   
0038 public:
0039   
0040   /**
0041    * Standard Init function used to initialize the interfaces.
0042    */
0043   static void Init();
0044 
0045 public:
0046 
0047   /**
0048    * Members to calculate the helicity amplitude expressions for vertices
0049    * and off-shell particles.
0050    */
0051   //@{  
0052   /**
0053    * Evaluate the vertex.
0054    * @param q2 The scale \f$q^2\f$ for the coupling at the vertex.
0055    * @param sca1 The wavefunction for the first  scalar.
0056    * @param sca2 The wavefunction for the second scalar.
0057    * @param sca3 The wavefunction for the third  scalar.
0058    * @param sca4 The wavefunction for the fourth scalar.
0059    */
0060   Complex evaluate(Energy2 q2, const ScalarWaveFunction & sca1,
0061            const ScalarWaveFunction & sca2, const ScalarWaveFunction & sca3,
0062            const ScalarWaveFunction & sca4);
0063 
0064   /**
0065    * Evaluate the off-shell scalar coming from the vertex.
0066    * @param q2 The scale \f$q^2\f$ for the coupling at the vertex.
0067    * @param iopt Option of the shape of the Breit-Wigner for the off-shell scalar.
0068    * @param out The ParticleData pointer for the off-shell scalar.
0069    * @param sca1 The wavefunction for the first  scalar.
0070    * @param sca2 The wavefunction for the second scalar.
0071    * @param sca3 The wavefunction for the third  scalar.
0072    */
0073   ScalarWaveFunction evaluate(Energy2 q2,int iopt, tcPDPtr out,
0074                   const ScalarWaveFunction & sca1,
0075                   const ScalarWaveFunction & sca2,
0076                   const ScalarWaveFunction & sca3);
0077   //@}
0078 
0079   /**
0080    *   Set coupling methods
0081    */
0082   //@{
0083   /**
0084    * Dummy for a three point interaction.
0085    */
0086   virtual void setCoupling(Energy2,tcPDPtr,tcPDPtr,tcPDPtr) {
0087     assert(false);
0088   }
0089 
0090   /**
0091    * Calculate the couplings for a four point interaction.
0092    * This method is virtual and must be implemented in 
0093    * classes inheriting from this.
0094    * @param q2 The scale \f$q^2\f$ for the coupling at the vertex.
0095    * @param part1 The ParticleData pointer for the first  particle.
0096    * @param part2 The ParticleData pointer for the second particle.
0097    * @param part3 The ParticleData pointer for the third  particle.
0098    * @param part4 The ParticleData pointer for the fourth particle.
0099    */
0100   virtual void setCoupling(Energy2 q2,tcPDPtr part1,tcPDPtr part2,tcPDPtr part3,
0101                tcPDPtr part4)=0;
0102   //@}
0103 
0104 private:
0105   
0106   /**
0107    * Private and non-existent assignment operator.
0108    */
0109   SSSSVertex & operator=(const SSSSVertex &) = delete;
0110   
0111 };
0112 }
0113 
0114 }
0115 #endif /* ThePEG_SSSSVertex_H */