Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-08-06 09:24:16

0001 // -*- C++ -*-
0002 //
0003 // HardVertex.h is a part of Herwig - A multi-purpose Monte Carlo event generator
0004 // Copyright (C) 2002-2019 The Herwig Collaboration
0005 //
0006 // Herwig 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 HERWIG_HardVertex_H
0010 #define HERWIG_HardVertex_H
0011 //
0012 // This is the declaration of the HardVertex class.
0013 
0014 #include "ThePEG/EventRecord/HelicityVertex.h"
0015 #include "ProductionMatrixElement.h"
0016 #include "HardVertex.fh"
0017 // #include "HardVertex.xh"
0018 
0019 namespace Herwig {
0020 
0021 using namespace ThePEG;
0022     
0023 /** \ingroup Helicity
0024  *  \author Peter Richardson
0025  *
0026  *  The HardVertex class is designed to implement the vertex for a 
0027  *  hard interaction for the Herwig spin correlation algorithm. 
0028  *  It inherits from the HelicityVertex class of ThePEG and implements 
0029  *  the methods to calculate the \f$\rho\f$ and \f$D\f$ matrices.
0030  * 
0031  *  The ProductionMatrixElement class is used to store the matrix element
0032  *  and this class performs the calculations of the matrices.
0033  *
0034  *  @see HelicityVertex
0035  *  @see ProductionMatrixElement
0036  */ 
0037 
0038 class HardVertex: public HelicityVertex {
0039   
0040 public:
0041   
0042   /**
0043    *  Access to the matrix element
0044    */
0045   //@{
0046   /**
0047    * Get the matrix element
0048    */
0049   const ProductionMatrixElement & ME() const {
0050     return _matrixelement;
0051   }
0052 
0053   /**
0054    * Set the matrix element
0055    */
0056   void ME(const ProductionMatrixElement & in) const {
0057     _matrixelement.reset(in);
0058   }
0059   //@}
0060   
0061 public:
0062 
0063   /**
0064    * Standard Init function used to initialize the interfaces.  
0065    */
0066   static void Init();
0067   
0068 public:
0069   
0070   /**
0071    * Method to calculate the \f$\rho\f$ matrix for one of the outgoing particles
0072    * @param iout The outgoing particle we are calculating the \f$\rho\f$ matrix for.
0073    */
0074   virtual RhoDMatrix getRhoMatrix(int iout,bool) const;
0075 
0076   /**
0077    * Method to calculate the \f$D\f$ matrix for an incoming particle.
0078    * @param in The incoming particle we are calculating the \f$D\f$ matrix for.
0079    */
0080   virtual RhoDMatrix getDMatrix(int in) const;
0081   
0082 private:
0083   
0084   /**
0085    * Private and non-existent assignment operator.
0086    */
0087   HardVertex & operator=(const HardVertex &) = delete;
0088   
0089 private:
0090   
0091   /**
0092    * Storage of the matrix element.
0093    */
0094   ProductionMatrixElement _matrixelement;
0095   
0096 };
0097 }
0098 
0099 #endif /* HERWIG_HardVertex_H */