Back to home page

EIC code displayed by LXR

 
 

    


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

0001 // -*- C++ -*-
0002 //
0003 // SSTVertex.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_SSTVertex_H
0010 #define ThePEG_SSTVertex_H
0011 //
0012 // This is the declaration of the SSTVertex class.
0013 //
0014 #include "ThePEG/Helicity/Vertex/AbstractSSTVertex.h"
0015 #include "ThePEG/Helicity/WaveFunction/ScalarWaveFunction.h"
0016 #include "ThePEG/Helicity/WaveFunction/TensorWaveFunction.h"
0017 #include "SSTVertex.fh"
0018 
0019 namespace ThePEG {
0020 namespace Helicity {
0021 
0022 /** \ingroup Helicity
0023  *
0024  *  The VVTVertexclass is the implementation of the 
0025  *  scalar-scalar-tensor vertex. 
0026  *  It inherits from the AbstractSSTVertex class for the storage of the particles
0027  *  interacting at the vertex and implements the helicity amplitude calculations.
0028  *
0029  *  All implementations of this vertex should inherit from it and implement the
0030  *  virtual setCoupling member.
0031  *
0032  *  The form of the vertex is
0033  *  \f[
0034  * -\frac{i\kappa}2\left[m^2_Sg_{\mu\nu}-k_{1\mu}k_{2\nu}-k_{1\nu}k_{2\mu}
0035  * +g_{\mu\nu}k_1\cdot k_2\right]\epsilon^{\mu\nu}_3\phi_1\phi_2
0036  *  
0037  *  \f]
0038  *
0039  *  @see AbstractSSTVertex
0040  */
0041 class SSTVertex: public AbstractSSTVertex {
0042   
0043 public:
0044 
0045   /**
0046    * Standard Init function used to initialize the interfaces.
0047    */
0048   static void Init();
0049 
0050 public:
0051   
0052   /**
0053    * Members to calculate the helicity amplitude expressions for vertices
0054    * and off-shell particles.
0055    */
0056   //@{
0057   /**
0058    * Evalulate the vertex.
0059    * @param q2 The scale \f$q^2\f$ for the coupling at the vertex.
0060    * @param sca1  The wavefunction for the first scalar.
0061    * @param sca2  The wavefunction for the second scalar
0062    * @param ten3  The wavefunction for the tensor.
0063    */
0064   Complex evaluate(Energy2 q2, const ScalarWaveFunction & sca1,
0065            const ScalarWaveFunction & sca2, const TensorWaveFunction & ten3);
0066 
0067   /**
0068    * Evaluate the off-shell scalar coming from the vertex.
0069    * @param q2 The scale \f$q^2\f$ for the coupling at the vertex.
0070    * @param iopt Option of the shape of the Breit-Wigner for the off-shell scalar.
0071    * @param out The ParticleData pointer for the off-shell scalar.
0072    * @param sca1  The wavefunction for the first scalar.
0073    * @param ten3  The wavefunction for the tensor.
0074    * @param mass The mass of the off-shell particle if not taken from the ParticleData
0075    * object
0076    * @param width The width of the off-shell particle if not taken from the ParticleData
0077    * object
0078    */
0079   ScalarWaveFunction evaluate(Energy2 q2,int iopt,tcPDPtr out,
0080                   const ScalarWaveFunction & sca1,
0081                   const TensorWaveFunction & ten3,
0082                   complex<Energy> mass=-GeV, complex<Energy> width=-GeV);
0083 
0084   /**
0085    * Evaluate the off-shell tensor coming from the vertex.
0086    * @param q2 The scale \f$q^2\f$ for the coupling at the vertex.
0087    * @param iopt Option of the shape of the Breit-Wigner for the off-shell tensor.
0088    * @param out The ParticleData pointer for the off-shell tensor.
0089    * @param sca1  The wavefunction for the first scalar.
0090    * @param sca2  The wavefunction for the second scalar.
0091    * @param mass The mass of the off-shell particle if not taken from the ParticleData
0092    * object
0093    * @param width The width of the off-shell particle if not taken from the ParticleData
0094    * object
0095    */
0096   TensorWaveFunction evaluate(Energy2 q2,int iopt,tcPDPtr out,
0097                   const ScalarWaveFunction & sca1,
0098                   const ScalarWaveFunction & sca2,
0099                   complex<Energy> mass=-GeV, complex<Energy> width=-GeV);
0100   //@}
0101 
0102   /**
0103    *   Set coupling methods
0104    */
0105   //@{
0106   /**
0107    * Calculate the couplings for a three point interaction.
0108    * This method is virtual and must be implemented in 
0109    * classes inheriting from this.
0110    * @param q2 The scale \f$q^2\f$ for the coupling at the vertex.
0111    * @param part1 The ParticleData pointer for the first  particle.
0112    * @param part2 The ParticleData pointer for the second particle.
0113    * @param part3 The ParticleData pointer for the third  particle.
0114    */
0115   virtual void setCoupling(Energy2 q2,tcPDPtr part1,
0116                tcPDPtr part2,tcPDPtr part3)=0;
0117 
0118   /**
0119    * Dummy setCouplings for a four point interaction 
0120    * This method is virtual and must be implemented in 
0121    * classes inheriting from this.
0122    */
0123   virtual void setCoupling(Energy2,tcPDPtr,tcPDPtr,tcPDPtr,tcPDPtr) {
0124     assert(false);
0125   }
0126   //@}
0127   
0128 private:
0129   
0130   /**
0131    * Private and non-existent assignment operator.
0132    */
0133   SSTVertex & operator=(const SSTVertex &) = delete;
0134   
0135 };
0136 
0137 }
0138 
0139 }
0140 #endif /* ThePEG_SSTVertex_H */