Back to home page

EIC code displayed by LXR

 
 

    


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

0001 // -*- C++ -*-
0002 //
0003 // SpinCorrelationTensor.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_SpinCorrelationTensor_H
0010 #define HERWIG_SpinCorrelationTensor_H
0011 
0012 #include "ThePEG/Config/Unitsystem.h"
0013 
0014 namespace Herwig {
0015 
0016 using namespace ThePEG;
0017 
0018 /**
0019  * \ingroup Matchbox
0020  * \author Simon Platzer
0021  *
0022  * \brief SpinCorrelationTensor represents a spin correlation tensor
0023  * of the form
0024  *
0025  * c g^{\mu\nu} + p^\mu p^\nu / Q^2
0026  *
0027  */
0028 class SpinCorrelationTensor {
0029 
0030   /**
0031    * The diagonal part
0032    */
0033   double theDiagonal;
0034 
0035   /**
0036    * The vector to define to off-diagonal part
0037    */
0038   Lorentz5Momentum theMomentum;
0039 
0040   /**
0041    * The scale for the off-diagonal part
0042    */
0043   Energy2 theScale;
0044 
0045 public:
0046 
0047   /**
0048    * The standard constructor, giving diagonal
0049    * part, and vector for off-diagonal components
0050    * and the scale.
0051    */
0052   SpinCorrelationTensor(double diag,
0053             const Lorentz5Momentum& p,
0054             Energy2 sc) 
0055     : theDiagonal(diag), theMomentum(p), theScale(sc) {}
0056 
0057 public:
0058 
0059   /**
0060    * Return the diagonal part
0061    */
0062   double diagonal() const { return theDiagonal; }
0063 
0064   /**
0065    * Return the off-diagonal vector part.
0066    */
0067   const Lorentz5Momentum& momentum() const { return theMomentum; }
0068 
0069   /**
0070    * Return the scale
0071    */
0072   Energy2 scale() const { return theScale; }
0073 
0074 public:
0075 
0076   /**
0077    * Return a matrix element of the diagonal part, by contracting with
0078    * the given polarization vectors.
0079    */
0080   Complex matrixElement(const LorentzVector<Complex>& left,
0081             const LorentzVector<Complex>& right) const {
0082     return
0083       left.dot(momentum())*right.dot(momentum())/scale();
0084   }
0085 
0086 };
0087 
0088 }
0089 
0090 #endif // HERWIG_SpinCorrelationTensor_H